@acedatacloud/nexior 3.343.2 → 3.343.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/assets/{ApiCodeButton-BnhZ1r3c.js → ApiCodeButton-C_DtLteh.js} +1 -1
  2. package/dist/assets/{Artifacts-CaJxmQOP.js → Artifacts-COeoAH1p.js} +1 -1
  3. package/dist/assets/{AskUserQuestionCard-CMkeSMFn.js → AskUserQuestionCard-D_oKKGYl.js} +1 -1
  4. package/dist/assets/{AudioPreview-bocLH6sL.js → AudioPreview-DGeWuq2A.js} +1 -1
  5. package/dist/assets/{Auth-BRupoyMh.js → Auth-C4TMJpeT.js} +1 -1
  6. package/dist/assets/{Bare-BAhPcFz_.js → Bare-CGTyxVcY.js} +1 -1
  7. package/dist/assets/{BotPlaceholder-B6Y-k016.js → BotPlaceholder-miO90qGo.js} +1 -1
  8. package/dist/assets/{BottomFooter-CYGg2B0I.js → BottomFooter-Dn7ALxdB.js} +1 -1
  9. package/dist/assets/{Callback-CnPlFK8U.js → Callback-W-Bnbyvh.js} +1 -1
  10. package/dist/assets/{CodeSnippet-BTyXtTEF.js → CodeSnippet-imENkgS_.js} +1 -1
  11. package/dist/assets/{Console-CAvKfZXu.js → Console-DdNJBvyg.js} +1 -1
  12. package/dist/assets/{Consumption-BdZ1c3ei.js → Consumption-DL0zm78X.js} +1 -1
  13. package/dist/assets/{Conversation-SPaNEZ42.js → Conversation-D2nipuJ4.js} +1 -1
  14. package/dist/assets/{Conversation-gQ1OYZa4.js → Conversation-DWOLdrk3.js} +1 -1
  15. package/dist/assets/{CopyToClipboard-DTo9jexV.js → CopyToClipboard-BMaxYkX6.js} +1 -1
  16. package/dist/assets/{Detail-1gsV1ZX_.js → Detail-Csw1iIvn.js} +2 -2
  17. package/dist/assets/{Extra-jQ-L_eB4.js → Extra-B_UQU3zj.js} +1 -1
  18. package/dist/assets/{FilePreview-UA-4U2mr.js → FilePreview-CQ8miS5e.js} +1 -1
  19. package/dist/assets/{Hailuo-BFCWw87y.js → Hailuo-BYDp8J6m.js} +1 -1
  20. package/dist/assets/{History-CVrTdGB6.js → History-B0VN2MMH.js} +1 -1
  21. package/dist/assets/{ImagePreview-C_R7broQ.js → ImagePreview-Dzwq5j1p.js} +1 -1
  22. package/dist/assets/{ImageWrapper-BRkG-4ZC.js → ImageWrapper-B6kHPphW.js} +1 -1
  23. package/dist/assets/{Index-CRI6tbcL2.js → Index-1ZhbeLVS2.js} +1 -1
  24. package/dist/assets/{Index-BZxLL7gj.js → Index-B-VI_aRb.js} +1 -1
  25. package/dist/assets/{Index-BszbJEWT.js → Index-B0ZHlDuU.js} +1 -1
  26. package/dist/assets/{Index-D1aHn9gj.js → Index-BB5sCnez.js} +1 -1
  27. package/dist/assets/{Index-BMFXyYUN.js → Index-BJKwkkFZ.js} +1 -1
  28. package/dist/assets/{Index-CGtZfo1E.js → Index-BfpEVkAV.js} +1 -1
  29. package/dist/assets/{Index-0iY0sqJS2.js → Index-BhOweqDE2.js} +1 -1
  30. package/dist/assets/{Index-Cw-2P5EZ.js → Index-BsuI8C6x.js} +1 -1
  31. package/dist/assets/{Index-xttUMrEs.js → Index-BuNB2iGw.js} +1 -1
  32. package/dist/assets/{Index-FZep4Y2l.js → Index-C6OyAWLW.js} +1 -1
  33. package/dist/assets/{Index-B4Yr4_IJ.js → Index-CKrZwUSr.js} +1 -1
  34. package/dist/assets/{Index-DhBKPEna.js → Index-COkAWs3N.js} +1 -1
  35. package/dist/assets/{Index-B2VQCAmi.js → Index-CQd3EYF4.js} +1 -1
  36. package/dist/assets/{Index-DOmk_Fm5.js → Index-CSgmw5Xk.js} +1 -1
  37. package/dist/assets/{Index-BZ14Y3ha.js → Index-CU9m8W_1.js} +1 -1
  38. package/dist/assets/{Index-Cq_PuYdW.js → Index-CfwR5Za5.js} +1 -1
  39. package/dist/assets/{Index-cmCF0tfO.js → Index-Ci8dp03A.js} +1 -1
  40. package/dist/assets/{Index-BpnILkwN.js → Index-ClkrY5lP.js} +1 -1
  41. package/dist/assets/{Index-CKLSGpvZ.js → Index-CwMONzyV.js} +1 -1
  42. package/dist/assets/{Index-Boqj6Yd-.js → Index-DJL_xfuy.js} +1 -1
  43. package/dist/assets/{Index-CILcMy4D2.js → Index-DaZEAkZx2.js} +1 -1
  44. package/dist/assets/{Index-C7kvIfwU.js → Index-DeGiucbo.js} +1 -1
  45. package/dist/assets/{Index-C5btuUth.js → Index-DgNAKfOZ.js} +1 -1
  46. package/dist/assets/{Index-TJFSha-j.js → Index-Dq9auTf_.js} +1 -1
  47. package/dist/assets/{Index-B7vA1RBY.js → Index-DrVLoVNo.js} +1 -1
  48. package/dist/assets/{Index-CVGgzdrS.js → Index-Dz5AFp1c.js} +1 -1
  49. package/dist/assets/{Index-LpcbHK6O.js → Index-L4nFhGoI.js} +1 -1
  50. package/dist/assets/{Index-C_IfEwca.js → Index-Mgk2TALV.js} +1 -1
  51. package/dist/assets/{Index-BXGee7g2.js → Index-QNTsRM_t.js} +1 -1
  52. package/dist/assets/{Index-UetzJVKI2.js → Index-Zxz1nVei2.js} +1 -1
  53. package/dist/assets/{Index-V3b5jGGJ.js → Index-vA8vIG53.js} +1 -1
  54. package/dist/assets/{Index-CFw1FLwn.js → Index-xk9mGgHC.js} +1 -1
  55. package/dist/assets/{Invitees-Tw81KutK.js → Invitees-CMMHSe4y.js} +1 -1
  56. package/dist/assets/{List-CJy8am6o.js → List-B6JleUhS.js} +1 -1
  57. package/dist/assets/{List-ZGE8PGhI.js → List-CV9tFd5K.js} +1 -1
  58. package/dist/assets/{List-oe2KAJIP.js → List-CtK2fe34.js} +1 -1
  59. package/dist/assets/{LocalTools-DB2mlE-7.js → LocalTools-CnXNzgGY.js} +1 -1
  60. package/dist/assets/{LocalTools-CldMvgMI.js → LocalTools-DL6YNvwa.js} +1 -1
  61. package/dist/assets/{Main-D7crVqTv.js → Main-r3pYZNua.js} +1 -1
  62. package/dist/assets/{Message-BGlON6N3.js → Message-TT9Tt5EG.js} +1 -1
  63. package/dist/assets/{Model-Bt0uhJJ0.js → Model-bznEL95u.js} +1 -1
  64. package/dist/assets/{Navigator-BcD0NEVT.js → Navigator-DnHUGeWq.js} +3 -3
  65. package/dist/assets/{NotFound-DskbKuWo.js → NotFound-BUz1btfj.js} +1 -1
  66. package/dist/assets/{Pay-Bu4lkOAy.js → Pay-C_Fcl29f.js} +1 -1
  67. package/dist/assets/{Player-BWPSNIsG.js → Player-CcmsVWf7.js} +1 -1
  68. package/dist/assets/{Poivelle-Bnsu9gZ6.js → Poivelle-3ecrWx9E.js} +1 -1
  69. package/dist/assets/{PromptTextarea-DSF00J6p.js → PromptTextarea-BPhoRMVI.js} +1 -1
  70. package/dist/assets/{RealtimeCall-Ctrjch7s.js → RealtimeCall-CXRpEKEL.js} +1 -1
  71. package/dist/assets/{ScheduledTasks-rQlsednu.js → ScheduledTasks-CCgZLKXl.js} +1 -1
  72. package/dist/assets/{Status-DAAA1AAC.js → Status-B7sFQTuB.js} +1 -1
  73. package/dist/assets/{Subscribe-RqlJCxg9.js → Subscribe-DA13iozT.js} +1 -1
  74. package/dist/assets/{TabSwitcher-D1Zx36SR.js → TabSwitcher-DT8rOtuT.js} +1 -1
  75. package/dist/assets/{Tts-kpu-QIej.js → Tts-BdpmdYva.js} +1 -1
  76. package/dist/assets/{VideoPlayer-K-a68Yxk.js → VideoPlayer-CyCnHmhk.js} +1 -1
  77. package/dist/assets/{alert-C16GyeJ_.js → alert-BmDhbY4N.js} +1 -1
  78. package/dist/assets/arrow-down-_laNvAF4.js +1 -0
  79. package/dist/assets/{arrow-down-wide-narrow-BGo5iUya.js → arrow-down-wide-narrow-BV17RuKt.js} +1 -1
  80. package/dist/assets/arrow-left-BxY2ckiR.js +1 -0
  81. package/dist/assets/arrow-right-C-DwIyqJ.js +1 -0
  82. package/dist/assets/arrow-up-DuBOEPlK.js +1 -0
  83. package/dist/assets/{avatar-CMbnWo1W.js → avatar-DMypDW5N.js} +1 -1
  84. package/dist/assets/{basic-CNPEecVF.js → basic-Czbj6f9D.js} +1 -1
  85. package/dist/assets/{book-open-DSJyv-Tq.js → book-open-DgulRtEJ.js} +1 -1
  86. package/dist/assets/{box-BT9y4YFN.js → box-CXHZJ19d.js} +1 -1
  87. package/dist/assets/{boxes-dPE_g6A1.js → boxes-CbZlGzxn.js} +1 -1
  88. package/dist/assets/{brain-BxL5I621.js → brain-BY6PRLuS.js} +1 -1
  89. package/dist/assets/{chart-no-axes-combined-PZoqng3S.js → chart-no-axes-combined-3j5FM4nV.js} +1 -1
  90. package/dist/assets/{chat-BJhOSKKx.js → chat-DzHJ5mA8.js} +1 -1
  91. package/dist/assets/check-D4mUmwCI.js +1 -0
  92. package/dist/assets/chevron-down-n14G0ihm.js +1 -0
  93. package/dist/assets/chevron-right-CrLR-sC-.js +1 -0
  94. package/dist/assets/circle-check-CcZvIPVM.js +1 -0
  95. package/dist/assets/{circle-question-mark-tBuKgAmQ.js → circle-question-mark-Dg_6R6Ml.js} +1 -1
  96. package/dist/assets/{clipboard-list-BWvm3BDS.js → clipboard-list-DQY8azPJ.js} +1 -1
  97. package/dist/assets/clock-CTJncUP-.js +1 -0
  98. package/dist/assets/code-DHK4Pm5M.js +1 -0
  99. package/dist/assets/{codingBridge-BJi_ckQz.js → codingBridge-BXkxqJJC.js} +1 -1
  100. package/dist/assets/{codingBridgeNotify-c55KEyJp.js → codingBridgeNotify-DkQVrSnN.js} +2 -2
  101. package/dist/assets/{coins-BufMrWPi.js → coins-Ccai4H-a.js} +1 -1
  102. package/dist/assets/{collapse-EtgNqWAr.js → collapse-CTug-yP6.js} +1 -1
  103. package/dist/assets/{copy-0lsL87Wd.js → copy-CaELERYD.js} +1 -1
  104. package/dist/assets/{createTaskActions-9dfgMEbH.js → createTaskActions-DT6637AA.js} +1 -1
  105. package/dist/assets/{digitalhuman-B0uTHRKp.js → digitalhuman-Cb-npF4z.js} +1 -1
  106. package/dist/assets/{dollar-sign-CfOsLLKY.js → dollar-sign-DCSgo-yC.js} +1 -1
  107. package/dist/assets/{download-BWU-lZHT.js → download-X3vwDSki.js} +1 -1
  108. package/dist/assets/{drawer-D_3Ux5r0.js → drawer-BgpN40Ig.js} +1 -1
  109. package/dist/assets/{dropdown-w_5tAQr5.js → dropdown-BNMcCva2.js} +1 -1
  110. package/dist/assets/{dropdown-mcMMCG7K.js → dropdown-EfsWv0Yl.js} +1 -1
  111. package/dist/assets/{ellipsis-sveOlT_Y.js → ellipsis-BLq9exTH.js} +1 -1
  112. package/dist/assets/{esm-CO9x-2vR.js → esm-6WbJSUyo.js} +1 -1
  113. package/dist/assets/{esm-Bucp_n66.js → esm-7bTqS524.js} +2 -2
  114. package/dist/assets/{esm-DwwA4_JY.js → esm-B0fPuulX.js} +1 -1
  115. package/dist/assets/esm-CjoFX8Xc.js +1 -0
  116. package/dist/assets/{esm-CTHpz8-o.js → esm-DBxl_F3e.js} +2 -2
  117. package/dist/assets/{esm-9mO1n0Mh.js → esm-DPZ-0-TA.js} +3 -3
  118. package/dist/assets/{esm-BPRNiHle.js → esm-Dx7az4yl.js} +1 -1
  119. package/dist/assets/{external-link-2Z2kMqFE.js → external-link-DZ3DxAmT.js} +1 -1
  120. package/dist/assets/{eye-DCxnyN3d.js → eye-Dt7czJN5.js} +1 -1
  121. package/dist/assets/{file-CoeAd2zT.js → file-BjjWIKuD.js} +1 -1
  122. package/dist/assets/{file-output-TEwR2dNe.js → file-output-D5VoOEt1.js} +1 -1
  123. package/dist/assets/{file-text-D9BhZW2U.js → file-text-Cg1esE6-.js} +1 -1
  124. package/dist/assets/{fish-Bsv53DVE.js → fish-B4CwYRmY.js} +1 -1
  125. package/dist/assets/{flux-6Ii4OUKH.js → flux-C_ZHZbF2.js} +1 -1
  126. package/dist/assets/{folder-DF_k--vf.js → folder-BmoEieDF.js} +1 -1
  127. package/dist/assets/gauge-DO8VgOsK.js +1 -0
  128. package/dist/assets/{globe-UEaaaNoJ.js → globe-BC1t7ZUy.js} +1 -1
  129. package/dist/assets/{grokvideo-C4fp9yAt.js → grokvideo-CAG_3RdK.js} +1 -1
  130. package/dist/assets/{hailuo-ABggZ67q.js → hailuo-DZD-sPQC.js} +1 -1
  131. package/dist/assets/{headphones-D7x1YAMx.js → headphones-MFMcymce.js} +1 -1
  132. package/dist/assets/{history-Ck2WpVat.js → history-BWgGP74I.js} +1 -1
  133. package/dist/assets/{house-Dp_D0oeZ.js → house-CbITAy_f.js} +1 -1
  134. package/dist/assets/{image-DRW5OCUW.js → image-BLa4-1L7.js} +1 -1
  135. package/dist/assets/{index-CX5tT44B.js → index-X4H_LD85.js} +3 -3
  136. package/dist/assets/{index.browser.esm-1yA9M6CC.js → index.browser.esm-CCmiJWW3.js} +1 -1
  137. package/dist/assets/{index.es-QIK6Za0X.js → index.es-GZAOy__u.js} +1 -1
  138. package/dist/assets/{info-BqYsJSgm.js → info-L0HoT29_.js} +1 -1
  139. package/dist/assets/{input-number-mWiCY8x-.js → input-number-COp7UOII.js} +1 -1
  140. package/dist/assets/{key-round-B-7vmYcK.js → key-round-COPBeT2c.js} +1 -1
  141. package/dist/assets/{kling-B6pPbqGQ.js → kling-ekkDIWur.js} +1 -1
  142. package/dist/assets/{languages-C3fLU8tJ.js → languages-DCbhf2nn.js} +1 -1
  143. package/dist/assets/{laptop-DLmDa5cm.js → laptop-vqo6zEX9.js} +1 -1
  144. package/dist/assets/{lightbulb-0wAwGzn1.js → lightbulb-C5Ftvxfh.js} +1 -1
  145. package/dist/assets/{link-vzT89AJs.js → link-CclstGdq.js} +1 -1
  146. package/dist/assets/loader-circle-CChCBdje.js +1 -0
  147. package/dist/assets/{lock-CuveUOB_.js → lock-BPdr7Bk-.js} +1 -1
  148. package/dist/assets/{luma-CBATmP2O.js → luma-BlJzM-S0.js} +1 -1
  149. package/dist/assets/{maestro-CAZq6DTw.js → maestro-CCVCYo9K.js} +1 -1
  150. package/dist/assets/{mail-OkfIgZvZ.js → mail-P-Y3KiSi.js} +1 -1
  151. package/dist/assets/{message-circle-FxSQMQ04.js → message-circle-CMGjhLSL.js} +1 -1
  152. package/dist/assets/{mic-i8JOGAbe.js → mic-CD1EVj2b.js} +1 -1
  153. package/dist/assets/{midjourney-gkvwOOeo.js → midjourney--Ck1Wfqc.js} +1 -1
  154. package/dist/assets/{mobileLocalExec-CGZHthaT.js → mobileLocalExec--fsbqVUV.js} +2 -2
  155. package/dist/assets/{monitor-EO0RvNrv.js → monitor-B90FW30X.js} +1 -1
  156. package/dist/assets/{mouse-pointer-2-CPtgnbQR.js → mouse-pointer-2-BVNozhkt.js} +1 -1
  157. package/dist/assets/music-2-DGNhWGN8.js +1 -0
  158. package/dist/assets/{nanobanana-Boq7_JZY.js → nanobanana-2O8uFKaf.js} +1 -1
  159. package/dist/assets/{omni-e5RucB9v.js → omni-0Viu8s3W.js} +1 -1
  160. package/dist/assets/{openaiimage-CecDzHo_.js → openaiimage-o1NjJPhw.js} +1 -1
  161. package/dist/assets/{pagination-D60ws_82.js → pagination-Bn-Te_lz.js} +1 -1
  162. package/dist/assets/{pagination-SRh1R-Wq.js → pagination-Bn4f3wYD.js} +1 -1
  163. package/dist/assets/{pagination-BGdyJzOy.js → pagination-DpHxEI-k.js} +1 -1
  164. package/dist/assets/{palette-CJs4iujU.js → palette-DIHsHC32.js} +1 -1
  165. package/dist/assets/{paperclip-B8vIHRoV.js → paperclip-CYkP9UNQ.js} +1 -1
  166. package/dist/assets/{pause-DKV3CUc2.js → pause-BgXcwbWB.js} +1 -1
  167. package/dist/assets/{pencil-DBnzAthV.js → pencil-tUu6ouB5.js} +1 -1
  168. package/dist/assets/{pika-uSymPQgW.js → pika-rKlrUBan.js} +1 -1
  169. package/dist/assets/{pixverse-DJoTHlvm.js → pixverse-BsYpepIg.js} +1 -1
  170. package/dist/assets/play-DPIxDecq.js +1 -0
  171. package/dist/assets/{plug-DbhoeWq8.js → plug-B2G0FN8y.js} +1 -1
  172. package/dist/assets/plus-BJtw637u.js +1 -0
  173. package/dist/assets/{poivelle-D2KkNd5j.js → poivelle-BgSa25CB.js} +1 -1
  174. package/dist/assets/{popover-Bwr3zebM.js → popover-B-XDEzXf.js} +1 -1
  175. package/dist/assets/{producer-Cxno7MHc.js → producer-Ld_9lBUQ.js} +1 -1
  176. package/dist/assets/{qrart-B_O2hSUW.js → qrart-DeeVv1qS.js} +1 -1
  177. package/dist/assets/{realtime-DPnxL6F4.js → realtime-DbcX-uYY.js} +1 -1
  178. package/dist/assets/{refresh-cw-XK6d1Rrn.js → refresh-cw-t0kiTZWs.js} +1 -1
  179. package/dist/assets/rotate-ccw-D3cY5lvz.js +1 -0
  180. package/dist/assets/rotate-cw-Q9go6gdx.js +1 -0
  181. package/dist/assets/{row-CJFGEaUu.js → row-B5owDjio.js} +1 -1
  182. package/dist/assets/search-BL6paE0R.js +1 -0
  183. package/dist/assets/{seedance-DU1j5J-g.js → seedance-B-_3RBUv.js} +1 -1
  184. package/dist/assets/{seedream-CArwJJXh.js → seedream-BR7o2P5I.js} +1 -1
  185. package/dist/assets/{select-dFQR69yU.js → select-DqVvQzGq.js} +1 -1
  186. package/dist/assets/{serp-CrnveDjz.js → serp-DFtauEc7.js} +1 -1
  187. package/dist/assets/{shield-CD-cwA-R.js → shield-BPTkbELz.js} +1 -1
  188. package/dist/assets/{shuffle-CNtL7bxS.js → shuffle-Bmv2t6R6.js} +1 -1
  189. package/dist/assets/{slider-CkoC7Vaw.js → slider-Daiw6Iva.js} +1 -1
  190. package/dist/assets/{sliders-horizontal-C_QkROg-.js → sliders-horizontal-BYKTTTwE.js} +1 -1
  191. package/dist/assets/{solana-wallets-prYscF3m.js → solana-wallets-CXC-8jG6.js} +2 -2
  192. package/dist/assets/{solana-wallets-vue-DEUEO5z0.js → solana-wallets-vue-fIiCXbp_.js} +1 -1
  193. package/dist/assets/{sora-CzwyO5Uf.js → sora-DiGUJQy2.js} +1 -1
  194. package/dist/assets/{sparkles-oT2sABLz.js → sparkles-BGrSMnoO.js} +1 -1
  195. package/dist/assets/square-CdZofyiS.js +1 -0
  196. package/dist/assets/{store-B5vEOT3v.js → store-BqFA4FXv.js} +1 -1
  197. package/dist/assets/{suno-YHGQYMc-.js → suno-DzHPaaTE.js} +1 -1
  198. package/dist/assets/{switch-DvY2NqFp.js → switch-Co1BiZ5s.js} +1 -1
  199. package/dist/assets/{table-TGYHw4HJ.js → table-BJBYrivw.js} +1 -1
  200. package/dist/assets/{tabs-zBQZp7-W.js → tabs-C4gim7Ak.js} +1 -1
  201. package/dist/assets/{tag-DX9-5Mti.js → tag-DKlEOhWa.js} +1 -1
  202. package/dist/assets/terminal-DSXKpkoK.js +1 -0
  203. package/dist/assets/{time-picker-fxAwDpta.js → time-picker-BsiiE59u.js} +1 -1
  204. package/dist/assets/{tooltip-DQRB5WQe.js → tooltip-DowzbA2H.js} +1 -1
  205. package/dist/assets/{trash-2-DooQKonb.js → trash-2-DY-Xs8eB.js} +1 -1
  206. package/dist/assets/{triangle-alert-CFrX8gEt.js → triangle-alert-DIl0w9Tt.js} +1 -1
  207. package/dist/assets/{upload-Dc_bG_Na.js → upload-C2q57sfz.js} +1 -1
  208. package/dist/assets/{upload-CfWJ5heB.js → upload-Dysa20WI.js} +1 -1
  209. package/dist/assets/user-DC1cJhr8.js +1 -0
  210. package/dist/assets/{veo-P9G1eZDl.js → veo-Dgiv3d9X.js} +1 -1
  211. package/dist/assets/{video-B4V6U2Lt.js → video-D-94pvqW.js} +1 -1
  212. package/dist/assets/{volume-2-CBU3mumY.js → volume-2-glzy9b7l.js} +1 -1
  213. package/dist/assets/{wallet-tXZJhZb4.js → wallet-DkDB80A7.js} +1 -1
  214. package/dist/assets/{wan-B1_lze58.js → wan-D7WRSQx1.js} +1 -1
  215. package/dist/assets/{wand-sparkles-DCARF_Gq.js → wand-sparkles-bgHAAYDe.js} +1 -1
  216. package/dist/assets/{web-Dt3i8jv0.js → web-BDw62ZyG.js} +1 -1
  217. package/dist/assets/{web-DqXv8HYa.js → web-BLnYRWAe.js} +1 -1
  218. package/dist/assets/{web-BCgE-YPT.js → web-CTwCReHZ.js} +1 -1
  219. package/dist/assets/{web-wPabi9Z9.js → web-CUvu7cWL.js} +1 -1
  220. package/dist/assets/{web-BDLdne_6.js → web-Dlm8jA1i.js} +1 -1
  221. package/dist/assets/{webextrator-CHz758G4.js → webextrator-BMKrL7aS.js} +1 -1
  222. package/dist/assets/{zap-BmraLjdI.js → zap-CQ29DxkU.js} +1 -1
  223. package/dist/index.html +1 -1
  224. package/package.json +1 -1
  225. package/dist/assets/arrow-down-DaxXAapG.js +0 -1
  226. package/dist/assets/arrow-left-CMgkzUy4.js +0 -1
  227. package/dist/assets/arrow-right-CkqFf1lT.js +0 -1
  228. package/dist/assets/arrow-up-D0O3p4cy.js +0 -1
  229. package/dist/assets/check-Jfe3Th-Y.js +0 -1
  230. package/dist/assets/chevron-down-fSJrrHQk.js +0 -1
  231. package/dist/assets/chevron-right-CUmIF3cC.js +0 -1
  232. package/dist/assets/circle-check-DkiYC-4D.js +0 -1
  233. package/dist/assets/clock-BMPDGdzS.js +0 -1
  234. package/dist/assets/code-BsYG89RQ.js +0 -1
  235. package/dist/assets/esm-CtLuh6nv.js +0 -1
  236. package/dist/assets/gauge-B5TeYhb-.js +0 -1
  237. package/dist/assets/loader-circle-BZ_qzblK.js +0 -1
  238. package/dist/assets/music-2-Da1AgiG2.js +0 -1
  239. package/dist/assets/play-DxJ3LldF.js +0 -1
  240. package/dist/assets/plus-Cjb15y66.js +0 -1
  241. package/dist/assets/rotate-ccw-Bd5EpOiS.js +0 -1
  242. package/dist/assets/rotate-cw-DhiaU2S1.js +0 -1
  243. package/dist/assets/search-Bh1--Pgw.js +0 -1
  244. package/dist/assets/square-CBVTZP_r.js +0 -1
  245. package/dist/assets/terminal-Dzk8plxI.js +0 -1
  246. package/dist/assets/user-BkFnDeCc.js +0 -1
@@ -1 +1 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,L as a,M as o,N as s,T as c,at as l,ht as u,it as d,j as f,mt as p,rt as m,tt as h,x as g,z as _}from"./vendor-chart-Dw-P17PN.js";import{r as v,t as y}from"./select-dFQR69yU.js";import{t as b}from"./upload-CfWJ5heB.js";import{t as x}from"./tooltip-DQRB5WQe.js";import{t as S}from"./alert-C16GyeJ_.js";import{t as C}from"./drawer-D_3Ux5r0.js";import{t as w}from"./input-number-mWiCY8x-.js";import{t as T}from"./slider-CkoC7Vaw.js";import{t as E}from"./clock-BMPDGdzS.js";import{r as D,t as O}from"./PromptTextarea-DSF00J6p.js";import{t as k}from"./info-BqYsJSgm.js";import{t as A}from"./trash-2-DooQKonb.js";import{t as j}from"./triangle-alert-CFrX8gEt.js";import{t as ee}from"./upload-Dc_bG_Na.js";import{t as M}from"./wand-sparkles-DCARF_Gq.js";import{cr as N,lr as P,ur as te}from"./constants-Dm-HitpB.js";import{E as F,Gt as ne,Kt as I,Sr as L,Ti as R,Ut as z,Vn as B,Wt as V,Yt as H,ci as U,di as W,in as G,qt as K,wi as q,zi as J}from"./index-CX5tT44B.js";import{t as Y}from"./CopyToClipboard-DTo9jexV.js";import{t as X}from"./ImagePreview-C_R7broQ.js";import{n as Z}from"./taskDrawerMixin-DyAUhFEq.js";import{t as re}from"./Consumption-BdZ1c3ei.js";import{a as Q,n as ie,r as ae,t as oe}from"./pagination-BGdyJzOy.js";import{t as se}from"./ApiCodeButton-BnhZ1r3c.js";import{t as ce}from"./BotPlaceholder-B6Y-k016.js";import{t as le}from"./ImageWrapper-BRkG-4ZC.js";var ue=_({name:`LayoutFlux`,components:{MagicIcon:M,ElDrawer:C,ElButton:J},mixins:[Z]}),de={class:`main flex flex-row flex-1`},fe={class:`config w-[320px] flex-none h-full min-h-0 overflow-hidden flex flex-col bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},pe={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function me(t,n,r,i,o,c){let f=l(`magic-icon`),m=l(`el-button`),_=l(`el-drawer`);return h(),s(`div`,de,[e(`div`,fe,[d(t.$slots,`config`,{},void 0,!0)]),e(`div`,pe,[d(t.$slots,`result`,{},void 0,!0)]),u(a(m,{circle:``,class:`menu`,"aria-label":t.$t(`common.button.openMenu`),title:t.$t(`common.button.openMenu`),onClick:n[0]||=e=>t.drawer=!0},{default:p(()=>[a(f,{size:`1em`,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`aria-label`,`title`]),[[g,!t.tasksEmpty]]),a(_,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer generator-drawer`},{default:p(()=>[d(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var he=F(ue,[[`render`,me],[`__scopeId`,`data-v-72e82d52`]]),ge=_({name:`ModelSelector`,components:{ElSelect:v,ElOption:y},props:{modelValue:{type:String,default:void 0}},emits:[`update:modelValue`],data(){return{options:[{value:`flux-dev`,label:`flux-dev`},{value:`flux-pro`,label:`flux-pro`},{value:`flux-kontext-pro`,label:`flux-kontext-pro`},{value:`flux-kontext-max`,label:`flux-kontext-max`},{value:`flux-2-flex`,label:`flux-2-flex`},{value:`flux-2-pro`,label:`flux-2-pro`},{value:`flux-2-max`,label:`flux-2-max`}]}},computed:{value:{get(){return this.$store.state.flux?.config?.model},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux.config,model:e})}}},mounted(){this.value||=te}}),_e={class:`field`},ve={class:`title font-bold`};function ye(t,n,r,o,u,d){let g=l(`el-option`),_=l(`el-select`);return h(),s(`div`,_e,[e(`h2`,ve,i(t.$t(`flux.name.model`)),1),a(_,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`flux.placeholder.select`)},{default:p(()=>[(h(!0),s(c,null,m(t.options,e=>(h(),f(g,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var be=F(ge,[[`render`,ye],[`__scopeId`,`data-v-e9b17945`]]),xe=_({name:`CountSelector`,components:{ElSlider:T,InfoIcon:Q,ElInputNumber:w},computed:{value:{get(){return this.$store.state.flux?.config?.count},set(e){console.debug(`set count`,e),this.$store.commit(`flux/setConfig`,{...this.$store.state.flux?.config,count:e})}}},mounted(){this.value||=1}}),Se={class:`flex justify-between`},Ce={class:`flex justify-start items-center`},we={class:`text-sm font-bold`},Te={class:`flex justify-end items-center`},Ee={class:`w-full`};function De(t,n,r,o,c,u){let d=l(`info-icon`),f=l(`el-input-number`),p=l(`el-slider`);return h(),s(`div`,null,[e(`div`,Se,[e(`div`,Ce,[e(`span`,we,i(t.$t(`flux.name.numbers`)),1),a(d,{content:t.$t(`flux.description.numbers`)},null,8,[`content`])]),e(`div`,Te,[a(f,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,"controls-position":`right`},null,8,[`modelValue`])])]),e(`div`,Ee,[a(p,{modelValue:t.value,"onUpdate:modelValue":n[1]||=e=>t.value=e,min:1,max:4,step:1},null,8,[`modelValue`])])])}var Oe=F(xe,[[`render`,De]]),ke=_({name:`ActionSelector`,components:{ElSelect:v,ElOption:y},props:{modelValue:{type:String,default:void 0}},emits:[`update:modelValue`],data(){return{options:[{value:`generate`,label:this.$t(`flux.name.generate`)},{value:`edits`,label:this.$t(`flux.name.edits`)}]}},computed:{value:{get(){return this.$store.state.flux?.config?.action},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux.config,action:e})}}},mounted(){this.value||=P}}),Ae={class:`field`},je={class:`title font-bold`};function Me(t,n,r,o,u,d){let g=l(`el-option`),_=l(`el-select`);return h(),s(`div`,Ae,[e(`h2`,je,i(t.$t(`flux.name.task`)),1),a(_,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`flux.placeholder.select`)},{default:p(()=>[(h(!0),s(c,null,m(t.options,e=>(h(),f(g,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Ne=F(ke,[[`render`,Me],[`__scopeId`,`data-v-81fd05e5`]]),Pe=_({name:`ImageUrlInput`,components:{UploadIcon:ee,ElUpload:b,ElButton:J,InfoIcon:Q,ImagePreview:X},mixins:[K,I,V],emits:[`change`],data(){return{fileList:[],uploadUrl:W()+`/api/v1/files/`}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)}},watch:{urls:{handler(e){console.debug(`URLs changed:`,e),this.$store.commit(`flux/setConfig`,{...this.$store.state.flux.config,image_url:e[0]})}}},methods:{onExceed(){R.warning(this.$t(`flux.message.uploadStartImageExceed`))},onError(){R.error(this.$t(`flux.message.uploadStartImageError`))}}}),Fe={class:`relative`},Ie={class:`flex justify-between`},Le={class:`flex justify-start items-center`},Re={class:`text-sm font-bold`};function ze(t,n,o,c,u,d){let f=l(`info-icon`),m=l(`image-preview`),g=l(`upload-icon`),_=l(`el-button`),v=l(`el-upload`);return h(),s(`div`,Fe,[e(`div`,Ie,[e(`div`,Le,[e(`span`,Re,i(t.$t(`flux.name.imageUrl`)),1),a(f,{content:t.$t(`flux.description.imageUrl`)},null,8,[`content`])])]),a(v,{ref:`uploader`,"file-list":t.fileList,"onUpdate:fileList":n[0]||=e=>t.fileList=e,name:`file`,limit:5,class:`upload-wrapper`,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,multiple:!0,"list-type":`picture`,action:t.uploadUrl,"on-exceed":t.onExceed,"on-error":t.onError,headers:t.headers},{file:p(({file:e})=>[a(m,{url:e.url||e.response?.file_url,name:e.name,percentage:e.percentage,onRemove:n=>t.fileList.splice(t.fileList.indexOf(e),1)},null,8,[`url`,`name`,`percentage`,`onRemove`])]),default:p(()=>[a(_,{round:``,type:`primary`,size:`small`,class:`btn btn-upload`},{default:p(()=>[a(g,{class:`icon mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`flux.button.uploadImageUrl`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`headers`])])}var Be=F(Pe,[[`render`,ze],[`__scopeId`,`data-v-2e7e6966`]]),Ve=_({name:`PromptInput`,components:{PromptTextarea:O},computed:{prompt:{get(){return this.$store.state.flux?.config?.prompt},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux?.config,prompt:e})}}},mounted(){this.prompt||=``}});function He(e,t,n,r,i,a){let o=l(`prompt-textarea`);return h(),f(o,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`flux.name.prompt`),info:e.$t(`flux.description.prompt`),placeholder:e.$t(`flux.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var Ue=F(Ve,[[`render`,He]]),We=_({name:`SizeSelector`,components:{ElSelect:v,ElOption:y},data(){return{options:N}},computed:{value:{get(){return this.$store.state.flux?.config?.size},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux?.config,size:e})}}},mounted(){this.value||=`1:1`}}),Ge={class:`field`},Ke={class:`title font-bold`};function qe(t,n,r,o,u,d){let g=l(`el-option`),_=l(`el-select`);return h(),s(`div`,Ge,[e(`h2`,Ke,i(t.$t(`flux.name.ratio`)),1),a(_,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`flux.placeholder.select`)},{default:p(()=>[(h(!0),s(c,null,m(t.options,e=>(h(),f(g,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Je=_({name:`PresetPanel`,components:{MagicIcon:M,ElButton:J,PromptInput:Ue,ModelSelector:be,CountSelector:Oe,Consumption:re,ActionSelector:Ne,ImageUrlInput:Be,SizeSelector:F(We,[[`render`,qe],[`__scopeId`,`data-v-8c58dc91`]])},emits:[`generate`],computed:{config(){return this.$store.state.flux?.config},consumption(){return H(this.config,this.service?.cost)},service(){return this.$store.state.flux?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),Ye={class:`flex flex-col h-full`},Xe={class:`flex-1 overflow-y-auto p-5`},Ze={class:`flex flex-col items-center justify-center px-5 pb-5`};function Qe(t,n,c,u,d,m){let g=l(`action-selector`),_=l(`prompt-input`),v=l(`image-url-input`),y=l(`model-selector`),b=l(`size-selector`),x=l(`count-selector`),S=l(`consumption`),C=l(`magic-icon`),w=l(`el-button`);return h(),s(`div`,Ye,[e(`div`,Xe,[a(g,{class:`mb-4`}),a(_,{class:`mb-4`}),t.config?.action===`edits`?(h(),f(v,{key:0,class:`mb-4`})):o(``,!0),a(y,{class:`mb-4`}),a(b,{class:`mb-4`}),a(x,{class:`mb-4`})]),e(`div`,Ze,[a(S,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),a(w,{type:`primary`,class:`btn w-full`,round:``,onClick:t.onGenerate},{default:p(()=>[a(C,{class:`mr-2`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`flux.button.generate`)),1)]),_:1},8,[`onClick`])])])}var $e=F(Je,[[`render`,Qe]]),et=_({name:`TaskPreview`,components:{DeleteIcon:A,ElTooltip:x,ChannelIcon:D,InfoIcon:k,MagicIcon:M,TimeIcon:E,WarningIcon:j,CopyToClipboard:Y,ElAlert:S,ImageWrapper:le,ApiCodeButton:se},props:{modelValue:{type:Object,required:!0}},data(){return{}},computed:{application(){return this.$store.state.flux?.application},config(){return this.$store.state.flux?.config},images(){let e=[],t=this.modelValue?.request?.action;return Array.isArray(this.modelValue?.response?.data)&&this.modelValue?.response?.data?.forEach(n=>{let r=n;t&&(r.action=t),e.push(r)}),e}},methods:{async onDelete(){let e=this.modelValue?.id;if(e){try{await q.confirm(this.$t(`common.message.deleteTaskConfirm`),this.$t(`common.button.delete`),{type:`warning`,confirmButtonText:this.$t(`common.button.delete`),cancelButtonText:this.$t(`common.button.cancel`),confirmButtonClass:`el-button--danger`})}catch{return}try{await this.$store.dispatch(`flux/deleteTask`,{id:e}),R.success(this.$t(`common.message.deleteTaskSuccess`))}catch{R.error(this.$t(`common.message.deleteTaskFailed`))}}},onDownload(e,t){e?.stopPropagation(),console.log(`on download`),window.open(t,`_blank`)},onOpenImage(e){window.open(e,`_blank`)}}}),tt={class:`preview`},nt={class:`left`},rt={class:`main`},it={class:`bot`},at={class:`datetime`},ot=[`aria-label`],st={class:`info`},ct={key:0,class:`prompt mt-2`},lt={key:0},ut={key:0,class:n({content:!0,failed:!0})},dt={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},ft={class:n({operations:!0,"mt-2":!0,"mb-2":!0})},pt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},mt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ht={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},gt={key:1,class:n({content:!0})},_t={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},vt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},yt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={class:`text-[var(--el-text-color-regular)] text-xs mb-0`},bt={key:2,class:n({content:!0})},xt={class:`text-[var(--el-text-color-regular)] text-xs mb-0`};function St(n,u,d,g,_,v){let y=l(`capability-presentation`),b=l(`delete-icon`),x=l(`el-tooltip`),S=l(`image-wrapper`),C=l(`api-code-button`),w=l(`channel-icon`),T=l(`magic-icon`),E=l(`copy-to-clipboard`),D=l(`time-icon`),O=l(`el-alert`),k=l(`warning-icon`),A=l(`info-icon`);return h(),s(`div`,tt,[e(`div`,nt,[a(y,{capability:`flux`,part:`avatar`,class:`avatar`})]),e(`div`,rt,[e(`div`,it,[a(y,{capability:`flux`,part:`name`}),e(`span`,at,i(n.$dayjs.format(``+new Date(parseFloat((n.modelValue?.created_at||``).toString())*1e3))),1),a(x,{effect:`dark`,content:n.$t(`common.button.delete`),placement:`top`},{default:p(()=>[n.modelValue?.id?(h(),s(`button`,{key:0,type:`button`,class:`btn-delete`,"aria-label":n.$t(`common.button.delete`),onClick:u[0]||=t((...e)=>n.onDelete&&n.onDelete(...e),[`stop`])},[a(b,{size:`1em`,"aria-hidden":`true`,focusable:`false`})],8,ot)):o(``,!0)]),_:1},8,[`content`])]),e(`div`,st,[n.modelValue?.request?.prompt?(h(),s(`p`,ct,[r(i(n.modelValue?.request?.prompt)+` `,1),n.modelValue?.response?o(``,!0):(h(),s(`span`,lt,` - (`+i(n.$t(`flux.status.pending`))+`) `,1))])):o(``,!0)]),n.modelValue?.response?.success===!0?(h(),s(`div`,ut,[e(`div`,dt,[(h(!0),s(c,null,m(n.images,(e,t)=>(h(),f(S,{key:t,src:e?.image_url,"raw-src":e?.image_url,"model-value":e},null,8,[`src`,`raw-src`,`model-value`]))),128))]),e(`div`,ft,[a(C,{path:`/flux/images`,body:n.modelValue?.request},null,8,[`body`])]),a(O,{closable:!1,class:`mt-2 success`},{default:p(()=>[e(`p`,pt,[a(w,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.model`))+`: `+i(n.modelValue?.request?.model),1)]),e(`p`,mt,[a(T,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),n.modelValue?.elapsed?(h(),s(`p`,ht,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0)]),_:1})])):o(``,!0),n.modelValue?.response?.success===!1?(h(),s(`div`,gt,[a(O,{closable:!1,class:`failure`},{template:p(()=>[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.failure`)),1)]),default:p(()=>[e(`p`,_t,[a(T,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),e(`p`,vt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.failureReason`))+`: `+i(n.modelValue?.response?.error?.message)+` `,1),a(E,{content:n.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),n.modelValue?.elapsed?(h(),s(`p`,yt,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),e(`p`,$,[a(w,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(E,{content:n.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])]),_:1})])):o(``,!0),n.modelValue?.response?o(``,!0):(h(),s(`div`,bt,[a(O,{closable:!1,class:`info`},{template:p(()=>[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.status.pending`)),1)]),default:p(()=>[e(`p`,xt,[a(T,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})]))])])}var Ct=_({name:`RecentPanel`,components:{TaskPreview:F(et,[[`render`,St],[`__scopeId`,`data-v-6df6d58d`]]),BotPlaceholder:ce,NoTasks:ae,ScrollList:ie},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.flux?.tasks,items:this.$store.state.flux?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),wt={key:0},Tt={key:2,class:`w-full h-full flex items-center justify-center`};function Et(e,t,n,r,i,u){let d=l(`bot-placeholder`),g=l(`task-preview`),_=l(`scroll-list`),v=l(`no-tasks`);return h(),s(c,null,[e.tasks?.items===void 0?(h(),s(`div`,wt,[a(d)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(h(),f(_,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:p(()=>[(h(!0),s(c,null,m(e.tasks?.items,e=>(h(),f(g,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(h(),s(`div`,Tt,[a(v)])):o(``,!0)],64)}var Dt=_({name:`FluxIndex`,components:{ConfigPanel:$e,Layout:he,RecentPanel:F(Ct,[[`render`,Et]])},mixins:[ne],inject:[`initialized`],data(){return{task:void 0,job:0,loadingMore:!1,fetchingTasks:!1}},computed:{applicationsLoading(){return this.$store.state.flux?.status?.getApplications===U.Request},tasksLoading(){return this.$store.state.flux?.status?.getTasks===U.Request||this.fetchingTasks},credential(){return this.$store.state.flux?.credential},config(){return this.$store.state.flux?.config},application(){return this.$store.state.flux?.application},tasks(){return this.$store.state.flux?.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await oe({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loadingMore,setLoading:e=>this.loadingMore=e,isBlocked:()=>this.tasksLoading||this.applicationsLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`flux/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`flux/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.fetchingTasks){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=5,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),this.fetchingTasks=!0;try{await this.$store.dispatch(`flux/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})}finally{this.fetchingTasks=!1}},async onGenerate(){if(!z(this.uploadTracker,e=>this.$t(e),e=>R.warning(e)))return;let e={...this.config,async:!0};if(!G())return;let t=this.credential?.token;if(!t){console.error(`no token specified`);return}R.info(this.$t(`flux.message.startingTask`)),L(`flux`,B.generate(e,{token:t})).then(()=>{R.success(this.$t(`flux.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?R.error(this.$t(`flux.message.usedUp`)):R.error(this.$t(`flux.message.startTaskFailed`)+t?.error?.message)}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Ot(e,t,n,r,i,o){let s=l(`config-panel`),c=l(`recent-panel`),u=l(`layout`);return h(),f(u,null,{config:p(()=>[a(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:p(()=>[a(c,{ref:`recentPanel`,loading:e.loadingMore,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var kt=F(Dt,[[`render`,Ot]]);export{kt as default};
1
+ import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,L as a,M as o,N as s,T as c,at as l,ht as u,it as d,j as f,mt as p,rt as m,tt as h,x as g,z as _}from"./vendor-chart-Dw-P17PN.js";import{r as v,t as y}from"./select-DqVvQzGq.js";import{t as b}from"./upload-Dysa20WI.js";import{t as x}from"./tooltip-DowzbA2H.js";import{t as S}from"./alert-BmDhbY4N.js";import{t as C}from"./drawer-BgpN40Ig.js";import{t as w}from"./input-number-COp7UOII.js";import{t as T}from"./slider-Daiw6Iva.js";import{t as E}from"./clock-CTJncUP-.js";import{r as D,t as O}from"./PromptTextarea-BPhoRMVI.js";import{t as k}from"./info-L0HoT29_.js";import{t as A}from"./trash-2-DY-Xs8eB.js";import{t as j}from"./triangle-alert-DIl0w9Tt.js";import{t as ee}from"./upload-C2q57sfz.js";import{t as M}from"./wand-sparkles-bgHAAYDe.js";import{cr as N,lr as P,ur as te}from"./constants-Dm-HitpB.js";import{E as F,Gt as ne,Kt as I,Sr as L,Ti as R,Ut as z,Vn as B,Wt as V,Yt as H,ci as U,di as W,in as G,qt as K,wi as q,zi as J}from"./index-X4H_LD85.js";import{t as Y}from"./CopyToClipboard-BMaxYkX6.js";import{t as X}from"./ImagePreview-Dzwq5j1p.js";import{n as Z}from"./taskDrawerMixin-DyAUhFEq.js";import{t as re}from"./Consumption-DL0zm78X.js";import{a as Q,n as ie,r as ae,t as oe}from"./pagination-DpHxEI-k.js";import{t as se}from"./ApiCodeButton-C_DtLteh.js";import{t as ce}from"./BotPlaceholder-miO90qGo.js";import{t as le}from"./ImageWrapper-B6kHPphW.js";var ue=_({name:`LayoutFlux`,components:{MagicIcon:M,ElDrawer:C,ElButton:J},mixins:[Z]}),de={class:`main flex flex-row flex-1`},fe={class:`config w-[320px] flex-none h-full min-h-0 overflow-hidden flex flex-col bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},pe={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function me(t,n,r,i,o,c){let f=l(`magic-icon`),m=l(`el-button`),_=l(`el-drawer`);return h(),s(`div`,de,[e(`div`,fe,[d(t.$slots,`config`,{},void 0,!0)]),e(`div`,pe,[d(t.$slots,`result`,{},void 0,!0)]),u(a(m,{circle:``,class:`menu`,"aria-label":t.$t(`common.button.openMenu`),title:t.$t(`common.button.openMenu`),onClick:n[0]||=e=>t.drawer=!0},{default:p(()=>[a(f,{size:`1em`,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`aria-label`,`title`]),[[g,!t.tasksEmpty]]),a(_,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer generator-drawer`},{default:p(()=>[d(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var he=F(ue,[[`render`,me],[`__scopeId`,`data-v-72e82d52`]]),ge=_({name:`ModelSelector`,components:{ElSelect:v,ElOption:y},props:{modelValue:{type:String,default:void 0}},emits:[`update:modelValue`],data(){return{options:[{value:`flux-dev`,label:`flux-dev`},{value:`flux-pro`,label:`flux-pro`},{value:`flux-kontext-pro`,label:`flux-kontext-pro`},{value:`flux-kontext-max`,label:`flux-kontext-max`},{value:`flux-2-flex`,label:`flux-2-flex`},{value:`flux-2-pro`,label:`flux-2-pro`},{value:`flux-2-max`,label:`flux-2-max`}]}},computed:{value:{get(){return this.$store.state.flux?.config?.model},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux.config,model:e})}}},mounted(){this.value||=te}}),_e={class:`field`},ve={class:`title font-bold`};function ye(t,n,r,o,u,d){let g=l(`el-option`),_=l(`el-select`);return h(),s(`div`,_e,[e(`h2`,ve,i(t.$t(`flux.name.model`)),1),a(_,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`flux.placeholder.select`)},{default:p(()=>[(h(!0),s(c,null,m(t.options,e=>(h(),f(g,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var be=F(ge,[[`render`,ye],[`__scopeId`,`data-v-e9b17945`]]),xe=_({name:`CountSelector`,components:{ElSlider:T,InfoIcon:Q,ElInputNumber:w},computed:{value:{get(){return this.$store.state.flux?.config?.count},set(e){console.debug(`set count`,e),this.$store.commit(`flux/setConfig`,{...this.$store.state.flux?.config,count:e})}}},mounted(){this.value||=1}}),Se={class:`flex justify-between`},Ce={class:`flex justify-start items-center`},we={class:`text-sm font-bold`},Te={class:`flex justify-end items-center`},Ee={class:`w-full`};function De(t,n,r,o,c,u){let d=l(`info-icon`),f=l(`el-input-number`),p=l(`el-slider`);return h(),s(`div`,null,[e(`div`,Se,[e(`div`,Ce,[e(`span`,we,i(t.$t(`flux.name.numbers`)),1),a(d,{content:t.$t(`flux.description.numbers`)},null,8,[`content`])]),e(`div`,Te,[a(f,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,"controls-position":`right`},null,8,[`modelValue`])])]),e(`div`,Ee,[a(p,{modelValue:t.value,"onUpdate:modelValue":n[1]||=e=>t.value=e,min:1,max:4,step:1},null,8,[`modelValue`])])])}var Oe=F(xe,[[`render`,De]]),ke=_({name:`ActionSelector`,components:{ElSelect:v,ElOption:y},props:{modelValue:{type:String,default:void 0}},emits:[`update:modelValue`],data(){return{options:[{value:`generate`,label:this.$t(`flux.name.generate`)},{value:`edits`,label:this.$t(`flux.name.edits`)}]}},computed:{value:{get(){return this.$store.state.flux?.config?.action},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux.config,action:e})}}},mounted(){this.value||=P}}),Ae={class:`field`},je={class:`title font-bold`};function Me(t,n,r,o,u,d){let g=l(`el-option`),_=l(`el-select`);return h(),s(`div`,Ae,[e(`h2`,je,i(t.$t(`flux.name.task`)),1),a(_,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`flux.placeholder.select`)},{default:p(()=>[(h(!0),s(c,null,m(t.options,e=>(h(),f(g,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Ne=F(ke,[[`render`,Me],[`__scopeId`,`data-v-81fd05e5`]]),Pe=_({name:`ImageUrlInput`,components:{UploadIcon:ee,ElUpload:b,ElButton:J,InfoIcon:Q,ImagePreview:X},mixins:[K,I,V],emits:[`change`],data(){return{fileList:[],uploadUrl:W()+`/api/v1/files/`}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)}},watch:{urls:{handler(e){console.debug(`URLs changed:`,e),this.$store.commit(`flux/setConfig`,{...this.$store.state.flux.config,image_url:e[0]})}}},methods:{onExceed(){R.warning(this.$t(`flux.message.uploadStartImageExceed`))},onError(){R.error(this.$t(`flux.message.uploadStartImageError`))}}}),Fe={class:`relative`},Ie={class:`flex justify-between`},Le={class:`flex justify-start items-center`},Re={class:`text-sm font-bold`};function ze(t,n,o,c,u,d){let f=l(`info-icon`),m=l(`image-preview`),g=l(`upload-icon`),_=l(`el-button`),v=l(`el-upload`);return h(),s(`div`,Fe,[e(`div`,Ie,[e(`div`,Le,[e(`span`,Re,i(t.$t(`flux.name.imageUrl`)),1),a(f,{content:t.$t(`flux.description.imageUrl`)},null,8,[`content`])])]),a(v,{ref:`uploader`,"file-list":t.fileList,"onUpdate:fileList":n[0]||=e=>t.fileList=e,name:`file`,limit:5,class:`upload-wrapper`,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,multiple:!0,"list-type":`picture`,action:t.uploadUrl,"on-exceed":t.onExceed,"on-error":t.onError,headers:t.headers},{file:p(({file:e})=>[a(m,{url:e.url||e.response?.file_url,name:e.name,percentage:e.percentage,onRemove:n=>t.fileList.splice(t.fileList.indexOf(e),1)},null,8,[`url`,`name`,`percentage`,`onRemove`])]),default:p(()=>[a(_,{round:``,type:`primary`,size:`small`,class:`btn btn-upload`},{default:p(()=>[a(g,{class:`icon mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`flux.button.uploadImageUrl`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`headers`])])}var Be=F(Pe,[[`render`,ze],[`__scopeId`,`data-v-2e7e6966`]]),Ve=_({name:`PromptInput`,components:{PromptTextarea:O},computed:{prompt:{get(){return this.$store.state.flux?.config?.prompt},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux?.config,prompt:e})}}},mounted(){this.prompt||=``}});function He(e,t,n,r,i,a){let o=l(`prompt-textarea`);return h(),f(o,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`flux.name.prompt`),info:e.$t(`flux.description.prompt`),placeholder:e.$t(`flux.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var Ue=F(Ve,[[`render`,He]]),We=_({name:`SizeSelector`,components:{ElSelect:v,ElOption:y},data(){return{options:N}},computed:{value:{get(){return this.$store.state.flux?.config?.size},set(e){this.$store.commit(`flux/setConfig`,{...this.$store.state.flux?.config,size:e})}}},mounted(){this.value||=`1:1`}}),Ge={class:`field`},Ke={class:`title font-bold`};function qe(t,n,r,o,u,d){let g=l(`el-option`),_=l(`el-select`);return h(),s(`div`,Ge,[e(`h2`,Ke,i(t.$t(`flux.name.ratio`)),1),a(_,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`flux.placeholder.select`)},{default:p(()=>[(h(!0),s(c,null,m(t.options,e=>(h(),f(g,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Je=_({name:`PresetPanel`,components:{MagicIcon:M,ElButton:J,PromptInput:Ue,ModelSelector:be,CountSelector:Oe,Consumption:re,ActionSelector:Ne,ImageUrlInput:Be,SizeSelector:F(We,[[`render`,qe],[`__scopeId`,`data-v-8c58dc91`]])},emits:[`generate`],computed:{config(){return this.$store.state.flux?.config},consumption(){return H(this.config,this.service?.cost)},service(){return this.$store.state.flux?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),Ye={class:`flex flex-col h-full`},Xe={class:`flex-1 overflow-y-auto p-5`},Ze={class:`flex flex-col items-center justify-center px-5 pb-5`};function Qe(t,n,c,u,d,m){let g=l(`action-selector`),_=l(`prompt-input`),v=l(`image-url-input`),y=l(`model-selector`),b=l(`size-selector`),x=l(`count-selector`),S=l(`consumption`),C=l(`magic-icon`),w=l(`el-button`);return h(),s(`div`,Ye,[e(`div`,Xe,[a(g,{class:`mb-4`}),a(_,{class:`mb-4`}),t.config?.action===`edits`?(h(),f(v,{key:0,class:`mb-4`})):o(``,!0),a(y,{class:`mb-4`}),a(b,{class:`mb-4`}),a(x,{class:`mb-4`})]),e(`div`,Ze,[a(S,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),a(w,{type:`primary`,class:`btn w-full`,round:``,onClick:t.onGenerate},{default:p(()=>[a(C,{class:`mr-2`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`flux.button.generate`)),1)]),_:1},8,[`onClick`])])])}var $e=F(Je,[[`render`,Qe]]),et=_({name:`TaskPreview`,components:{DeleteIcon:A,ElTooltip:x,ChannelIcon:D,InfoIcon:k,MagicIcon:M,TimeIcon:E,WarningIcon:j,CopyToClipboard:Y,ElAlert:S,ImageWrapper:le,ApiCodeButton:se},props:{modelValue:{type:Object,required:!0}},data(){return{}},computed:{application(){return this.$store.state.flux?.application},config(){return this.$store.state.flux?.config},images(){let e=[],t=this.modelValue?.request?.action;return Array.isArray(this.modelValue?.response?.data)&&this.modelValue?.response?.data?.forEach(n=>{let r=n;t&&(r.action=t),e.push(r)}),e}},methods:{async onDelete(){let e=this.modelValue?.id;if(e){try{await q.confirm(this.$t(`common.message.deleteTaskConfirm`),this.$t(`common.button.delete`),{type:`warning`,confirmButtonText:this.$t(`common.button.delete`),cancelButtonText:this.$t(`common.button.cancel`),confirmButtonClass:`el-button--danger`})}catch{return}try{await this.$store.dispatch(`flux/deleteTask`,{id:e}),R.success(this.$t(`common.message.deleteTaskSuccess`))}catch{R.error(this.$t(`common.message.deleteTaskFailed`))}}},onDownload(e,t){e?.stopPropagation(),console.log(`on download`),window.open(t,`_blank`)},onOpenImage(e){window.open(e,`_blank`)}}}),tt={class:`preview`},nt={class:`left`},rt={class:`main`},it={class:`bot`},at={class:`datetime`},ot=[`aria-label`],st={class:`info`},ct={key:0,class:`prompt mt-2`},lt={key:0},ut={key:0,class:n({content:!0,failed:!0})},dt={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},ft={class:n({operations:!0,"mt-2":!0,"mb-2":!0})},pt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},mt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ht={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},gt={key:1,class:n({content:!0})},_t={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},vt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},yt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={class:`text-[var(--el-text-color-regular)] text-xs mb-0`},bt={key:2,class:n({content:!0})},xt={class:`text-[var(--el-text-color-regular)] text-xs mb-0`};function St(n,u,d,g,_,v){let y=l(`capability-presentation`),b=l(`delete-icon`),x=l(`el-tooltip`),S=l(`image-wrapper`),C=l(`api-code-button`),w=l(`channel-icon`),T=l(`magic-icon`),E=l(`copy-to-clipboard`),D=l(`time-icon`),O=l(`el-alert`),k=l(`warning-icon`),A=l(`info-icon`);return h(),s(`div`,tt,[e(`div`,nt,[a(y,{capability:`flux`,part:`avatar`,class:`avatar`})]),e(`div`,rt,[e(`div`,it,[a(y,{capability:`flux`,part:`name`}),e(`span`,at,i(n.$dayjs.format(``+new Date(parseFloat((n.modelValue?.created_at||``).toString())*1e3))),1),a(x,{effect:`dark`,content:n.$t(`common.button.delete`),placement:`top`},{default:p(()=>[n.modelValue?.id?(h(),s(`button`,{key:0,type:`button`,class:`btn-delete`,"aria-label":n.$t(`common.button.delete`),onClick:u[0]||=t((...e)=>n.onDelete&&n.onDelete(...e),[`stop`])},[a(b,{size:`1em`,"aria-hidden":`true`,focusable:`false`})],8,ot)):o(``,!0)]),_:1},8,[`content`])]),e(`div`,st,[n.modelValue?.request?.prompt?(h(),s(`p`,ct,[r(i(n.modelValue?.request?.prompt)+` `,1),n.modelValue?.response?o(``,!0):(h(),s(`span`,lt,` - (`+i(n.$t(`flux.status.pending`))+`) `,1))])):o(``,!0)]),n.modelValue?.response?.success===!0?(h(),s(`div`,ut,[e(`div`,dt,[(h(!0),s(c,null,m(n.images,(e,t)=>(h(),f(S,{key:t,src:e?.image_url,"raw-src":e?.image_url,"model-value":e},null,8,[`src`,`raw-src`,`model-value`]))),128))]),e(`div`,ft,[a(C,{path:`/flux/images`,body:n.modelValue?.request},null,8,[`body`])]),a(O,{closable:!1,class:`mt-2 success`},{default:p(()=>[e(`p`,pt,[a(w,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.model`))+`: `+i(n.modelValue?.request?.model),1)]),e(`p`,mt,[a(T,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),n.modelValue?.elapsed?(h(),s(`p`,ht,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0)]),_:1})])):o(``,!0),n.modelValue?.response?.success===!1?(h(),s(`div`,gt,[a(O,{closable:!1,class:`failure`},{template:p(()=>[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.failure`)),1)]),default:p(()=>[e(`p`,_t,[a(T,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),e(`p`,vt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.failureReason`))+`: `+i(n.modelValue?.response?.error?.message)+` `,1),a(E,{content:n.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),n.modelValue?.elapsed?(h(),s(`p`,yt,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),e(`p`,$,[a(w,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(E,{content:n.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])]),_:1})])):o(``,!0),n.modelValue?.response?o(``,!0):(h(),s(`div`,bt,[a(O,{closable:!1,class:`info`},{template:p(()=>[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.status.pending`)),1)]),default:p(()=>[e(`p`,xt,[a(T,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`flux.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})]))])])}var Ct=_({name:`RecentPanel`,components:{TaskPreview:F(et,[[`render`,St],[`__scopeId`,`data-v-6df6d58d`]]),BotPlaceholder:ce,NoTasks:ae,ScrollList:ie},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.flux?.tasks,items:this.$store.state.flux?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),wt={key:0},Tt={key:2,class:`w-full h-full flex items-center justify-center`};function Et(e,t,n,r,i,u){let d=l(`bot-placeholder`),g=l(`task-preview`),_=l(`scroll-list`),v=l(`no-tasks`);return h(),s(c,null,[e.tasks?.items===void 0?(h(),s(`div`,wt,[a(d)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(h(),f(_,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:p(()=>[(h(!0),s(c,null,m(e.tasks?.items,e=>(h(),f(g,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(h(),s(`div`,Tt,[a(v)])):o(``,!0)],64)}var Dt=_({name:`FluxIndex`,components:{ConfigPanel:$e,Layout:he,RecentPanel:F(Ct,[[`render`,Et]])},mixins:[ne],inject:[`initialized`],data(){return{task:void 0,job:0,loadingMore:!1,fetchingTasks:!1}},computed:{applicationsLoading(){return this.$store.state.flux?.status?.getApplications===U.Request},tasksLoading(){return this.$store.state.flux?.status?.getTasks===U.Request||this.fetchingTasks},credential(){return this.$store.state.flux?.credential},config(){return this.$store.state.flux?.config},application(){return this.$store.state.flux?.application},tasks(){return this.$store.state.flux?.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await oe({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loadingMore,setLoading:e=>this.loadingMore=e,isBlocked:()=>this.tasksLoading||this.applicationsLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`flux/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`flux/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.fetchingTasks){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=5,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),this.fetchingTasks=!0;try{await this.$store.dispatch(`flux/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})}finally{this.fetchingTasks=!1}},async onGenerate(){if(!z(this.uploadTracker,e=>this.$t(e),e=>R.warning(e)))return;let e={...this.config,async:!0};if(!G())return;let t=this.credential?.token;if(!t){console.error(`no token specified`);return}R.info(this.$t(`flux.message.startingTask`)),L(`flux`,B.generate(e,{token:t})).then(()=>{R.success(this.$t(`flux.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?R.error(this.$t(`flux.message.usedUp`)):R.error(this.$t(`flux.message.startTaskFailed`)+t?.error?.message)}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Ot(e,t,n,r,i,o){let s=l(`config-panel`),c=l(`recent-panel`),u=l(`layout`);return h(),f(u,null,{config:p(()=>[a(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:p(()=>[a(c,{ref:`recentPanel`,loading:e.loadingMore,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var kt=F(Dt,[[`render`,Ot]]);export{kt as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,K as a,L as o,M as s,N as c,S as l,T as u,at as d,b as f,ht as p,j as m,mt as h,ot as g,qt as _,rt as v,st as y,tt as b,z as x}from"./vendor-chart-Dw-P17PN.js";import{r as S,t as C}from"./select-dFQR69yU.js";import{n as w,t as T}from"./tabs-zBQZp7-W.js";import{t as E}from"./tooltip-DQRB5WQe.js";import{n as D,r as O,t as k}from"./dropdown-mcMMCG7K.js";import{t as A}from"./pagination-D60ws_82.js";import{t as j}from"./switch-DvY2NqFp.js";import{t as M}from"./arrow-down-DaxXAapG.js";import{t as N}from"./arrow-left-CMgkzUy4.js";import{t as P}from"./book-open-DSJyv-Tq.js";import{t as F}from"./chevron-down-fSJrrHQk.js";import{t as I}from"./chevron-right-CUmIF3cC.js";import{t as L}from"./circle-check-DkiYC-4D.js";import{t as ee}from"./circle-question-mark-tBuKgAmQ.js";import{t as te}from"./clipboard-list-BWvm3BDS.js";import{t as ne}from"./code-BsYG89RQ.js";import{t as R}from"./copy-0lsL87Wd.js";import{t as re}from"./ellipsis-sveOlT_Y.js";import{t as ie}from"./eye-DCxnyN3d.js";import{t as ae}from"./file-text-D9BhZW2U.js";import{t as z}from"./file-CoeAd2zT.js";import{t as B}from"./folder-DF_k--vf.js";import{t as oe}from"./image-DRW5OCUW.js";import{t as se}from"./lock-CuveUOB_.js";import{t as V}from"./plus-Cjb15y66.js";import{n as ce,t as le}from"./store-B5vEOT3v.js";import{t as ue}from"./search-Bh1--Pgw.js";import{t as de}from"./trash-2-DooQKonb.js";import{t as fe}from"./triangle-alert-CFrX8gEt.js";import{t as pe}from"./upload-Dc_bG_Na.js";import{t as me}from"./wand-sparkles-DCARF_Gq.js";import{Ai as H,Ci as U,E as W,Ei as G,Ji as he,Li as ge,Si as _e,Ti as K,bi as ve,fi as ye,gi as be,gr as q,hi as xe,mi as Se,ui as Ce,wi as we,zi as J}from"./index-CX5tT44B.js";import{a as Te,c as Ee,d as De,f as Oe,i as ke,l as Ae,m as Y,n as je,o as Me,p as Ne,r as Pe,s as Fe,t as Ie,u as Le}from"./vendor-highlight-BHrfT4-E.js";import{t as Re}from"./index.es-QIK6Za0X.js";import{t as ze}from"./VueMarkdown-CiiRjbWs.js";var Be=U(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),Ve=U(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),He=U(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),Ue=U(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),We=U(`square-plus`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),X=()=>({baseURL:`${Ce()}/api/v1`}),Z=new class{key=`skills/installed`;async list(){return q.get(`/${this.key}/`,X())}async get(e){return q.get(`/${this.key}/${e}/`,X())}async createMarkdown(e){return q.post(`/${this.key}/`,e,X())}async createTarball(e){let t=new FormData;return t.append(`tarball`,e),q.post(`/${this.key}/`,t,{...X(),headers:{"Content-Type":`multipart/form-data`}})}async update(e,t){return q.patch(`/${this.key}/${e}/`,t,X())}async remove(e){return q.delete(`/${this.key}/${e}/`,X())}async enable(e){return q.post(`/${this.key}/${e}/enable/`,void 0,X())}async disable(e){return q.post(`/${this.key}/${e}/disable/`,void 0,X())}async fetchFile(e,t){let n=await q.get(`/${this.key}/${e}/files/`,{...X(),params:{path:t},responseType:`arraybuffer`}),r=n.headers[`content-type`]||`application/octet-stream`;return{blob:new Blob([n.data],{type:r}),contentType:r}}},Q=new class{key=`skills`;async list(e={}){return q.get(`/${this.key}/`,{...X(),params:e})}async get(e){return q.get(`/${this.key}/${e}/`,X())}async categories(){return q.get(`/${this.key}/categories/`,X())}async install(e,t={}){return q.post(`/${this.key}/${e}/install/`,t,X())}};function Ge(){let e=new Set;xe()&&e.add(`desktop`),be()&&e.add(`ios`),Se()&&e.add(`android`),ve()&&e.add(`web`);let t=ye();if(t===`mac`)e.add(`mac`);else if(t===`windows`)e.add(`windows`);else if(typeof navigator<`u`){let t=navigator.userAgent||``,n=navigator.userAgentData?.platform,r=/macintosh/i.test(t)&&(navigator.maxTouchPoints||0)>1;!be()&&!r&&(n===`macOS`||/mac os x|macintosh/i.test(t))&&e.add(`mac`),(n===`Windows`||/windows nt/i.test(t))&&e.add(`windows`)}return e}var Ke=new Set([`mac`,`windows`,`desktop`,`web`,`ios`,`android`]);function qe(e){let t=e.filter(e=>Ke.has(e));if(!t.length)return!0;let n=Ge();return t.some(e=>n.has(e))}Y.registerLanguage(`bash`,Ne),Y.registerLanguage(`json`,Oe),Y.registerLanguage(`markdown`,De),Y.registerLanguage(`python`,Le),Y.registerLanguage(`shell`,Ae),Y.registerLanguage(`yaml`,Ee),Y.registerAliases([`yml`],{languageName:`yaml`}),Y.registerAliases([`py`],{languageName:`python`}),Y.registerAliases([`sh`,`zsh`],{languageName:`bash`});var Je=12,Ye=x({name:`BrowseSkillsDialog`,components:{VueMarkdown:ze,ElDialog:H,ElButton:J,ElPagination:A,ElSelect:S,ElOption:C,FontAwesomeIcon:Re,AddIcon:V,BackIcon:N,DownIcon:M,InstallIcon:Be,LockIcon:se,SearchIcon:ue,SuccessIcon:L},directives:{loading:G},props:{modelValue:{type:Boolean,default:!1}},emits:[`update:modelValue`,`installed`],data(){return{loading:!1,installing:!1,items:[],total:0,currentPage:1,searchQuery:``,namespaceFilter:``,sortBy:`popular`,selectedItem:null,searchTimer:null,knownNamespaces:[],publisherByNamespace:{}}},computed:{pageSize(){return Je},namespaceOptions(){let e=new Set(this.knownNamespaces);for(let t of this.items)e.add(t.namespace);return Array.from(e).sort().map(e=>({value:e,label:this.publisherForNamespace(e)}))},detailBody(){return this.selectedItem?this.selectedItem.content.replace(/^---\n[\s\S]*?\n---\n?/,``):``}},methods:{onOpen(){this.selectedItem=null,this.searchQuery=``,this.namespaceFilter=``,this.sortBy=`popular`,this.currentPage=1,this.knownNamespaces=[],this.publisherByNamespace={},this.loadFacets(),this.reload()},openDetail(e){this.selectedItem=e},async loadFacets(){try{let{data:e}=await Q.categories(),t=new Set;for(let n of e.namespaces)t.add(n.namespace);this.knownNamespaces=Array.from(t).sort()}catch(e){console.warn(`failed to load skill catalog facets`,e)}},reloadFromFirstPage(){this.currentPage=1,this.reload()},onPageChange(e){this.currentPage=e,this.reload(),this.$nextTick(()=>{let e=this.$el.querySelector(`.directory-grid-wrapper`);e&&(e.scrollTop=0)})},onSearchInput(){this.searchTimer!==null&&window.clearTimeout(this.searchTimer),this.searchTimer=window.setTimeout(()=>{this.searchTimer=null,this.reloadFromFirstPage()},250)},async reload(){this.loading=!0;try{let{data:e}=await Q.list({q:this.searchQuery.trim()||void 0,namespace:this.namespaceFilter||void 0,sort:this.sortBy,limit:this.pageSize,offset:(this.currentPage-1)*this.pageSize});this.items=e.items,this.total=e.total;for(let t of e.items)t.publisher&&(this.publisherByNamespace[t.namespace]=t.publisher)}catch(e){console.error(e),K.error(this.$t(`skill.directory.loadFailed`))}finally{this.loading=!1}},async onInstall(e){if(!this.installing&&!e.installed){if(!this.canInstallOnSurface(e)){K.warning(this.$t(`skill.directory.surfaceBlocked`,{platforms:this.surfaceLabels(e)}));return}this.installing=!0;try{let{data:t}=await Q.install(e.id);K.success(this.$t(`skill.directory.installSuccess`,{name:e.slug})),this.$emit(`installed`,t.id),e.installed=!0,e.install_count+=1}catch(t){let n=this.extractError(t);n.includes(`already exists`)?(e.installed=!0,K.warning(this.$t(`skill.directory.alreadyInstalled`,{name:e.slug}))):K.error(this.$t(`skill.directory.installFailed`,{detail:n}))}finally{this.installing=!1}}},extractError(e){return e?.response?.data?.detail||String(e)||`unknown error`},formatCount(e){return e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)},publisherForNamespace(e){if(this.publisherByNamespace[e])return this.publisherByNamespace[e];let t=this.items.find(t=>t.namespace===e);return t?t.publisher:e},restrictedSurfaces(e){let t=e.frontmatter?.surfaces;return Array.isArray(t)?t.filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim().toLowerCase()):[]},surfaceLabel(e){let t=`skill.directory.surface.${e}`,n=this.$t(t);return n===t?e:n},surfaceLabels(e){return this.restrictedSurfaces(e).map(e=>this.surfaceLabel(e)).join(` / `)},canInstallOnSurface(e){return qe(this.restrictedSurfaces(e))}}}),Xe={class:`directory`},Ze={class:`directory-main`},Qe={class:`directory-header`},$e={class:`directory-search`},et=[`placeholder`],tt={class:`directory-controls`},nt={class:`directory-grid-wrapper`},rt={key:0,class:`directory-empty`},it={key:1,class:`directory-grid`},at=[`onClick`],ot={class:`directory-card-head`},st={class:`directory-card-title`},ct=[`title`],lt=[`title`],ut=[`aria-label`,`title`,`onClick`],dt=[`title`],ft={class:`directory-card-meta`},pt={class:`directory-card-publisher`},mt={key:0,class:`directory-card-count`},ht=[`title`],gt={class:`directory-card-desc`},_t={key:0,class:`directory-footer`},vt={class:`directory-detail-head`},yt={class:`directory-detail-actions`},bt=[`href`],xt={class:`directory-detail-body`},St={class:`directory-detail-title`},Ct={class:`directory-detail-meta`},wt={key:0},Tt={key:1},Et=[`title`],Dt={class:`directory-detail-desc`};function Ot(a,l,_,y,x,S){let C=d(`search-icon`),w=d(`el-option`),T=d(`el-select`),E=d(`success-icon`),D=d(`lock-icon`),O=d(`add-icon`),k=d(`down-icon`),A=d(`el-pagination`),j=d(`back-icon`),M=d(`font-awesome-icon`),N=d(`el-button`),P=d(`install-icon`),F=d(`vue-markdown`),I=d(`el-dialog`),L=g(`loading`);return b(),m(I,{"model-value":a.modelValue,title:a.$t(`skill.dialog.directoryTitle`),width:`960px`,"align-center":``,class:`directory-dialog`,"close-on-click-modal":!a.installing,"show-close":!a.installing,"onUpdate:modelValue":l[6]||=e=>a.$emit(`update:modelValue`,e),onOpen:a.onOpen},{default:h(()=>[e(`div`,Xe,[e(`main`,Ze,[a.selectedItem?(b(),c(u,{key:1},[e(`header`,vt,[e(`button`,{class:`directory-back-btn`,onClick:l[4]||=e=>a.selectedItem=null},[o(j,{size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.back`)),1)]),e(`div`,yt,[a.selectedItem.source_url?(b(),c(`a`,{key:0,href:a.selectedItem.source_url,target:`_blank`,class:`directory-link`},[o(M,{icon:`fa-brands fa-github`}),r(` `+i(a.$t(`skill.directory.viewSource`)),1)],8,bt)):s(``,!0),a.selectedItem.installed?(b(),m(N,{key:1,disabled:``,type:`success`,plain:``},{default:h(()=>[o(E,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.installed`)),1)]),_:1})):a.selectedItem.installable&&!a.canInstallOnSurface(a.selectedItem)?(b(),m(N,{key:2,disabled:``,title:a.$t(`skill.directory.surfaceBlocked`,{platforms:a.surfaceLabels(a.selectedItem)})},{default:h(()=>[o(D,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.surfaceUnavailable`)),1)]),_:1},8,[`title`])):a.selectedItem.installable?(b(),m(N,{key:3,type:`primary`,loading:a.installing,onClick:l[5]||=e=>a.onInstall(a.selectedItem)},{default:h(()=>[o(P,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.install`)),1)]),_:1},8,[`loading`])):(b(),m(N,{key:4,disabled:``,title:a.selectedItem.license},{default:h(()=>[o(D,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.selectedItem.license||a.$t(`skill.directory.notInstallable`)),1)]),_:1},8,[`title`]))])]),e(`div`,xt,[e(`h2`,St,`/`+i(a.selectedItem.slug),1),e(`div`,Ct,[e(`span`,null,[e(`strong`,null,i(a.$t(`skill.meta.addedBy`))+`:`,1),r(` `+i(a.selectedItem.publisher),1)]),a.selectedItem.license?(b(),c(`span`,wt,[e(`strong`,null,i(a.$t(`skill.directory.license`))+`:`,1),r(` `+i(a.selectedItem.license),1)])):s(``,!0),a.selectedItem.version?(b(),c(`span`,Tt,`v`+i(a.selectedItem.version),1)):s(``,!0),a.surfaceLabels(a.selectedItem)?(b(),c(`span`,{key:2,class:`directory-detail-surface`,title:a.$t(`skill.directory.surfaceHint`)},i(a.$t(`skill.directory.surfaceOnly`,{platforms:a.surfaceLabels(a.selectedItem)})),9,Et)):s(``,!0)]),e(`p`,Dt,i(a.selectedItem.description),1),o(F,{class:`directory-detail-content`,source:a.detailBody,sanitize:``},null,8,[`source`])])],64)):(b(),c(u,{key:0},[e(`header`,Qe,[e(`div`,$e,[o(C,{class:`directory-search-icon`,size:16,"aria-hidden":`true`,focusable:`false`}),p(e(`input`,{"onUpdate:modelValue":l[0]||=e=>a.searchQuery=e,class:`directory-search-input`,placeholder:a.$t(`skill.directory.searchPlaceholder`),onInput:l[1]||=(...e)=>a.onSearchInput&&a.onSearchInput(...e)},null,40,et),[[f,a.searchQuery]])]),e(`div`,tt,[o(T,{modelValue:a.namespaceFilter,"onUpdate:modelValue":l[2]||=e=>a.namespaceFilter=e,class:`directory-select`,placeholder:a.$t(`skill.directory.allPublishers`),clearable:``,size:`default`,onChange:a.reloadFromFirstPage},{default:h(()=>[(b(!0),c(u,null,v(a.namespaceOptions,e=>(b(),m(w,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`onChange`]),o(T,{modelValue:a.sortBy,"onUpdate:modelValue":l[3]||=e=>a.sortBy=e,class:`directory-select directory-select-sm`,size:`default`,onChange:a.reloadFromFirstPage},{default:h(()=>[o(w,{label:a.$t(`skill.directory.sort.popular`),value:`popular`},null,8,[`label`]),o(w,{label:a.$t(`skill.directory.sort.recent`),value:`recent`},null,8,[`label`]),o(w,{label:a.$t(`skill.directory.sort.name`),value:`name`},null,8,[`label`])]),_:1},8,[`modelValue`,`onChange`])])]),p((b(),c(`div`,nt,[!a.loading&&a.total===0?(b(),c(`p`,rt,i(a.$t(`skill.directory.empty`)),1)):(b(),c(`div`,it,[(b(!0),c(u,null,v(a.items,l=>(b(),c(`article`,{key:l.id,class:n([`directory-card`,{"is-installed":l.installed}]),onClick:e=>a.openDetail(l)},[e(`div`,ot,[e(`span`,st,`/`+i(l.slug),1),l.installed?(b(),c(`span`,{key:0,class:`directory-card-action is-installed`,title:a.$t(`skill.directory.installed`)},[o(E,{size:16,"aria-hidden":`true`,focusable:`false`})],8,ct)):l.installable&&!a.canInstallOnSurface(l)?(b(),c(`span`,{key:1,class:`directory-card-locked`,title:a.$t(`skill.directory.surfaceBlocked`,{platforms:a.surfaceLabels(l)})},[o(D,{size:16,"aria-hidden":`true`,focusable:`false`})],8,lt)):l.installable?(b(),c(`button`,{key:2,class:`directory-card-action`,"aria-label":a.$t(`skill.directory.install`),title:a.$t(`skill.directory.install`),onClick:t(e=>a.onInstall(l),[`stop`])},[o(O,{size:16,"aria-hidden":`true`,focusable:`false`})],8,ut)):(b(),c(`span`,{key:3,class:`directory-card-locked`,title:l.license},[o(D,{size:16,"aria-hidden":`true`,focusable:`false`})],8,dt))]),e(`div`,ft,[e(`span`,pt,i(l.publisher),1),l.install_count>0?(b(),c(`span`,mt,[o(k,{size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.formatCount(l.install_count)),1)])):s(``,!0),a.surfaceLabels(l)?(b(),c(`span`,{key:1,class:`directory-card-surface`,title:a.$t(`skill.directory.surfaceHint`)},i(a.surfaceLabels(l)),9,ht)):s(``,!0)]),e(`p`,gt,i(l.description),1)],10,at))),128))]))])),[[L,a.loading]]),a.total>a.pageSize?(b(),c(`footer`,_t,[o(A,{"current-page":a.currentPage,"page-size":a.pageSize,total:a.total,"pager-count":5,background:``,layout:`prev, pager, next, total`,onCurrentChange:a.onPageChange},null,8,[`current-page`,`page-size`,`total`,`onCurrentChange`])])):s(``,!0)],64))])])]),_:1},8,[`model-value`,`title`,`close-on-click-modal`,`show-close`,`onOpen`])}var kt=W(Ye,[[`render`,Ot],[`__scopeId`,`data-v-80ab8a17`]]);Y.registerLanguage(`bash`,Ne),Y.registerLanguage(`css`,Fe),Y.registerLanguage(`go`,Me),Y.registerLanguage(`javascript`,Te),Y.registerLanguage(`json`,Oe),Y.registerLanguage(`markdown`,De),Y.registerLanguage(`python`,Le),Y.registerLanguage(`rust`,ke),Y.registerLanguage(`shell`,Ae),Y.registerLanguage(`sql`,Pe),Y.registerLanguage(`typescript`,je),Y.registerLanguage(`xml`,Ie),Y.registerLanguage(`html`,Ie),Y.registerLanguage(`yaml`,Ee),Y.registerAliases([`yml`],{languageName:`yaml`}),Y.registerAliases([`ts`,`tsx`],{languageName:`typescript`}),Y.registerAliases([`js`,`jsx`],{languageName:`javascript`}),Y.registerAliases([`py`],{languageName:`python`}),Y.registerAliases([`rs`],{languageName:`rust`}),Y.registerAliases([`sh`,`zsh`],{languageName:`bash`});var $=1e6;function At(e,t){let n=(e.split(`.`).pop()||``).toLowerCase();return n===`md`||t.startsWith(`text/markdown`)?`markdown`:n===`html`||n===`htm`||t.startsWith(`text/html`)?`html`:t.startsWith(`image/`)||[`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`].includes(n)?`image`:t.startsWith(`text/`)||[`json`,`application/json`].includes(t.split(`;`)[0])?n?`code`:`text`:`binary`}function jt(e){let t=(e.split(`.`).pop()||``).toLowerCase();return Y.getLanguage(t)?t:`plain`}var Mt=x({name:`SkillFilePreview`,components:{ElButton:J,ElTooltip:E,ElTabs:w,ElTabPane:T,CodeIcon:ne,CopyIcon:R,FileIcon:z,SaveIcon:Ue,ViewIcon:ie,WarningIcon:fe,VueMarkdown:ze},directives:{loading:G},props:{skillId:{type:String,required:!0},path:{type:String,required:!0},editable:{type:Boolean,default:!1}},emits:[`save`],data(){return{MAX_PREVIEW_BYTES:$,loading:!1,error:``,contentType:``,size:0,textContent:``,imageUrl:``,truncated:!1,viewMode:`rendered`,dirty:!1,saving:!1}},computed:{kind(){return this.path?At(this.path,this.contentType):`text`},canRender(){return this.kind===`markdown`||this.kind===`html`},hljsLang(){return`language-${jt(this.path)}`},truncatedText(){return this.textContent}},watch:{path:{handler(){this.fetch()},immediate:!0}},beforeUnmount(){this.imageUrl&&URL.revokeObjectURL(this.imageUrl)},methods:{humanSize(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`},async fetch(){if(this.path){this.loading=!0,this.error=``,this.textContent=``,this.truncated=!1,this.dirty=!1,this.imageUrl&&=(URL.revokeObjectURL(this.imageUrl),``);try{let{blob:e,contentType:t}=await Z.fetchFile(this.skillId,this.path);this.contentType=t,this.size=e.size;let n=At(this.path,t);if(n===`image`)this.imageUrl=URL.createObjectURL(e);else if(n!==`binary`){let t=await e.text();t.length>$&&(t=t.slice(0,$),this.truncated=!0),this.textContent=t,this.viewMode=n===`markdown`||n===`html`?`rendered`:`source`}}catch(e){let t=e,n=t?.response?.status,r=t?.response?.data?.detail||String(e);this.error=n?`(${n}) ${r}`:r}finally{this.loading=!1,this.$nextTick(()=>this.applyHighlight())}}},applyHighlight(){let e=this.$refs.codeEl;e&&this.kind===`code`&&this.viewMode!==`rendered`&&(delete e.dataset.highlighted,Y.highlightElement(e))},async onCopy(){if(this.textContent)try{await navigator.clipboard.writeText(this.textContent),K.success(this.$t(`skill.preview.copied`))}catch{K.error(this.$t(`skill.preview.copyFailed`))}},async onSave(){this.saving=!0;try{await new Promise((e,t)=>{this.$emit(`save`,this.textContent,{resolve:e,reject:t})}),this.dirty=!1}catch{}finally{this.saving=!1}}}}),Nt={class:`preview-root`},Pt={class:`toolbar`},Ft={class:`path-display`},It={key:0,class:`size-display`},Lt={class:`body`},Rt={key:0,class:`error`},zt=[`srcdoc`],Bt={key:3,class:`image-pane`},Vt=[`src`,`alt`],Ht={key:4,class:`binary`},Ut=[`placeholder`],Wt={key:6,class:`source-pane`},Gt={key:7,class:`truncated-warning`};function Kt(t,a,l,u,_,v){let y=d(`save-icon`),x=d(`el-button`),S=d(`copy-icon`),C=d(`el-tooltip`),w=d(`view-icon`),T=d(`el-tab-pane`),E=d(`code-icon`),D=d(`el-tabs`),O=d(`warning-icon`),k=d(`vue-markdown`),A=d(`file-icon`),j=g(`loading`);return p((b(),c(`div`,Nt,[e(`div`,Pt,[e(`span`,Ft,i(t.path||`—`),1),t.size?(b(),c(`span`,It,i(t.humanSize(t.size)),1)):s(``,!0),a[3]||=e(`span`,{class:`toolbar-spacer`},null,-1),t.editable?(b(),m(x,{key:1,type:`primary`,size:`small`,disabled:!t.dirty||t.saving,loading:t.saving,onClick:t.onSave},{default:h(()=>[o(y,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.button.save`)),1)]),_:1},8,[`disabled`,`loading`,`onClick`])):s(``,!0),o(C,{content:t.$t(`skill.preview.copy`),placement:`bottom`},{default:h(()=>[o(x,{size:`small`,circle:``,disabled:!t.textContent,"aria-label":t.$t(`skill.preview.copy`),title:t.$t(`skill.preview.copy`),onClick:t.onCopy},{default:h(()=>[o(S,{size:16,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`disabled`,`aria-label`,`title`,`onClick`])]),_:1},8,[`content`])]),t.canRender?(b(),m(D,{key:0,modelValue:t.viewMode,"onUpdate:modelValue":a[0]||=e=>t.viewMode=e,class:`view-tabs`},{default:h(()=>[o(T,{name:`rendered`},{label:h(()=>[o(w,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.preview.viewRendered`)),1)]),_:1}),o(T,{name:`source`},{label:h(()=>[o(E,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.preview.viewSource`)),1)]),_:1})]),_:1},8,[`modelValue`])):s(``,!0),e(`div`,Lt,[t.error?(b(),c(`div`,Rt,[o(O,{class:`mr-2`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.error),1)])):t.kind===`markdown`&&t.viewMode===`rendered`?(b(),m(k,{key:1,class:`markdown-rendered`,source:t.textContent,sanitize:``},null,8,[`source`])):t.kind===`html`&&t.viewMode===`rendered`?(b(),c(`iframe`,{key:2,ref:`htmlFrame`,class:`html-frame`,sandbox:``,srcdoc:t.textContent},null,8,zt)):t.kind===`image`?(b(),c(`div`,Bt,[e(`img`,{src:t.imageUrl,alt:t.path,class:`image-content`},null,8,Vt)])):t.kind===`binary`?(b(),c(`div`,Ht,[o(A,{class:`binary-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),e(`p`,null,i(t.$t(`skill.preview.binary`,{type:t.contentType})),1)])):t.editable?p((b(),c(`textarea`,{key:5,"onUpdate:modelValue":a[1]||=e=>t.textContent=e,class:`source-editor`,spellcheck:`false`,placeholder:t.$t(`skill.placeholder.content`),onInput:a[2]||=e=>t.dirty=!0},null,40,Ut)),[[f,t.textContent]]):(b(),c(`pre`,Wt,[e(`code`,{ref:`codeEl`,class:n(t.hljsLang)},i(t.truncatedText),3)])),t.truncated?(b(),c(`p`,Gt,i(t.$t(`skill.preview.truncated`,{size:t.humanSize(t.MAX_PREVIEW_BYTES)})),1)):s(``,!0)])])),[[j,t.loading]])}var qt=W(Mt,[[`render`,Kt],[`__scopeId`,`data-v-ec0a447e`]]),Jt=new Set([`py`,`ts`,`tsx`,`js`,`jsx`,`json`,`yaml`,`yml`,`sh`,`bash`,`zsh`,`css`,`html`,`sql`,`go`,`rs`,`rb`,`java`,`cpp`,`c`,`h`,`toml`]),Yt=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`]);function Xt(e){let t=e.split(`/`).pop()||e,n=(t.split(`.`).pop()||``).toLowerCase();return t===`SKILL.md`?P:n===`md`?ae:Yt.has(n)?oe:Jt.has(n)?He:z}function Zt(e){let t=new Map;t.set(``,new Map);let n=(e,n)=>{let r=t.get(e);r||(r=new Map,t.set(e,r));let i=e?`${e}/${n}`:n,a=r.get(n);return a||(a={label:n,path:i,isLeaf:!1,children:[]},r.set(n,a),t.set(i,new Map)),a};for(let r of e){let e=r.split(`/`).filter(Boolean);if(e.length===0)continue;let i=e[e.length-1],a=e.slice(0,-1),o=``;for(let e of a)o=n(o,e).path;let s={label:i,path:r,isLeaf:!0},c=t.get(o);c||(c=new Map,t.set(o,c)),c.set(i,s)}let r=e=>{let n=t.get(e);if(!n)return[];let i=Array.from(n.values());for(let e of i)e.isLeaf||(e.children=r(e.path));return i.sort((e,t)=>e.path===`SKILL.md`?-1:t.path===`SKILL.md`?1:e.isLeaf===t.isLeaf?e.label.localeCompare(t.label):e.isLeaf?1:-1)};return r(``)}var Qt=x({name:`FileNode`,components:{ExpandDownIcon:F,ExpandRightIcon:I,FontAwesomeIcon:Re},props:{node:{type:Object,required:!0},selectedSkillId:{type:String,required:!0},selectedPath:{type:String,required:!0},skill:{type:Object,required:!0},depth:{type:Number,default:1}},emits:[`select-file`],data(){return{open:!0}},computed:{indent(){return 8+this.depth*16},isActive(){return this.node.isLeaf&&this.selectedSkillId===this.skill.id&&this.selectedPath===this.node.path}},methods:{isHtmlFile(e){return e.isLeaf&&e.path.toLowerCase().endsWith(`.html`)},iconFor(e){return e.isLeaf?Xt(e.path):B},onClick(){this.node.isLeaf?this.$emit(`select-file`,this.node.path):this.open=!this.open}}}),$t=[`aria-label`,`title`],en={key:1,class:`node-chevron-spacer`},tn={class:`node-label`},nn={key:0,class:`children`};function rn(r,a,o,l,f,p){let h=d(`expand-down-icon`),g=d(`expand-right-icon`),x=d(`font-awesome-icon`),S=d(`file-node`,!0);return b(),c(`li`,null,[e(`div`,{class:n([`file-node`,{active:r.isActive}]),style:_({paddingLeft:r.indent+`px`}),onClick:a[1]||=(...e)=>r.onClick&&r.onClick(...e)},[r.node.isLeaf?(b(),c(`span`,en)):(b(),c(`button`,{key:0,class:`node-chevron`,"aria-label":r.$t(r.open?`common.button.collapse`:`common.button.expand`),title:r.$t(r.open?`common.button.collapse`:`common.button.expand`),onClick:a[0]||=t(e=>r.open=!r.open,[`stop`])},[r.open?(b(),m(h,{key:0,size:14,"aria-hidden":`true`,focusable:`false`})):(b(),m(g,{key:1,size:14,"aria-hidden":`true`,focusable:`false`}))],8,$t)),r.isHtmlFile(r.node)?(b(),m(x,{key:2,icon:`fa-brands fa-html5`,class:`node-icon`})):(b(),m(y(r.iconFor(r.node)),{key:3,class:`node-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`})),e(`span`,tn,i(r.node.label),1)],6),!r.node.isLeaf&&r.open?(b(),c(`ul`,nn,[(b(!0),c(u,null,v(r.node.children||[],e=>(b(),m(S,{key:e.path,node:e,"selected-skill-id":r.selectedSkillId,"selected-path":r.selectedPath,skill:r.skill,depth:r.depth+1,onSelectFile:a[2]||=e=>r.$emit(`select-file`,e)},null,8,[`node`,`selected-skill-id`,`selected-path`,`skill`,`depth`]))),128))])):s(``,!0)])}var an=x({name:`SkillRow`,components:{ExpandDownIcon:F,ExpandRightIcon:I,SkillIcon:ce,FileNode:W(Qt,[[`render`,rn],[`__scopeId`,`data-v-2215f06e`]])},props:{skill:{type:Object,required:!0},selectedSkillId:{type:String,required:!0},selectedPath:{type:String,required:!0},expanded:{type:Boolean,default:!1}},emits:[`toggle-expand`,`select-skill`,`select-file`],computed:{tree(){return Zt(this.skill.asset_bundle_files)},hasChildren(){return this.skill.asset_bundle_files.length>1},isSkillSelected(){return this.selectedSkillId===this.skill.id&&!this.selectedPath}},methods:{onSelectFile(e){this.$emit(`select-file`,this.skill,e)}}}),on={class:`skill-row-wrapper`},sn=[`aria-label`,`title`],cn={key:1,class:`row-chevron-spacer`},ln=[`title`],un={key:0,class:`file-list`};function dn(r,a,l,f,p,h){let g=d(`expand-down-icon`),_=d(`expand-right-icon`),y=d(`skill-icon`),x=d(`file-node`);return b(),c(`li`,on,[e(`div`,{class:n([`skill-row`,{active:r.isSkillSelected}]),onClick:a[1]||=e=>r.$emit(`select-skill`,r.skill)},[r.hasChildren?(b(),c(`button`,{key:0,class:`row-chevron`,"aria-label":r.$t(r.expanded?`common.button.collapse`:`common.button.expand`),title:r.$t(r.expanded?`common.button.collapse`:`common.button.expand`),onClick:a[0]||=t(e=>r.$emit(`toggle-expand`,r.skill),[`stop`])},[r.expanded?(b(),m(g,{key:0,size:14,"aria-hidden":`true`,focusable:`false`})):(b(),m(_,{key:1,size:14,"aria-hidden":`true`,focusable:`false`}))],8,sn)):(b(),c(`span`,cn)),o(y,{class:`row-icon`,size:16,"aria-hidden":`true`,focusable:`false`}),e(`span`,{class:`row-label`,title:r.skill.name},i(r.skill.slug),9,ln)],2),r.expanded&&r.hasChildren?(b(),c(`ul`,un,[(b(!0),c(u,null,v(r.tree,e=>(b(),m(x,{key:e.path,node:e,"selected-skill-id":r.selectedSkillId,"selected-path":r.selectedPath,skill:r.skill,depth:1,onSelectFile:r.onSelectFile},null,8,[`node`,`selected-skill-id`,`selected-path`,`skill`,`onSelectFile`]))),128))])):s(``,!0)])}var fn=W(an,[[`render`,dn],[`__scopeId`,`data-v-3dd0266c`]]),pn=10*1024*1024,mn=/\.(tar\.gz|tgz|tar|zip|md)$/i,hn=x({name:`UploadSkillDialog`,components:{ElDialog:H,ElButton:J,AddFileIcon:We,CloudUploadIcon:Ve},props:{modelValue:{type:Boolean,default:!1}},emits:[`update:modelValue`,`created`],data(){return{file:null,isDragging:!1,uploading:!1}},methods:{onVisibleChange(e){this.$emit(`update:modelValue`,e)},onClose(){this.uploading||this.$emit(`update:modelValue`,!1)},reset(){this.file=null,this.isDragging=!1;let e=this.$refs.fileInput;e&&(e.value=``)},humanSize(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`},onPickFile(){this.uploading||this.$refs.fileInput?.click()},onFilePicked(e){let t=e.target.files?.[0]||null;this.acceptFile(t)},onDrop(e){this.isDragging=!1;let t=e.dataTransfer?.files?.[0]||null;this.acceptFile(t)},acceptFile(e){if(!e){this.file=null;return}if(e.size>pn){K.error(this.$t(`skill.message.fileTooLarge`));return}if(!mn.test(e.name)){K.error(this.$t(`skill.message.fileTypeWrong`));return}this.file=e},extractError(e){let t=e;return t?.response?.data?.detail||(t?.response?.data?.content||[]).join(`; `)||String(e)||`unknown error`},async onSubmit(){if(this.file){this.uploading=!0;try{if(/\.md$/i.test(this.file.name)){let e=await this.file.text(),{data:t}=await Z.createMarkdown({content:e});K.success(this.$t(`skill.message.createSuccess`)),this.$emit(`created`,t.id)}else{let{data:e}=await Z.createTarball(this.file);K.success(this.$t(`skill.message.createSuccess`)),this.$emit(`created`,e.id)}this.$emit(`update:modelValue`,!1)}catch(e){K.error(this.$t(`skill.message.createFailed`,{detail:this.extractError(e)}))}finally{this.uploading=!1}}}}}),gn={key:0,class:`dropzone-hint`},_n={key:1,class:`dropzone-file`},vn={class:`dropzone-file-name`},yn={class:`dropzone-file-size`},bn={class:`requirements`},xn={class:`requirements-title`};function Sn(a,s,l,u,f,p){let g=d(`add-file-icon`),_=d(`el-button`),v=d(`cloud-upload-icon`),y=d(`el-dialog`);return b(),m(y,{"model-value":a.modelValue,title:a.$t(`skill.dialog.uploadTitle`),width:`520px`,"align-center":``,"close-on-click-modal":!a.uploading,"close-on-press-escape":!a.uploading,"show-close":!a.uploading,"onUpdate:modelValue":a.onVisibleChange,onClosed:a.reset},{footer:h(()=>[o(_,{disabled:a.uploading,onClick:a.onClose},{default:h(()=>[r(i(a.$t(`skill.button.cancel`)),1)]),_:1},8,[`disabled`,`onClick`]),o(_,{type:`primary`,loading:a.uploading,disabled:!a.file,onClick:a.onSubmit},{default:h(()=>[o(v,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.button.create`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])]),default:h(()=>[e(`input`,{ref:`fileInput`,type:`file`,accept:`.tar.gz,.tgz,.tar,.zip,.md,application/gzip,application/zip,application/x-tar,text/markdown`,hidden:``,onChange:s[0]||=(...e)=>a.onFilePicked&&a.onFilePicked(...e)},null,544),e(`div`,{class:n([`dropzone`,{"is-dragging":a.isDragging,"has-file":!!a.file}]),onClick:s[1]||=(...e)=>a.onPickFile&&a.onPickFile(...e),onDragover:s[2]||=t(e=>a.isDragging=!0,[`prevent`]),onDragleave:s[3]||=t(e=>a.isDragging=!1,[`prevent`]),onDrop:s[4]||=t((...e)=>a.onDrop&&a.onDrop(...e),[`prevent`])},[o(g,{class:`dropzone-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),a.file?(b(),c(`p`,_n,[e(`span`,vn,i(a.file.name),1),e(`span`,yn,i(a.humanSize(a.file.size)),1)])):(b(),c(`p`,gn,i(a.$t(`skill.dialog.uploadDrop`)),1))],34),e(`div`,bn,[e(`p`,xn,i(a.$t(`skill.dialog.fileRequirements`)),1),e(`ul`,null,[e(`li`,null,i(a.$t(`skill.dialog.requirementMd`)),1),e(`li`,null,i(a.$t(`skill.dialog.requirementArchive`)),1)])])]),_:1},8,[`model-value`,`title`,`close-on-click-modal`,`close-on-press-escape`,`show-close`,`onUpdate:modelValue`,`onClosed`])}var Cn=W(hn,[[`render`,Sn],[`__scopeId`,`data-v-3791b97e`]]),wn=x({name:`WriteSkillDialog`,components:{ElDialog:H,ElButton:J,ElInput:he,CloudUploadIcon:Ve},props:{modelValue:{type:Boolean,default:!1}},emits:[`update:modelValue`,`created`],data(){return{content:``,saving:!1}},methods:{onVisibleChange(e){this.$emit(`update:modelValue`,e)},onClose(){this.saving||this.$emit(`update:modelValue`,!1)},reset(){this.content=``},extractError(e){let t=e;return t?.response?.data?.detail||(t?.response?.data?.content||[]).join(`; `)||String(e)||`unknown error`},async onSubmit(){if(this.content.trim()){this.saving=!0;try{let{data:e}=await Z.createMarkdown({content:this.content});K.success(this.$t(`skill.message.createSuccess`)),this.$emit(`created`,e.id),this.$emit(`update:modelValue`,!1)}catch(e){K.error(this.$t(`skill.message.createFailed`,{detail:this.extractError(e)}))}finally{this.saving=!1}}}}}),Tn={class:`hint`};function En(t,n,a,s,c,l){let u=d(`el-input`),f=d(`el-button`),p=d(`cloud-upload-icon`),g=d(`el-dialog`);return b(),m(g,{"model-value":t.modelValue,title:t.$t(`skill.dialog.writeTitle`),width:`720px`,"align-center":``,"close-on-click-modal":!t.saving,"close-on-press-escape":!t.saving,"show-close":!t.saving,"onUpdate:modelValue":t.onVisibleChange,onClosed:t.reset},{footer:h(()=>[o(f,{disabled:t.saving,onClick:t.onClose},{default:h(()=>[r(i(t.$t(`skill.button.cancel`)),1)]),_:1},8,[`disabled`,`onClick`]),o(f,{type:`primary`,loading:t.saving,disabled:!t.content.trim(),onClick:t.onSubmit},{default:h(()=>[o(p,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.button.create`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])]),default:h(()=>[e(`p`,Tn,i(t.$t(`skill.dialog.writeHint`)),1),o(u,{modelValue:t.content,"onUpdate:modelValue":n[0]||=e=>t.content=e,type:`textarea`,rows:18,placeholder:t.$t(`skill.placeholder.content`),spellcheck:`false`,class:`editor`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`model-value`,`title`,`close-on-click-modal`,`close-on-press-escape`,`show-close`,`onUpdate:modelValue`,`onClosed`])}var Dn=x({name:`UserSkills`,components:{ElSwitch:j,ElTag:ge,ElTooltip:E,ElDropdown:k,ElDropdownMenu:O,ElDropdownItem:D,AddIcon:V,AiCreateIcon:me,CloseIcon:_e,DeleteIcon:de,ExpandDownIcon:F,ExpandRightIcon:I,HelpIcon:ee,MarketplaceIcon:le,MoreIcon:re,SearchIcon:ue,SkillIcon:ce,UploadIcon:pe,WriteIcon:te,BrowseSkillsDialog:kt,SkillFilePreview:qt,SkillRow:fn,UploadSkillDialog:Cn,WriteSkillDialog:W(wn,[[`render`,En],[`__scopeId`,`data-v-019a154c`]])},directives:{loading:G},data(){return{loading:!1,skills:[],togglingId:null,selectedSkillId:``,selectedPath:``,expandedSkillIds:[],personalOpen:!0,globalsOpen:!0,searchOpen:!1,searchQuery:``,uploadVisible:!1,writeVisible:!1,browseVisible:!1}},computed:{personalSkills(){return this.skills.filter(e=>e.source!==`global`)},globalSkills(){return this.skills.filter(e=>e.source===`global`)},filteredPersonal(){return this.applyFilter(this.personalSkills)},filteredGlobal(){return this.applyFilter(this.globalSkills)},selectedSkill(){return this.skills.find(e=>e.id===this.selectedSkillId)||null}},mounted(){this.fetchSkills()},methods:{applyFilter(e){let t=this.searchQuery.trim().toLowerCase();return t?e.filter(e=>e.slug.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)):e},async fetchSkills(){this.loading=!0;try{let{data:e}=await Z.list();if(this.skills=e||[],!this.selectedSkillId&&this.skills.length){let e=this.personalSkills[0]||this.skills[0];this.selectedSkillId=e.id}else this.selectedSkillId&&!this.skills.find(e=>e.id===this.selectedSkillId)&&(this.selectedSkillId=``,this.selectedPath=``)}catch(e){console.error(e),K.error(this.$t(`skill.message.loadFailed`))}finally{this.loading=!1}},extractError(e){let t=e;return t?.response?.data?.detail||(t?.response?.data?.content||[]).join(`; `)||String(e)||`unknown error`},selectSkill(e){this.selectedSkillId=e.id,this.selectedPath=``},selectFile(e,t){this.selectedSkillId=e.id,this.selectedPath=t},toggleExpand(e){let t=this.expandedSkillIds.indexOf(e.id);t>=0?this.expandedSkillIds.splice(t,1):this.expandedSkillIds.push(e.id)},openSearch(){this.searchOpen=!0,a(()=>{this.$refs.searchInput?.focus()})},closeSearch(){this.searchOpen=!1,this.searchQuery=``},openUpload(){this.uploadVisible=!0},openWrite(){this.writeVisible=!0},onBrowse(){this.browseVisible=!0},async onCreated(e){await this.fetchSkills();let t=this.skills.find(t=>t.id===e);t&&(this.selectedSkillId=t.id,this.selectedPath=``,this.personalOpen=!0)},async onSaveContent(e,t){if(!this.selectedSkill){t.reject();return}try{let{data:n}=await Z.update(this.selectedSkill.id,{content:e});K.success(this.$t(`skill.message.updateSuccess`));let r=this.skills.findIndex(e=>e.id===n.id);r>=0&&this.skills.splice(r,1,n),t.resolve()}catch(e){K.error(this.$t(`skill.message.createFailed`,{detail:this.extractError(e)})),t.reject(e)}},async onDelete(e){try{await we.confirm(this.$t(`skill.message.deleteConfirm`,{slug:e.slug}),this.$t(`skill.button.delete`),{type:`warning`})}catch{return}try{await Z.remove(e.id),K.success(this.$t(`skill.message.deleteSuccess`)),this.selectedSkillId===e.id&&(this.selectedSkillId=``,this.selectedPath=``),await this.fetchSkills()}catch(e){K.error(this.extractError(e))}},async onToggleSkill(e,t){this.togglingId=e.id;try{t?(await Z.enable(e.id),K.success(this.$t(`skill.message.enableSuccess`))):(await Z.disable(e.id),K.success(this.$t(`skill.message.disableSuccess`))),e.enabled=t}catch(e){K.error(this.extractError(e))}finally{this.togglingId=null}}}}),On={class:`page-shell`},kn={class:`page-heading`},An={class:`page-title`},jn={class:`page-subtitle`},Mn={class:`skills-shell`},Nn={class:`left-pane`},Pn={class:`left-header`},Fn={class:`left-actions`},In=[`aria-label`,`title`],Ln=[`aria-label`,`title`],Rn={class:`submenu-trigger`},zn={class:`badge-soon`},Bn={key:0,class:`search-row`},Vn=[`placeholder`],Hn=[`aria-label`,`title`],Un={class:`left-body`},Wn={class:`section`},Gn={key:0,class:`skill-list`},Kn={key:0,class:`empty-row`},qn={key:0,class:`section`},Jn={key:0,class:`skill-list`},Yn={class:`right-pane`},Xn={class:`right-header`},Zn={class:`right-title`},Qn={class:`right-actions`},$n=[`aria-label`,`title`],er={class:`meta-card`},tr={class:`meta-grid`},nr={class:`meta-cell`},rr={class:`meta-label`},ir={class:`meta-value`},ar={class:`meta-cell`},or={class:`meta-label`},sr={class:`meta-value`},cr={key:0,class:`meta-cell`},lr={class:`meta-label`},ur={class:`meta-tags`},dr={key:0,class:`meta-description`},fr={class:`meta-description-label`},pr={class:`meta-label`},mr={class:`preview-card`},hr={key:2,class:`right-empty`};function gr(t,n,a,_,y,x){let S=d(`search-icon`),C=d(`add-icon`),w=d(`marketplace-icon`),T=d(`el-dropdown-item`),E=d(`expand-right-icon`),D=d(`ai-create-icon`),O=d(`write-icon`),k=d(`upload-icon`),A=d(`el-dropdown-menu`),j=d(`el-dropdown`),M=d(`close-icon`),N=d(`expand-down-icon`),P=d(`skill-row`),F=d(`el-switch`),I=d(`more-icon`),L=d(`delete-icon`),ee=d(`el-tag`),te=d(`help-icon`),ne=d(`el-tooltip`),R=d(`skill-file-preview`),re=d(`skill-icon`),ie=d(`upload-skill-dialog`),ae=d(`write-skill-dialog`),z=d(`browse-skills-dialog`),B=g(`loading`);return b(),c(`div`,On,[e(`div`,kn,[e(`h2`,An,i(t.$t(`skill.title.skills`)),1),e(`p`,jn,i(t.$t(`skill.message.pageDescription`)),1)]),e(`div`,Mn,[e(`aside`,Nn,[e(`header`,Pn,[e(`div`,Fn,[t.searchOpen?s(``,!0):(b(),c(`button`,{key:0,class:`icon-btn`,"aria-label":t.$t(`skill.button.search`),title:t.$t(`skill.button.search`),onClick:n[0]||=(...e)=>t.openSearch&&t.openSearch(...e)},[o(S,{size:16,"aria-hidden":`true`,focusable:`false`})],8,In)),o(j,{trigger:`click`,placement:`bottom-end`,"hide-on-click":!1},{dropdown:h(()=>[o(A,{class:`add-menu`},{default:h(()=>[o(T,{onClick:t.onBrowse},{default:h(()=>[o(w,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.browse`)),1)]),_:1},8,[`onClick`]),o(T,{divided:``},{default:h(()=>[o(j,{trigger:`hover`,placement:`left-start`,"hide-on-click":!0},{dropdown:h(()=>[o(A,{class:`add-menu`},{default:h(()=>[o(T,{disabled:``},{default:h(()=>[o(D,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.createWithClaude`))+` `,1),e(`span`,zn,i(t.$t(`skill.menu.soon`)),1)]),_:1}),o(T,{onClick:t.openWrite},{default:h(()=>[o(O,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.write`)),1)]),_:1},8,[`onClick`]),o(T,{onClick:t.openUpload},{default:h(()=>[o(k,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.upload`)),1)]),_:1},8,[`onClick`])]),_:1})]),default:h(()=>[e(`span`,Rn,[o(C,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.create`))+` `,1),o(E,{class:`submenu-arrow`,size:14,"aria-hidden":`true`,focusable:`false`})])]),_:1})]),_:1})]),_:1})]),default:h(()=>[e(`button`,{class:`icon-btn`,"aria-label":t.$t(`skill.button.add`),title:t.$t(`skill.button.add`)},[o(C,{size:16,"aria-hidden":`true`,focusable:`false`})],8,Ln)]),_:1})])]),t.searchOpen?(b(),c(`div`,Bn,[o(S,{class:`search-icon`,size:13,"aria-hidden":`true`,focusable:`false`}),p(e(`input`,{ref:`searchInput`,"onUpdate:modelValue":n[1]||=e=>t.searchQuery=e,class:`search-input`,placeholder:t.$t(`skill.placeholder.search`),onKeydown:n[2]||=l((...e)=>t.closeSearch&&t.closeSearch(...e),[`escape`])},null,40,Vn),[[f,t.searchQuery]]),e(`button`,{class:`icon-btn icon-btn-sm`,"aria-label":t.$t(`common.button.close`),title:t.$t(`common.button.close`),onClick:n[3]||=(...e)=>t.closeSearch&&t.closeSearch(...e)},[o(M,{size:14,"aria-hidden":`true`,focusable:`false`})],8,Hn)])):s(``,!0),p((b(),c(`div`,Un,[e(`section`,Wn,[e(`button`,{class:`section-header`,onClick:n[4]||=e=>t.personalOpen=!t.personalOpen},[t.personalOpen?(b(),m(N,{key:0,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})):(b(),m(E,{key:1,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})),e(`span`,null,i(t.$t(`skill.section.personal`)),1)]),t.personalOpen?(b(),c(`ul`,Gn,[!t.loading&&t.filteredPersonal.length===0?(b(),c(`li`,Kn,i(t.searchQuery?t.$t(`skill.empty.search`):t.$t(`skill.message.noSkills`)),1)):s(``,!0),(b(!0),c(u,null,v(t.filteredPersonal,e=>(b(),m(P,{key:e.id,skill:e,"selected-skill-id":t.selectedSkillId,"selected-path":t.selectedPath,expanded:t.expandedSkillIds.includes(e.id),onToggleExpand:t.toggleExpand,onSelectSkill:t.selectSkill,onSelectFile:t.selectFile},null,8,[`skill`,`selected-skill-id`,`selected-path`,`expanded`,`onToggleExpand`,`onSelectSkill`,`onSelectFile`]))),128))])):s(``,!0)]),t.globalSkills.length>0?(b(),c(`section`,qn,[e(`button`,{class:`section-header`,onClick:n[5]||=e=>t.globalsOpen=!t.globalsOpen},[t.globalsOpen?(b(),m(N,{key:0,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})):(b(),m(E,{key:1,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})),e(`span`,null,i(t.$t(`skill.section.platform`)),1)]),t.globalsOpen?(b(),c(`ul`,Jn,[(b(!0),c(u,null,v(t.filteredGlobal,e=>(b(),m(P,{key:e.id,skill:e,"selected-skill-id":t.selectedSkillId,"selected-path":t.selectedPath,expanded:t.expandedSkillIds.includes(e.id),onToggleExpand:t.toggleExpand,onSelectSkill:t.selectSkill,onSelectFile:t.selectFile},null,8,[`skill`,`selected-skill-id`,`selected-path`,`expanded`,`onToggleExpand`,`onSelectSkill`,`onSelectFile`]))),128))])):s(``,!0)])):s(``,!0)])),[[B,t.loading]])]),e(`main`,Yn,[t.selectedSkill&&!t.selectedPath?(b(),c(u,{key:0},[e(`header`,Xn,[e(`h3`,Zn,i(t.selectedSkill.slug),1),e(`div`,Qn,[o(F,{"model-value":t.selectedSkill.enabled,size:`default`,loading:t.togglingId===t.selectedSkill.id,onChange:n[6]||=e=>t.onToggleSkill(t.selectedSkill,!!e)},null,8,[`model-value`,`loading`]),t.selectedSkill.source===`global`?s(``,!0):(b(),m(j,{key:0,trigger:`click`,placement:`bottom-end`},{dropdown:h(()=>[o(A,null,{default:h(()=>[o(T,{onClick:n[7]||=e=>t.onDelete(t.selectedSkill)},{default:h(()=>[o(L,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.button.delete`)),1)]),_:1})]),_:1})]),default:h(()=>[e(`button`,{class:`icon-btn`,"aria-label":t.$t(`skill.button.more`),title:t.$t(`skill.button.more`)},[o(I,{size:16,"aria-hidden":`true`,focusable:`false`})],8,$n)]),_:1}))])]),e(`div`,er,[e(`div`,tr,[e(`div`,nr,[e(`span`,rr,i(t.$t(`skill.meta.addedBy`)),1),e(`span`,ir,i(t.selectedSkill.source===`global`?t.$t(`skill.meta.platform`):t.$t(`skill.meta.you`)),1)]),e(`div`,ar,[e(`span`,or,i(t.$t(`skill.meta.lastUpdated`)),1),e(`span`,sr,i(t.$dayjs.format(t.selectedSkill.updated_at)),1)]),t.selectedSkill.required_connections.length?(b(),c(`div`,cr,[e(`span`,lr,i(t.$t(`skill.field.requiredConnections`)),1),e(`div`,ur,[(b(!0),c(u,null,v(t.selectedSkill.required_connections,e=>(b(),m(ee,{key:e,size:`small`,type:`info`},{default:h(()=>[r(i(e),1)]),_:2},1024))),128))])])):s(``,!0)]),t.selectedSkill.description?(b(),c(`div`,dr,[e(`div`,fr,[e(`span`,pr,i(t.$t(`skill.field.description`)),1),t.selectedSkill.when_to_use?(b(),m(ne,{key:0,content:t.selectedSkill.when_to_use,placement:`top`},{default:h(()=>[o(te,{class:`meta-info-icon`,size:12,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`content`])):s(``,!0)]),e(`p`,null,i(t.selectedSkill.description),1)])):s(``,!0)]),e(`div`,mr,[(b(),m(R,{key:`${t.selectedSkill.id}:SKILL.md`,"skill-id":t.selectedSkill.id,path:`SKILL.md`,editable:t.selectedSkill.source===`upload`,onSave:t.onSaveContent},null,8,[`skill-id`,`editable`,`onSave`]))])],64)):t.selectedSkill&&t.selectedPath?(b(),m(R,{key:`${t.selectedSkill.id}:${t.selectedPath}`,"skill-id":t.selectedSkill.id,path:t.selectedPath,editable:!1},null,8,[`skill-id`,`path`])):(b(),c(`div`,hr,[o(re,{class:`right-empty-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),e(`p`,null,i(t.$t(`skill.preview.selectSkill`)),1)]))])]),o(ie,{modelValue:t.uploadVisible,"onUpdate:modelValue":n[8]||=e=>t.uploadVisible=e,onCreated:t.onCreated},null,8,[`modelValue`,`onCreated`]),o(ae,{modelValue:t.writeVisible,"onUpdate:modelValue":n[9]||=e=>t.writeVisible=e,onCreated:t.onCreated},null,8,[`modelValue`,`onCreated`]),o(z,{modelValue:t.browseVisible,"onUpdate:modelValue":n[10]||=e=>t.browseVisible=e,onInstalled:t.onCreated},null,8,[`modelValue`,`onInstalled`])])}var _r=W(Dn,[[`render`,gr],[`__scopeId`,`data-v-549e935d`]]);export{_r as default};
1
+ import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,K as a,L as o,M as s,N as c,S as l,T as u,at as d,b as f,ht as p,j as m,mt as h,ot as g,qt as _,rt as v,st as y,tt as b,z as x}from"./vendor-chart-Dw-P17PN.js";import{r as S,t as C}from"./select-DqVvQzGq.js";import{n as w,t as T}from"./tabs-C4gim7Ak.js";import{t as E}from"./tooltip-DowzbA2H.js";import{n as D,r as O,t as k}from"./dropdown-EfsWv0Yl.js";import{t as A}from"./pagination-Bn-Te_lz.js";import{t as j}from"./switch-Co1BiZ5s.js";import{t as M}from"./arrow-down-_laNvAF4.js";import{t as N}from"./arrow-left-BxY2ckiR.js";import{t as P}from"./book-open-DgulRtEJ.js";import{t as F}from"./chevron-down-n14G0ihm.js";import{t as I}from"./chevron-right-CrLR-sC-.js";import{t as L}from"./circle-check-CcZvIPVM.js";import{t as ee}from"./circle-question-mark-Dg_6R6Ml.js";import{t as te}from"./clipboard-list-DQY8azPJ.js";import{t as ne}from"./code-DHK4Pm5M.js";import{t as R}from"./copy-CaELERYD.js";import{t as re}from"./ellipsis-BLq9exTH.js";import{t as ie}from"./eye-Dt7czJN5.js";import{t as ae}from"./file-text-Cg1esE6-.js";import{t as z}from"./file-BjjWIKuD.js";import{t as B}from"./folder-BmoEieDF.js";import{t as oe}from"./image-BLa4-1L7.js";import{t as se}from"./lock-BPdr7Bk-.js";import{t as V}from"./plus-BJtw637u.js";import{n as ce,t as le}from"./store-BqFA4FXv.js";import{t as ue}from"./search-BL6paE0R.js";import{t as de}from"./trash-2-DY-Xs8eB.js";import{t as fe}from"./triangle-alert-DIl0w9Tt.js";import{t as pe}from"./upload-C2q57sfz.js";import{t as me}from"./wand-sparkles-bgHAAYDe.js";import{Ai as H,Ci as U,E as W,Ei as G,Ji as he,Li as ge,Si as _e,Ti as K,bi as ve,fi as ye,gi as be,gr as q,hi as xe,mi as Se,ui as Ce,wi as we,zi as J}from"./index-X4H_LD85.js";import{a as Te,c as Ee,d as De,f as Oe,i as ke,l as Ae,m as Y,n as je,o as Me,p as Ne,r as Pe,s as Fe,t as Ie,u as Le}from"./vendor-highlight-BHrfT4-E.js";import{t as Re}from"./index.es-GZAOy__u.js";import{t as ze}from"./VueMarkdown-CiiRjbWs.js";var Be=U(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),Ve=U(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),He=U(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),Ue=U(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),We=U(`square-plus`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),X=()=>({baseURL:`${Ce()}/api/v1`}),Z=new class{key=`skills/installed`;async list(){return q.get(`/${this.key}/`,X())}async get(e){return q.get(`/${this.key}/${e}/`,X())}async createMarkdown(e){return q.post(`/${this.key}/`,e,X())}async createTarball(e){let t=new FormData;return t.append(`tarball`,e),q.post(`/${this.key}/`,t,{...X(),headers:{"Content-Type":`multipart/form-data`}})}async update(e,t){return q.patch(`/${this.key}/${e}/`,t,X())}async remove(e){return q.delete(`/${this.key}/${e}/`,X())}async enable(e){return q.post(`/${this.key}/${e}/enable/`,void 0,X())}async disable(e){return q.post(`/${this.key}/${e}/disable/`,void 0,X())}async fetchFile(e,t){let n=await q.get(`/${this.key}/${e}/files/`,{...X(),params:{path:t},responseType:`arraybuffer`}),r=n.headers[`content-type`]||`application/octet-stream`;return{blob:new Blob([n.data],{type:r}),contentType:r}}},Q=new class{key=`skills`;async list(e={}){return q.get(`/${this.key}/`,{...X(),params:e})}async get(e){return q.get(`/${this.key}/${e}/`,X())}async categories(){return q.get(`/${this.key}/categories/`,X())}async install(e,t={}){return q.post(`/${this.key}/${e}/install/`,t,X())}};function Ge(){let e=new Set;xe()&&e.add(`desktop`),be()&&e.add(`ios`),Se()&&e.add(`android`),ve()&&e.add(`web`);let t=ye();if(t===`mac`)e.add(`mac`);else if(t===`windows`)e.add(`windows`);else if(typeof navigator<`u`){let t=navigator.userAgent||``,n=navigator.userAgentData?.platform,r=/macintosh/i.test(t)&&(navigator.maxTouchPoints||0)>1;!be()&&!r&&(n===`macOS`||/mac os x|macintosh/i.test(t))&&e.add(`mac`),(n===`Windows`||/windows nt/i.test(t))&&e.add(`windows`)}return e}var Ke=new Set([`mac`,`windows`,`desktop`,`web`,`ios`,`android`]);function qe(e){let t=e.filter(e=>Ke.has(e));if(!t.length)return!0;let n=Ge();return t.some(e=>n.has(e))}Y.registerLanguage(`bash`,Ne),Y.registerLanguage(`json`,Oe),Y.registerLanguage(`markdown`,De),Y.registerLanguage(`python`,Le),Y.registerLanguage(`shell`,Ae),Y.registerLanguage(`yaml`,Ee),Y.registerAliases([`yml`],{languageName:`yaml`}),Y.registerAliases([`py`],{languageName:`python`}),Y.registerAliases([`sh`,`zsh`],{languageName:`bash`});var Je=12,Ye=x({name:`BrowseSkillsDialog`,components:{VueMarkdown:ze,ElDialog:H,ElButton:J,ElPagination:A,ElSelect:S,ElOption:C,FontAwesomeIcon:Re,AddIcon:V,BackIcon:N,DownIcon:M,InstallIcon:Be,LockIcon:se,SearchIcon:ue,SuccessIcon:L},directives:{loading:G},props:{modelValue:{type:Boolean,default:!1}},emits:[`update:modelValue`,`installed`],data(){return{loading:!1,installing:!1,items:[],total:0,currentPage:1,searchQuery:``,namespaceFilter:``,sortBy:`popular`,selectedItem:null,searchTimer:null,knownNamespaces:[],publisherByNamespace:{}}},computed:{pageSize(){return Je},namespaceOptions(){let e=new Set(this.knownNamespaces);for(let t of this.items)e.add(t.namespace);return Array.from(e).sort().map(e=>({value:e,label:this.publisherForNamespace(e)}))},detailBody(){return this.selectedItem?this.selectedItem.content.replace(/^---\n[\s\S]*?\n---\n?/,``):``}},methods:{onOpen(){this.selectedItem=null,this.searchQuery=``,this.namespaceFilter=``,this.sortBy=`popular`,this.currentPage=1,this.knownNamespaces=[],this.publisherByNamespace={},this.loadFacets(),this.reload()},openDetail(e){this.selectedItem=e},async loadFacets(){try{let{data:e}=await Q.categories(),t=new Set;for(let n of e.namespaces)t.add(n.namespace);this.knownNamespaces=Array.from(t).sort()}catch(e){console.warn(`failed to load skill catalog facets`,e)}},reloadFromFirstPage(){this.currentPage=1,this.reload()},onPageChange(e){this.currentPage=e,this.reload(),this.$nextTick(()=>{let e=this.$el.querySelector(`.directory-grid-wrapper`);e&&(e.scrollTop=0)})},onSearchInput(){this.searchTimer!==null&&window.clearTimeout(this.searchTimer),this.searchTimer=window.setTimeout(()=>{this.searchTimer=null,this.reloadFromFirstPage()},250)},async reload(){this.loading=!0;try{let{data:e}=await Q.list({q:this.searchQuery.trim()||void 0,namespace:this.namespaceFilter||void 0,sort:this.sortBy,limit:this.pageSize,offset:(this.currentPage-1)*this.pageSize});this.items=e.items,this.total=e.total;for(let t of e.items)t.publisher&&(this.publisherByNamespace[t.namespace]=t.publisher)}catch(e){console.error(e),K.error(this.$t(`skill.directory.loadFailed`))}finally{this.loading=!1}},async onInstall(e){if(!this.installing&&!e.installed){if(!this.canInstallOnSurface(e)){K.warning(this.$t(`skill.directory.surfaceBlocked`,{platforms:this.surfaceLabels(e)}));return}this.installing=!0;try{let{data:t}=await Q.install(e.id);K.success(this.$t(`skill.directory.installSuccess`,{name:e.slug})),this.$emit(`installed`,t.id),e.installed=!0,e.install_count+=1}catch(t){let n=this.extractError(t);n.includes(`already exists`)?(e.installed=!0,K.warning(this.$t(`skill.directory.alreadyInstalled`,{name:e.slug}))):K.error(this.$t(`skill.directory.installFailed`,{detail:n}))}finally{this.installing=!1}}},extractError(e){return e?.response?.data?.detail||String(e)||`unknown error`},formatCount(e){return e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)},publisherForNamespace(e){if(this.publisherByNamespace[e])return this.publisherByNamespace[e];let t=this.items.find(t=>t.namespace===e);return t?t.publisher:e},restrictedSurfaces(e){let t=e.frontmatter?.surfaces;return Array.isArray(t)?t.filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim().toLowerCase()):[]},surfaceLabel(e){let t=`skill.directory.surface.${e}`,n=this.$t(t);return n===t?e:n},surfaceLabels(e){return this.restrictedSurfaces(e).map(e=>this.surfaceLabel(e)).join(` / `)},canInstallOnSurface(e){return qe(this.restrictedSurfaces(e))}}}),Xe={class:`directory`},Ze={class:`directory-main`},Qe={class:`directory-header`},$e={class:`directory-search`},et=[`placeholder`],tt={class:`directory-controls`},nt={class:`directory-grid-wrapper`},rt={key:0,class:`directory-empty`},it={key:1,class:`directory-grid`},at=[`onClick`],ot={class:`directory-card-head`},st={class:`directory-card-title`},ct=[`title`],lt=[`title`],ut=[`aria-label`,`title`,`onClick`],dt=[`title`],ft={class:`directory-card-meta`},pt={class:`directory-card-publisher`},mt={key:0,class:`directory-card-count`},ht=[`title`],gt={class:`directory-card-desc`},_t={key:0,class:`directory-footer`},vt={class:`directory-detail-head`},yt={class:`directory-detail-actions`},bt=[`href`],xt={class:`directory-detail-body`},St={class:`directory-detail-title`},Ct={class:`directory-detail-meta`},wt={key:0},Tt={key:1},Et=[`title`],Dt={class:`directory-detail-desc`};function Ot(a,l,_,y,x,S){let C=d(`search-icon`),w=d(`el-option`),T=d(`el-select`),E=d(`success-icon`),D=d(`lock-icon`),O=d(`add-icon`),k=d(`down-icon`),A=d(`el-pagination`),j=d(`back-icon`),M=d(`font-awesome-icon`),N=d(`el-button`),P=d(`install-icon`),F=d(`vue-markdown`),I=d(`el-dialog`),L=g(`loading`);return b(),m(I,{"model-value":a.modelValue,title:a.$t(`skill.dialog.directoryTitle`),width:`960px`,"align-center":``,class:`directory-dialog`,"close-on-click-modal":!a.installing,"show-close":!a.installing,"onUpdate:modelValue":l[6]||=e=>a.$emit(`update:modelValue`,e),onOpen:a.onOpen},{default:h(()=>[e(`div`,Xe,[e(`main`,Ze,[a.selectedItem?(b(),c(u,{key:1},[e(`header`,vt,[e(`button`,{class:`directory-back-btn`,onClick:l[4]||=e=>a.selectedItem=null},[o(j,{size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.back`)),1)]),e(`div`,yt,[a.selectedItem.source_url?(b(),c(`a`,{key:0,href:a.selectedItem.source_url,target:`_blank`,class:`directory-link`},[o(M,{icon:`fa-brands fa-github`}),r(` `+i(a.$t(`skill.directory.viewSource`)),1)],8,bt)):s(``,!0),a.selectedItem.installed?(b(),m(N,{key:1,disabled:``,type:`success`,plain:``},{default:h(()=>[o(E,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.installed`)),1)]),_:1})):a.selectedItem.installable&&!a.canInstallOnSurface(a.selectedItem)?(b(),m(N,{key:2,disabled:``,title:a.$t(`skill.directory.surfaceBlocked`,{platforms:a.surfaceLabels(a.selectedItem)})},{default:h(()=>[o(D,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.surfaceUnavailable`)),1)]),_:1},8,[`title`])):a.selectedItem.installable?(b(),m(N,{key:3,type:`primary`,loading:a.installing,onClick:l[5]||=e=>a.onInstall(a.selectedItem)},{default:h(()=>[o(P,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.directory.install`)),1)]),_:1},8,[`loading`])):(b(),m(N,{key:4,disabled:``,title:a.selectedItem.license},{default:h(()=>[o(D,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.selectedItem.license||a.$t(`skill.directory.notInstallable`)),1)]),_:1},8,[`title`]))])]),e(`div`,xt,[e(`h2`,St,`/`+i(a.selectedItem.slug),1),e(`div`,Ct,[e(`span`,null,[e(`strong`,null,i(a.$t(`skill.meta.addedBy`))+`:`,1),r(` `+i(a.selectedItem.publisher),1)]),a.selectedItem.license?(b(),c(`span`,wt,[e(`strong`,null,i(a.$t(`skill.directory.license`))+`:`,1),r(` `+i(a.selectedItem.license),1)])):s(``,!0),a.selectedItem.version?(b(),c(`span`,Tt,`v`+i(a.selectedItem.version),1)):s(``,!0),a.surfaceLabels(a.selectedItem)?(b(),c(`span`,{key:2,class:`directory-detail-surface`,title:a.$t(`skill.directory.surfaceHint`)},i(a.$t(`skill.directory.surfaceOnly`,{platforms:a.surfaceLabels(a.selectedItem)})),9,Et)):s(``,!0)]),e(`p`,Dt,i(a.selectedItem.description),1),o(F,{class:`directory-detail-content`,source:a.detailBody,sanitize:``},null,8,[`source`])])],64)):(b(),c(u,{key:0},[e(`header`,Qe,[e(`div`,$e,[o(C,{class:`directory-search-icon`,size:16,"aria-hidden":`true`,focusable:`false`}),p(e(`input`,{"onUpdate:modelValue":l[0]||=e=>a.searchQuery=e,class:`directory-search-input`,placeholder:a.$t(`skill.directory.searchPlaceholder`),onInput:l[1]||=(...e)=>a.onSearchInput&&a.onSearchInput(...e)},null,40,et),[[f,a.searchQuery]])]),e(`div`,tt,[o(T,{modelValue:a.namespaceFilter,"onUpdate:modelValue":l[2]||=e=>a.namespaceFilter=e,class:`directory-select`,placeholder:a.$t(`skill.directory.allPublishers`),clearable:``,size:`default`,onChange:a.reloadFromFirstPage},{default:h(()=>[(b(!0),c(u,null,v(a.namespaceOptions,e=>(b(),m(w,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`onChange`]),o(T,{modelValue:a.sortBy,"onUpdate:modelValue":l[3]||=e=>a.sortBy=e,class:`directory-select directory-select-sm`,size:`default`,onChange:a.reloadFromFirstPage},{default:h(()=>[o(w,{label:a.$t(`skill.directory.sort.popular`),value:`popular`},null,8,[`label`]),o(w,{label:a.$t(`skill.directory.sort.recent`),value:`recent`},null,8,[`label`]),o(w,{label:a.$t(`skill.directory.sort.name`),value:`name`},null,8,[`label`])]),_:1},8,[`modelValue`,`onChange`])])]),p((b(),c(`div`,nt,[!a.loading&&a.total===0?(b(),c(`p`,rt,i(a.$t(`skill.directory.empty`)),1)):(b(),c(`div`,it,[(b(!0),c(u,null,v(a.items,l=>(b(),c(`article`,{key:l.id,class:n([`directory-card`,{"is-installed":l.installed}]),onClick:e=>a.openDetail(l)},[e(`div`,ot,[e(`span`,st,`/`+i(l.slug),1),l.installed?(b(),c(`span`,{key:0,class:`directory-card-action is-installed`,title:a.$t(`skill.directory.installed`)},[o(E,{size:16,"aria-hidden":`true`,focusable:`false`})],8,ct)):l.installable&&!a.canInstallOnSurface(l)?(b(),c(`span`,{key:1,class:`directory-card-locked`,title:a.$t(`skill.directory.surfaceBlocked`,{platforms:a.surfaceLabels(l)})},[o(D,{size:16,"aria-hidden":`true`,focusable:`false`})],8,lt)):l.installable?(b(),c(`button`,{key:2,class:`directory-card-action`,"aria-label":a.$t(`skill.directory.install`),title:a.$t(`skill.directory.install`),onClick:t(e=>a.onInstall(l),[`stop`])},[o(O,{size:16,"aria-hidden":`true`,focusable:`false`})],8,ut)):(b(),c(`span`,{key:3,class:`directory-card-locked`,title:l.license},[o(D,{size:16,"aria-hidden":`true`,focusable:`false`})],8,dt))]),e(`div`,ft,[e(`span`,pt,i(l.publisher),1),l.install_count>0?(b(),c(`span`,mt,[o(k,{size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.formatCount(l.install_count)),1)])):s(``,!0),a.surfaceLabels(l)?(b(),c(`span`,{key:1,class:`directory-card-surface`,title:a.$t(`skill.directory.surfaceHint`)},i(a.surfaceLabels(l)),9,ht)):s(``,!0)]),e(`p`,gt,i(l.description),1)],10,at))),128))]))])),[[L,a.loading]]),a.total>a.pageSize?(b(),c(`footer`,_t,[o(A,{"current-page":a.currentPage,"page-size":a.pageSize,total:a.total,"pager-count":5,background:``,layout:`prev, pager, next, total`,onCurrentChange:a.onPageChange},null,8,[`current-page`,`page-size`,`total`,`onCurrentChange`])])):s(``,!0)],64))])])]),_:1},8,[`model-value`,`title`,`close-on-click-modal`,`show-close`,`onOpen`])}var kt=W(Ye,[[`render`,Ot],[`__scopeId`,`data-v-80ab8a17`]]);Y.registerLanguage(`bash`,Ne),Y.registerLanguage(`css`,Fe),Y.registerLanguage(`go`,Me),Y.registerLanguage(`javascript`,Te),Y.registerLanguage(`json`,Oe),Y.registerLanguage(`markdown`,De),Y.registerLanguage(`python`,Le),Y.registerLanguage(`rust`,ke),Y.registerLanguage(`shell`,Ae),Y.registerLanguage(`sql`,Pe),Y.registerLanguage(`typescript`,je),Y.registerLanguage(`xml`,Ie),Y.registerLanguage(`html`,Ie),Y.registerLanguage(`yaml`,Ee),Y.registerAliases([`yml`],{languageName:`yaml`}),Y.registerAliases([`ts`,`tsx`],{languageName:`typescript`}),Y.registerAliases([`js`,`jsx`],{languageName:`javascript`}),Y.registerAliases([`py`],{languageName:`python`}),Y.registerAliases([`rs`],{languageName:`rust`}),Y.registerAliases([`sh`,`zsh`],{languageName:`bash`});var $=1e6;function At(e,t){let n=(e.split(`.`).pop()||``).toLowerCase();return n===`md`||t.startsWith(`text/markdown`)?`markdown`:n===`html`||n===`htm`||t.startsWith(`text/html`)?`html`:t.startsWith(`image/`)||[`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`].includes(n)?`image`:t.startsWith(`text/`)||[`json`,`application/json`].includes(t.split(`;`)[0])?n?`code`:`text`:`binary`}function jt(e){let t=(e.split(`.`).pop()||``).toLowerCase();return Y.getLanguage(t)?t:`plain`}var Mt=x({name:`SkillFilePreview`,components:{ElButton:J,ElTooltip:E,ElTabs:w,ElTabPane:T,CodeIcon:ne,CopyIcon:R,FileIcon:z,SaveIcon:Ue,ViewIcon:ie,WarningIcon:fe,VueMarkdown:ze},directives:{loading:G},props:{skillId:{type:String,required:!0},path:{type:String,required:!0},editable:{type:Boolean,default:!1}},emits:[`save`],data(){return{MAX_PREVIEW_BYTES:$,loading:!1,error:``,contentType:``,size:0,textContent:``,imageUrl:``,truncated:!1,viewMode:`rendered`,dirty:!1,saving:!1}},computed:{kind(){return this.path?At(this.path,this.contentType):`text`},canRender(){return this.kind===`markdown`||this.kind===`html`},hljsLang(){return`language-${jt(this.path)}`},truncatedText(){return this.textContent}},watch:{path:{handler(){this.fetch()},immediate:!0}},beforeUnmount(){this.imageUrl&&URL.revokeObjectURL(this.imageUrl)},methods:{humanSize(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`},async fetch(){if(this.path){this.loading=!0,this.error=``,this.textContent=``,this.truncated=!1,this.dirty=!1,this.imageUrl&&=(URL.revokeObjectURL(this.imageUrl),``);try{let{blob:e,contentType:t}=await Z.fetchFile(this.skillId,this.path);this.contentType=t,this.size=e.size;let n=At(this.path,t);if(n===`image`)this.imageUrl=URL.createObjectURL(e);else if(n!==`binary`){let t=await e.text();t.length>$&&(t=t.slice(0,$),this.truncated=!0),this.textContent=t,this.viewMode=n===`markdown`||n===`html`?`rendered`:`source`}}catch(e){let t=e,n=t?.response?.status,r=t?.response?.data?.detail||String(e);this.error=n?`(${n}) ${r}`:r}finally{this.loading=!1,this.$nextTick(()=>this.applyHighlight())}}},applyHighlight(){let e=this.$refs.codeEl;e&&this.kind===`code`&&this.viewMode!==`rendered`&&(delete e.dataset.highlighted,Y.highlightElement(e))},async onCopy(){if(this.textContent)try{await navigator.clipboard.writeText(this.textContent),K.success(this.$t(`skill.preview.copied`))}catch{K.error(this.$t(`skill.preview.copyFailed`))}},async onSave(){this.saving=!0;try{await new Promise((e,t)=>{this.$emit(`save`,this.textContent,{resolve:e,reject:t})}),this.dirty=!1}catch{}finally{this.saving=!1}}}}),Nt={class:`preview-root`},Pt={class:`toolbar`},Ft={class:`path-display`},It={key:0,class:`size-display`},Lt={class:`body`},Rt={key:0,class:`error`},zt=[`srcdoc`],Bt={key:3,class:`image-pane`},Vt=[`src`,`alt`],Ht={key:4,class:`binary`},Ut=[`placeholder`],Wt={key:6,class:`source-pane`},Gt={key:7,class:`truncated-warning`};function Kt(t,a,l,u,_,v){let y=d(`save-icon`),x=d(`el-button`),S=d(`copy-icon`),C=d(`el-tooltip`),w=d(`view-icon`),T=d(`el-tab-pane`),E=d(`code-icon`),D=d(`el-tabs`),O=d(`warning-icon`),k=d(`vue-markdown`),A=d(`file-icon`),j=g(`loading`);return p((b(),c(`div`,Nt,[e(`div`,Pt,[e(`span`,Ft,i(t.path||`—`),1),t.size?(b(),c(`span`,It,i(t.humanSize(t.size)),1)):s(``,!0),a[3]||=e(`span`,{class:`toolbar-spacer`},null,-1),t.editable?(b(),m(x,{key:1,type:`primary`,size:`small`,disabled:!t.dirty||t.saving,loading:t.saving,onClick:t.onSave},{default:h(()=>[o(y,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.button.save`)),1)]),_:1},8,[`disabled`,`loading`,`onClick`])):s(``,!0),o(C,{content:t.$t(`skill.preview.copy`),placement:`bottom`},{default:h(()=>[o(x,{size:`small`,circle:``,disabled:!t.textContent,"aria-label":t.$t(`skill.preview.copy`),title:t.$t(`skill.preview.copy`),onClick:t.onCopy},{default:h(()=>[o(S,{size:16,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`disabled`,`aria-label`,`title`,`onClick`])]),_:1},8,[`content`])]),t.canRender?(b(),m(D,{key:0,modelValue:t.viewMode,"onUpdate:modelValue":a[0]||=e=>t.viewMode=e,class:`view-tabs`},{default:h(()=>[o(T,{name:`rendered`},{label:h(()=>[o(w,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.preview.viewRendered`)),1)]),_:1}),o(T,{name:`source`},{label:h(()=>[o(E,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.preview.viewSource`)),1)]),_:1})]),_:1},8,[`modelValue`])):s(``,!0),e(`div`,Lt,[t.error?(b(),c(`div`,Rt,[o(O,{class:`mr-2`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.error),1)])):t.kind===`markdown`&&t.viewMode===`rendered`?(b(),m(k,{key:1,class:`markdown-rendered`,source:t.textContent,sanitize:``},null,8,[`source`])):t.kind===`html`&&t.viewMode===`rendered`?(b(),c(`iframe`,{key:2,ref:`htmlFrame`,class:`html-frame`,sandbox:``,srcdoc:t.textContent},null,8,zt)):t.kind===`image`?(b(),c(`div`,Bt,[e(`img`,{src:t.imageUrl,alt:t.path,class:`image-content`},null,8,Vt)])):t.kind===`binary`?(b(),c(`div`,Ht,[o(A,{class:`binary-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),e(`p`,null,i(t.$t(`skill.preview.binary`,{type:t.contentType})),1)])):t.editable?p((b(),c(`textarea`,{key:5,"onUpdate:modelValue":a[1]||=e=>t.textContent=e,class:`source-editor`,spellcheck:`false`,placeholder:t.$t(`skill.placeholder.content`),onInput:a[2]||=e=>t.dirty=!0},null,40,Ut)),[[f,t.textContent]]):(b(),c(`pre`,Wt,[e(`code`,{ref:`codeEl`,class:n(t.hljsLang)},i(t.truncatedText),3)])),t.truncated?(b(),c(`p`,Gt,i(t.$t(`skill.preview.truncated`,{size:t.humanSize(t.MAX_PREVIEW_BYTES)})),1)):s(``,!0)])])),[[j,t.loading]])}var qt=W(Mt,[[`render`,Kt],[`__scopeId`,`data-v-ec0a447e`]]),Jt=new Set([`py`,`ts`,`tsx`,`js`,`jsx`,`json`,`yaml`,`yml`,`sh`,`bash`,`zsh`,`css`,`html`,`sql`,`go`,`rs`,`rb`,`java`,`cpp`,`c`,`h`,`toml`]),Yt=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`]);function Xt(e){let t=e.split(`/`).pop()||e,n=(t.split(`.`).pop()||``).toLowerCase();return t===`SKILL.md`?P:n===`md`?ae:Yt.has(n)?oe:Jt.has(n)?He:z}function Zt(e){let t=new Map;t.set(``,new Map);let n=(e,n)=>{let r=t.get(e);r||(r=new Map,t.set(e,r));let i=e?`${e}/${n}`:n,a=r.get(n);return a||(a={label:n,path:i,isLeaf:!1,children:[]},r.set(n,a),t.set(i,new Map)),a};for(let r of e){let e=r.split(`/`).filter(Boolean);if(e.length===0)continue;let i=e[e.length-1],a=e.slice(0,-1),o=``;for(let e of a)o=n(o,e).path;let s={label:i,path:r,isLeaf:!0},c=t.get(o);c||(c=new Map,t.set(o,c)),c.set(i,s)}let r=e=>{let n=t.get(e);if(!n)return[];let i=Array.from(n.values());for(let e of i)e.isLeaf||(e.children=r(e.path));return i.sort((e,t)=>e.path===`SKILL.md`?-1:t.path===`SKILL.md`?1:e.isLeaf===t.isLeaf?e.label.localeCompare(t.label):e.isLeaf?1:-1)};return r(``)}var Qt=x({name:`FileNode`,components:{ExpandDownIcon:F,ExpandRightIcon:I,FontAwesomeIcon:Re},props:{node:{type:Object,required:!0},selectedSkillId:{type:String,required:!0},selectedPath:{type:String,required:!0},skill:{type:Object,required:!0},depth:{type:Number,default:1}},emits:[`select-file`],data(){return{open:!0}},computed:{indent(){return 8+this.depth*16},isActive(){return this.node.isLeaf&&this.selectedSkillId===this.skill.id&&this.selectedPath===this.node.path}},methods:{isHtmlFile(e){return e.isLeaf&&e.path.toLowerCase().endsWith(`.html`)},iconFor(e){return e.isLeaf?Xt(e.path):B},onClick(){this.node.isLeaf?this.$emit(`select-file`,this.node.path):this.open=!this.open}}}),$t=[`aria-label`,`title`],en={key:1,class:`node-chevron-spacer`},tn={class:`node-label`},nn={key:0,class:`children`};function rn(r,a,o,l,f,p){let h=d(`expand-down-icon`),g=d(`expand-right-icon`),x=d(`font-awesome-icon`),S=d(`file-node`,!0);return b(),c(`li`,null,[e(`div`,{class:n([`file-node`,{active:r.isActive}]),style:_({paddingLeft:r.indent+`px`}),onClick:a[1]||=(...e)=>r.onClick&&r.onClick(...e)},[r.node.isLeaf?(b(),c(`span`,en)):(b(),c(`button`,{key:0,class:`node-chevron`,"aria-label":r.$t(r.open?`common.button.collapse`:`common.button.expand`),title:r.$t(r.open?`common.button.collapse`:`common.button.expand`),onClick:a[0]||=t(e=>r.open=!r.open,[`stop`])},[r.open?(b(),m(h,{key:0,size:14,"aria-hidden":`true`,focusable:`false`})):(b(),m(g,{key:1,size:14,"aria-hidden":`true`,focusable:`false`}))],8,$t)),r.isHtmlFile(r.node)?(b(),m(x,{key:2,icon:`fa-brands fa-html5`,class:`node-icon`})):(b(),m(y(r.iconFor(r.node)),{key:3,class:`node-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`})),e(`span`,tn,i(r.node.label),1)],6),!r.node.isLeaf&&r.open?(b(),c(`ul`,nn,[(b(!0),c(u,null,v(r.node.children||[],e=>(b(),m(S,{key:e.path,node:e,"selected-skill-id":r.selectedSkillId,"selected-path":r.selectedPath,skill:r.skill,depth:r.depth+1,onSelectFile:a[2]||=e=>r.$emit(`select-file`,e)},null,8,[`node`,`selected-skill-id`,`selected-path`,`skill`,`depth`]))),128))])):s(``,!0)])}var an=x({name:`SkillRow`,components:{ExpandDownIcon:F,ExpandRightIcon:I,SkillIcon:ce,FileNode:W(Qt,[[`render`,rn],[`__scopeId`,`data-v-2215f06e`]])},props:{skill:{type:Object,required:!0},selectedSkillId:{type:String,required:!0},selectedPath:{type:String,required:!0},expanded:{type:Boolean,default:!1}},emits:[`toggle-expand`,`select-skill`,`select-file`],computed:{tree(){return Zt(this.skill.asset_bundle_files)},hasChildren(){return this.skill.asset_bundle_files.length>1},isSkillSelected(){return this.selectedSkillId===this.skill.id&&!this.selectedPath}},methods:{onSelectFile(e){this.$emit(`select-file`,this.skill,e)}}}),on={class:`skill-row-wrapper`},sn=[`aria-label`,`title`],cn={key:1,class:`row-chevron-spacer`},ln=[`title`],un={key:0,class:`file-list`};function dn(r,a,l,f,p,h){let g=d(`expand-down-icon`),_=d(`expand-right-icon`),y=d(`skill-icon`),x=d(`file-node`);return b(),c(`li`,on,[e(`div`,{class:n([`skill-row`,{active:r.isSkillSelected}]),onClick:a[1]||=e=>r.$emit(`select-skill`,r.skill)},[r.hasChildren?(b(),c(`button`,{key:0,class:`row-chevron`,"aria-label":r.$t(r.expanded?`common.button.collapse`:`common.button.expand`),title:r.$t(r.expanded?`common.button.collapse`:`common.button.expand`),onClick:a[0]||=t(e=>r.$emit(`toggle-expand`,r.skill),[`stop`])},[r.expanded?(b(),m(g,{key:0,size:14,"aria-hidden":`true`,focusable:`false`})):(b(),m(_,{key:1,size:14,"aria-hidden":`true`,focusable:`false`}))],8,sn)):(b(),c(`span`,cn)),o(y,{class:`row-icon`,size:16,"aria-hidden":`true`,focusable:`false`}),e(`span`,{class:`row-label`,title:r.skill.name},i(r.skill.slug),9,ln)],2),r.expanded&&r.hasChildren?(b(),c(`ul`,un,[(b(!0),c(u,null,v(r.tree,e=>(b(),m(x,{key:e.path,node:e,"selected-skill-id":r.selectedSkillId,"selected-path":r.selectedPath,skill:r.skill,depth:1,onSelectFile:r.onSelectFile},null,8,[`node`,`selected-skill-id`,`selected-path`,`skill`,`onSelectFile`]))),128))])):s(``,!0)])}var fn=W(an,[[`render`,dn],[`__scopeId`,`data-v-3dd0266c`]]),pn=10*1024*1024,mn=/\.(tar\.gz|tgz|tar|zip|md)$/i,hn=x({name:`UploadSkillDialog`,components:{ElDialog:H,ElButton:J,AddFileIcon:We,CloudUploadIcon:Ve},props:{modelValue:{type:Boolean,default:!1}},emits:[`update:modelValue`,`created`],data(){return{file:null,isDragging:!1,uploading:!1}},methods:{onVisibleChange(e){this.$emit(`update:modelValue`,e)},onClose(){this.uploading||this.$emit(`update:modelValue`,!1)},reset(){this.file=null,this.isDragging=!1;let e=this.$refs.fileInput;e&&(e.value=``)},humanSize(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`},onPickFile(){this.uploading||this.$refs.fileInput?.click()},onFilePicked(e){let t=e.target.files?.[0]||null;this.acceptFile(t)},onDrop(e){this.isDragging=!1;let t=e.dataTransfer?.files?.[0]||null;this.acceptFile(t)},acceptFile(e){if(!e){this.file=null;return}if(e.size>pn){K.error(this.$t(`skill.message.fileTooLarge`));return}if(!mn.test(e.name)){K.error(this.$t(`skill.message.fileTypeWrong`));return}this.file=e},extractError(e){let t=e;return t?.response?.data?.detail||(t?.response?.data?.content||[]).join(`; `)||String(e)||`unknown error`},async onSubmit(){if(this.file){this.uploading=!0;try{if(/\.md$/i.test(this.file.name)){let e=await this.file.text(),{data:t}=await Z.createMarkdown({content:e});K.success(this.$t(`skill.message.createSuccess`)),this.$emit(`created`,t.id)}else{let{data:e}=await Z.createTarball(this.file);K.success(this.$t(`skill.message.createSuccess`)),this.$emit(`created`,e.id)}this.$emit(`update:modelValue`,!1)}catch(e){K.error(this.$t(`skill.message.createFailed`,{detail:this.extractError(e)}))}finally{this.uploading=!1}}}}}),gn={key:0,class:`dropzone-hint`},_n={key:1,class:`dropzone-file`},vn={class:`dropzone-file-name`},yn={class:`dropzone-file-size`},bn={class:`requirements`},xn={class:`requirements-title`};function Sn(a,s,l,u,f,p){let g=d(`add-file-icon`),_=d(`el-button`),v=d(`cloud-upload-icon`),y=d(`el-dialog`);return b(),m(y,{"model-value":a.modelValue,title:a.$t(`skill.dialog.uploadTitle`),width:`520px`,"align-center":``,"close-on-click-modal":!a.uploading,"close-on-press-escape":!a.uploading,"show-close":!a.uploading,"onUpdate:modelValue":a.onVisibleChange,onClosed:a.reset},{footer:h(()=>[o(_,{disabled:a.uploading,onClick:a.onClose},{default:h(()=>[r(i(a.$t(`skill.button.cancel`)),1)]),_:1},8,[`disabled`,`onClick`]),o(_,{type:`primary`,loading:a.uploading,disabled:!a.file,onClick:a.onSubmit},{default:h(()=>[o(v,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(a.$t(`skill.button.create`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])]),default:h(()=>[e(`input`,{ref:`fileInput`,type:`file`,accept:`.tar.gz,.tgz,.tar,.zip,.md,application/gzip,application/zip,application/x-tar,text/markdown`,hidden:``,onChange:s[0]||=(...e)=>a.onFilePicked&&a.onFilePicked(...e)},null,544),e(`div`,{class:n([`dropzone`,{"is-dragging":a.isDragging,"has-file":!!a.file}]),onClick:s[1]||=(...e)=>a.onPickFile&&a.onPickFile(...e),onDragover:s[2]||=t(e=>a.isDragging=!0,[`prevent`]),onDragleave:s[3]||=t(e=>a.isDragging=!1,[`prevent`]),onDrop:s[4]||=t((...e)=>a.onDrop&&a.onDrop(...e),[`prevent`])},[o(g,{class:`dropzone-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),a.file?(b(),c(`p`,_n,[e(`span`,vn,i(a.file.name),1),e(`span`,yn,i(a.humanSize(a.file.size)),1)])):(b(),c(`p`,gn,i(a.$t(`skill.dialog.uploadDrop`)),1))],34),e(`div`,bn,[e(`p`,xn,i(a.$t(`skill.dialog.fileRequirements`)),1),e(`ul`,null,[e(`li`,null,i(a.$t(`skill.dialog.requirementMd`)),1),e(`li`,null,i(a.$t(`skill.dialog.requirementArchive`)),1)])])]),_:1},8,[`model-value`,`title`,`close-on-click-modal`,`close-on-press-escape`,`show-close`,`onUpdate:modelValue`,`onClosed`])}var Cn=W(hn,[[`render`,Sn],[`__scopeId`,`data-v-3791b97e`]]),wn=x({name:`WriteSkillDialog`,components:{ElDialog:H,ElButton:J,ElInput:he,CloudUploadIcon:Ve},props:{modelValue:{type:Boolean,default:!1}},emits:[`update:modelValue`,`created`],data(){return{content:``,saving:!1}},methods:{onVisibleChange(e){this.$emit(`update:modelValue`,e)},onClose(){this.saving||this.$emit(`update:modelValue`,!1)},reset(){this.content=``},extractError(e){let t=e;return t?.response?.data?.detail||(t?.response?.data?.content||[]).join(`; `)||String(e)||`unknown error`},async onSubmit(){if(this.content.trim()){this.saving=!0;try{let{data:e}=await Z.createMarkdown({content:this.content});K.success(this.$t(`skill.message.createSuccess`)),this.$emit(`created`,e.id),this.$emit(`update:modelValue`,!1)}catch(e){K.error(this.$t(`skill.message.createFailed`,{detail:this.extractError(e)}))}finally{this.saving=!1}}}}}),Tn={class:`hint`};function En(t,n,a,s,c,l){let u=d(`el-input`),f=d(`el-button`),p=d(`cloud-upload-icon`),g=d(`el-dialog`);return b(),m(g,{"model-value":t.modelValue,title:t.$t(`skill.dialog.writeTitle`),width:`720px`,"align-center":``,"close-on-click-modal":!t.saving,"close-on-press-escape":!t.saving,"show-close":!t.saving,"onUpdate:modelValue":t.onVisibleChange,onClosed:t.reset},{footer:h(()=>[o(f,{disabled:t.saving,onClick:t.onClose},{default:h(()=>[r(i(t.$t(`skill.button.cancel`)),1)]),_:1},8,[`disabled`,`onClick`]),o(f,{type:`primary`,loading:t.saving,disabled:!t.content.trim(),onClick:t.onSubmit},{default:h(()=>[o(p,{class:`mr-1`,size:16,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.button.create`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])]),default:h(()=>[e(`p`,Tn,i(t.$t(`skill.dialog.writeHint`)),1),o(u,{modelValue:t.content,"onUpdate:modelValue":n[0]||=e=>t.content=e,type:`textarea`,rows:18,placeholder:t.$t(`skill.placeholder.content`),spellcheck:`false`,class:`editor`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`model-value`,`title`,`close-on-click-modal`,`close-on-press-escape`,`show-close`,`onUpdate:modelValue`,`onClosed`])}var Dn=x({name:`UserSkills`,components:{ElSwitch:j,ElTag:ge,ElTooltip:E,ElDropdown:k,ElDropdownMenu:O,ElDropdownItem:D,AddIcon:V,AiCreateIcon:me,CloseIcon:_e,DeleteIcon:de,ExpandDownIcon:F,ExpandRightIcon:I,HelpIcon:ee,MarketplaceIcon:le,MoreIcon:re,SearchIcon:ue,SkillIcon:ce,UploadIcon:pe,WriteIcon:te,BrowseSkillsDialog:kt,SkillFilePreview:qt,SkillRow:fn,UploadSkillDialog:Cn,WriteSkillDialog:W(wn,[[`render`,En],[`__scopeId`,`data-v-019a154c`]])},directives:{loading:G},data(){return{loading:!1,skills:[],togglingId:null,selectedSkillId:``,selectedPath:``,expandedSkillIds:[],personalOpen:!0,globalsOpen:!0,searchOpen:!1,searchQuery:``,uploadVisible:!1,writeVisible:!1,browseVisible:!1}},computed:{personalSkills(){return this.skills.filter(e=>e.source!==`global`)},globalSkills(){return this.skills.filter(e=>e.source===`global`)},filteredPersonal(){return this.applyFilter(this.personalSkills)},filteredGlobal(){return this.applyFilter(this.globalSkills)},selectedSkill(){return this.skills.find(e=>e.id===this.selectedSkillId)||null}},mounted(){this.fetchSkills()},methods:{applyFilter(e){let t=this.searchQuery.trim().toLowerCase();return t?e.filter(e=>e.slug.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)):e},async fetchSkills(){this.loading=!0;try{let{data:e}=await Z.list();if(this.skills=e||[],!this.selectedSkillId&&this.skills.length){let e=this.personalSkills[0]||this.skills[0];this.selectedSkillId=e.id}else this.selectedSkillId&&!this.skills.find(e=>e.id===this.selectedSkillId)&&(this.selectedSkillId=``,this.selectedPath=``)}catch(e){console.error(e),K.error(this.$t(`skill.message.loadFailed`))}finally{this.loading=!1}},extractError(e){let t=e;return t?.response?.data?.detail||(t?.response?.data?.content||[]).join(`; `)||String(e)||`unknown error`},selectSkill(e){this.selectedSkillId=e.id,this.selectedPath=``},selectFile(e,t){this.selectedSkillId=e.id,this.selectedPath=t},toggleExpand(e){let t=this.expandedSkillIds.indexOf(e.id);t>=0?this.expandedSkillIds.splice(t,1):this.expandedSkillIds.push(e.id)},openSearch(){this.searchOpen=!0,a(()=>{this.$refs.searchInput?.focus()})},closeSearch(){this.searchOpen=!1,this.searchQuery=``},openUpload(){this.uploadVisible=!0},openWrite(){this.writeVisible=!0},onBrowse(){this.browseVisible=!0},async onCreated(e){await this.fetchSkills();let t=this.skills.find(t=>t.id===e);t&&(this.selectedSkillId=t.id,this.selectedPath=``,this.personalOpen=!0)},async onSaveContent(e,t){if(!this.selectedSkill){t.reject();return}try{let{data:n}=await Z.update(this.selectedSkill.id,{content:e});K.success(this.$t(`skill.message.updateSuccess`));let r=this.skills.findIndex(e=>e.id===n.id);r>=0&&this.skills.splice(r,1,n),t.resolve()}catch(e){K.error(this.$t(`skill.message.createFailed`,{detail:this.extractError(e)})),t.reject(e)}},async onDelete(e){try{await we.confirm(this.$t(`skill.message.deleteConfirm`,{slug:e.slug}),this.$t(`skill.button.delete`),{type:`warning`})}catch{return}try{await Z.remove(e.id),K.success(this.$t(`skill.message.deleteSuccess`)),this.selectedSkillId===e.id&&(this.selectedSkillId=``,this.selectedPath=``),await this.fetchSkills()}catch(e){K.error(this.extractError(e))}},async onToggleSkill(e,t){this.togglingId=e.id;try{t?(await Z.enable(e.id),K.success(this.$t(`skill.message.enableSuccess`))):(await Z.disable(e.id),K.success(this.$t(`skill.message.disableSuccess`))),e.enabled=t}catch(e){K.error(this.extractError(e))}finally{this.togglingId=null}}}}),On={class:`page-shell`},kn={class:`page-heading`},An={class:`page-title`},jn={class:`page-subtitle`},Mn={class:`skills-shell`},Nn={class:`left-pane`},Pn={class:`left-header`},Fn={class:`left-actions`},In=[`aria-label`,`title`],Ln=[`aria-label`,`title`],Rn={class:`submenu-trigger`},zn={class:`badge-soon`},Bn={key:0,class:`search-row`},Vn=[`placeholder`],Hn=[`aria-label`,`title`],Un={class:`left-body`},Wn={class:`section`},Gn={key:0,class:`skill-list`},Kn={key:0,class:`empty-row`},qn={key:0,class:`section`},Jn={key:0,class:`skill-list`},Yn={class:`right-pane`},Xn={class:`right-header`},Zn={class:`right-title`},Qn={class:`right-actions`},$n=[`aria-label`,`title`],er={class:`meta-card`},tr={class:`meta-grid`},nr={class:`meta-cell`},rr={class:`meta-label`},ir={class:`meta-value`},ar={class:`meta-cell`},or={class:`meta-label`},sr={class:`meta-value`},cr={key:0,class:`meta-cell`},lr={class:`meta-label`},ur={class:`meta-tags`},dr={key:0,class:`meta-description`},fr={class:`meta-description-label`},pr={class:`meta-label`},mr={class:`preview-card`},hr={key:2,class:`right-empty`};function gr(t,n,a,_,y,x){let S=d(`search-icon`),C=d(`add-icon`),w=d(`marketplace-icon`),T=d(`el-dropdown-item`),E=d(`expand-right-icon`),D=d(`ai-create-icon`),O=d(`write-icon`),k=d(`upload-icon`),A=d(`el-dropdown-menu`),j=d(`el-dropdown`),M=d(`close-icon`),N=d(`expand-down-icon`),P=d(`skill-row`),F=d(`el-switch`),I=d(`more-icon`),L=d(`delete-icon`),ee=d(`el-tag`),te=d(`help-icon`),ne=d(`el-tooltip`),R=d(`skill-file-preview`),re=d(`skill-icon`),ie=d(`upload-skill-dialog`),ae=d(`write-skill-dialog`),z=d(`browse-skills-dialog`),B=g(`loading`);return b(),c(`div`,On,[e(`div`,kn,[e(`h2`,An,i(t.$t(`skill.title.skills`)),1),e(`p`,jn,i(t.$t(`skill.message.pageDescription`)),1)]),e(`div`,Mn,[e(`aside`,Nn,[e(`header`,Pn,[e(`div`,Fn,[t.searchOpen?s(``,!0):(b(),c(`button`,{key:0,class:`icon-btn`,"aria-label":t.$t(`skill.button.search`),title:t.$t(`skill.button.search`),onClick:n[0]||=(...e)=>t.openSearch&&t.openSearch(...e)},[o(S,{size:16,"aria-hidden":`true`,focusable:`false`})],8,In)),o(j,{trigger:`click`,placement:`bottom-end`,"hide-on-click":!1},{dropdown:h(()=>[o(A,{class:`add-menu`},{default:h(()=>[o(T,{onClick:t.onBrowse},{default:h(()=>[o(w,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.browse`)),1)]),_:1},8,[`onClick`]),o(T,{divided:``},{default:h(()=>[o(j,{trigger:`hover`,placement:`left-start`,"hide-on-click":!0},{dropdown:h(()=>[o(A,{class:`add-menu`},{default:h(()=>[o(T,{disabled:``},{default:h(()=>[o(D,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.createWithClaude`))+` `,1),e(`span`,zn,i(t.$t(`skill.menu.soon`)),1)]),_:1}),o(T,{onClick:t.openWrite},{default:h(()=>[o(O,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.write`)),1)]),_:1},8,[`onClick`]),o(T,{onClick:t.openUpload},{default:h(()=>[o(k,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.upload`)),1)]),_:1},8,[`onClick`])]),_:1})]),default:h(()=>[e(`span`,Rn,[o(C,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.menu.create`))+` `,1),o(E,{class:`submenu-arrow`,size:14,"aria-hidden":`true`,focusable:`false`})])]),_:1})]),_:1})]),_:1})]),default:h(()=>[e(`button`,{class:`icon-btn`,"aria-label":t.$t(`skill.button.add`),title:t.$t(`skill.button.add`)},[o(C,{size:16,"aria-hidden":`true`,focusable:`false`})],8,Ln)]),_:1})])]),t.searchOpen?(b(),c(`div`,Bn,[o(S,{class:`search-icon`,size:13,"aria-hidden":`true`,focusable:`false`}),p(e(`input`,{ref:`searchInput`,"onUpdate:modelValue":n[1]||=e=>t.searchQuery=e,class:`search-input`,placeholder:t.$t(`skill.placeholder.search`),onKeydown:n[2]||=l((...e)=>t.closeSearch&&t.closeSearch(...e),[`escape`])},null,40,Vn),[[f,t.searchQuery]]),e(`button`,{class:`icon-btn icon-btn-sm`,"aria-label":t.$t(`common.button.close`),title:t.$t(`common.button.close`),onClick:n[3]||=(...e)=>t.closeSearch&&t.closeSearch(...e)},[o(M,{size:14,"aria-hidden":`true`,focusable:`false`})],8,Hn)])):s(``,!0),p((b(),c(`div`,Un,[e(`section`,Wn,[e(`button`,{class:`section-header`,onClick:n[4]||=e=>t.personalOpen=!t.personalOpen},[t.personalOpen?(b(),m(N,{key:0,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})):(b(),m(E,{key:1,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})),e(`span`,null,i(t.$t(`skill.section.personal`)),1)]),t.personalOpen?(b(),c(`ul`,Gn,[!t.loading&&t.filteredPersonal.length===0?(b(),c(`li`,Kn,i(t.searchQuery?t.$t(`skill.empty.search`):t.$t(`skill.message.noSkills`)),1)):s(``,!0),(b(!0),c(u,null,v(t.filteredPersonal,e=>(b(),m(P,{key:e.id,skill:e,"selected-skill-id":t.selectedSkillId,"selected-path":t.selectedPath,expanded:t.expandedSkillIds.includes(e.id),onToggleExpand:t.toggleExpand,onSelectSkill:t.selectSkill,onSelectFile:t.selectFile},null,8,[`skill`,`selected-skill-id`,`selected-path`,`expanded`,`onToggleExpand`,`onSelectSkill`,`onSelectFile`]))),128))])):s(``,!0)]),t.globalSkills.length>0?(b(),c(`section`,qn,[e(`button`,{class:`section-header`,onClick:n[5]||=e=>t.globalsOpen=!t.globalsOpen},[t.globalsOpen?(b(),m(N,{key:0,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})):(b(),m(E,{key:1,class:`section-chevron`,size:12,"aria-hidden":`true`,focusable:`false`})),e(`span`,null,i(t.$t(`skill.section.platform`)),1)]),t.globalsOpen?(b(),c(`ul`,Jn,[(b(!0),c(u,null,v(t.filteredGlobal,e=>(b(),m(P,{key:e.id,skill:e,"selected-skill-id":t.selectedSkillId,"selected-path":t.selectedPath,expanded:t.expandedSkillIds.includes(e.id),onToggleExpand:t.toggleExpand,onSelectSkill:t.selectSkill,onSelectFile:t.selectFile},null,8,[`skill`,`selected-skill-id`,`selected-path`,`expanded`,`onToggleExpand`,`onSelectSkill`,`onSelectFile`]))),128))])):s(``,!0)])):s(``,!0)])),[[B,t.loading]])]),e(`main`,Yn,[t.selectedSkill&&!t.selectedPath?(b(),c(u,{key:0},[e(`header`,Xn,[e(`h3`,Zn,i(t.selectedSkill.slug),1),e(`div`,Qn,[o(F,{"model-value":t.selectedSkill.enabled,size:`default`,loading:t.togglingId===t.selectedSkill.id,onChange:n[6]||=e=>t.onToggleSkill(t.selectedSkill,!!e)},null,8,[`model-value`,`loading`]),t.selectedSkill.source===`global`?s(``,!0):(b(),m(j,{key:0,trigger:`click`,placement:`bottom-end`},{dropdown:h(()=>[o(A,null,{default:h(()=>[o(T,{onClick:n[7]||=e=>t.onDelete(t.selectedSkill)},{default:h(()=>[o(L,{class:`menu-icon`,size:14,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`skill.button.delete`)),1)]),_:1})]),_:1})]),default:h(()=>[e(`button`,{class:`icon-btn`,"aria-label":t.$t(`skill.button.more`),title:t.$t(`skill.button.more`)},[o(I,{size:16,"aria-hidden":`true`,focusable:`false`})],8,$n)]),_:1}))])]),e(`div`,er,[e(`div`,tr,[e(`div`,nr,[e(`span`,rr,i(t.$t(`skill.meta.addedBy`)),1),e(`span`,ir,i(t.selectedSkill.source===`global`?t.$t(`skill.meta.platform`):t.$t(`skill.meta.you`)),1)]),e(`div`,ar,[e(`span`,or,i(t.$t(`skill.meta.lastUpdated`)),1),e(`span`,sr,i(t.$dayjs.format(t.selectedSkill.updated_at)),1)]),t.selectedSkill.required_connections.length?(b(),c(`div`,cr,[e(`span`,lr,i(t.$t(`skill.field.requiredConnections`)),1),e(`div`,ur,[(b(!0),c(u,null,v(t.selectedSkill.required_connections,e=>(b(),m(ee,{key:e,size:`small`,type:`info`},{default:h(()=>[r(i(e),1)]),_:2},1024))),128))])])):s(``,!0)]),t.selectedSkill.description?(b(),c(`div`,dr,[e(`div`,fr,[e(`span`,pr,i(t.$t(`skill.field.description`)),1),t.selectedSkill.when_to_use?(b(),m(ne,{key:0,content:t.selectedSkill.when_to_use,placement:`top`},{default:h(()=>[o(te,{class:`meta-info-icon`,size:12,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`content`])):s(``,!0)]),e(`p`,null,i(t.selectedSkill.description),1)])):s(``,!0)]),e(`div`,mr,[(b(),m(R,{key:`${t.selectedSkill.id}:SKILL.md`,"skill-id":t.selectedSkill.id,path:`SKILL.md`,editable:t.selectedSkill.source===`upload`,onSave:t.onSaveContent},null,8,[`skill-id`,`editable`,`onSave`]))])],64)):t.selectedSkill&&t.selectedPath?(b(),m(R,{key:`${t.selectedSkill.id}:${t.selectedPath}`,"skill-id":t.selectedSkill.id,path:t.selectedPath,editable:!1},null,8,[`skill-id`,`path`])):(b(),c(`div`,hr,[o(re,{class:`right-empty-icon`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),e(`p`,null,i(t.$t(`skill.preview.selectSkill`)),1)]))])]),o(ie,{modelValue:t.uploadVisible,"onUpdate:modelValue":n[8]||=e=>t.uploadVisible=e,onCreated:t.onCreated},null,8,[`modelValue`,`onCreated`]),o(ae,{modelValue:t.writeVisible,"onUpdate:modelValue":n[9]||=e=>t.writeVisible=e,onCreated:t.onCreated},null,8,[`modelValue`,`onCreated`]),o(z,{modelValue:t.browseVisible,"onUpdate:modelValue":n[10]||=e=>t.browseVisible=e,onInstalled:t.onCreated},null,8,[`modelValue`,`onInstalled`])])}var _r=W(Dn,[[`render`,gr],[`__scopeId`,`data-v-549e935d`]]);export{_r as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,I as n,Jt as r,L as i,M as a,N as o,T as s,at as c,ht as l,it as u,j as d,mt as f,rt as p,tt as m,x as h,z as g}from"./vendor-chart-Dw-P17PN.js";import{r as _,t as v}from"./select-dFQR69yU.js";import{t as y}from"./upload-CfWJ5heB.js";import{t as b}from"./tooltip-DQRB5WQe.js";import{t as x}from"./alert-C16GyeJ_.js";import{n as S,r as C}from"./radio-DgDgyT2l.js";import{t as w}from"./drawer-D_3Ux5r0.js";import{t as T}from"./progress-bSUZvkfj.js";import{t as E}from"./check-Jfe3Th-Y.js";import{t as D}from"./clock-BMPDGdzS.js";import{t as O}from"./image-DRW5OCUW.js";import{t as k}from"./info-BqYsJSgm.js";import{t as A}from"./mic-i8JOGAbe.js";import{t as j}from"./music-2-Da1AgiG2.js";import{t as M}from"./sliders-horizontal-C_QkROg-.js";import{t as N}from"./trash-2-DooQKonb.js";import{t as P}from"./triangle-alert-CFrX8gEt.js";import{t as ee}from"./upload-Dc_bG_Na.js";import{t as F}from"./user-BkFnDeCc.js";import{t as I}from"./video-B4V6U2Lt.js";import{t as L}from"./wand-sparkles-DCARF_Gq.js";import{Or as R,Sr as z,Tr as te,br as ne,xr as re,yr as B}from"./constants-Dm-HitpB.js";import{E as V,Ji as H,Kt as U,Sr as W,Ti as G,Un as K,Yt as q,ci as J,di as Y,in as X,wi as ie,zi as Z}from"./index-CX5tT44B.js";import{t as ae}from"./CopyToClipboard-DTo9jexV.js";import{n as oe}from"./taskDrawerMixin-DyAUhFEq.js";import{t as se}from"./Consumption-BdZ1c3ei.js";import{a as ce,n as le,r as ue,t as de}from"./pagination-BGdyJzOy.js";import{t as fe}from"./VideoPlayer-K-a68Yxk.js";import{t as pe}from"./ApiCodeButton-BnhZ1r3c.js";import{t as me}from"./BotPlaceholder-B6Y-k016.js";var he=g({name:`LayoutDigitalHuman`,components:{UserIcon:F,ElDrawer:w,ElButton:Z},mixins:[oe]}),ge={class:`main flex flex-row flex-1`},_e={class:`config w-[320px] flex-none h-full min-h-0 overflow-hidden flex flex-col bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},ve={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function ye(t,n,r,a,s,d){let p=c(`user-icon`),g=c(`el-button`),_=c(`el-drawer`);return m(),o(`div`,ge,[e(`div`,_e,[u(t.$slots,`config`,{},void 0,!0)]),e(`div`,ve,[u(t.$slots,`result`,{},void 0,!0)]),l(i(g,{circle:``,class:`menu`,"aria-label":t.$t(`common.button.openMenu`),title:t.$t(`common.button.openMenu`),onClick:n[0]||=e=>t.drawer=!0},{default:f(()=>[i(p,{size:`1em`,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`aria-label`,`title`]),[[h,!t.tasksEmpty]]),i(_,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`generator-drawer`},{default:f(()=>[u(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var be=V(he,[[`render`,ye],[`__scopeId`,`data-v-e912fd04`]]),xe=g({name:`DigitalHumanFileInput`,components:{ElUpload:y,ElButton:Z,ImageIcon:O,MicrophoneIcon:A,MusicIcon:j,UploadIcon:ee,VideoIcon:I},mixins:[U],props:{accept:{type:String,default:``},buttonText:{type:String,default:``},icon:{type:String,default:`upload`}},emits:[`change`],data(){return{fileList:[],uploadUrl:Y()+`/api/v1/files/`}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}}},methods:{onExceed(e){let t=this.$refs.uploader;t?.clearFiles();let n=e[0];n&&(t?.handleStart?.(n),t?.submit?.())},onError(){G.error(this.$t(`digitalhuman.message.uploadError`))},onChange(){let e=this.fileList?.[0]?.response?.file_url;this.$emit(`change`,e)}}});function Se(e,t,a,s,l,u){let p=c(`video-icon`),h=c(`image-icon`),g=c(`microphone-icon`),_=c(`music-icon`),v=c(`upload-icon`),y=c(`el-button`),b=c(`el-upload`);return m(),o(`div`,null,[i(b,{ref:`uploader`,"file-list":e.fileList,"onUpdate:fileList":t[0]||=t=>e.fileList=t,accept:e.accept,name:`file`,class:`w-full`,limit:1,action:e.uploadUrl,headers:e.headers,"on-exceed":e.onExceed,"on-error":e.onError,"on-success":e.onChange,"on-remove":e.onChange},{default:f(()=>[i(y,{size:`small`,round:``},{default:f(()=>[e.icon===`video`?(m(),d(p,{key:0,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):e.icon===`image`?(m(),d(h,{key:1,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):e.icon===`microphone`?(m(),d(g,{key:2,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):e.icon===`music`?(m(),d(_,{key:3,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):(m(),d(v,{key:4,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})),n(` `+r(e.buttonText),1)]),_:1})]),_:1},8,[`file-list`,`accept`,`action`,`headers`,`on-exceed`,`on-error`,`on-success`,`on-remove`])])}var Q=V(xe,[[`render`,Se]]),Ce=3e3,we=60,Te=g({name:`VoiceClone`,components:{ConfirmIcon:E,MagicIcon:L,ElButton:Z,ElSelect:_,ElOption:v,ElAlert:x,FileInput:Q},data(){return{sampleUrl:void 0,lang:`zh`,cloning:!1,destroyed:!1,runId:0,DIGITALHUMAN_ALLOWED_LANGS:ne,DIGITALHUMAN_AUDIO_ACCEPT:z}},computed:{credentialToken(){return this.$store.state.digitalhuman?.credential?.token},voiceId(){return this.$store.state.digitalhuman?.config?.voice_id}},watch:{lang(){this.invalidate()}},beforeUnmount(){this.destroyed=!0,this.runId++},methods:{onSampleChange(e){this.sampleUrl=e,this.invalidate()},invalidate(){this.runId++,this.cloning=!1,this.voiceId&&this.setVoiceId(void 0)},isStale(e){return this.destroyed||e!==this.runId},setVoiceId(e){this.$store.commit(`digitalhuman/setConfig`,{...this.$store.state.digitalhuman?.config,voice_id:e})},sleep(e){return new Promise(t=>setTimeout(t,e))},async onClone(){let e=this.credentialToken;if(!this.sampleUrl||!e)return;let t=++this.runId;this.cloning=!0,this.setVoiceId(void 0);try{let{data:n}=await K.cloneVoice({audio_url:this.sampleUrl,lang:this.lang},{token:e});if(this.isStale(t))return;if(n?.voice_id){this.onCloned(n.voice_id);return}if(n?.task_id)await this.pollVoice(n.task_id,e,t);else throw Error(`no task`)}catch{this.isStale(t)||G.error(this.$t(`digitalhuman.message.voiceCloneFailed`))}finally{this.isStale(t)||(this.cloning=!1)}},async pollVoice(e,t,n){for(let r=0;r<we;r++){if(this.isStale(n)||(await this.sleep(Ce),this.isStale(n)))return;let{data:r}=await K.pollTask(e,{token:t});if(this.isStale(n))return;if(r?.voice_id){this.onCloned(r.voice_id);return}if(r?.state===`failed`)throw Error(`clone failed`)}throw Error(`timeout`)},onCloned(e){this.setVoiceId(e),G.success(this.$t(`digitalhuman.message.voiceCloneSuccess`))}}}),Ee={class:`voice-clone`},De={class:`text-xs text-[var(--el-text-color-secondary)] mb-2`},Oe={class:`flex flex-row items-center gap-2 mb-2`},ke={class:`text-xs mb-0`};function Ae(t,l,u,h,g,_){let v=c(`file-input`),y=c(`el-option`),b=c(`el-select`),x=c(`magic-icon`),S=c(`el-button`),C=c(`confirm-icon`),w=c(`el-alert`);return m(),o(`div`,Ee,[e(`p`,De,r(t.$t(`digitalhuman.description.voiceClone`)),1),e(`div`,Oe,[i(v,{accept:t.DIGITALHUMAN_AUDIO_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadSample`),icon:`microphone`,onChange:t.onSampleChange},null,8,[`accept`,`button-text`,`onChange`]),i(b,{modelValue:t.lang,"onUpdate:modelValue":l[0]||=e=>t.lang=e,size:`small`,class:`!w-[90px]`},{default:f(()=>[(m(!0),o(s,null,p(t.DIGITALHUMAN_ALLOWED_LANGS,e=>(m(),d(y,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),i(S,{size:`small`,type:`primary`,round:``,loading:t.cloning,disabled:!t.sampleUrl||t.cloning,onClick:t.onClone},{default:f(()=>[i(x,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(t.cloning?t.$t(`digitalhuman.button.cloning`):t.$t(`digitalhuman.button.clone`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`]),t.voiceId?(m(),d(w,{key:0,closable:!1,type:`success`,class:`mt-2`},{default:f(()=>[e(`p`,ke,[i(C,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(t.$t(`digitalhuman.name.voiceReady`))+`: `+r(t.voiceId),1)])]),_:1})):a(``,!0)])}var je=g({name:`ConfigPanel`,components:{UserIcon:F,ElButton:Z,ElInput:H,ElRadioGroup:C,ElRadioButton:S,Consumption:se,InfoIcon:ce,FileInput:Q,VoiceClone:V(Te,[[`render`,Ae]])},emits:[`generate`],data(){return{faceMode:`video`,voiceMode:`audio`,DIGITALHUMAN_ALLOWED_ENGINES:B,DIGITALHUMAN_ALLOWED_RESOLUTIONS:re,DIGITALHUMAN_VIDEO_ACCEPT:R,DIGITALHUMAN_IMAGE_ACCEPT:te,DIGITALHUMAN_AUDIO_ACCEPT:z}},computed:{config(){return this.$store.state.digitalhuman?.config},service(){return this.$store.state.digitalhuman?.service},consumption(){return q(this.config,this.service?.cost)},canGenerate(){let e=this.faceMode===`video`?!!this.config?.video_url:!!this.config?.image_url,t=this.voiceMode===`audio`?!!this.config?.audio_url:!!this.config?.text?.trim()&&!!this.config?.voice_id;return e&&t},text:{get(){return this.config?.text},set(e){this.update({text:e})}},engine:{get(){return this.config?.engine},set(e){this.update({engine:e})}},resolution:{get(){return this.config?.resolution},set(e){this.update({resolution:e})}}},mounted(){this.config?.image_url&&!this.config?.video_url&&(this.faceMode=`photo`),(this.config?.text||this.config?.voice_id)&&(this.voiceMode=`text`),this.update({engine:this.config?.engine??`latentsync`,resolution:this.config?.resolution??`720p`})},methods:{update(e){this.$store.commit(`digitalhuman/setConfig`,{...this.config,...e})},onFaceModeChange(e){this.update(e===`video`?{image_url:void 0}:{video_url:void 0})},onVoiceModeChange(e){this.update(e===`audio`?{text:void 0,voice_id:void 0}:{audio_url:void 0})},onFaceVideoChange(e){this.update({video_url:e})},onFacePhotoChange(e){this.update({image_url:e})},onAudioChange(e){this.update({audio_url:e})},onGenerate(){let e=this.config||{},t={engine:e.engine,resolution:e.resolution};this.faceMode===`video`?t.video_url=e.video_url:t.image_url=e.image_url,this.voiceMode===`audio`?t.audio_url=e.audio_url:(t.text=e.text,t.voice_id=e.voice_id),this.$emit(`generate`,t)}}}),Me={class:`flex flex-col h-full`},Ne={class:`flex-1 overflow-y-auto p-5`},Pe={class:`field-block mb-5`},Fe={class:`field-head`},Ie={class:`field-title font-bold`},Le={class:`field-block mb-5`},Re={class:`field-head`},ze={class:`field-title font-bold`},Be={class:`field-block mb-5`},Ve={class:`field-head`},He={class:`field-title font-bold`},Ue={class:`field-block`},We={class:`field-head`},Ge={class:`field-title font-bold`},Ke={class:`flex flex-col items-center justify-center px-5 pb-5`};function qe(t,a,l,u,h,g){let _=c(`info-icon`),v=c(`el-radio-button`),y=c(`el-radio-group`),b=c(`file-input`),x=c(`el-input`),S=c(`voice-clone`),C=c(`consumption`),w=c(`user-icon`),T=c(`el-button`);return m(),o(`div`,Me,[e(`div`,Ne,[e(`div`,Pe,[e(`div`,Fe,[e(`h2`,Ie,r(t.$t(`digitalhuman.name.face`)),1),i(_,{content:t.$t(`digitalhuman.description.face`),class:`ml-1`},null,8,[`content`])]),i(y,{modelValue:t.faceMode,"onUpdate:modelValue":a[0]||=e=>t.faceMode=e,class:`w-full mb-2`,onChange:t.onFaceModeChange},{default:f(()=>[i(v,{value:`video`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.faceVideo`)),1)]),_:1}),i(v,{value:`photo`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.facePhoto`)),1)]),_:1})]),_:1},8,[`modelValue`,`onChange`]),t.faceMode===`video`?(m(),d(b,{key:0,accept:t.DIGITALHUMAN_VIDEO_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadVideo`),icon:`video`,onChange:t.onFaceVideoChange},null,8,[`accept`,`button-text`,`onChange`])):(m(),d(b,{key:1,accept:t.DIGITALHUMAN_IMAGE_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadPhoto`),icon:`image`,onChange:t.onFacePhotoChange},null,8,[`accept`,`button-text`,`onChange`]))]),e(`div`,Le,[e(`div`,Re,[e(`h2`,ze,r(t.$t(`digitalhuman.name.voice`)),1)]),i(y,{modelValue:t.voiceMode,"onUpdate:modelValue":a[1]||=e=>t.voiceMode=e,class:`w-full mb-2`,onChange:t.onVoiceModeChange},{default:f(()=>[i(v,{value:`audio`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.voiceAudio`)),1)]),_:1}),i(v,{value:`text`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.voiceText`)),1)]),_:1})]),_:1},8,[`modelValue`,`onChange`]),t.voiceMode===`audio`?(m(),d(b,{key:0,accept:t.DIGITALHUMAN_AUDIO_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadAudio`),icon:`music`,onChange:t.onAudioChange},null,8,[`accept`,`button-text`,`onChange`])):(m(),o(s,{key:1},[i(x,{modelValue:t.text,"onUpdate:modelValue":a[2]||=e=>t.text=e,type:`textarea`,rows:4,placeholder:t.$t(`digitalhuman.placeholder.text`),class:`mb-2`},null,8,[`modelValue`,`placeholder`]),i(S)],64))]),e(`div`,Be,[e(`div`,Ve,[e(`h2`,He,r(t.$t(`digitalhuman.name.engine`)),1)]),i(y,{modelValue:t.engine,"onUpdate:modelValue":a[3]||=e=>t.engine=e,class:`w-full`},{default:f(()=>[(m(!0),o(s,null,p(t.DIGITALHUMAN_ALLOWED_ENGINES,e=>(m(),d(v,{key:e,value:e},{default:f(()=>[n(r(e),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),e(`div`,Ue,[e(`div`,We,[e(`h2`,Ge,r(t.$t(`digitalhuman.name.resolution`)),1)]),i(y,{modelValue:t.resolution,"onUpdate:modelValue":a[4]||=e=>t.resolution=e,class:`w-full`},{default:f(()=>[(m(!0),o(s,null,p(t.DIGITALHUMAN_ALLOWED_RESOLUTIONS,e=>(m(),d(v,{key:e,value:e},{default:f(()=>[n(r(e),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])])]),e(`div`,Ke,[i(C,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),i(T,{type:`primary`,class:`btn w-full`,round:``,disabled:!t.canGenerate,onClick:t.onGenerate},{default:f(()=>[i(w,{class:`mr-2`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(t.$t(`digitalhuman.button.generate`)),1)]),_:1},8,[`disabled`,`onClick`])])])}var Je=V(je,[[`render`,qe],[`__scopeId`,`data-v-5ae1f07d`]]),Ye=g({name:`TaskPreview`,components:{DeleteIcon:N,ElTooltip:b,ControlsIcon:M,ImageIcon:O,InfoIcon:k,TimeIcon:D,UserIcon:F,VideoIcon:I,WarningIcon:P,CopyToClipboard:ae,ElAlert:x,ElProgress:T,VideoPlayer:fe,ElButton:Z,ApiCodeButton:pe},props:{modelValue:{type:Object,required:!0}},computed:{status(){return this.modelValue?.status||this.modelValue?.response?.state||`pending`},isSuccess(){return[`succeed`,`succeeded`].includes(this.status)||!!this.modelValue?.response?.video_url},isFailure(){return[`failed`,`dead`].includes(this.status)||this.modelValue?.response?.success===!1},isTerminal(){return this.isSuccess||this.isFailure},videoUrl(){return this.modelValue?.response?.video_url},progressPct(){let e=this.modelValue?.response?.progress;return typeof e==`number`?e:0},voiceLabel(){return this.modelValue?.request?.audio_url?this.$t(`digitalhuman.name.audioDriven`):this.$t(`digitalhuman.name.textDriven`)},faceLabel(){return this.modelValue?.request?.image_url?this.$t(`digitalhuman.name.facePhoto`):this.$t(`digitalhuman.name.faceVideo`)},engineLabel(){return this.modelValue?.request?.engine||this.modelValue?.response?.engine||`latentsync`},statusLabel(){let e=`digitalhuman.status.${this.status}`,t=this.$t(e);return t===e?this.$t(`digitalhuman.status.processing`):t},failureReason(){let e=this.modelValue?.response?.error;if(e)return typeof e==`string`?e:e?.message}},methods:{async onDelete(){let e=this.modelValue?.id;if(e){try{await ie.confirm(this.$t(`common.message.deleteTaskConfirm`),this.$t(`common.button.delete`),{type:`warning`,confirmButtonText:this.$t(`common.button.delete`),cancelButtonText:this.$t(`common.button.cancel`),confirmButtonClass:`el-button--danger`})}catch{return}try{await this.$store.dispatch(`digitalhuman/deleteTask`,{id:e}),G.success(this.$t(`common.message.deleteTaskSuccess`))}catch{G.error(this.$t(`common.message.deleteTaskFailed`))}}},onDownload(e,t){e?.stopPropagation(),window.open(t,`_blank`)}}}),Xe={class:`preview`},Ze={class:`left`},Qe={class:`main`},$e={class:`bot`},et={class:`datetime`},tt=[`aria-label`],nt={class:`info`},rt={key:0,class:`prompt mt-2`},it={key:0},at={key:1,class:`prompt mt-2`},ot={key:0},st={class:`text-xs text-[var(--el-text-color-secondary)] mb-1`},ct={class:`ml-2`},lt={key:0,class:`content`},ut={class:`text-xs text-[var(--el-text-color-secondary)] mb-1`},dt={key:1,class:`content`},ft={class:`operations mt-2`},$={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},pt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},mt={key:2,class:`content`},ht={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},gt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`};function _t(s,l,u,p,h,g){let _=c(`capability-presentation`),v=c(`delete-icon`),y=c(`el-tooltip`),b=c(`image-icon`),x=c(`video-icon`),S=c(`controls-icon`),C=c(`el-progress`),w=c(`video-player`),T=c(`el-button`),E=c(`api-code-button`),D=c(`user-icon`),O=c(`copy-to-clipboard`),k=c(`time-icon`),A=c(`el-alert`),j=c(`warning-icon`),M=c(`info-icon`);return m(),o(`div`,Xe,[e(`div`,Ze,[i(_,{capability:`digitalhuman`,part:`avatar`,class:`avatar`})]),e(`div`,Qe,[e(`div`,$e,[i(_,{capability:`digitalhuman`,part:`name`}),e(`span`,et,r(s.$dayjs.format(``+new Date(parseFloat((s.modelValue?.created_at||``).toString())*1e3))),1),i(y,{effect:`dark`,content:s.$t(`common.button.delete`),placement:`top`},{default:f(()=>[s.modelValue?.id?(m(),o(`button`,{key:0,type:`button`,class:`btn-delete`,"aria-label":s.$t(`common.button.delete`),onClick:l[0]||=t((...e)=>s.onDelete&&s.onDelete(...e),[`stop`])},[i(v,{size:`1em`,"aria-hidden":`true`,focusable:`false`})],8,tt)):a(``,!0)]),_:1},8,[`content`])]),e(`div`,nt,[s.modelValue?.request?.text?(m(),o(`p`,rt,[n(r(s.modelValue?.request?.text)+` `,1),s.isTerminal?a(``,!0):(m(),o(`span`,it,` - (`+r(s.statusLabel)+`) `,1))])):(m(),o(`p`,at,[n(r(s.voiceLabel)+` `,1),s.isTerminal?a(``,!0):(m(),o(`span`,ot,` - (`+r(s.statusLabel)+`) `,1))])),e(`p`,st,[s.modelValue?.request?.image_url?(m(),d(b,{key:0,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):(m(),d(x,{key:1,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})),n(` `+r(s.faceLabel)+` `,1),e(`span`,ct,[i(S,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(r(s.engineLabel),1)])])]),s.isTerminal?a(``,!0):(m(),o(`div`,lt,[e(`p`,ut,r(s.statusLabel),1),i(C,{percentage:s.progressPct,"stroke-width":6},null,8,[`percentage`])])),s.isSuccess?(m(),o(`div`,dt,[s.videoUrl?(m(),d(w,{key:0,src:s.videoUrl},null,8,[`src`])):a(``,!0),e(`div`,ft,[s.videoUrl?(m(),d(T,{key:0,type:`info`,size:`small`,class:`btn-action`,onClick:l[1]||=e=>s.onDownload(e,s.videoUrl)},{default:f(()=>[n(r(s.$t(`digitalhuman.button.download`)),1)]),_:1})):a(``,!0),i(E,{path:`/digital-human/videos`,body:s.modelValue?.request},null,8,[`body`])]),i(A,{closable:!1,class:`mt-2 success`},{default:f(()=>[e(`p`,$,[i(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.taskId`))+`: `+r(s.modelValue?.id)+` `,1),i(O,{content:s.modelValue?.id},null,8,[`content`])]),s.modelValue?.elapsed?(m(),o(`p`,pt,[i(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.elapsed`))+`: `+r(s.modelValue?.elapsed?.toFixed(2))+`s `,1)])):a(``,!0)]),_:1})])):a(``,!0),s.isFailure?(m(),o(`div`,mt,[i(A,{closable:!1,class:`failure`},{template:f(()=>[i(j,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.failure`)),1)]),default:f(()=>[e(`p`,ht,[i(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.taskId`))+`: `+r(s.modelValue?.id)+` `,1),i(O,{content:s.modelValue?.id},null,8,[`content`])]),s.failureReason?(m(),o(`p`,gt,[i(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.failureReason`))+`: `+r(s.failureReason),1)])):a(``,!0)]),_:1})])):a(``,!0)])])}var vt=g({name:`RecentPanel`,components:{TaskPreview:V(Ye,[[`render`,_t],[`__scopeId`,`data-v-03383155`]]),NoTasks:ue,BotPlaceholder:me,ScrollList:le},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],computed:{tasks(){return{...this.$store.state.digitalhuman?.tasks,items:this.$store.state.digitalhuman?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),yt={key:0},bt={key:2,class:`w-full h-full flex items-center justify-center`};function xt(e,t,n,r,l,u){let h=c(`bot-placeholder`),g=c(`task-preview`),_=c(`scroll-list`),v=c(`no-tasks`);return m(),o(s,null,[e.tasks?.items===void 0?(m(),o(`div`,yt,[i(h)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(m(),d(_,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:f(()=>[(m(!0),o(s,null,p(e.tasks?.items,(e,t)=>(m(),d(g,{key:t,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):a(``,!0),e.tasks?.items?.length===0?(m(),o(`div`,bt,[i(v)])):a(``,!0)],64)}var St=g({name:`DigitalHumanIndex`,components:{ConfigPanel:Je,Layout:be,RecentPanel:V(vt,[[`render`,xt]])},inject:[`initialized`],data(){return{job:0,loadingMore:!1,fetchingTasks:!1}},computed:{applicationsLoading(){return this.$store.state.digitalhuman?.status?.getApplications===J.Request},tasksLoading(){return this.$store.state.digitalhuman?.status?.getTasks===J.Request||this.fetchingTasks},credential(){return this.$store.state.digitalhuman.credential},config(){return this.$store.state.digitalhuman.config},tasks(){return this.$store.state.digitalhuman.tasks}},watch:{initialized:{async handler(e){window.clearInterval(this.job),e&&(await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await de({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loadingMore,setLoading:e=>this.loadingMore=e,isBlocked:()=>this.tasksLoading||this.applicationsLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){await this.$store.dispatch(`digitalhuman/getService`)},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.fetchingTasks)return;let{limit:t=5,createdAtMin:n,createdAtMax:r}=e||{};this.fetchingTasks=!0;try{await this.$store.dispatch(`digitalhuman/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})}finally{this.fetchingTasks=!1}},async onGenerate(e){if(!X())return;let t=this.credential?.token;if(!t){console.error(`no token specified`);return}G.info(this.$t(`digitalhuman.message.startingTask`)),W(`digitalhuman`,K.generate(e,{token:t})).then(()=>{G.success(this.$t(`digitalhuman.message.startTaskSuccess`))}).catch(e=>{(e?.response?.data)?.error?.code===`used_up`?G.error(this.$t(`digitalhuman.message.usedUp`)):G.error(this.$t(`digitalhuman.message.startTaskFailed`))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Ct(e,t,n,r,a,o){let s=c(`config-panel`),l=c(`recent-panel`),u=c(`layout`);return m(),d(u,null,{config:f(()=>[i(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:f(()=>[i(l,{ref:`recentPanel`,loading:e.loadingMore,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var wt=V(St,[[`render`,Ct]]);export{wt as default};
1
+ import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,I as n,Jt as r,L as i,M as a,N as o,T as s,at as c,ht as l,it as u,j as d,mt as f,rt as p,tt as m,x as h,z as g}from"./vendor-chart-Dw-P17PN.js";import{r as _,t as v}from"./select-DqVvQzGq.js";import{t as y}from"./upload-Dysa20WI.js";import{t as b}from"./tooltip-DowzbA2H.js";import{t as x}from"./alert-BmDhbY4N.js";import{n as S,r as C}from"./radio-DgDgyT2l.js";import{t as w}from"./drawer-BgpN40Ig.js";import{t as T}from"./progress-bSUZvkfj.js";import{t as E}from"./check-D4mUmwCI.js";import{t as D}from"./clock-CTJncUP-.js";import{t as O}from"./image-BLa4-1L7.js";import{t as k}from"./info-L0HoT29_.js";import{t as A}from"./mic-CD1EVj2b.js";import{t as j}from"./music-2-DGNhWGN8.js";import{t as M}from"./sliders-horizontal-BYKTTTwE.js";import{t as N}from"./trash-2-DY-Xs8eB.js";import{t as P}from"./triangle-alert-DIl0w9Tt.js";import{t as ee}from"./upload-C2q57sfz.js";import{t as F}from"./user-DC1cJhr8.js";import{t as I}from"./video-D-94pvqW.js";import{t as L}from"./wand-sparkles-bgHAAYDe.js";import{Or as R,Sr as z,Tr as te,br as ne,xr as re,yr as B}from"./constants-Dm-HitpB.js";import{E as V,Ji as H,Kt as U,Sr as W,Ti as G,Un as K,Yt as q,ci as J,di as Y,in as X,wi as ie,zi as Z}from"./index-X4H_LD85.js";import{t as ae}from"./CopyToClipboard-BMaxYkX6.js";import{n as oe}from"./taskDrawerMixin-DyAUhFEq.js";import{t as se}from"./Consumption-DL0zm78X.js";import{a as ce,n as le,r as ue,t as de}from"./pagination-DpHxEI-k.js";import{t as fe}from"./VideoPlayer-CyCnHmhk.js";import{t as pe}from"./ApiCodeButton-C_DtLteh.js";import{t as me}from"./BotPlaceholder-miO90qGo.js";var he=g({name:`LayoutDigitalHuman`,components:{UserIcon:F,ElDrawer:w,ElButton:Z},mixins:[oe]}),ge={class:`main flex flex-row flex-1`},_e={class:`config w-[320px] flex-none h-full min-h-0 overflow-hidden flex flex-col bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},ve={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function ye(t,n,r,a,s,d){let p=c(`user-icon`),g=c(`el-button`),_=c(`el-drawer`);return m(),o(`div`,ge,[e(`div`,_e,[u(t.$slots,`config`,{},void 0,!0)]),e(`div`,ve,[u(t.$slots,`result`,{},void 0,!0)]),l(i(g,{circle:``,class:`menu`,"aria-label":t.$t(`common.button.openMenu`),title:t.$t(`common.button.openMenu`),onClick:n[0]||=e=>t.drawer=!0},{default:f(()=>[i(p,{size:`1em`,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`aria-label`,`title`]),[[h,!t.tasksEmpty]]),i(_,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`generator-drawer`},{default:f(()=>[u(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var be=V(he,[[`render`,ye],[`__scopeId`,`data-v-e912fd04`]]),xe=g({name:`DigitalHumanFileInput`,components:{ElUpload:y,ElButton:Z,ImageIcon:O,MicrophoneIcon:A,MusicIcon:j,UploadIcon:ee,VideoIcon:I},mixins:[U],props:{accept:{type:String,default:``},buttonText:{type:String,default:``},icon:{type:String,default:`upload`}},emits:[`change`],data(){return{fileList:[],uploadUrl:Y()+`/api/v1/files/`}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}}},methods:{onExceed(e){let t=this.$refs.uploader;t?.clearFiles();let n=e[0];n&&(t?.handleStart?.(n),t?.submit?.())},onError(){G.error(this.$t(`digitalhuman.message.uploadError`))},onChange(){let e=this.fileList?.[0]?.response?.file_url;this.$emit(`change`,e)}}});function Se(e,t,a,s,l,u){let p=c(`video-icon`),h=c(`image-icon`),g=c(`microphone-icon`),_=c(`music-icon`),v=c(`upload-icon`),y=c(`el-button`),b=c(`el-upload`);return m(),o(`div`,null,[i(b,{ref:`uploader`,"file-list":e.fileList,"onUpdate:fileList":t[0]||=t=>e.fileList=t,accept:e.accept,name:`file`,class:`w-full`,limit:1,action:e.uploadUrl,headers:e.headers,"on-exceed":e.onExceed,"on-error":e.onError,"on-success":e.onChange,"on-remove":e.onChange},{default:f(()=>[i(y,{size:`small`,round:``},{default:f(()=>[e.icon===`video`?(m(),d(p,{key:0,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):e.icon===`image`?(m(),d(h,{key:1,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):e.icon===`microphone`?(m(),d(g,{key:2,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):e.icon===`music`?(m(),d(_,{key:3,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):(m(),d(v,{key:4,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})),n(` `+r(e.buttonText),1)]),_:1})]),_:1},8,[`file-list`,`accept`,`action`,`headers`,`on-exceed`,`on-error`,`on-success`,`on-remove`])])}var Q=V(xe,[[`render`,Se]]),Ce=3e3,we=60,Te=g({name:`VoiceClone`,components:{ConfirmIcon:E,MagicIcon:L,ElButton:Z,ElSelect:_,ElOption:v,ElAlert:x,FileInput:Q},data(){return{sampleUrl:void 0,lang:`zh`,cloning:!1,destroyed:!1,runId:0,DIGITALHUMAN_ALLOWED_LANGS:ne,DIGITALHUMAN_AUDIO_ACCEPT:z}},computed:{credentialToken(){return this.$store.state.digitalhuman?.credential?.token},voiceId(){return this.$store.state.digitalhuman?.config?.voice_id}},watch:{lang(){this.invalidate()}},beforeUnmount(){this.destroyed=!0,this.runId++},methods:{onSampleChange(e){this.sampleUrl=e,this.invalidate()},invalidate(){this.runId++,this.cloning=!1,this.voiceId&&this.setVoiceId(void 0)},isStale(e){return this.destroyed||e!==this.runId},setVoiceId(e){this.$store.commit(`digitalhuman/setConfig`,{...this.$store.state.digitalhuman?.config,voice_id:e})},sleep(e){return new Promise(t=>setTimeout(t,e))},async onClone(){let e=this.credentialToken;if(!this.sampleUrl||!e)return;let t=++this.runId;this.cloning=!0,this.setVoiceId(void 0);try{let{data:n}=await K.cloneVoice({audio_url:this.sampleUrl,lang:this.lang},{token:e});if(this.isStale(t))return;if(n?.voice_id){this.onCloned(n.voice_id);return}if(n?.task_id)await this.pollVoice(n.task_id,e,t);else throw Error(`no task`)}catch{this.isStale(t)||G.error(this.$t(`digitalhuman.message.voiceCloneFailed`))}finally{this.isStale(t)||(this.cloning=!1)}},async pollVoice(e,t,n){for(let r=0;r<we;r++){if(this.isStale(n)||(await this.sleep(Ce),this.isStale(n)))return;let{data:r}=await K.pollTask(e,{token:t});if(this.isStale(n))return;if(r?.voice_id){this.onCloned(r.voice_id);return}if(r?.state===`failed`)throw Error(`clone failed`)}throw Error(`timeout`)},onCloned(e){this.setVoiceId(e),G.success(this.$t(`digitalhuman.message.voiceCloneSuccess`))}}}),Ee={class:`voice-clone`},De={class:`text-xs text-[var(--el-text-color-secondary)] mb-2`},Oe={class:`flex flex-row items-center gap-2 mb-2`},ke={class:`text-xs mb-0`};function Ae(t,l,u,h,g,_){let v=c(`file-input`),y=c(`el-option`),b=c(`el-select`),x=c(`magic-icon`),S=c(`el-button`),C=c(`confirm-icon`),w=c(`el-alert`);return m(),o(`div`,Ee,[e(`p`,De,r(t.$t(`digitalhuman.description.voiceClone`)),1),e(`div`,Oe,[i(v,{accept:t.DIGITALHUMAN_AUDIO_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadSample`),icon:`microphone`,onChange:t.onSampleChange},null,8,[`accept`,`button-text`,`onChange`]),i(b,{modelValue:t.lang,"onUpdate:modelValue":l[0]||=e=>t.lang=e,size:`small`,class:`!w-[90px]`},{default:f(()=>[(m(!0),o(s,null,p(t.DIGITALHUMAN_ALLOWED_LANGS,e=>(m(),d(y,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),i(S,{size:`small`,type:`primary`,round:``,loading:t.cloning,disabled:!t.sampleUrl||t.cloning,onClick:t.onClone},{default:f(()=>[i(x,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(t.cloning?t.$t(`digitalhuman.button.cloning`):t.$t(`digitalhuman.button.clone`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`]),t.voiceId?(m(),d(w,{key:0,closable:!1,type:`success`,class:`mt-2`},{default:f(()=>[e(`p`,ke,[i(C,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(t.$t(`digitalhuman.name.voiceReady`))+`: `+r(t.voiceId),1)])]),_:1})):a(``,!0)])}var je=g({name:`ConfigPanel`,components:{UserIcon:F,ElButton:Z,ElInput:H,ElRadioGroup:C,ElRadioButton:S,Consumption:se,InfoIcon:ce,FileInput:Q,VoiceClone:V(Te,[[`render`,Ae]])},emits:[`generate`],data(){return{faceMode:`video`,voiceMode:`audio`,DIGITALHUMAN_ALLOWED_ENGINES:B,DIGITALHUMAN_ALLOWED_RESOLUTIONS:re,DIGITALHUMAN_VIDEO_ACCEPT:R,DIGITALHUMAN_IMAGE_ACCEPT:te,DIGITALHUMAN_AUDIO_ACCEPT:z}},computed:{config(){return this.$store.state.digitalhuman?.config},service(){return this.$store.state.digitalhuman?.service},consumption(){return q(this.config,this.service?.cost)},canGenerate(){let e=this.faceMode===`video`?!!this.config?.video_url:!!this.config?.image_url,t=this.voiceMode===`audio`?!!this.config?.audio_url:!!this.config?.text?.trim()&&!!this.config?.voice_id;return e&&t},text:{get(){return this.config?.text},set(e){this.update({text:e})}},engine:{get(){return this.config?.engine},set(e){this.update({engine:e})}},resolution:{get(){return this.config?.resolution},set(e){this.update({resolution:e})}}},mounted(){this.config?.image_url&&!this.config?.video_url&&(this.faceMode=`photo`),(this.config?.text||this.config?.voice_id)&&(this.voiceMode=`text`),this.update({engine:this.config?.engine??`latentsync`,resolution:this.config?.resolution??`720p`})},methods:{update(e){this.$store.commit(`digitalhuman/setConfig`,{...this.config,...e})},onFaceModeChange(e){this.update(e===`video`?{image_url:void 0}:{video_url:void 0})},onVoiceModeChange(e){this.update(e===`audio`?{text:void 0,voice_id:void 0}:{audio_url:void 0})},onFaceVideoChange(e){this.update({video_url:e})},onFacePhotoChange(e){this.update({image_url:e})},onAudioChange(e){this.update({audio_url:e})},onGenerate(){let e=this.config||{},t={engine:e.engine,resolution:e.resolution};this.faceMode===`video`?t.video_url=e.video_url:t.image_url=e.image_url,this.voiceMode===`audio`?t.audio_url=e.audio_url:(t.text=e.text,t.voice_id=e.voice_id),this.$emit(`generate`,t)}}}),Me={class:`flex flex-col h-full`},Ne={class:`flex-1 overflow-y-auto p-5`},Pe={class:`field-block mb-5`},Fe={class:`field-head`},Ie={class:`field-title font-bold`},Le={class:`field-block mb-5`},Re={class:`field-head`},ze={class:`field-title font-bold`},Be={class:`field-block mb-5`},Ve={class:`field-head`},He={class:`field-title font-bold`},Ue={class:`field-block`},We={class:`field-head`},Ge={class:`field-title font-bold`},Ke={class:`flex flex-col items-center justify-center px-5 pb-5`};function qe(t,a,l,u,h,g){let _=c(`info-icon`),v=c(`el-radio-button`),y=c(`el-radio-group`),b=c(`file-input`),x=c(`el-input`),S=c(`voice-clone`),C=c(`consumption`),w=c(`user-icon`),T=c(`el-button`);return m(),o(`div`,Me,[e(`div`,Ne,[e(`div`,Pe,[e(`div`,Fe,[e(`h2`,Ie,r(t.$t(`digitalhuman.name.face`)),1),i(_,{content:t.$t(`digitalhuman.description.face`),class:`ml-1`},null,8,[`content`])]),i(y,{modelValue:t.faceMode,"onUpdate:modelValue":a[0]||=e=>t.faceMode=e,class:`w-full mb-2`,onChange:t.onFaceModeChange},{default:f(()=>[i(v,{value:`video`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.faceVideo`)),1)]),_:1}),i(v,{value:`photo`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.facePhoto`)),1)]),_:1})]),_:1},8,[`modelValue`,`onChange`]),t.faceMode===`video`?(m(),d(b,{key:0,accept:t.DIGITALHUMAN_VIDEO_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadVideo`),icon:`video`,onChange:t.onFaceVideoChange},null,8,[`accept`,`button-text`,`onChange`])):(m(),d(b,{key:1,accept:t.DIGITALHUMAN_IMAGE_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadPhoto`),icon:`image`,onChange:t.onFacePhotoChange},null,8,[`accept`,`button-text`,`onChange`]))]),e(`div`,Le,[e(`div`,Re,[e(`h2`,ze,r(t.$t(`digitalhuman.name.voice`)),1)]),i(y,{modelValue:t.voiceMode,"onUpdate:modelValue":a[1]||=e=>t.voiceMode=e,class:`w-full mb-2`,onChange:t.onVoiceModeChange},{default:f(()=>[i(v,{value:`audio`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.voiceAudio`)),1)]),_:1}),i(v,{value:`text`},{default:f(()=>[n(r(t.$t(`digitalhuman.name.voiceText`)),1)]),_:1})]),_:1},8,[`modelValue`,`onChange`]),t.voiceMode===`audio`?(m(),d(b,{key:0,accept:t.DIGITALHUMAN_AUDIO_ACCEPT,"button-text":t.$t(`digitalhuman.button.uploadAudio`),icon:`music`,onChange:t.onAudioChange},null,8,[`accept`,`button-text`,`onChange`])):(m(),o(s,{key:1},[i(x,{modelValue:t.text,"onUpdate:modelValue":a[2]||=e=>t.text=e,type:`textarea`,rows:4,placeholder:t.$t(`digitalhuman.placeholder.text`),class:`mb-2`},null,8,[`modelValue`,`placeholder`]),i(S)],64))]),e(`div`,Be,[e(`div`,Ve,[e(`h2`,He,r(t.$t(`digitalhuman.name.engine`)),1)]),i(y,{modelValue:t.engine,"onUpdate:modelValue":a[3]||=e=>t.engine=e,class:`w-full`},{default:f(()=>[(m(!0),o(s,null,p(t.DIGITALHUMAN_ALLOWED_ENGINES,e=>(m(),d(v,{key:e,value:e},{default:f(()=>[n(r(e),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),e(`div`,Ue,[e(`div`,We,[e(`h2`,Ge,r(t.$t(`digitalhuman.name.resolution`)),1)]),i(y,{modelValue:t.resolution,"onUpdate:modelValue":a[4]||=e=>t.resolution=e,class:`w-full`},{default:f(()=>[(m(!0),o(s,null,p(t.DIGITALHUMAN_ALLOWED_RESOLUTIONS,e=>(m(),d(v,{key:e,value:e},{default:f(()=>[n(r(e),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])])]),e(`div`,Ke,[i(C,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),i(T,{type:`primary`,class:`btn w-full`,round:``,disabled:!t.canGenerate,onClick:t.onGenerate},{default:f(()=>[i(w,{class:`mr-2`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(t.$t(`digitalhuman.button.generate`)),1)]),_:1},8,[`disabled`,`onClick`])])])}var Je=V(je,[[`render`,qe],[`__scopeId`,`data-v-5ae1f07d`]]),Ye=g({name:`TaskPreview`,components:{DeleteIcon:N,ElTooltip:b,ControlsIcon:M,ImageIcon:O,InfoIcon:k,TimeIcon:D,UserIcon:F,VideoIcon:I,WarningIcon:P,CopyToClipboard:ae,ElAlert:x,ElProgress:T,VideoPlayer:fe,ElButton:Z,ApiCodeButton:pe},props:{modelValue:{type:Object,required:!0}},computed:{status(){return this.modelValue?.status||this.modelValue?.response?.state||`pending`},isSuccess(){return[`succeed`,`succeeded`].includes(this.status)||!!this.modelValue?.response?.video_url},isFailure(){return[`failed`,`dead`].includes(this.status)||this.modelValue?.response?.success===!1},isTerminal(){return this.isSuccess||this.isFailure},videoUrl(){return this.modelValue?.response?.video_url},progressPct(){let e=this.modelValue?.response?.progress;return typeof e==`number`?e:0},voiceLabel(){return this.modelValue?.request?.audio_url?this.$t(`digitalhuman.name.audioDriven`):this.$t(`digitalhuman.name.textDriven`)},faceLabel(){return this.modelValue?.request?.image_url?this.$t(`digitalhuman.name.facePhoto`):this.$t(`digitalhuman.name.faceVideo`)},engineLabel(){return this.modelValue?.request?.engine||this.modelValue?.response?.engine||`latentsync`},statusLabel(){let e=`digitalhuman.status.${this.status}`,t=this.$t(e);return t===e?this.$t(`digitalhuman.status.processing`):t},failureReason(){let e=this.modelValue?.response?.error;if(e)return typeof e==`string`?e:e?.message}},methods:{async onDelete(){let e=this.modelValue?.id;if(e){try{await ie.confirm(this.$t(`common.message.deleteTaskConfirm`),this.$t(`common.button.delete`),{type:`warning`,confirmButtonText:this.$t(`common.button.delete`),cancelButtonText:this.$t(`common.button.cancel`),confirmButtonClass:`el-button--danger`})}catch{return}try{await this.$store.dispatch(`digitalhuman/deleteTask`,{id:e}),G.success(this.$t(`common.message.deleteTaskSuccess`))}catch{G.error(this.$t(`common.message.deleteTaskFailed`))}}},onDownload(e,t){e?.stopPropagation(),window.open(t,`_blank`)}}}),Xe={class:`preview`},Ze={class:`left`},Qe={class:`main`},$e={class:`bot`},et={class:`datetime`},tt=[`aria-label`],nt={class:`info`},rt={key:0,class:`prompt mt-2`},it={key:0},at={key:1,class:`prompt mt-2`},ot={key:0},st={class:`text-xs text-[var(--el-text-color-secondary)] mb-1`},ct={class:`ml-2`},lt={key:0,class:`content`},ut={class:`text-xs text-[var(--el-text-color-secondary)] mb-1`},dt={key:1,class:`content`},ft={class:`operations mt-2`},$={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},pt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},mt={key:2,class:`content`},ht={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},gt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`};function _t(s,l,u,p,h,g){let _=c(`capability-presentation`),v=c(`delete-icon`),y=c(`el-tooltip`),b=c(`image-icon`),x=c(`video-icon`),S=c(`controls-icon`),C=c(`el-progress`),w=c(`video-player`),T=c(`el-button`),E=c(`api-code-button`),D=c(`user-icon`),O=c(`copy-to-clipboard`),k=c(`time-icon`),A=c(`el-alert`),j=c(`warning-icon`),M=c(`info-icon`);return m(),o(`div`,Xe,[e(`div`,Ze,[i(_,{capability:`digitalhuman`,part:`avatar`,class:`avatar`})]),e(`div`,Qe,[e(`div`,$e,[i(_,{capability:`digitalhuman`,part:`name`}),e(`span`,et,r(s.$dayjs.format(``+new Date(parseFloat((s.modelValue?.created_at||``).toString())*1e3))),1),i(y,{effect:`dark`,content:s.$t(`common.button.delete`),placement:`top`},{default:f(()=>[s.modelValue?.id?(m(),o(`button`,{key:0,type:`button`,class:`btn-delete`,"aria-label":s.$t(`common.button.delete`),onClick:l[0]||=t((...e)=>s.onDelete&&s.onDelete(...e),[`stop`])},[i(v,{size:`1em`,"aria-hidden":`true`,focusable:`false`})],8,tt)):a(``,!0)]),_:1},8,[`content`])]),e(`div`,nt,[s.modelValue?.request?.text?(m(),o(`p`,rt,[n(r(s.modelValue?.request?.text)+` `,1),s.isTerminal?a(``,!0):(m(),o(`span`,it,` - (`+r(s.statusLabel)+`) `,1))])):(m(),o(`p`,at,[n(r(s.voiceLabel)+` `,1),s.isTerminal?a(``,!0):(m(),o(`span`,ot,` - (`+r(s.statusLabel)+`) `,1))])),e(`p`,st,[s.modelValue?.request?.image_url?(m(),d(b,{key:0,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})):(m(),d(x,{key:1,class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`})),n(` `+r(s.faceLabel)+` `,1),e(`span`,ct,[i(S,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(r(s.engineLabel),1)])])]),s.isTerminal?a(``,!0):(m(),o(`div`,lt,[e(`p`,ut,r(s.statusLabel),1),i(C,{percentage:s.progressPct,"stroke-width":6},null,8,[`percentage`])])),s.isSuccess?(m(),o(`div`,dt,[s.videoUrl?(m(),d(w,{key:0,src:s.videoUrl},null,8,[`src`])):a(``,!0),e(`div`,ft,[s.videoUrl?(m(),d(T,{key:0,type:`info`,size:`small`,class:`btn-action`,onClick:l[1]||=e=>s.onDownload(e,s.videoUrl)},{default:f(()=>[n(r(s.$t(`digitalhuman.button.download`)),1)]),_:1})):a(``,!0),i(E,{path:`/digital-human/videos`,body:s.modelValue?.request},null,8,[`body`])]),i(A,{closable:!1,class:`mt-2 success`},{default:f(()=>[e(`p`,$,[i(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.taskId`))+`: `+r(s.modelValue?.id)+` `,1),i(O,{content:s.modelValue?.id},null,8,[`content`])]),s.modelValue?.elapsed?(m(),o(`p`,pt,[i(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.elapsed`))+`: `+r(s.modelValue?.elapsed?.toFixed(2))+`s `,1)])):a(``,!0)]),_:1})])):a(``,!0),s.isFailure?(m(),o(`div`,mt,[i(A,{closable:!1,class:`failure`},{template:f(()=>[i(j,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.failure`)),1)]),default:f(()=>[e(`p`,ht,[i(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.taskId`))+`: `+r(s.modelValue?.id)+` `,1),i(O,{content:s.modelValue?.id},null,8,[`content`])]),s.failureReason?(m(),o(`p`,gt,[i(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),n(` `+r(s.$t(`digitalhuman.name.failureReason`))+`: `+r(s.failureReason),1)])):a(``,!0)]),_:1})])):a(``,!0)])])}var vt=g({name:`RecentPanel`,components:{TaskPreview:V(Ye,[[`render`,_t],[`__scopeId`,`data-v-03383155`]]),NoTasks:ue,BotPlaceholder:me,ScrollList:le},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],computed:{tasks(){return{...this.$store.state.digitalhuman?.tasks,items:this.$store.state.digitalhuman?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),yt={key:0},bt={key:2,class:`w-full h-full flex items-center justify-center`};function xt(e,t,n,r,l,u){let h=c(`bot-placeholder`),g=c(`task-preview`),_=c(`scroll-list`),v=c(`no-tasks`);return m(),o(s,null,[e.tasks?.items===void 0?(m(),o(`div`,yt,[i(h)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(m(),d(_,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:f(()=>[(m(!0),o(s,null,p(e.tasks?.items,(e,t)=>(m(),d(g,{key:t,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):a(``,!0),e.tasks?.items?.length===0?(m(),o(`div`,bt,[i(v)])):a(``,!0)],64)}var St=g({name:`DigitalHumanIndex`,components:{ConfigPanel:Je,Layout:be,RecentPanel:V(vt,[[`render`,xt]])},inject:[`initialized`],data(){return{job:0,loadingMore:!1,fetchingTasks:!1}},computed:{applicationsLoading(){return this.$store.state.digitalhuman?.status?.getApplications===J.Request},tasksLoading(){return this.$store.state.digitalhuman?.status?.getTasks===J.Request||this.fetchingTasks},credential(){return this.$store.state.digitalhuman.credential},config(){return this.$store.state.digitalhuman.config},tasks(){return this.$store.state.digitalhuman.tasks}},watch:{initialized:{async handler(e){window.clearInterval(this.job),e&&(await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await de({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loadingMore,setLoading:e=>this.loadingMore=e,isBlocked:()=>this.tasksLoading||this.applicationsLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){await this.$store.dispatch(`digitalhuman/getService`)},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.fetchingTasks)return;let{limit:t=5,createdAtMin:n,createdAtMax:r}=e||{};this.fetchingTasks=!0;try{await this.$store.dispatch(`digitalhuman/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})}finally{this.fetchingTasks=!1}},async onGenerate(e){if(!X())return;let t=this.credential?.token;if(!t){console.error(`no token specified`);return}G.info(this.$t(`digitalhuman.message.startingTask`)),W(`digitalhuman`,K.generate(e,{token:t})).then(()=>{G.success(this.$t(`digitalhuman.message.startTaskSuccess`))}).catch(e=>{(e?.response?.data)?.error?.code===`used_up`?G.error(this.$t(`digitalhuman.message.usedUp`)):G.error(this.$t(`digitalhuman.message.startTaskFailed`))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Ct(e,t,n,r,a,o){let s=c(`config-panel`),l=c(`recent-panel`),u=c(`layout`);return m(),d(u,null,{config:f(()=>[i(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:f(()=>[i(l,{ref:`recentPanel`,loading:e.loadingMore,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var wt=V(St,[[`render`,Ct]]);export{wt as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,L as a,M as o,N as s,S as c,T as l,at as u,ht as d,it as f,j as p,mt as m,qt as h,rt as g,tt as _,x as v,z as y}from"./vendor-chart-Dw-P17PN.js";import{r as b,t as x}from"./select-dFQR69yU.js";import{t as S}from"./upload-CfWJ5heB.js";import{t as C}from"./tooltip-DQRB5WQe.js";import{t as w}from"./alert-C16GyeJ_.js";import{t as T}from"./drawer-D_3Ux5r0.js";import{t as E}from"./box-BT9y4YFN.js";import{t as D}from"./clock-BMPDGdzS.js";import{t as O}from"./external-link-2Z2kMqFE.js";import{r as k,t as A}from"./PromptTextarea-DSF00J6p.js";import{t as j}from"./image-DRW5OCUW.js";import{t as M}from"./info-BqYsJSgm.js";import{t as N}from"./trash-2-DooQKonb.js";import{t as P}from"./triangle-alert-CFrX8gEt.js";import{t as F}from"./upload-Dc_bG_Na.js";import{t as I}from"./wand-sparkles-DCARF_Gq.js";import{t as L}from"./zap-BmraLjdI.js";import{Jn as ee,Kn as R,Xn as z,Yn as te,Zn as ne}from"./constants-Dm-HitpB.js";import{E as B,Gt as re,Kt as ie,Sr as V,Ti as H,Ut as U,Wt as W,Yt as G,ci as K,di as q,in as J,jn as Y,qt as ae,wi as oe,zi as X}from"./index-CX5tT44B.js";import{t as se}from"./CopyToClipboard-DTo9jexV.js";import{t as Z}from"./ImagePreview-C_R7broQ.js";import{n as ce}from"./taskDrawerMixin-DyAUhFEq.js";import{t as le}from"./Consumption-BdZ1c3ei.js";import{a as Q,n as ue,r as de,t as fe}from"./pagination-BGdyJzOy.js";import{t as pe}from"./ApiCodeButton-BnhZ1r3c.js";import{t as me}from"./BotPlaceholder-B6Y-k016.js";import{t as he}from"./ImageWrapper-BRkG-4ZC.js";var ge=y({name:`LayoutNanobanana`,components:{MagicIcon:I,ElDrawer:T,ElButton:X},mixins:[ce]}),_e={class:`main flex flex-row flex-1`},ve={class:`config w-[320px] flex-none h-full min-h-0 overflow-hidden flex flex-col bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},ye={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function be(t,n,r,i,o,c){let l=u(`magic-icon`),p=u(`el-button`),h=u(`el-drawer`);return _(),s(`div`,_e,[e(`div`,ve,[f(t.$slots,`config`,{},void 0,!0)]),e(`div`,ye,[f(t.$slots,`result`,{},void 0,!0)]),d(a(p,{circle:``,class:`menu`,"aria-label":t.$t(`common.button.openMenu`),title:t.$t(`common.button.openMenu`),onClick:n[0]||=e=>t.drawer=!0},{default:m(()=>[a(l,{size:`1em`,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`aria-label`,`title`]),[[v,!t.tasksEmpty]]),a(h,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer generator-drawer`},{default:m(()=>[f(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var xe=B(ge,[[`render`,be],[`__scopeId`,`data-v-6419fc74`]]),Se=y({name:`PromptInput`,components:{PromptTextarea:A},computed:{prompt:{get(){return this.$store.state.nanobanana?.config?.prompt},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,prompt:e})}}},mounted(){this.prompt||=``}});function Ce(e,t,n,r,i,a){let o=u(`prompt-textarea`);return _(),p(o,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`nanobanana.name.prompt`),info:e.$t(`nanobanana.description.prompt`),placeholder:e.$t(`nanobanana.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var we=B(Se,[[`render`,Ce]]),Te=y({name:`ImageUrlsInput`,components:{UploadIcon:F,ElUpload:S,ElButton:X,InfoIcon:Q,ImagePreview:Z},mixins:[ae,ie,W],data(){return{fileList:[],uploadUrl:q()+`/api/v1/files/`,suppressWatch:!1}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url).filter(e=>!!e)},value(){return this.$store.state.nanobanana?.config?.image_urls}},watch:{value:{immediate:!0,handler(e){if(this.suppressWatch)return;if(!e||e.length===0){let e=(this.fileList||[]).filter(e=>!e?.response?.file_url);this.fileList=e.length?e:[];return}let t=[];e.forEach(e=>{let n=this.fileList.find(t=>t?.response?.file_url===e||t?.url===e);n?t.push(n):t.push({name:e.split(`/`).pop()||e,url:e,status:`success`,percentage:100,response:{file_url:e}})}),(this.fileList||[]).filter(e=>!e?.response?.file_url).forEach(e=>{t.some(t=>t===e||t?.url===e?.url||t?.response?.file_url===e?.response?.file_url)||t.push(e)}),this.fileList=t}}},mounted(){},methods:{onChange(e){if(!e?.url&&e?.raw)try{e.url=URL.createObjectURL(e.raw)}catch{}},onRemove(e){if(e?.url&&typeof e.url==`string`&&e.url.startsWith(`blob:`))try{URL.revokeObjectURL(e.url)}catch{}this.onSetImageUrls()},onExceed(){H.warning(this.$t(`nanobanana.message.uploadImageExceed`))},onError(){H.error(this.$t(`nanobanana.message.uploadImageError`))},onSetImageUrls(){let e=this.urls;this.suppressWatch=!0,this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,image_urls:e}),this.$nextTick(()=>{this.suppressWatch=!1})},async onSuccess(e,t){e?.file_url&&(t.url=e.file_url,t.response=e),this.onSetImageUrls()},onRemovePreview(e,t){if(this.fileList.splice(e,1),t?.url&&typeof t.url==`string`&&t.url.startsWith(`blob:`))try{URL.revokeObjectURL(t.url)}catch{}this.onSetImageUrls()}}}),Ee={class:`field mb-[10px] flex min-h-8 w-full items-center justify-between gap-3`},De={class:`flex min-w-0 items-center`},Oe={class:`title m-0 text-[14px] font-bold`},ke={class:`file-list flex flex-wrap gap-[10px]`};function Ae(t,n,o,c,d,f){let h=u(`info-icon`),v=u(`upload-icon`),y=u(`el-button`),b=u(`el-upload`),x=u(`image-preview`);return _(),s(`div`,null,[e(`div`,Ee,[e(`div`,De,[e(`h2`,Oe,i(t.$t(`nanobanana.name.imageUrls`)),1),a(h,{content:t.$t(`nanobanana.description.imageUrls`)},null,8,[`content`])]),a(b,{ref:`uploader`,"file-list":t.fileList,"onUpdate:fileList":n[0]||=e=>t.fileList=e,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,name:`file`,class:`value shrink-0`,limit:5,multiple:!0,"show-file-list":!1,action:t.uploadUrl,"on-exceed":t.onExceed,"on-error":t.onError,"on-success":t.onSuccess,"on-change":t.onChange,"on-remove":t.onRemove,headers:t.headers},{default:m(()=>[a(y,{size:`small`,type:`primary`,round:``},{default:m(()=>[a(v,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`nanobanana.button.uploadImageUrls`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`on-change`,`on-remove`,`headers`])]),e(`div`,ke,[(_(!0),s(l,null,g(t.fileList,(e,n)=>(_(),p(x,{key:e.uid||e?.response?.file_url||e.url||n,url:e.url||e?.response?.file_url,name:e.name,percentage:e.percentage,onRemove:r=>t.onRemovePreview(n,e)},null,8,[`url`,`name`,`percentage`,`onRemove`]))),128))])])}var je=B(Te,[[`render`,Ae]]),Me=y({name:`AspectRatioSelector`,components:{InfoIcon:Q},data(){return{options:[{value:`1:1`,label:`1:1`,width:20,height:20},{value:`3:2`,label:`3:2`,width:27,height:18},{value:`2:3`,label:`2:3`,width:18,height:27},{value:`16:9`,label:`16:9`,width:25,height:13},{value:`9:16`,label:`9:16`,width:13,height:25},{value:`4:3`,label:`4:3`,width:24,height:18},{value:`3:4`,label:`3:4`,width:18,height:24}]}},computed:{value(){return this.$store.state.nanobanana?.config?.aspect_ratio}},methods:{onSelect(e){let t=this.value===e?void 0:e,n={...this.$store.state.nanobanana?.config||{}};t?n.aspect_ratio=t:delete n.aspect_ratio,this.$store.commit(`nanobanana/setConfig`,n)}}}),Ne={class:`ratio`},Pe={class:`header`},Fe={class:`title font-bold`},Ie=[`aria-label`],Le=[`aria-checked`,`aria-label`,`onClick`,`onKeydown`],Re={class:`preview`},ze={class:`name`};function Be(r,o,d,f,p,m){let v=u(`info-icon`);return _(),s(`div`,Ne,[e(`div`,Pe,[e(`h2`,Fe,i(r.$t(`nanobanana.name.aspectRatio`)),1),a(v,{content:r.$t(`nanobanana.description.aspectRatio`),class:`ml-1`},null,8,[`content`])]),e(`div`,{class:`items`,role:`radiogroup`,"aria-label":r.$t(`nanobanana.name.aspectRatio`)},[(_(!0),s(l,null,g(r.options,a=>(_(),s(`div`,{key:a.value,class:n([`item`,{active:r.value===a.value}]),role:`radio`,"aria-checked":r.value===a.value,"aria-label":a.label,tabindex:`0`,onClick:e=>r.onSelect(a.value),onKeydown:[c(t(e=>r.onSelect(a.value),[`prevent`]),[`enter`]),c(t(e=>r.onSelect(a.value),[`prevent`]),[`space`])]},[e(`div`,Re,[e(`div`,{class:`rect`,style:h({width:a.width+`px`,height:a.height+`px`})},null,4)]),e(`p`,ze,i(a.label),1)],42,Le))),128))],8,Ie)])}var Ve=B(Me,[[`render`,Be],[`__scopeId`,`data-v-7131eb97`]]),He=y({name:`NanobananaModelSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:Q},data(){return{options:[{value:ee,label:this.$t(`nanobanana.model.nanoBanana`)},{value:z,label:z},{value:ne,label:this.$t(`nanobanana.model.nanoBananaPro`)},{value:te,label:this.$t(`nanobanana.model.nanoBanana2`)}]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.model},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,model:e})}},modelDescription(){return this.$t(`nanobanana.description.model`)}},mounted(){this.value||=R}}),Ue={class:`field`},We={class:`label`},Ge={class:`box`},Ke={class:`title font-bold`};function qe(t,n,r,o,c,d){let f=u(`info-icon`),h=u(`el-option`),v=u(`el-select`);return _(),s(`div`,Ue,[e(`div`,We,[e(`div`,Ge,[e(`h2`,Ke,i(t.$t(`nanobanana.name.model`)),1),a(f,{content:t.modelDescription,class:`info`},null,8,[`content`])])]),a(v,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`nanobanana.placeholder.select`)},{default:m(()=>[(_(!0),s(l,null,g(t.options,e=>(_(),p(h,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Je=B(He,[[`render`,qe],[`__scopeId`,`data-v-11cb675b`]]),Ye=y({name:`NanobananaResolutionSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:Q},data(){return{cachedResolution:`1K`,options:[{value:`1K`,label:`1K`},{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.resolution},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:e})}},supportsResolution(){let e=this.$store.state.nanobanana?.config?.model;return e===`nano-banana-2`||e===`nano-banana-pro`}},watch:{value(e){this.supportsResolution&&e&&(this.cachedResolution=e)},supportsResolution(e){e?this.value||=this.cachedResolution||`1K`:(this.value&&(this.cachedResolution=this.value),this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:void 0}))}},mounted(){this.supportsResolution&&!this.value&&(this.value=`1K`),!this.supportsResolution&&this.value&&(this.cachedResolution=this.value,this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:void 0}))}}),Xe={class:`field`},Ze={class:`label`},Qe={class:`box`},$e={class:`title font-bold`};function et(t,n,r,o,c,d){let f=u(`info-icon`),h=u(`el-option`),v=u(`el-select`);return _(),s(`div`,Xe,[e(`div`,Ze,[e(`div`,Qe,[e(`h2`,$e,i(t.$t(`nanobanana.name.resolution`)),1),a(f,{content:t.$t(`nanobanana.description.resolutionProOnly`),class:`info`},null,8,[`content`])])]),a(v,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`nanobanana.placeholder.select`),disabled:!t.supportsResolution},{default:m(()=>[(_(!0),s(l,null,g(t.options,e=>(_(),p(h,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])])}var tt=y({name:`ConfigPanel`,components:{MagicIcon:I,ElButton:X,PromptInput:we,Consumption:le,ImageUrlsInput:je,AspectRatioSelector:Ve,ModelSelector:Je,ResolutionSelector:B(Ye,[[`render`,et],[`__scopeId`,`data-v-7ab9d4d4`]])},emits:[`generate`],computed:{config(){return this.$store.state.nanobanana?.config},consumption(){let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;return G({...e,action:t?`edit`:`generate`},this.service?.cost)},service(){return this.$store.state.nanobanana?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),nt={class:`flex flex-col h-full`},rt={class:`flex-1 overflow-y-auto p-5`},it={class:`flex flex-col items-center justify-center px-5 pb-5`};function at(t,n,o,c,l,d){let f=u(`model-selector`),p=u(`resolution-selector`),h=u(`prompt-input`),g=u(`aspect-ratio-selector`),v=u(`image-urls-input`),y=u(`consumption`),b=u(`magic-icon`),x=u(`el-button`);return _(),s(`div`,nt,[e(`div`,rt,[a(f,{class:`mb-4`}),a(p,{class:`mb-4`}),a(h,{class:`mb-4`}),a(g,{class:`mb-4`}),a(v,{class:`mb-4`})]),e(`div`,it,[a(y,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),a(x,{type:`primary`,class:`btn w-full`,round:``,onClick:t.onGenerate},{default:m(()=>[a(b,{class:`mr-2`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`nanobanana.button.generate`)),1)]),_:1},8,[`onClick`])])])}var ot=B(tt,[[`render`,at]]),st=y({name:`TaskPreview`,components:{ApplicationIcon:E,ChannelIcon:k,DeleteIcon:N,ExternalLinkIcon:O,ImageIcon:j,InfoIcon:M,LightningIcon:L,MagicIcon:I,TimeIcon:D,WarningIcon:P,CopyToClipboard:se,ElAlert:w,ImageWrapper:he,ElButton:X,ElTooltip:C,ImagePreview:Z,ApiCodeButton:pe},props:{modelValue:{type:Object,required:!0}},computed:{images(){let e=[];return Array.isArray(this.modelValue?.response?.data)&&this.modelValue?.response?.data?.forEach(t=>{e.push(t)}),e},hasImages(){return this.images.some(e=>!!e?.image_url)},showResult(){let e=this.modelValue?.response;return e?e.success===!0?!0:this.hasImages&&e.success!==!1:!1}},methods:{onEdit(e){if(!e)return;console.debug(`Edit image:`,e);let t={...this.$store.state.nanobanana?.config||{}};delete t.action,t.image_urls=[e],this.$store.commit(`nanobanana/setConfig`,t)},async onDelete(){let e=this.modelValue?.id;if(e){try{await oe.confirm(this.$t(`common.message.deleteTaskConfirm`),this.$t(`common.button.delete`),{type:`warning`,confirmButtonText:this.$t(`common.button.delete`),cancelButtonText:this.$t(`common.button.cancel`),confirmButtonClass:`el-button--danger`})}catch{return}try{await this.$store.dispatch(`nanobanana/deleteTask`,{id:e}),H.success(this.$t(`common.message.deleteTaskSuccess`))}catch{H.error(this.$t(`common.message.deleteTaskFailed`))}}}}}),ct={class:`preview`},lt={class:`left`},ut={class:`main`},dt={class:`bot`},ft={class:`datetime`},pt=[`aria-label`],mt={class:`info`},ht={key:0,class:`flex justify-start items-center gap-2 mt-2 w-full overflow-x-auto`},gt={key:1,class:`prompt mt-2`},_t={key:0},vt={key:0,class:n({content:!0,failed:!0})},yt={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},bt={class:n({operations:!0,"mt-2":!0,"mb-2":!0})},xt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},St={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ct={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},wt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Tt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Et={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Dt={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Ot={key:1,class:n({content:!0})},kt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},At={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},jt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Mt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Nt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Pt={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ft={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},It={key:2,class:n({content:!0})},Lt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Rt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},zt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Bt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Vt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`};function Ht(n,c,d,f,h,v){let y=u(`capability-presentation`),b=u(`delete-icon`),x=u(`el-tooltip`),S=u(`image-preview`),C=u(`image-wrapper`),w=u(`el-button`),T=u(`api-code-button`),E=u(`application-icon`),D=u(`image-icon`),O=u(`external-link-icon`),k=u(`lightning-icon`),A=u(`magic-icon`),j=u(`copy-to-clipboard`),M=u(`time-icon`),N=u(`channel-icon`),P=u(`el-alert`),F=u(`warning-icon`),I=u(`info-icon`);return _(),s(`div`,ct,[e(`div`,lt,[a(y,{capability:`nanobanana`,part:`avatar`,class:`avatar`})]),e(`div`,ut,[e(`div`,dt,[a(y,{capability:`nanobanana`,part:`name`}),e(`span`,ft,i(n.$dayjs.format(``+new Date(parseFloat((n.modelValue?.created_at||``).toString())*1e3))),1),a(x,{effect:`dark`,content:n.$t(`common.button.delete`),placement:`top`},{default:m(()=>[n.modelValue?.id?(_(),s(`button`,{key:0,type:`button`,class:`btn-delete`,"aria-label":n.$t(`common.button.delete`),onClick:c[0]||=t((...e)=>n.onDelete&&n.onDelete(...e),[`stop`])},[a(b,{size:`1em`,"aria-hidden":`true`,focusable:`false`})],8,pt)):o(``,!0)]),_:1},8,[`content`])]),e(`div`,mt,[n.modelValue?.request?.image_urls&&n.modelValue?.request?.image_urls.length>0?(_(),s(`div`,ht,[(_(!0),s(l,null,g(n.modelValue?.request?.image_urls,(e,t)=>(_(),p(S,{key:t,url:e,name:`image-${t+1}`,closable:!1},null,8,[`url`,`name`]))),128))])):o(``,!0),n.modelValue?.request?.prompt?(_(),s(`p`,gt,[r(i(n.modelValue?.request?.prompt)+` `,1),n.modelValue?.response?o(``,!0):(_(),s(`span`,_t,` - (`+i(n.$t(`nanobanana.status.pending`))+`) `,1))])):o(``,!0)]),n.showResult?(_(),s(`div`,vt,[e(`div`,yt,[(_(!0),s(l,null,g(n.images,(e,t)=>(_(),p(C,{key:t,src:e?.image_url,"raw-src":e?.image_url},null,8,[`src`,`raw-src`]))),128))]),e(`div`,bt,[a(x,{class:`box-item`,effect:`dark`,content:n.$t(`common.button.edit`),placement:`top-start`},{default:m(()=>[a(w,{type:`info`,size:`small`,class:`btn-action`,onClick:c[1]||=t(e=>n.onEdit(n.images?.[0]?.image_url),[`stop`])},{default:m(()=>[r(i(n.$t(`common.button.edit`)),1)]),_:1})]),_:1},8,[`content`]),a(T,{path:`/nano-banana/images`,body:n.modelValue?.request},null,8,[`body`])]),a(P,{closable:!1,class:`mt-2 success`},{default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,xt,[a(E,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,St,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,Ct,[a(O,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,wt,[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,Tt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(j,{content:n.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),n.modelValue?.elapsed?(_(),s(`p`,Et,[a(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),n.modelValue?.response?.trace_id?(_(),s(`p`,Dt,[a(N,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(j,{content:n.modelValue?.response?.trace_id,class:`btn-copy inline-block`},null,8,[`content`])])):o(``,!0)]),_:1})])):n.modelValue?.response?.success===!1||n.modelValue?.response?.error?(_(),s(`div`,Ot,[a(P,{closable:!1,class:`failure`},{template:m(()=>[a(F,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.failure`)),1)]),default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,kt,[a(E,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,At,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,jt,[a(O,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,Mt,[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,Nt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(j,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),e(`p`,$,[a(I,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.failureReason`))+`: `+i(n.modelValue?.response?.error?.message)+` `,1),a(j,{content:n.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),n.modelValue?.elapsed?(_(),s(`p`,Pt,[a(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),n.modelValue?.response?.trace_id?(_(),s(`p`,Ft,[a(N,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(j,{content:n.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])):o(``,!0)]),_:1})])):(_(),s(`div`,It,[a(P,{closable:!1,class:`info`},{template:m(()=>[a(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.status.pending`)),1)]),default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,Lt,[a(E,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,Rt,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,zt,[a(O,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,Bt,[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,Vt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(j,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})]))])])}var Ut=y({name:`RecentPanel`,components:{TaskPreview:B(st,[[`render`,Ht],[`__scopeId`,`data-v-8a190878`]]),BotPlaceholder:me,NoTasks:de,ScrollList:ue},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.nanobanana?.tasks,items:this.$store.state.nanobanana?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),Wt={key:0},Gt={key:2,class:`w-full h-full flex items-center justify-center`};function Kt(e,t,n,r,i,c){let d=u(`bot-placeholder`),f=u(`task-preview`),h=u(`scroll-list`),v=u(`no-tasks`);return _(),s(l,null,[e.tasks?.items===void 0?(_(),s(`div`,Wt,[a(d)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(_(),p(h,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:m(()=>[(_(!0),s(l,null,g(e.tasks?.items,e=>(_(),p(f,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(_(),s(`div`,Gt,[a(v)])):o(``,!0)],64)}var qt=y({name:`NanobananaIndex`,components:{ConfigPanel:ot,Layout:xe,RecentPanel:B(Ut,[[`render`,Kt]])},mixins:[re],inject:[`initialized`],data(){return{task:void 0,job:0,loading:!1}},computed:{applicationsLoading(){return this.$store.state.nanobanana?.status?.getApplications===K.Request},tasksLoading(){return this.$store.state.nanobanana?.status?.getTasks===K.Request},credential(){return this.$store.state.nanobanana?.credential},config(){return this.$store.state.nanobanana?.config},application(){return this.$store.state.nanobanana?.application},tasks(){return this.$store.state.nanobanana?.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await fe({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loading,setLoading:e=>this.loading=e,isBlocked:()=>this.tasksLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`nanobanana/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`nanobanana/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.tasksLoading){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=20,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),await this.$store.dispatch(`nanobanana/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})},async onGenerate(){if(!U(this.uploadTracker,e=>this.$t(e),e=>H.warning(e)))return;let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;delete e.action,!t&&`image_urls`in e&&delete e.image_urls,e?.aspect_ratio||delete e.aspect_ratio;let n=e?.model===`nano-banana-2`||e?.model===`nano-banana-pro`;!n&&`resolution`in e&&delete e.resolution,n&&!e?.resolution&&(e.resolution=`1K`);let r={...e,action:t?`edit`:`generate`,async:!0};if(!J())return;let i=this.credential?.token;if(!i){console.error(`no token specified`);return}H.info(this.$t(`nanobanana.message.startingTask`)),V(`nanobanana`,Y.generate(r,{token:i})).then(()=>{H.success(this.$t(`nanobanana.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?H.error(this.$t(`nanobanana.message.usedUp`)):H.error(this.$t(`nanobanana.message.startTaskFailed`)+(t?.error?.message||``))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Jt(e,t,n,r,i,o){let s=u(`config-panel`),c=u(`recent-panel`),l=u(`layout`);return _(),p(l,null,{config:m(()=>[a(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:m(()=>[a(c,{ref:`recentPanel`,loading:e.loading,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var Yt=B(qt,[[`render`,Jt]]);export{Yt as default};
1
+ import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,L as a,M as o,N as s,S as c,T as l,at as u,ht as d,it as f,j as p,mt as m,qt as h,rt as g,tt as _,x as v,z as y}from"./vendor-chart-Dw-P17PN.js";import{r as b,t as x}from"./select-DqVvQzGq.js";import{t as S}from"./upload-Dysa20WI.js";import{t as C}from"./tooltip-DowzbA2H.js";import{t as w}from"./alert-BmDhbY4N.js";import{t as T}from"./drawer-BgpN40Ig.js";import{t as E}from"./box-CXHZJ19d.js";import{t as D}from"./clock-CTJncUP-.js";import{t as O}from"./external-link-DZ3DxAmT.js";import{r as k,t as A}from"./PromptTextarea-BPhoRMVI.js";import{t as j}from"./image-BLa4-1L7.js";import{t as M}from"./info-L0HoT29_.js";import{t as N}from"./trash-2-DY-Xs8eB.js";import{t as P}from"./triangle-alert-DIl0w9Tt.js";import{t as F}from"./upload-C2q57sfz.js";import{t as I}from"./wand-sparkles-bgHAAYDe.js";import{t as L}from"./zap-CQ29DxkU.js";import{Jn as ee,Kn as R,Xn as z,Yn as te,Zn as ne}from"./constants-Dm-HitpB.js";import{E as B,Gt as re,Kt as ie,Sr as V,Ti as H,Ut as U,Wt as W,Yt as G,ci as K,di as q,in as J,jn as Y,qt as ae,wi as oe,zi as X}from"./index-X4H_LD85.js";import{t as se}from"./CopyToClipboard-BMaxYkX6.js";import{t as Z}from"./ImagePreview-Dzwq5j1p.js";import{n as ce}from"./taskDrawerMixin-DyAUhFEq.js";import{t as le}from"./Consumption-DL0zm78X.js";import{a as Q,n as ue,r as de,t as fe}from"./pagination-DpHxEI-k.js";import{t as pe}from"./ApiCodeButton-C_DtLteh.js";import{t as me}from"./BotPlaceholder-miO90qGo.js";import{t as he}from"./ImageWrapper-B6kHPphW.js";var ge=y({name:`LayoutNanobanana`,components:{MagicIcon:I,ElDrawer:T,ElButton:X},mixins:[ce]}),_e={class:`main flex flex-row flex-1`},ve={class:`config w-[320px] flex-none h-full min-h-0 overflow-hidden flex flex-col bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},ye={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function be(t,n,r,i,o,c){let l=u(`magic-icon`),p=u(`el-button`),h=u(`el-drawer`);return _(),s(`div`,_e,[e(`div`,ve,[f(t.$slots,`config`,{},void 0,!0)]),e(`div`,ye,[f(t.$slots,`result`,{},void 0,!0)]),d(a(p,{circle:``,class:`menu`,"aria-label":t.$t(`common.button.openMenu`),title:t.$t(`common.button.openMenu`),onClick:n[0]||=e=>t.drawer=!0},{default:m(()=>[a(l,{size:`1em`,"aria-hidden":`true`,focusable:`false`})]),_:1},8,[`aria-label`,`title`]),[[v,!t.tasksEmpty]]),a(h,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer generator-drawer`},{default:m(()=>[f(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var xe=B(ge,[[`render`,be],[`__scopeId`,`data-v-6419fc74`]]),Se=y({name:`PromptInput`,components:{PromptTextarea:A},computed:{prompt:{get(){return this.$store.state.nanobanana?.config?.prompt},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,prompt:e})}}},mounted(){this.prompt||=``}});function Ce(e,t,n,r,i,a){let o=u(`prompt-textarea`);return _(),p(o,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`nanobanana.name.prompt`),info:e.$t(`nanobanana.description.prompt`),placeholder:e.$t(`nanobanana.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var we=B(Se,[[`render`,Ce]]),Te=y({name:`ImageUrlsInput`,components:{UploadIcon:F,ElUpload:S,ElButton:X,InfoIcon:Q,ImagePreview:Z},mixins:[ae,ie,W],data(){return{fileList:[],uploadUrl:q()+`/api/v1/files/`,suppressWatch:!1}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url).filter(e=>!!e)},value(){return this.$store.state.nanobanana?.config?.image_urls}},watch:{value:{immediate:!0,handler(e){if(this.suppressWatch)return;if(!e||e.length===0){let e=(this.fileList||[]).filter(e=>!e?.response?.file_url);this.fileList=e.length?e:[];return}let t=[];e.forEach(e=>{let n=this.fileList.find(t=>t?.response?.file_url===e||t?.url===e);n?t.push(n):t.push({name:e.split(`/`).pop()||e,url:e,status:`success`,percentage:100,response:{file_url:e}})}),(this.fileList||[]).filter(e=>!e?.response?.file_url).forEach(e=>{t.some(t=>t===e||t?.url===e?.url||t?.response?.file_url===e?.response?.file_url)||t.push(e)}),this.fileList=t}}},mounted(){},methods:{onChange(e){if(!e?.url&&e?.raw)try{e.url=URL.createObjectURL(e.raw)}catch{}},onRemove(e){if(e?.url&&typeof e.url==`string`&&e.url.startsWith(`blob:`))try{URL.revokeObjectURL(e.url)}catch{}this.onSetImageUrls()},onExceed(){H.warning(this.$t(`nanobanana.message.uploadImageExceed`))},onError(){H.error(this.$t(`nanobanana.message.uploadImageError`))},onSetImageUrls(){let e=this.urls;this.suppressWatch=!0,this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,image_urls:e}),this.$nextTick(()=>{this.suppressWatch=!1})},async onSuccess(e,t){e?.file_url&&(t.url=e.file_url,t.response=e),this.onSetImageUrls()},onRemovePreview(e,t){if(this.fileList.splice(e,1),t?.url&&typeof t.url==`string`&&t.url.startsWith(`blob:`))try{URL.revokeObjectURL(t.url)}catch{}this.onSetImageUrls()}}}),Ee={class:`field mb-[10px] flex min-h-8 w-full items-center justify-between gap-3`},De={class:`flex min-w-0 items-center`},Oe={class:`title m-0 text-[14px] font-bold`},ke={class:`file-list flex flex-wrap gap-[10px]`};function Ae(t,n,o,c,d,f){let h=u(`info-icon`),v=u(`upload-icon`),y=u(`el-button`),b=u(`el-upload`),x=u(`image-preview`);return _(),s(`div`,null,[e(`div`,Ee,[e(`div`,De,[e(`h2`,Oe,i(t.$t(`nanobanana.name.imageUrls`)),1),a(h,{content:t.$t(`nanobanana.description.imageUrls`)},null,8,[`content`])]),a(b,{ref:`uploader`,"file-list":t.fileList,"onUpdate:fileList":n[0]||=e=>t.fileList=e,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,name:`file`,class:`value shrink-0`,limit:5,multiple:!0,"show-file-list":!1,action:t.uploadUrl,"on-exceed":t.onExceed,"on-error":t.onError,"on-success":t.onSuccess,"on-change":t.onChange,"on-remove":t.onRemove,headers:t.headers},{default:m(()=>[a(y,{size:`small`,type:`primary`,round:``},{default:m(()=>[a(v,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`nanobanana.button.uploadImageUrls`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`on-change`,`on-remove`,`headers`])]),e(`div`,ke,[(_(!0),s(l,null,g(t.fileList,(e,n)=>(_(),p(x,{key:e.uid||e?.response?.file_url||e.url||n,url:e.url||e?.response?.file_url,name:e.name,percentage:e.percentage,onRemove:r=>t.onRemovePreview(n,e)},null,8,[`url`,`name`,`percentage`,`onRemove`]))),128))])])}var je=B(Te,[[`render`,Ae]]),Me=y({name:`AspectRatioSelector`,components:{InfoIcon:Q},data(){return{options:[{value:`1:1`,label:`1:1`,width:20,height:20},{value:`3:2`,label:`3:2`,width:27,height:18},{value:`2:3`,label:`2:3`,width:18,height:27},{value:`16:9`,label:`16:9`,width:25,height:13},{value:`9:16`,label:`9:16`,width:13,height:25},{value:`4:3`,label:`4:3`,width:24,height:18},{value:`3:4`,label:`3:4`,width:18,height:24}]}},computed:{value(){return this.$store.state.nanobanana?.config?.aspect_ratio}},methods:{onSelect(e){let t=this.value===e?void 0:e,n={...this.$store.state.nanobanana?.config||{}};t?n.aspect_ratio=t:delete n.aspect_ratio,this.$store.commit(`nanobanana/setConfig`,n)}}}),Ne={class:`ratio`},Pe={class:`header`},Fe={class:`title font-bold`},Ie=[`aria-label`],Le=[`aria-checked`,`aria-label`,`onClick`,`onKeydown`],Re={class:`preview`},ze={class:`name`};function Be(r,o,d,f,p,m){let v=u(`info-icon`);return _(),s(`div`,Ne,[e(`div`,Pe,[e(`h2`,Fe,i(r.$t(`nanobanana.name.aspectRatio`)),1),a(v,{content:r.$t(`nanobanana.description.aspectRatio`),class:`ml-1`},null,8,[`content`])]),e(`div`,{class:`items`,role:`radiogroup`,"aria-label":r.$t(`nanobanana.name.aspectRatio`)},[(_(!0),s(l,null,g(r.options,a=>(_(),s(`div`,{key:a.value,class:n([`item`,{active:r.value===a.value}]),role:`radio`,"aria-checked":r.value===a.value,"aria-label":a.label,tabindex:`0`,onClick:e=>r.onSelect(a.value),onKeydown:[c(t(e=>r.onSelect(a.value),[`prevent`]),[`enter`]),c(t(e=>r.onSelect(a.value),[`prevent`]),[`space`])]},[e(`div`,Re,[e(`div`,{class:`rect`,style:h({width:a.width+`px`,height:a.height+`px`})},null,4)]),e(`p`,ze,i(a.label),1)],42,Le))),128))],8,Ie)])}var Ve=B(Me,[[`render`,Be],[`__scopeId`,`data-v-7131eb97`]]),He=y({name:`NanobananaModelSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:Q},data(){return{options:[{value:ee,label:this.$t(`nanobanana.model.nanoBanana`)},{value:z,label:z},{value:ne,label:this.$t(`nanobanana.model.nanoBananaPro`)},{value:te,label:this.$t(`nanobanana.model.nanoBanana2`)}]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.model},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,model:e})}},modelDescription(){return this.$t(`nanobanana.description.model`)}},mounted(){this.value||=R}}),Ue={class:`field`},We={class:`label`},Ge={class:`box`},Ke={class:`title font-bold`};function qe(t,n,r,o,c,d){let f=u(`info-icon`),h=u(`el-option`),v=u(`el-select`);return _(),s(`div`,Ue,[e(`div`,We,[e(`div`,Ge,[e(`h2`,Ke,i(t.$t(`nanobanana.name.model`)),1),a(f,{content:t.modelDescription,class:`info`},null,8,[`content`])])]),a(v,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`nanobanana.placeholder.select`)},{default:m(()=>[(_(!0),s(l,null,g(t.options,e=>(_(),p(h,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Je=B(He,[[`render`,qe],[`__scopeId`,`data-v-11cb675b`]]),Ye=y({name:`NanobananaResolutionSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:Q},data(){return{cachedResolution:`1K`,options:[{value:`1K`,label:`1K`},{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.resolution},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:e})}},supportsResolution(){let e=this.$store.state.nanobanana?.config?.model;return e===`nano-banana-2`||e===`nano-banana-pro`}},watch:{value(e){this.supportsResolution&&e&&(this.cachedResolution=e)},supportsResolution(e){e?this.value||=this.cachedResolution||`1K`:(this.value&&(this.cachedResolution=this.value),this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:void 0}))}},mounted(){this.supportsResolution&&!this.value&&(this.value=`1K`),!this.supportsResolution&&this.value&&(this.cachedResolution=this.value,this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:void 0}))}}),Xe={class:`field`},Ze={class:`label`},Qe={class:`box`},$e={class:`title font-bold`};function et(t,n,r,o,c,d){let f=u(`info-icon`),h=u(`el-option`),v=u(`el-select`);return _(),s(`div`,Xe,[e(`div`,Ze,[e(`div`,Qe,[e(`h2`,$e,i(t.$t(`nanobanana.name.resolution`)),1),a(f,{content:t.$t(`nanobanana.description.resolutionProOnly`),class:`info`},null,8,[`content`])])]),a(v,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`nanobanana.placeholder.select`),disabled:!t.supportsResolution},{default:m(()=>[(_(!0),s(l,null,g(t.options,e=>(_(),p(h,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])])}var tt=y({name:`ConfigPanel`,components:{MagicIcon:I,ElButton:X,PromptInput:we,Consumption:le,ImageUrlsInput:je,AspectRatioSelector:Ve,ModelSelector:Je,ResolutionSelector:B(Ye,[[`render`,et],[`__scopeId`,`data-v-7ab9d4d4`]])},emits:[`generate`],computed:{config(){return this.$store.state.nanobanana?.config},consumption(){let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;return G({...e,action:t?`edit`:`generate`},this.service?.cost)},service(){return this.$store.state.nanobanana?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),nt={class:`flex flex-col h-full`},rt={class:`flex-1 overflow-y-auto p-5`},it={class:`flex flex-col items-center justify-center px-5 pb-5`};function at(t,n,o,c,l,d){let f=u(`model-selector`),p=u(`resolution-selector`),h=u(`prompt-input`),g=u(`aspect-ratio-selector`),v=u(`image-urls-input`),y=u(`consumption`),b=u(`magic-icon`),x=u(`el-button`);return _(),s(`div`,nt,[e(`div`,rt,[a(f,{class:`mb-4`}),a(p,{class:`mb-4`}),a(h,{class:`mb-4`}),a(g,{class:`mb-4`}),a(v,{class:`mb-4`})]),e(`div`,it,[a(y,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),a(x,{type:`primary`,class:`btn w-full`,round:``,onClick:t.onGenerate},{default:m(()=>[a(b,{class:`mr-2`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(t.$t(`nanobanana.button.generate`)),1)]),_:1},8,[`onClick`])])])}var ot=B(tt,[[`render`,at]]),st=y({name:`TaskPreview`,components:{ApplicationIcon:E,ChannelIcon:k,DeleteIcon:N,ExternalLinkIcon:O,ImageIcon:j,InfoIcon:M,LightningIcon:L,MagicIcon:I,TimeIcon:D,WarningIcon:P,CopyToClipboard:se,ElAlert:w,ImageWrapper:he,ElButton:X,ElTooltip:C,ImagePreview:Z,ApiCodeButton:pe},props:{modelValue:{type:Object,required:!0}},computed:{images(){let e=[];return Array.isArray(this.modelValue?.response?.data)&&this.modelValue?.response?.data?.forEach(t=>{e.push(t)}),e},hasImages(){return this.images.some(e=>!!e?.image_url)},showResult(){let e=this.modelValue?.response;return e?e.success===!0?!0:this.hasImages&&e.success!==!1:!1}},methods:{onEdit(e){if(!e)return;console.debug(`Edit image:`,e);let t={...this.$store.state.nanobanana?.config||{}};delete t.action,t.image_urls=[e],this.$store.commit(`nanobanana/setConfig`,t)},async onDelete(){let e=this.modelValue?.id;if(e){try{await oe.confirm(this.$t(`common.message.deleteTaskConfirm`),this.$t(`common.button.delete`),{type:`warning`,confirmButtonText:this.$t(`common.button.delete`),cancelButtonText:this.$t(`common.button.cancel`),confirmButtonClass:`el-button--danger`})}catch{return}try{await this.$store.dispatch(`nanobanana/deleteTask`,{id:e}),H.success(this.$t(`common.message.deleteTaskSuccess`))}catch{H.error(this.$t(`common.message.deleteTaskFailed`))}}}}}),ct={class:`preview`},lt={class:`left`},ut={class:`main`},dt={class:`bot`},ft={class:`datetime`},pt=[`aria-label`],mt={class:`info`},ht={key:0,class:`flex justify-start items-center gap-2 mt-2 w-full overflow-x-auto`},gt={key:1,class:`prompt mt-2`},_t={key:0},vt={key:0,class:n({content:!0,failed:!0})},yt={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},bt={class:n({operations:!0,"mt-2":!0,"mb-2":!0})},xt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},St={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ct={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},wt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Tt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Et={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Dt={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Ot={key:1,class:n({content:!0})},kt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},At={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},jt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Mt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Nt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Pt={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ft={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},It={key:2,class:n({content:!0})},Lt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Rt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},zt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Bt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Vt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`};function Ht(n,c,d,f,h,v){let y=u(`capability-presentation`),b=u(`delete-icon`),x=u(`el-tooltip`),S=u(`image-preview`),C=u(`image-wrapper`),w=u(`el-button`),T=u(`api-code-button`),E=u(`application-icon`),D=u(`image-icon`),O=u(`external-link-icon`),k=u(`lightning-icon`),A=u(`magic-icon`),j=u(`copy-to-clipboard`),M=u(`time-icon`),N=u(`channel-icon`),P=u(`el-alert`),F=u(`warning-icon`),I=u(`info-icon`);return _(),s(`div`,ct,[e(`div`,lt,[a(y,{capability:`nanobanana`,part:`avatar`,class:`avatar`})]),e(`div`,ut,[e(`div`,dt,[a(y,{capability:`nanobanana`,part:`name`}),e(`span`,ft,i(n.$dayjs.format(``+new Date(parseFloat((n.modelValue?.created_at||``).toString())*1e3))),1),a(x,{effect:`dark`,content:n.$t(`common.button.delete`),placement:`top`},{default:m(()=>[n.modelValue?.id?(_(),s(`button`,{key:0,type:`button`,class:`btn-delete`,"aria-label":n.$t(`common.button.delete`),onClick:c[0]||=t((...e)=>n.onDelete&&n.onDelete(...e),[`stop`])},[a(b,{size:`1em`,"aria-hidden":`true`,focusable:`false`})],8,pt)):o(``,!0)]),_:1},8,[`content`])]),e(`div`,mt,[n.modelValue?.request?.image_urls&&n.modelValue?.request?.image_urls.length>0?(_(),s(`div`,ht,[(_(!0),s(l,null,g(n.modelValue?.request?.image_urls,(e,t)=>(_(),p(S,{key:t,url:e,name:`image-${t+1}`,closable:!1},null,8,[`url`,`name`]))),128))])):o(``,!0),n.modelValue?.request?.prompt?(_(),s(`p`,gt,[r(i(n.modelValue?.request?.prompt)+` `,1),n.modelValue?.response?o(``,!0):(_(),s(`span`,_t,` - (`+i(n.$t(`nanobanana.status.pending`))+`) `,1))])):o(``,!0)]),n.showResult?(_(),s(`div`,vt,[e(`div`,yt,[(_(!0),s(l,null,g(n.images,(e,t)=>(_(),p(C,{key:t,src:e?.image_url,"raw-src":e?.image_url},null,8,[`src`,`raw-src`]))),128))]),e(`div`,bt,[a(x,{class:`box-item`,effect:`dark`,content:n.$t(`common.button.edit`),placement:`top-start`},{default:m(()=>[a(w,{type:`info`,size:`small`,class:`btn-action`,onClick:c[1]||=t(e=>n.onEdit(n.images?.[0]?.image_url),[`stop`])},{default:m(()=>[r(i(n.$t(`common.button.edit`)),1)]),_:1})]),_:1},8,[`content`]),a(T,{path:`/nano-banana/images`,body:n.modelValue?.request},null,8,[`body`])]),a(P,{closable:!1,class:`mt-2 success`},{default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,xt,[a(E,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,St,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,Ct,[a(O,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,wt,[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,Tt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(j,{content:n.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),n.modelValue?.elapsed?(_(),s(`p`,Et,[a(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),n.modelValue?.response?.trace_id?(_(),s(`p`,Dt,[a(N,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(j,{content:n.modelValue?.response?.trace_id,class:`btn-copy inline-block`},null,8,[`content`])])):o(``,!0)]),_:1})])):n.modelValue?.response?.success===!1||n.modelValue?.response?.error?(_(),s(`div`,Ot,[a(P,{closable:!1,class:`failure`},{template:m(()=>[a(F,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.failure`)),1)]),default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,kt,[a(E,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,At,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,jt,[a(O,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,Mt,[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,Nt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(j,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),e(`p`,$,[a(I,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.failureReason`))+`: `+i(n.modelValue?.response?.error?.message)+` `,1),a(j,{content:n.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),n.modelValue?.elapsed?(_(),s(`p`,Pt,[a(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),n.modelValue?.response?.trace_id?(_(),s(`p`,Ft,[a(N,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(j,{content:n.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])):o(``,!0)]),_:1})])):(_(),s(`div`,It,[a(P,{closable:!1,class:`info`},{template:m(()=>[a(M,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.status.pending`)),1)]),default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,Lt,[a(E,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,Rt,[a(D,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,zt,[a(O,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,Bt,[a(k,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,Vt,[a(A,{class:`mr-1`,size:`1em`,"aria-hidden":`true`,focusable:`false`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(j,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})]))])])}var Ut=y({name:`RecentPanel`,components:{TaskPreview:B(st,[[`render`,Ht],[`__scopeId`,`data-v-8a190878`]]),BotPlaceholder:me,NoTasks:de,ScrollList:ue},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.nanobanana?.tasks,items:this.$store.state.nanobanana?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),Wt={key:0},Gt={key:2,class:`w-full h-full flex items-center justify-center`};function Kt(e,t,n,r,i,c){let d=u(`bot-placeholder`),f=u(`task-preview`),h=u(`scroll-list`),v=u(`no-tasks`);return _(),s(l,null,[e.tasks?.items===void 0?(_(),s(`div`,Wt,[a(d)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(_(),p(h,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:m(()=>[(_(!0),s(l,null,g(e.tasks?.items,e=>(_(),p(f,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(_(),s(`div`,Gt,[a(v)])):o(``,!0)],64)}var qt=y({name:`NanobananaIndex`,components:{ConfigPanel:ot,Layout:xe,RecentPanel:B(Ut,[[`render`,Kt]])},mixins:[re],inject:[`initialized`],data(){return{task:void 0,job:0,loading:!1}},computed:{applicationsLoading(){return this.$store.state.nanobanana?.status?.getApplications===K.Request},tasksLoading(){return this.$store.state.nanobanana?.status?.getTasks===K.Request},credential(){return this.$store.state.nanobanana?.credential},config(){return this.$store.state.nanobanana?.config},application(){return this.$store.state.nanobanana?.application},tasks(){return this.$store.state.nanobanana?.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await fe({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loading,setLoading:e=>this.loading=e,isBlocked:()=>this.tasksLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`nanobanana/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`nanobanana/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.tasksLoading){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=20,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),await this.$store.dispatch(`nanobanana/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})},async onGenerate(){if(!U(this.uploadTracker,e=>this.$t(e),e=>H.warning(e)))return;let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;delete e.action,!t&&`image_urls`in e&&delete e.image_urls,e?.aspect_ratio||delete e.aspect_ratio;let n=e?.model===`nano-banana-2`||e?.model===`nano-banana-pro`;!n&&`resolution`in e&&delete e.resolution,n&&!e?.resolution&&(e.resolution=`1K`);let r={...e,action:t?`edit`:`generate`,async:!0};if(!J())return;let i=this.credential?.token;if(!i){console.error(`no token specified`);return}H.info(this.$t(`nanobanana.message.startingTask`)),V(`nanobanana`,Y.generate(r,{token:i})).then(()=>{H.success(this.$t(`nanobanana.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?H.error(this.$t(`nanobanana.message.usedUp`)):H.error(this.$t(`nanobanana.message.startTaskFailed`)+(t?.error?.message||``))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Jt(e,t,n,r,i,o){let s=u(`config-panel`),c=u(`recent-panel`),l=u(`layout`);return _(),p(l,null,{config:m(()=>[a(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:m(()=>[a(c,{ref:`recentPanel`,loading:e.loading,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var Yt=B(qt,[[`render`,Jt]]);export{Yt as default};