@acedatacloud/nexior 3.30.0 → 3.30.2

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 (57) hide show
  1. package/dist/assets/{Auth-BFD9CUrX.js → Auth-BkGrZ4Al.js} +1 -1
  2. package/dist/assets/{BotPlaceholder-BfDpV6UE.js → BotPlaceholder-ClX8uvvo.js} +1 -1
  3. package/dist/assets/{Callback-CqMwYExD.js → Callback-IUPA4O7m.js} +1 -1
  4. package/dist/assets/{Console-DJ0LvdzB.js → Console-BTsHmxR2.js} +1 -1
  5. package/dist/assets/{Conversation-CG7Vuksf.js → Conversation-BQBR_j0K.js} +1 -1
  6. package/dist/assets/{CopyToClipboard-C_hpGFI6.js → CopyToClipboard-D0yPTPYW.js} +1 -1
  7. package/dist/assets/{Detail-DY6A4sD9.js → Detail-BcwTLOZv.js} +1 -1
  8. package/dist/assets/{EditArray-IlWOQ17d.js → EditArray-DpGXSb1V.js} +1 -1
  9. package/dist/assets/{Extra-3lJtHZjg.js → Extra-CE80Lwfe.js} +1 -1
  10. package/dist/assets/{FilePreview-Bpmd6-yb.js → FilePreview-FTIIxIUg.js} +1 -1
  11. package/dist/assets/{History-xXil8VVh.js → History-Cq4Psb81.js} +1 -1
  12. package/dist/assets/{ImagePreview-C81-sroB.js → ImagePreview-Dun0qhAC.js} +1 -1
  13. package/dist/assets/{ImageWrapper-CafePFBU.js → ImageWrapper-DAJLZ3ud.js} +1 -1
  14. package/dist/assets/{Index-Bq-4vMGX.js → Index-B3g6nU2_.js} +1 -1
  15. package/dist/assets/{Index-D7cpbssY.js → Index-B8R2yKg9.js} +1 -1
  16. package/dist/assets/{Index-Cwduph5Y.js → Index-B8lqf5YW.js} +1 -1
  17. package/dist/assets/{Index-BHWbH-IB.js → Index-BEZF06uI.js} +1 -1
  18. package/dist/assets/{Index-BPsxCJLR.css → Index-BS4HFQ5A.css} +1 -1
  19. package/dist/assets/{Index-BttSzwZS.js → Index-BdtTQ6vy.js} +1 -1
  20. package/dist/assets/{Index-BTMnpHAB.js → Index-Bj7Azusj.js} +1 -1
  21. package/dist/assets/{Index-D4VINF4l.js → Index-BlTMjqXS.js} +1 -1
  22. package/dist/assets/{Index-ByRQW5yK.css → Index-C1IT2qoC.css} +1 -1
  23. package/dist/assets/{Index-D0HSsKHV.css → Index-CB8Rnaiw.css} +1 -1
  24. package/dist/assets/{Index-BHPQlSrx.css → Index-CXVGa2ZU.css} +1 -1
  25. package/dist/assets/{Index-BvGIjCeq.js → Index-CisgqdWF.js} +1 -1
  26. package/dist/assets/{Index-BFGf-YYs.js → Index-DOEux2Eg.js} +1 -1
  27. package/dist/assets/{Index-DFtrjaKk.js → Index-DQFKWn2R.js} +1 -1
  28. package/dist/assets/{Index-D1QgA58M.css → Index-DWp92Qyv.css} +1 -1
  29. package/dist/assets/{Index-CczNCX1V.js → Index-DWvt1qKL.js} +1 -1
  30. package/dist/assets/{Index-C_lTdl1n.js → Index-DXqYbSJL.js} +1 -1
  31. package/dist/assets/{Index-qHMVcnL5.js → Index-DfUlcZfy.js} +1 -1
  32. package/dist/assets/{Index-DE-Le67g.js → Index-DyjIS2LR.js} +1 -1
  33. package/dist/assets/{Index-Dlkri-Nx.js → Index-KwYNRzOz.js} +1 -1
  34. package/dist/assets/{Index-DOijBIse.js → Index-M5tWRCsH.js} +1 -1
  35. package/dist/assets/{Index-D_fTTJPb.js → Index-Zpzkw1HQ.js} +1 -1
  36. package/dist/assets/{Index-D_ER7_wh.css → Index-feu64dNe.css} +1 -1
  37. package/dist/assets/{Index-DeBTh_5M.js → Index-ocDyFWdk.js} +1 -1
  38. package/dist/assets/{Invitees-Bwf6Sx5L.js → Invitees-BCHKmn__.js} +1 -1
  39. package/dist/assets/{List-BuzBZYNs.js → List-0wMSr6sl.js} +1 -1
  40. package/dist/assets/{List-DykznTcB.js → List-D-RW25bD.js} +1 -1
  41. package/dist/assets/{List-Cm_1Pl_m.js → List-DX7teWzL.js} +1 -1
  42. package/dist/assets/{Main-U-Zwfh9K.js → Main-DgiFebD-.js} +1 -1
  43. package/dist/assets/{Navigator--_Jw-oQ6.js → Navigator-D08MfOeK.js} +1 -1
  44. package/dist/assets/{NoTasks-Bg3dk3Zk.js → NoTasks-CQZOGbwI.js} +1 -1
  45. package/dist/assets/{Pagination-Chbfcf6l.js → Pagination-B1kOfzR8.js} +1 -1
  46. package/dist/assets/{ScrollList-DtikpNk7.js → ScrollList-CfFOKFbb.js} +1 -1
  47. package/dist/assets/{Status-CaUFs7gn.js → Status-CviAA8Me.js} +1 -1
  48. package/dist/assets/{Subscribe-Ccl8kWoO.js → Subscribe-QybZFlvY.js} +1 -1
  49. package/dist/assets/{VideoPlayer-CXGW06AO.js → VideoPlayer-Bx5Q-Jo7.js} +1 -1
  50. package/dist/assets/{distribution-dxlLtIkZ.js → distribution-D9pkXpfI.js} +1 -1
  51. package/dist/assets/{index-BceQaAb7.js → index-BwtxyV6k.js} +2 -2
  52. package/dist/assets/{order-C7LItaBN.js → order-DYcfG_Yw.js} +1 -1
  53. package/dist/assets/{price-DtWUJRlS.js → price-Clo8IP03.js} +1 -1
  54. package/dist/index.html +1 -1
  55. package/dist/robots.txt +42 -0
  56. package/dist/sitemap.xml +124 -0
  57. package/package.json +1 -1
@@ -1 +1 @@
1
- import{c as s,d as c}from"./vendor-element-plus-C2t7-rNg.js";import{d as m,R as i,S as t,l as e,am as o,o as p}from"./vendor-vue-BzRnDgD5.js";import{_}from"./index-BceQaAb7.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-B4-12K57.js";import"./vendor-katex-DHBGsivc.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";const l=m({name:"LayoutAuth",components:{ElContainer:c,ElMain:s}});function u(f,d,h,v,x,C){const n=o("router-view"),r=o("el-main"),a=o("el-container");return p(),i(a,null,{default:t(()=>[e(r,{class:"h-[100vh]"},{default:t(()=>[e(n)]),_:1})]),_:1})}const M=_(l,[["render",u]]);export{M as default};
1
+ import{c as s,d as c}from"./vendor-element-plus-C2t7-rNg.js";import{d as m,R as i,S as t,l as e,am as o,o as p}from"./vendor-vue-BzRnDgD5.js";import{_}from"./index-BwtxyV6k.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-B4-12K57.js";import"./vendor-katex-DHBGsivc.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";const l=m({name:"LayoutAuth",components:{ElContainer:c,ElMain:s}});function u(f,d,h,v,x,C){const n=o("router-view"),r=o("el-main"),a=o("el-container");return p(),i(a,null,{default:t(()=>[e(r,{class:"h-[100vh]"},{default:t(()=>[e(n)]),_:1})]),_:1})}const M=_(l,[["render",u]]);export{M as default};
@@ -1 +1 @@
1
- import{U as c,H as p}from"./vendor-element-plus-C2t7-rNg.js";import{d as r,c as m,ak as i,F as _,am as s,o as d,a as o,l as e,S as n}from"./vendor-vue-BzRnDgD5.js";import{_ as x}from"./index-BceQaAb7.js";const f=r({name:"BotPlaceholder",components:{ElSkeleton:p,ElSkeletonItem:c}}),k={class:"w-[70px] p-[10px]"},h={class:"flex-1 p-[10px]"};function u(v,w,B,b,$,C){const t=s("el-skeleton-item"),a=s("el-skeleton");return d(),m(_,null,i(3,l=>o("div",{key:l,class:"flex mb-[10px]"},[o("div",k,[e(a,{animated:""},{template:n(()=>[e(t,{variant:"image",class:"w-[50px] h-[50px] rounded-full"})]),_:1})]),o("div",h,[e(a,{animated:""},{template:n(()=>[e(t,{variant:"p",class:"w-[200px] h-[20px] mb-[15px] block"}),e(t,{variant:"p",class:"w-full h-[200px] max-w-[300px] block"})]),_:1})])])),64)}const F=x(f,[["render",u]]);export{F as B};
1
+ import{U as c,H as p}from"./vendor-element-plus-C2t7-rNg.js";import{d as r,c as m,ak as i,F as _,am as s,o as d,a as o,l as e,S as n}from"./vendor-vue-BzRnDgD5.js";import{_ as x}from"./index-BwtxyV6k.js";const f=r({name:"BotPlaceholder",components:{ElSkeleton:p,ElSkeletonItem:c}}),k={class:"w-[70px] p-[10px]"},h={class:"flex-1 p-[10px]"};function u(v,w,B,b,$,C){const t=s("el-skeleton-item"),a=s("el-skeleton");return d(),m(_,null,i(3,l=>o("div",{key:l,class:"flex mb-[10px]"},[o("div",k,[e(a,{animated:""},{template:n(()=>[e(t,{variant:"image",class:"w-[50px] h-[50px] rounded-full"})]),_:1})]),o("div",h,[e(a,{animated:""},{template:n(()=>[e(t,{variant:"p",class:"w-[200px] h-[20px] mb-[15px] block"}),e(t,{variant:"p",class:"w-full h-[200px] max-w-[300px] block"})]),_:1})])])),64)}const F=x(f,[["render",u]]);export{F as B};
@@ -1 +1 @@
1
- import{d as t}from"./vendor-vue-BzRnDgD5.js";import{_ as r}from"./index-BceQaAb7.js";import"./vendor-B4-12K57.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-katex-DHBGsivc.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-element-plus-C2t7-rNg.js";const e=t({name:"AuthCallback",data(){return{redirect:this.$route.query.redirect?.toString()}},async mounted(){this.redirect?await this.$router.push(this.redirect):await this.$router.push("/")}}),n=r(e,[["__scopeId","data-v-0779b8a8"]]);export{n as default};
1
+ import{d as t}from"./vendor-vue-BzRnDgD5.js";import{_ as r}from"./index-BwtxyV6k.js";import"./vendor-B4-12K57.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-katex-DHBGsivc.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-element-plus-C2t7-rNg.js";const e=t({name:"AuthCallback",data(){return{redirect:this.$route.query.redirect?.toString()}},async mounted(){this.redirect?await this.$router.push(this.redirect):await this.$router.push("/")}}),n=r(e,[["__scopeId","data-v-0779b8a8"]]);export{n as default};
@@ -1 +1 @@
1
- import{N as h}from"./Navigator--_Jw-oQ6.js";import{R as $,a as v,b as w,c as O,i as g,_ as l}from"./index-BceQaAb7.js";import{bH as L}from"./vendor-B4-12K57.js";import{d,c as a,a as s,F as N,ak as C,am as i,o as t,V as E,l as r,Z as k,R as I,W as S}from"./vendor-vue-BzRnDgD5.js";import"./vendor-element-plus-C2t7-rNg.js";import"./vendor-dayjs-D6Igi227.js";import"./EditArray-IlWOQ17d.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-katex-DHBGsivc.js";const x=d({name:"Navigator",components:{FontAwesomeIcon:L},computed:{isOfficial(){return g()},active(){return this.$route.matched[0].path},user(){return this.$store.getters.user},links(){return[{key:"application-list",text:this.$t("console.menu.applicationList"),name:v,icon:"fa-solid fa-cube"},{key:"order-list",text:this.$t("console.menu.orderList"),name:w,icon:"fa-solid fa-store"},{key:"usage-list",text:this.$t("console.menu.usageList"),name:O,icon:"fa-solid fa-rotate-left"}]}},mounted(){},methods:{onHome(){this.$router.push({name:$})},onNavigate(e){e.name?this.$router.push({name:e.name}):e.href&&window.open(e.href,"_blank")}}}),R={class:"side"},T={class:"links"},b=["onClick"],y={class:"icon"},U={class:"text"},A={class:"outer"};function B(e,c,_,p,u,f){const n=i("font-awesome-icon");return t(),a("div",R,[s("div",T,[(t(!0),a(N,null,C(e.links,(o,m)=>(t(),a("a",{key:m,class:E({link:!0,active:e.$route.name===o.name}),onClick:z=>e.onNavigate(o)},[s("span",y,[r(n,{icon:o.icon,class:"text-sm"},null,8,["icon"])]),s("span",U,k(o.text),1),s("span",A,[!o.name&&o.href?(t(),I(n,{key:0,icon:"fa-solid fa-up-right-from-square",class:"text-sm ml-2"})):S("",!0)]),c[0]||(c[0]=s("span",{class:"suffix"},null,-1))],10,b))),128))])])}const V=l(x,[["render",B],["__scopeId","data-v-fe27dc30"]]),D=d({name:"LayoutConsole",components:{SidePanel:V,Navigator:h},data(){return{mobile:window.innerWidth<768}},mounted(){window.addEventListener("resize",()=>{this.mobile=window.innerWidth<768})}}),F={class:"console"},P={class:"main"};function W(e,c,_,p,u,f){const n=i("side-panel"),o=i("router-view"),m=i("navigator");return t(),a("div",F,[s("div",P,[r(n,{class:"side"}),r(o,{class:"panel"})]),r(m,{class:"navigator",direction:e.mobile?"row":"column"},null,8,["direction"])])}const Y=l(D,[["render",W],["__scopeId","data-v-6c8e7654"]]);export{Y as default};
1
+ import{N as h}from"./Navigator-D08MfOeK.js";import{R as $,a as v,b as w,c as O,i as g,_ as l}from"./index-BwtxyV6k.js";import{bH as L}from"./vendor-B4-12K57.js";import{d,c as a,a as s,F as N,ak as C,am as i,o as t,V as E,l as r,Z as k,R as I,W as S}from"./vendor-vue-BzRnDgD5.js";import"./vendor-element-plus-C2t7-rNg.js";import"./vendor-dayjs-D6Igi227.js";import"./EditArray-DpGXSb1V.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-katex-DHBGsivc.js";const x=d({name:"Navigator",components:{FontAwesomeIcon:L},computed:{isOfficial(){return g()},active(){return this.$route.matched[0].path},user(){return this.$store.getters.user},links(){return[{key:"application-list",text:this.$t("console.menu.applicationList"),name:v,icon:"fa-solid fa-cube"},{key:"order-list",text:this.$t("console.menu.orderList"),name:w,icon:"fa-solid fa-store"},{key:"usage-list",text:this.$t("console.menu.usageList"),name:O,icon:"fa-solid fa-rotate-left"}]}},mounted(){},methods:{onHome(){this.$router.push({name:$})},onNavigate(e){e.name?this.$router.push({name:e.name}):e.href&&window.open(e.href,"_blank")}}}),R={class:"side"},T={class:"links"},b=["onClick"],y={class:"icon"},U={class:"text"},A={class:"outer"};function B(e,c,_,p,u,f){const n=i("font-awesome-icon");return t(),a("div",R,[s("div",T,[(t(!0),a(N,null,C(e.links,(o,m)=>(t(),a("a",{key:m,class:E({link:!0,active:e.$route.name===o.name}),onClick:z=>e.onNavigate(o)},[s("span",y,[r(n,{icon:o.icon,class:"text-sm"},null,8,["icon"])]),s("span",U,k(o.text),1),s("span",A,[!o.name&&o.href?(t(),I(n,{key:0,icon:"fa-solid fa-up-right-from-square",class:"text-sm ml-2"})):S("",!0)]),c[0]||(c[0]=s("span",{class:"suffix"},null,-1))],10,b))),128))])])}const V=l(x,[["render",B],["__scopeId","data-v-fe27dc30"]]),D=d({name:"LayoutConsole",components:{SidePanel:V,Navigator:h},data(){return{mobile:window.innerWidth<768}},mounted(){window.addEventListener("resize",()=>{this.mobile=window.innerWidth<768})}}),F={class:"console"},P={class:"main"};function W(e,c,_,p,u,f){const n=i("side-panel"),o=i("router-view"),m=i("navigator");return t(),a("div",F,[s("div",P,[r(n,{class:"side"}),r(o,{class:"panel"})]),r(m,{class:"navigator",direction:e.mobile?"row":"column"},null,8,["direction"])])}const Y=l(D,[["render",W],["__scopeId","data-v-6c8e7654"]]);export{Y as default};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-highlight-BX2iaugd.js","assets/vendor-B4-12K57.js","assets/vendor-vue-BzRnDgD5.js","assets/vendor-dayjs-D6Igi227.js","assets/vendor-katex-DHBGsivc.js","assets/vendor-katex-CIur2ABi.css","assets/vendor-Cp-P0JlL.css","assets/vendor-highlight-t6bI8mSi.css"])))=>i.map(i=>d[i]);
2
- import{a as ue}from"./vendor-axios-NIGUFBhG.js";import{d as E,c as u,o as s,b as me,h as pe,U as V,R as f,am as l,at as te,S as m,l as c,a as g,W as y,Z as _,F as L,ak as N,aj as W,a1 as M,Y as D,V as I,_ as he,au as ge,a2 as fe,P as Y}from"./vendor-vue-BzRnDgD5.js";import{ai as J,_ as S,ac as _e,aj as O,ak as Q,al as se,am as oe,an as P,ao as ve,ap as ye,aq as $e,ar as be,as as Ce,at as we,au as R,av as ne,a5 as ke,aw as H,ax as X,ay as Z,az as x,aA as ee,aB as T,ah as z,aC as Ee,aD as j,aE as Se,aF as Re}from"./index-BceQaAb7.js";import{a5 as De,bR as ae,bU as qe,bV as Ie,bH as A}from"./vendor-B4-12K57.js";import"./vendor-katex-DHBGsivc.js";import"./vendor-highlight-BX2iaugd.js";import{C as Ge}from"./CopyToClipboard-C_hpGFI6.js";import{o as K,q as ie,i as Ae,k as B,r as Oe,s as k,f as re,g as le,h as de,H as Me,E as Te,O as Ve}from"./vendor-element-plus-C2t7-rNg.js";import{F as ce}from"./FilePreview-Bpmd6-yb.js";import{I as Le}from"./ImagePreview-C81-sroB.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-dayjs-D6Igi227.js";const Ne=async e=>{const t=(await De(async()=>{const{default:d}=await import("./vendor-highlight-BX2iaugd.js");return{default:d}},__vite__mapDeps([0,1,2,3,4,5,6,7]))).default;e.querySelectorAll("pre code").forEach(d=>{const r=d.parentElement;if(!r)return;if(r.dataset.hasCopy==="1"){"highlightElement"in t?t.highlightElement(d):t.highlightBlock(d);return}const i=document.createElement("div");i.className="relative",r.parentNode.insertBefore(i,r),i.appendChild(r),r.classList.add("overflow-auto");const n=document.createElement("button");n.type="button",n.dataset.copyBtn="1",n.className="absolute top-1 right-1 z-10 rounded-md px-2 py-1 text-xs bg-zinc-800 text-white hover:bg-zinc-700 active:scale-95",n.textContent=J.global.t("common.button.copy").toString(),n.addEventListener("click",()=>{ae(d.innerText);const a=n.textContent;n.textContent=J.global.t("common.button.copied")?.toString(),setTimeout(()=>n.textContent=a,5e3)}),i.appendChild(n),r.dataset.hasCopy="1","highlightElement"in t?t.highlightElement(d):t.highlightBlock(d)})},Ue=E({name:"AnsweringMark",data(){return{}},computed:{conversationId(){return this.$route.params?.id?.toString()}}}),Fe={class:"mark"};function Pe(e,t,o,d,r,i){return s(),u("div",Fe)}const Be=S(Ue,[["render",Pe]]),He=E({name:"VueMarkdown",props:{source:{type:String,required:!0},options:{type:Object,default:()=>({}),required:!1}},setup(e,{attrs:t}){const o=new qe({...e.options,html:!0}).use(Ie,{delimiters:"all",throwOnError:!1,errorColor:"#cc0000",mathFence:!0}),d=me(()=>{const r=e.source;return o?.render(r).replace(/<think>/g,'<div class="think">').replace(/<\/think>/g,"</div>")});return()=>pe("div",{...t,innerHTML:d.value})}}),je=E({name:"MarkdownRenderer",directives:{highlight:Ne},components:{VueMarkdown:He},props:{content:{type:String,required:!1,default:""}}});function ze(e,t,o,d,r,i){const n=l("vue-markdown"),a=te("highlight");return V((s(),f(n,{source:e.content,class:"markdown-body bg-transparent pt-[3px] text-[inherit]"},null,8,["source"])),[[a]])}const We=S(je,[["render",ze],["__scopeId","data-v-de1f7a52"]]),Ke=E({name:"CopyToClipboard",components:{FontAwesomeIcon:A,ElTooltip:K},props:{messages:{type:Array,required:!1,default:()=>[]}},emits:["restart"],data(){return{copied:!1}},methods:{onRestart(){this.$emit("restart")}}});function Ye(e,t,o,d,r,i){const n=l("font-awesome-icon"),a=l("el-tooltip");return s(),f(a,{effect:"dark",content:e.$t("common.button.restart"),placement:"bottom"},{default:m(()=>[c(n,{icon:"fa-solid fa-sync",class:"icon-sync",onClick:e.onRestart},null,8,["onClick"])]),_:1},8,["content"])}const Je=S(Ke,[["render",Ye],["__scopeId","data-v-90e169cb"]]),Qe=E({name:"EditMessage",components:{FontAwesomeIcon:A,ElTooltip:K},props:{messages:{type:Array,required:!1,default:()=>[]}},emits:["click"],data(){return{copied:!1}},methods:{onEdit(){this.$emit("click")}}});function Xe(e,t,o,d,r,i){const n=l("font-awesome-icon"),a=l("el-tooltip");return s(),u("span",null,[c(a,{effect:"dark",content:e.$t("common.button.restart"),placement:"bottom"},{default:m(()=>[c(n,{icon:"fa-solid fa-edit",class:"icon icon-edit",onClick:e.onEdit},null,8,["onClick"])]),_:1},8,["content"])])}const Ze=S(Qe,[["render",Xe],["__scopeId","data-v-8e947e8f"]]),xe=E({name:"Message",components:{EditMessage:Ze,CopyToClipboard:Ge,RestartToGenerate:Je,AnsweringMark:Be,MarkdownRenderer:We,FilePreview:ce,ElButton:B,ElImage:Ae,ElInput:ie,FontAwesomeIcon:A},props:{messages:{type:Array,required:!1,default:()=>[]},message:{type:Object,required:!0},application:{type:Object,required:!0}},emits:["stop","edit","restart"],data(){return{copied:!1,isEditing:!1,questionValue:this.message.content,messageState:R}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},errorText(){if(console.debug("error",this.message.error),!(!this.message.error||!this.message.error?.code)){if(this.message.error?.message)return this.message.error.message;switch(this.message.error?.code){case Q:return this.$t("chat.message.errorUsedUp");case we:return this.$t("chat.message.errorApiError");case Ce:return this.$t("chat.message.errorBadRequest");case be:return this.$t("chat.message.errorTimeout");case $e:return this.$t("chat.message.errorBusy");case ye:return this.$t("chat.message.errorContentTooLarge");case ve:return this.$t("chat.message.errorTooManyRequests");case P:return this.$t("chat.message.errorNotApplied");case oe:return;case se:default:return this.$t("chat.message.errorUnknown")}}},showBuyMore(){return this.message.role===O&&this.message.error?.code===Q}},watch:{},methods:{startEditing(){this.isEditing=!0,this.questionValue=this.message.content,console.debug("start to get answer",this.message)},cancelEdit(){this.isEditing=!1},onRestart(){this.$emit("restart",this.message)},onEdit(){this.isEditing=!1,this.onSubmit()},onSubmit(){this.$emit("edit",this.message,this.questionValue)},onCopy(){ae(this.message.content.toString(),{debug:!0}),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)},onBuyMore(){this.$router.push({name:_e,params:{id:this.application?.id}})}}}),et=["role"],tt={class:"author"},st={key:0,class:"main"},ot={initial:{opacity:0,y:5},enter:{opacity:1,y:0,scale:1},delay:300,duration:400,layout:!0,transition:{enter:{delay:.3,duration:.5},layout:{duration:.4,easing:"ease-in-out"}},class:"content"},nt={key:0,class:"message-content"},at={key:0},it={key:1,class:"whitespace-pre-wrap break-words w-fit max-w-full py-1"},rt={key:1},lt=["src"],dt={key:2},ct={key:1,class:"whitespace-pre-wrap break-words w-fit max-w-full py-1"},ut={key:1,class:"edits"},mt={class:"flex justify-end"},pt={initial:{opacity:0,y:5},enter:{opacity:1,y:0,scale:1},delay:300,duration:400,layout:!0,transition:{enter:{delay:.3,duration:.5},layout:{duration:.4,easing:"ease-in-out"}},class:"operations"},ht={key:1,class:"error-card"},gt={class:"error-content"},ft={class:"error-text"};function _t(e,t,o,d,r,i){const n=l("el-image"),a=l("markdown-renderer"),b=l("file-preview"),w=l("el-input"),h=l("el-button"),v=l("answering-mark"),p=l("edit-message"),q=l("copy-to-clipboard"),C=l("restart-to-generate"),U=l("font-awesome-icon"),G=te("motion");return s(),u("div",{class:I({message:!0,[e.message.role]:!0}),role:e.message.role},[g("div",tt,[e.message.role==="assistant"?(s(),f(n,{key:0,src:e.modelGroup?.icon,fit:"cover",class:"avatar"},null,8,["src"])):y("",!0)]),e.errorText?(s(),u("div",ht,[g("div",gt,[c(U,{icon:"fa-solid fa-circle-exclamation",class:"error-icon"}),g("span",ft,_(e.errorText),1)]),e.showBuyMore?(s(),f(h,{key:0,round:"",type:"primary",class:"btn-topup",size:"small",onClick:e.onBuyMore},{default:m(()=>[D(_(e.$t("common.button.buyMore")),1)]),_:1},8,["onClick"])):y("",!0)])):(s(),u("div",st,[V((s(),u("div",ot,[e.isEditing?(s(),u("div",ut,[c(w,{modelValue:e.questionValue,"onUpdate:modelValue":t[0]||(t[0]=$=>e.questionValue=$),type:"textarea",class:"mb-2",onKeydown:W(M(e.onEdit,["exact","prevent"]),["enter"])},null,8,["modelValue","onKeydown"]),g("div",mt,[c(h,{round:"",onClick:e.cancelEdit},{default:m(()=>[D(_(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),c(h,{type:"primary",class:"btn-confirm",round:"",onClick:e.onEdit},{default:m(()=>[D(_(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])])):(s(),u("div",nt,[Array.isArray(e.message.content)?(s(),u("div",rt,[(s(!0),u(L,null,N(e.message.content,($,F)=>(s(),u("div",{key:F},[$.type==="image_url"?(s(),u("img",{key:0,src:typeof $?.image_url=="string"?$.image_url:$.image_url?.url,fit:"cover",class:"image"},null,8,lt)):y("",!0),$.file_url?(s(),f(b,{key:1,name:typeof $?.file_url=="string"?$.file_url:$.file_url?.url,percentage:0,closable:!1,class:"mt-2"},null,8,["name"])):y("",!0),$.type==="text"?(s(),u("div",dt,[e.message.role==="assistant"?(s(),f(a,{key:0,content:$.text},null,8,["content"])):(s(),u("pre",ct,_($.text?.trim()),1))])):y("",!0)]))),128))])):(s(),u("div",at,[e.message.role==="assistant"?(s(),f(a,{key:0,content:e.message?.content},null,8,["content"])):(s(),u("pre",it,_(e.message.content),1))]))])),e.message.state===e.messageState.PENDING?(s(),f(v,{key:2})):y("",!0)])),[[G]]),V((s(),u("div",pt,[e.message.role==="user"&&!e.isEditing&&!Array.isArray(e.message.content)?(s(),f(p,{key:0,class:"btn-edit",onClick:e.startEditing},null,8,["onClick"])):y("",!0),!Array.isArray(e.message.content)&&(e.message.state===e.messageState.FINISHED||e.message.state===e.messageState.FAILED)?(s(),f(q,{key:1,content:e.message.content,class:"btn-copy"},null,8,["content"])):y("",!0),!Array.isArray(e.message.content)&&(e.message.state===e.messageState.FINISHED||e.message.state===e.messageState.FAILED)&&e.message.role==="assistant"&&e.message===e.messages[e.messages.length-1]?(s(),f(C,{key:2,class:"btn-restart",messages:e.messages,onRestart:e.onRestart},null,8,["messages","onRestart"])):y("",!0)])),[[G]])]))],10,et)}const vt=S(xe,[["render",_t],["__scopeId","data-v-8e83775c"]]),yt=E({name:"Composer",components:{FilePreview:ce,ImagePreview:Le,ElTooltip:K,FontAwesomeIcon:A,ElUpload:Oe,ElButton:B},props:{answering:{type:Boolean,required:!1,default:!1},references:{type:Array,required:!1,default:()=>[]},question:{type:String,required:!0}},emits:["update:question","update:references","submit","stop"],data(){return{inputHeight:"35px",questionValue:this.question||"",fileList:[],uploadUrl:ke()+"/api/v1/files/"}},computed:{model(){return this.$store.state.chat.model},modelGroup(){return this.$store.state.chat.modelGroup},isFileSupported(){return this.model?.isFileSupported},isImageSupported(){return this.model?.isImageSupported},headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)},uploading(){return!!this.fileList.find(e=>e.percentage!==void 0&&e.percentage>=0&&e.percentage<100)},extensions(){if(this.isFileSupported===!1&&this.isImageSupported===!0)return".png,.jpg,.jpeg,.gif,.bmp,.webp,.svg,.tiff,.ico,.heic"}},watch:{urls(e){console.debug("File URLs:",e),e.length>0&&this.$emit("update:references",e)},questionValue(e){this.$emit("update:question",e.trim())},question(e){e!==this.questionValue&&(this.questionValue=e)},references(e){console.debug("References updated:",e),e.length===0&&(this.fileList=[])},isFileSupported(e,t){t&&!e&&(this.fileList=[])}},methods:{isImageUrl:ne,adjustTextareaHeight(){this.$nextTick(()=>{const e=this.$refs.textarea;e&&(e.style.height="35px",e.style.height=e.scrollHeight+"px")})},onSubmit(){!this.question||this.uploading||this.$emit("submit")},onStop(){this.$emit("stop")},onProgress(e,t){console.debug("File upload progress:",t.name,e.loaded,e.total,t.percentage)},onExceed(){k.warning(this.$t("chat.message.uploadReferencesExceed"))},onError(){k.error(this.$t("chat.message.uploadReferencesError"))}}}),$t={class:"composer"},bt={class:"tools"},Ct=["disabled","placeholder"];function wt(e,t,o,d,r,i){const n=l("image-preview"),a=l("file-preview"),b=l("font-awesome-icon"),w=l("el-tooltip"),h=l("el-upload"),v=l("el-button");return s(),u("div",$t,[g("div",bt,[c(h,{"file-list":e.fileList,"onUpdate:fileList":t[0]||(t[0]=p=>e.fileList=p),class:I({upload:!0,disabled:!e.isFileSupported&&!e.isImageSupported||e.answering}),accept:e.extensions,disabled:!e.isFileSupported&&!e.isImageSupported||e.answering,name:"file",limit:10,multiple:!0,action:e.uploadUrl,"list-type":"picture","on-exceed":e.onExceed,"on-error":e.onError,"on-progress":e.onProgress,headers:e.headers},{file:m(({file:p})=>[e.isImageUrl(p.name)?(s(),f(n,{key:0,url:p.url||p.response?.file_url,name:p.name,percentage:p.percentage,onRemove:q=>e.fileList.splice(e.fileList.indexOf(p),1)},null,8,["url","name","percentage","onRemove"])):(s(),f(a,{key:1,name:p.name,percentage:p.percentage,onRemove:q=>e.fileList.splice(e.fileList.indexOf(p),1)},null,8,["name","percentage","onRemove"]))]),default:m(()=>[c(w,{class:"box-item",effect:"dark",content:e.$t("chat.message.uploadFile"),placement:"bottom"},{default:m(()=>[g("span",{class:I({btn:!0,"btn-upload":!0,disabled:!e.isFileSupported&&!e.isImageSupported||e.answering})},[c(b,{icon:"fa-solid fa-plus",class:"icon icon-attachment"})],2)]),_:1},8,["content"])]),_:1},8,["file-list","class","accept","disabled","action","on-exceed","on-error","on-progress","headers"])]),c(v,{disabled:e.answering||!e.questionValue||e.uploading,type:"primary",class:I({btn:!0,"btn-send":!0}),onClick:e.onSubmit},{default:m(()=>[c(b,{icon:"fa-solid fa-arrow-up",class:"icon icon-send"})]),_:1},8,["disabled","onClick"]),V(c(v,{disabled:!e.answering,type:"primary",class:I({btn:!0,"btn-stop":!0}),onClick:e.onStop},{default:m(()=>[c(b,{icon:"fa-solid fa-stop",class:"icon icon-stop"})]),_:1},8,["disabled","onClick"]),[[he,e.answering]]),V(g("textarea",{ref:"textarea","onUpdate:modelValue":t[1]||(t[1]=p=>e.questionValue=p),disabled:e.answering,class:"input",placeholder:e.$t("chat.message.newMessagePlaceholder"),style:fe({height:e.inputHeight}),onKeydown:t[2]||(t[2]=W(M((...p)=>e.onSubmit&&e.onSubmit(...p),["exact","prevent"]),["enter"])),onInput:t[3]||(t[3]=(...p)=>e.adjustTextareaHeight&&e.adjustTextareaHeight(...p))},null,44,Ct),[[ge,e.questionValue]])])}const kt=S(yt,[["render",wt],["__scopeId","data-v-2d5d451e"]]),Et=E({name:"ModelSelector",components:{ElDropdown:de,ElDropdownMenu:le,ElDropdownItem:re,FontAwesomeIcon:A},emits:["update:modelValue","select","model-group-changed","model-changed"],data(){return{options:[H,X,Z,x,ee]}},computed:{model(){return console.log("model",this.$store.state.chat.model),this.$store.state.chat.model},modelGroup(){return this.$route.meta?.modelGroup||H}},watch:{modelGroup(e){console.debug("modelGroup from route changed",e),this.$store.dispatch("chat/setModelGroup",e),this.$store.dispatch("chat/setModel",e.models[0])}},mounted(){console.debug("ModelSelector mounted, checking model group");const t=[H,X,Z,x,ee].find(o=>o.name===this.modelGroup.name);console.debug("Found model group:",t),t&&(this.$store.dispatch("chat/setModelGroup",t),this.$store.dispatch("chat/setModel",t.models[0]))},methods:{onModelGroupChange(e){this.$store.dispatch("chat/setModelGroup",e),this.$emit("model-group-changed",e)},onModelChange(e){this.$store.dispatch("chat/setModel",e),this.$emit("model-changed",e)}}}),St={class:"selector"},Rt={class:"trigger"},Dt=["src"],qt={class:"trigger-name"},It={class:"item"},Gt=["src"],At={class:"item-info"},Ot={key:0,class:"item-name"},Mt={key:1,class:"item-desc"};function Tt(e,t,o,d,r,i){const n=l("font-awesome-icon"),a=l("el-dropdown-item"),b=l("el-dropdown-menu"),w=l("el-dropdown");return s(),u("div",St,[c(w,{trigger:"click","popper-class":"model-selector-popper"},{dropdown:m(()=>[e.modelGroup&&e.modelGroup?.models?(s(),f(b,{key:0},{default:m(()=>[(s(!0),u(L,null,N(e.modelGroup?.models?.filter(h=>h.enabled),(h,v)=>(s(),f(a,{key:v,class:I({active:e.model?.name===h?.name}),onClick:p=>e.onModelChange(h)},{default:m(()=>[g("div",It,[h?.icon?(s(),u("img",{key:0,src:h.icon,class:"item-icon"},null,8,Gt)):y("",!0),g("div",At,[h?.getDisplayName?(s(),u("p",Ot,_(h?.getDisplayName()),1)):y("",!0),h?.getDescription?(s(),u("p",Mt,_(h?.getDescription()),1)):y("",!0)]),e.model?.name===h?.name?(s(),f(n,{key:1,icon:"fa-solid fa-check",class:"item-check"})):y("",!0)])]),_:2},1032,["class","onClick"]))),128))]),_:1})):y("",!0)]),default:m(()=>[g("div",Rt,[e.model?.icon?(s(),u("img",{key:0,src:e.model.icon,class:"trigger-icon"},null,8,Dt)):y("",!0),g("span",qt,_(e.model?.getDisplayName()),1),c(n,{icon:"fa-solid fa-chevron-down",class:"trigger-arrow"})])]),_:1})])}const Vt=S(Et,[["render",Tt],["__scopeId","data-v-ef076115"]]),Lt={},Nt={class:"disclaimer"};function Ut(e,t){return s(),u("p",Nt,_(e.$t("chat.message.howToUse")),1)}const Ft=S(Lt,[["render",Ut],["__scopeId","data-v-d2d980ab"]]),Pt=E({name:"SidePanel",components:{ElInput:ie,ElButton:B,ElDialog:Te,ElDropdown:de,ElDropdownItem:re,ElDropdownMenu:le,FontAwesomeIcon:A,ElSkeleton:Me},props:{},emits:["change-conversation"],data(){return{renameDialogVisible:!1,deleteDialogVisible:!1,actingConversation:void 0,renameDraft:"",renameSubmitting:!1,deleteSubmitting:!1}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},conversationId(){return console.debug("conversationId in side",this.$route.params?.id),this.$route.params?.id?.toString()},conversations(){let e=this.$store.state.chat.conversations;return console.debug("conversations",e),console.debug("modelGroup",this.modelGroup),e=e?.filter(t=>t?.model&&this.modelGroup?.models?.map(o=>o.name)?.includes(t?.model)),console.debug("filtered conversations",e),e},conversationGroups(){const e=new Date;e.setHours(0,0,0,0);const t=new Date(e);t.setDate(t.getDate()-1);const o=new Date(e);o.setDate(o.getDate()-e.getDay());const d=new Date(o);d.setDate(d.getDate()-7);const r=this.conversations?.reduce((i,n)=>{const a=new Date(n.updated_at*1e3);return a>=e?i.today.push(n):a>=t?i.yesterday.push(n):a>=o?i.thisWeek.push(n):i.earlier.push(n),i},{today:[],yesterday:[],thisWeek:[],earlier:[]});return{...r?.today?.length>0?{today:r?.today?.sort((i,n)=>n.updated_at-i.updated_at)}:{},...r?.yesterday?.length>0?{yesterday:r?.yesterday?.sort((i,n)=>n.updated_at-i.updated_at)}:{},...r?.thisWeek?.length>0?{thisWeek:r?.thisWeek?.sort((i,n)=>n.updated_at-i.updated_at)}:{},...r?.earlier?.length>0?{earlier:r?.earlier?.sort((i,n)=>n.updated_at-i.updated_at)}:{}}},application(){return this.$store.state.chat.application},loading(){return this.$store.state.chat.status.getConversations===z.Request},token(){return this.$store.state.chat?.credential?.token}},watch:{modelGroup(){console.debug("modelGroup changed, refreshing conversations");const e=this.conversations?.[0];this.$emit("change-conversation",e?.id)}},methods:{async onNewConversation(){console.debug("onNewConversation from side panel"),this.$emit("change-conversation",void 0)},onClickConversation(e){console.debug("onClickConversation in side panel",e),this.$emit("change-conversation",e)},getConversationTitle(e){return e?.title||e?.messages?.[e?.messages.length-1]?.content||e?.messages?.[0]?.content||""},onConversationCommand(e,t){e==="rename"?this.openRenameDialog(t):e==="delete"&&this.openDeleteDialog(t)},openRenameDialog(e){this.actingConversation=e,this.renameDraft=(e?.title||"").trim(),this.renameDialogVisible=!0},openDeleteDialog(e){this.actingConversation=e,this.deleteDialogVisible=!0},async onConfirmRename(){const e=this.token,t=this.actingConversation?.id,o=(this.renameDraft||"").trim();if(!e){k.error("Token 不存在,请重新登录");return}if(!t){k.error("会话不存在");return}if(!o){k.warning("请输入名称");return}this.renameSubmitting=!0;try{await T.updateConversation({id:t,title:o},{token:e}),await this.$store.dispatch("chat/getConversations"),this.renameDialogVisible=!1,k.success("已重命名")}catch(d){console.error(d),k.error("重命名失败,请稍后重试")}finally{this.renameSubmitting=!1}},async onConfirmDelete(){const e=this.token,t=this.actingConversation?.id;if(!e){k.error("Token 不存在,请重新登录");return}if(!t){k.error("会话不存在");return}this.deleteSubmitting=!0;try{await T.deleteConversation(t,{token:e}),await this.$store.dispatch("chat/getConversations"),t===this.conversationId&&this.$emit("change-conversation",void 0),this.deleteDialogVisible=!1,k.success("已删除")}catch(o){console.error(o),k.error("删除失败,请稍后重试")}finally{this.deleteSubmitting=!1}}}}),Bt={class:"panel"},Ht={key:1,class:"conversations"},jt={class:"icons"},zt={class:"title"},Wt={class:"key"},Kt=["onClick"],Yt={class:"title"},Jt={class:"operations"};function Qt(e,t,o,d,r,i){const n=l("el-skeleton"),a=l("font-awesome-icon"),b=l("el-dropdown-item"),w=l("el-dropdown-menu"),h=l("el-dropdown"),v=l("el-input"),p=l("el-button"),q=l("el-dialog");return s(),u("div",Bt,[e.loading&&e.conversationGroups===void 0?(s(),f(n,{key:0})):(s(),u("div",Ht,[g("div",{class:"conversation",onClick:t[0]||(t[0]=(...C)=>e.onNewConversation&&e.onNewConversation(...C))},[g("div",jt,[c(a,{icon:"fa-solid fa-plus",class:"icon"})]),g("div",zt,_(e.$t("chat.message.startNewChat")),1)]),(s(!0),u(L,null,N(e.conversationGroups,(C,U)=>(s(),u("div",{key:U,class:"group"},[g("div",Wt,_(e.$t(`chat.group.${U}`)),1),(s(!0),u(L,null,N(C,(G,$)=>(s(),u("div",{key:$,class:I({conversation:!0,active:G.id===e.conversationId}),onClick:F=>e.onClickConversation(G.id)},[g("div",Yt,_(e.getConversationTitle(G)),1),g("div",Jt,[c(h,{trigger:"click",placement:"bottom-end",teleported:!0,onCommand:F=>e.onConversationCommand(F,G)},{dropdown:m(()=>[c(w,null,{default:m(()=>[c(b,{command:"rename",onClick:t[2]||(t[2]=M(()=>{},["stop"]))},{default:m(()=>[c(a,{icon:"fa-solid fa-pen-to-square",class:"mr-2"}),t[9]||(t[9]=D(" 重命名 ",-1))]),_:1,__:[9]}),c(b,{command:"delete",onClick:t[3]||(t[3]=M(()=>{},["stop"]))},{default:m(()=>[c(a,{icon:"fa-solid fa-trash",class:"mr-2"}),D(" "+_(e.$t("common.button.delete")),1)]),_:1})]),_:1})]),default:m(()=>[g("span",{class:"more",onClick:t[1]||(t[1]=M(()=>{},["stop"]))},[c(a,{icon:"fa-solid fa-ellipsis"})])]),_:2},1032,["onCommand"])])],10,Kt))),128))]))),128))])),c(q,{modelValue:e.renameDialogVisible,"onUpdate:modelValue":t[6]||(t[6]=C=>e.renameDialogVisible=C),width:"420px",title:"重命名","close-on-click-modal":!1},{footer:m(()=>[c(p,{onClick:t[5]||(t[5]=C=>e.renameDialogVisible=!1)},{default:m(()=>[D(_(e.$t("common.button.cancel")),1)]),_:1}),c(p,{type:"primary",loading:e.renameSubmitting,onClick:e.onConfirmRename},{default:m(()=>[D(_(e.$t("common.button.confirm")),1)]),_:1},8,["loading","onClick"])]),default:m(()=>[c(v,{modelValue:e.renameDraft,"onUpdate:modelValue":t[4]||(t[4]=C=>e.renameDraft=C),autofocus:"",onKeydown:W(e.onConfirmRename,["enter"])},null,8,["modelValue","onKeydown"])]),_:1},8,["modelValue"]),c(q,{modelValue:e.deleteDialogVisible,"onUpdate:modelValue":t[8]||(t[8]=C=>e.deleteDialogVisible=C),width:"420px",title:e.$t("chat.message.confirmDelete"),"close-on-click-modal":!1},{footer:m(()=>[c(p,{onClick:t[7]||(t[7]=C=>e.deleteDialogVisible=!1)},{default:m(()=>[D(_(e.$t("common.button.cancel")),1)]),_:1}),c(p,{type:"danger",loading:e.deleteSubmitting,onClick:e.onConfirmDelete},{default:m(()=>[D(_(e.$t("common.button.delete")),1)]),_:1},8,["loading","onClick"])]),default:m(()=>[t[10]||(t[10]=g("div",{class:"delete-tip"},"确认删除该会话?删除后不可恢复。",-1))]),_:1,__:[10]},8,["modelValue","title"])])}const Xt=S(Pt,[["render",Qt],["__scopeId","data-v-9439b6cb"]]),Zt=E({name:"LayoutChat",components:{SidePanel:Xt,ElDrawer:Ve,ElButton:B,FontAwesomeIcon:A},emits:["change-conversation"],data(){return{drawer:!1}},methods:{onChangeConversation(e){console.debug("onChangeConversation in layout",e),this.$emit("change-conversation",e)}}}),xt={class:"main"},es={class:"side"},ts={class:"chat"};function ss(e,t,o,d,r,i){const n=l("side-panel"),a=l("font-awesome-icon"),b=l("el-button"),w=l("el-drawer");return s(),u("div",xt,[g("div",es,[Y(e.$slots,"side",{},()=>[c(n,{onChangeConversation:e.onChangeConversation},null,8,["onChangeConversation"])],!0)]),g("div",ts,[Y(e.$slots,"chat",{},void 0,!0)]),c(b,{circle:"",class:"menu",onClick:t[0]||(t[0]=h=>e.drawer=!0)},{default:m(()=>[c(a,{icon:"fa-solid fa-bars"})]),_:1}),c(w,{modelValue:e.drawer,"onUpdate:modelValue":t[1]||(t[1]=h=>e.drawer=h),direction:"ltr","with-header":!1,size:"290px"},{default:m(()=>[c(n,{onChangeConversation:e.onChangeConversation},null,8,["onChangeConversation"])]),_:1},8,["modelValue"])])}const os=S(Zt,[["render",ss],["__scopeId","data-v-8a46f4f9"]]),ns=E({name:"ChatConversation",components:{Composer:kt,Disclaimer:Ft,ModelSelector:Vt,Message:vt,Layout:os},data(){return{drawer:!1,question:"",references:[],upload:!1,answering:!1,canceler:void 0,messages:this.$store.state.chat.conversations?.find(e=>e.id===this.$route.params.id?.toString())?.messages||[]}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},model(){return this.$store.state.chat.model},conversationId(){return this.$route.params.id?.toString()},conversation(){return this.$store.state.chat.conversations?.find(e=>e.id===this.conversationId)},service(){return this.$store.state.chat.service},application(){return this.$store.state.chat.application},applications(){return this.$store.state.chat.applications},credential(){return this.$store.state.chat?.credential},needApply(){return this.$store.state.chat.status.getApplications===z.Success&&!this.application},conversations(){return this.$store.state.chat.conversations},initializing(){return this.$store.state.chat.status.getApplications===z.Request}},watch:{async references(e){console.log("references changed",e)},async modelGroup(e){console.debug("modelGroup changed",e)},async conversationId(e){console.debug("conversationId changed",e)}},async mounted(){await this.onGetService(),await this.onGetApplication(),await this.onGetConversations()},methods:{async onGetService(){console.debug("start onGetService"),await this.$store.dispatch("chat/getService"),console.debug("end onGetService")},async onGetApplication(){console.debug("start onGetApplication"),await this.$store.dispatch("chat/getApplications"),console.debug("end onGetApplication")},async onGetConversations(){console.debug("start onGetConversations"),await this.$store.dispatch("chat/getConversations"),console.debug("end onGetConversations")},async onDraft(e){this.question=e,this.onSubmit()},async onStop(){this.canceler&&(this.canceler.abort(),this.answering=!1)},async onRestart(e){const t=this.messages.findIndex(a=>a===e),o=this.messages[t-1];let d=[];if(t!==-1){if(d=this.messages.slice(0,t-1),this.messages=this.messages.slice(0,t),this.references=[],typeof o.content=="string")this.question=o.content;else if(Array.isArray(o.content))for(let a=0;a<o?.content.length;a++)o.content[a].type==="image_url"&&(typeof o?.content?.[a]?.image_url=="string"?this.references.push(o?.content?.[a]?.image_url):this.references.push(o?.content?.[a]?.image_url?.url)),o.content[a].type==="file_url"&&(typeof o?.content?.[a]?.file_url=="string"?this.references.push(o?.content?.[a]?.file_url):this.references.push(o?.content?.[a]?.file_url?.url)),o.content[a].type==="text"&&(this.question=o.content[a].text)}console.debug("onRestart!",this.question,JSON.stringify(this.references));const r=this.credential?.token,i=this.question.trim();if(!r||!i){console.error("no token or endpoint or question"),this.messages.push({error:{code:P},role:O,state:R.FAILED});return}let n=this.conversationId;T.updateConversation({id:this.conversationId,messages:d},{token:r}).then(async()=>{await this.$store.dispatch("chat/setConversation",{id:n,messages:this.messages}),console.debug("finished update conversation",this.messages),console.debug("onRestart",this.question),await this.onRequest()}).catch(a=>{this.handleRequestError(a)})},async onEdit(e,t){const o=this.messages.findIndex(i=>i===e);o!==-1&&(this.messages=this.messages.slice(0,o)),this.question=t;const d=this.credential?.token;if(!d){console.error("no token or endpoint or question"),this.messages.push({error:{code:P},role:O,state:R.FAILED});return}let r=this.conversationId;T.updateConversation({id:this.conversationId,messages:this.messages},{token:d}).then(async()=>{await this.$store.dispatch("chat/setConversation",{id:r,messages:this.messages}),console.debug("finished update conversation",this.messages),this.messages.push({content:this.question,role:j}),console.debug("onEdit",this.question),await this.onRequest()}).catch(i=>{this.handleRequestError(i)})},async onNewConversation(){this.$router.push({params:{id:""}}),this.messages=[],this.question="",this.references=[]},async onRestoreConversation(e){console.debug("onRestoreConversation id",e);const t=this.conversations?.find(i=>i.id===e),o=t?.model;console.debug("conversation model",o);const d=Se.find(i=>i.name===o);console.debug("target model",d);const r=Re.find(i=>i.name===d?.modelGroup);console.debug("target model group",r),this.$store.dispatch("chat/setModelGroup",r),this.$store.dispatch("chat/setModel",d),console.debug("conversation",t),console.debug("conversation messages",this.messages),this.messages=t?.messages||[],this.onScrollDown()},async onChangeConversation(e){console.log("onChangeConversation in conversation",e),await this.onStop(),e?this.onRestoreConversation(e):this.onNewConversation()},async onSubmit(){if(this.references.length>0){let e=[];e.push({type:"text",text:this.question.trim()});for(let t=0;t<this.references.length;t++)ne(this.references[t])?e.push({type:"image_url",image_url:this.references[t]}):e.push({type:"file_url",file_url:this.references[t]});this.messages.push({content:e,role:j})}else this.messages.push({content:this.question.trim(),role:j});console.debug("onSubmit",this.question,this.references),await this.onRequest()},async onRequest(){console.debug("start to get answer",this.messages);const e=this.credential?.token,t=this.question.trim(),o=this.references;if(console.debug("validated",t,o),this.question="",this.references=[],!e||!t){console.error("no token or endpoint or question"),this.messages.push({error:{code:P},role:O,state:R.FAILED});return}let d=this.conversationId;this.messages.push({content:"",role:O,state:R.PENDING}),console.debug("start to get answer",this.messages),this.onScrollDown(),this.answering=!0,this.canceler=new AbortController,T.chatConversation({question:t,model:this.model.name,references:o,id:this.conversationId,stateful:!0},{token:e,stream:r=>{console.debug("stream response",r);const i=this.messages[this.messages.length-1];this.messages[this.messages.length-1]={role:O,content:r.answer,state:i?.state!==R.FINISHED?R.ANSWERING:i?.state},d=r?.id},signal:this.canceler.signal}).then(async()=>{console.debug("finished fetch answer",this.messages),this.messages[this.messages.length-1].state=R.FINISHED,console.debug("finished fetch answer",JSON.stringify(this.messages)),await this.$store.dispatch("chat/setConversation",{id:d,messages:this.messages}),this.answering=!1,d&&await this.$router.push({params:{id:d}}),this.onScrollDown(),await this.$store.dispatch("chat/getConversations"),await this.$store.dispatch("chat/getApplications")}).catch(r=>{this.handleRequestError(r)})},async handleRequestError(e){if(console.error("error happened",e),this.messages&&this.messages.length>0&&(this.messages[this.messages.length-1].state=R.FAILED),e.name==="AbortError"){console.error("aborted");return}else e instanceof Ee?(console.debug("BaseError",e),this.messages[this.messages.length-1].error={code:e.code,message:e.detail}):ue.isCancel(e)?this.messages[this.messages.length-1].error={code:oe}:this.messages&&this.messages.length>0&&(this.messages[this.messages.length-1].error={code:se});this.answering=!1},async onScrollDown(){setTimeout(()=>{const e=document.querySelector(".messages");!e||!this.messages||this.messages.length===0||(e.scrollTop=e?.scrollHeight)},0)}}}),as={key:0,class:"messages"},is={class:"starter"};function rs(e,t,o,d,r,i){const n=l("model-selector"),a=l("message"),b=l("composer"),w=l("disclaimer"),h=l("layout");return s(),f(h,{onChangeConversation:t[4]||(t[4]=v=>e.onChangeConversation(v))},{chat:m(()=>[c(n,{class:"selector",onModelGroupChanged:t[0]||(t[0]=v=>e.onChangeConversation(void 0))}),g("div",{class:I({dialogue:!0,empty:e.messages.length===0})},[e.messages.length>0?(s(),u("div",as,[(s(!0),u(L,null,N(e.messages,(v,p)=>(s(),f(a,{key:p,message:v,messages:e.messages,question:e.question,application:e.application,class:"message","onUpdate:question":t[1]||(t[1]=q=>e.question=q),onEdit:e.onEdit,onRestart:e.onRestart},null,8,["message","messages","question","application","onEdit","onRestart"]))),128))])):y("",!0),g("div",is,[c(b,{question:e.question,"onUpdate:question":t[2]||(t[2]=v=>e.question=v),answering:e.answering,references:e.references,"onUpdate:references":t[3]||(t[3]=v=>e.references=v),onSubmit:e.onSubmit,onStop:e.onStop},null,8,["question","answering","references","onSubmit","onStop"]),c(w,{class:"disclaimer"})])],2)]),_:1})}const $s=S(ns,[["render",rs],["__scopeId","data-v-c210d08b"]]);export{$s as default};
2
+ import{a as ue}from"./vendor-axios-NIGUFBhG.js";import{d as E,c as u,o as s,b as me,h as pe,U as V,R as f,am as l,at as te,S as m,l as c,a as g,W as y,Z as _,F as L,ak as N,aj as W,a1 as M,Y as D,V as I,_ as he,au as ge,a2 as fe,P as Y}from"./vendor-vue-BzRnDgD5.js";import{ai as J,_ as S,ac as _e,aj as O,ak as Q,al as se,am as oe,an as P,ao as ve,ap as ye,aq as $e,ar as be,as as Ce,at as we,au as R,av as ne,a5 as ke,aw as H,ax as X,ay as Z,az as x,aA as ee,aB as T,ah as z,aC as Ee,aD as j,aE as Se,aF as Re}from"./index-BwtxyV6k.js";import{a5 as De,bR as ae,bU as qe,bV as Ie,bH as A}from"./vendor-B4-12K57.js";import"./vendor-katex-DHBGsivc.js";import"./vendor-highlight-BX2iaugd.js";import{C as Ge}from"./CopyToClipboard-D0yPTPYW.js";import{o as K,q as ie,i as Ae,k as B,r as Oe,s as k,f as re,g as le,h as de,H as Me,E as Te,O as Ve}from"./vendor-element-plus-C2t7-rNg.js";import{F as ce}from"./FilePreview-FTIIxIUg.js";import{I as Le}from"./ImagePreview-Dun0qhAC.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-dayjs-D6Igi227.js";const Ne=async e=>{const t=(await De(async()=>{const{default:d}=await import("./vendor-highlight-BX2iaugd.js");return{default:d}},__vite__mapDeps([0,1,2,3,4,5,6,7]))).default;e.querySelectorAll("pre code").forEach(d=>{const r=d.parentElement;if(!r)return;if(r.dataset.hasCopy==="1"){"highlightElement"in t?t.highlightElement(d):t.highlightBlock(d);return}const i=document.createElement("div");i.className="relative",r.parentNode.insertBefore(i,r),i.appendChild(r),r.classList.add("overflow-auto");const n=document.createElement("button");n.type="button",n.dataset.copyBtn="1",n.className="absolute top-1 right-1 z-10 rounded-md px-2 py-1 text-xs bg-zinc-800 text-white hover:bg-zinc-700 active:scale-95",n.textContent=J.global.t("common.button.copy").toString(),n.addEventListener("click",()=>{ae(d.innerText);const a=n.textContent;n.textContent=J.global.t("common.button.copied")?.toString(),setTimeout(()=>n.textContent=a,5e3)}),i.appendChild(n),r.dataset.hasCopy="1","highlightElement"in t?t.highlightElement(d):t.highlightBlock(d)})},Ue=E({name:"AnsweringMark",data(){return{}},computed:{conversationId(){return this.$route.params?.id?.toString()}}}),Fe={class:"mark"};function Pe(e,t,o,d,r,i){return s(),u("div",Fe)}const Be=S(Ue,[["render",Pe]]),He=E({name:"VueMarkdown",props:{source:{type:String,required:!0},options:{type:Object,default:()=>({}),required:!1}},setup(e,{attrs:t}){const o=new qe({...e.options,html:!0}).use(Ie,{delimiters:"all",throwOnError:!1,errorColor:"#cc0000",mathFence:!0}),d=me(()=>{const r=e.source;return o?.render(r).replace(/<think>/g,'<div class="think">').replace(/<\/think>/g,"</div>")});return()=>pe("div",{...t,innerHTML:d.value})}}),je=E({name:"MarkdownRenderer",directives:{highlight:Ne},components:{VueMarkdown:He},props:{content:{type:String,required:!1,default:""}}});function ze(e,t,o,d,r,i){const n=l("vue-markdown"),a=te("highlight");return V((s(),f(n,{source:e.content,class:"markdown-body bg-transparent pt-[3px] text-[inherit]"},null,8,["source"])),[[a]])}const We=S(je,[["render",ze],["__scopeId","data-v-de1f7a52"]]),Ke=E({name:"CopyToClipboard",components:{FontAwesomeIcon:A,ElTooltip:K},props:{messages:{type:Array,required:!1,default:()=>[]}},emits:["restart"],data(){return{copied:!1}},methods:{onRestart(){this.$emit("restart")}}});function Ye(e,t,o,d,r,i){const n=l("font-awesome-icon"),a=l("el-tooltip");return s(),f(a,{effect:"dark",content:e.$t("common.button.restart"),placement:"bottom"},{default:m(()=>[c(n,{icon:"fa-solid fa-sync",class:"icon-sync",onClick:e.onRestart},null,8,["onClick"])]),_:1},8,["content"])}const Je=S(Ke,[["render",Ye],["__scopeId","data-v-90e169cb"]]),Qe=E({name:"EditMessage",components:{FontAwesomeIcon:A,ElTooltip:K},props:{messages:{type:Array,required:!1,default:()=>[]}},emits:["click"],data(){return{copied:!1}},methods:{onEdit(){this.$emit("click")}}});function Xe(e,t,o,d,r,i){const n=l("font-awesome-icon"),a=l("el-tooltip");return s(),u("span",null,[c(a,{effect:"dark",content:e.$t("common.button.restart"),placement:"bottom"},{default:m(()=>[c(n,{icon:"fa-solid fa-edit",class:"icon icon-edit",onClick:e.onEdit},null,8,["onClick"])]),_:1},8,["content"])])}const Ze=S(Qe,[["render",Xe],["__scopeId","data-v-8e947e8f"]]),xe=E({name:"Message",components:{EditMessage:Ze,CopyToClipboard:Ge,RestartToGenerate:Je,AnsweringMark:Be,MarkdownRenderer:We,FilePreview:ce,ElButton:B,ElImage:Ae,ElInput:ie,FontAwesomeIcon:A},props:{messages:{type:Array,required:!1,default:()=>[]},message:{type:Object,required:!0},application:{type:Object,required:!0}},emits:["stop","edit","restart"],data(){return{copied:!1,isEditing:!1,questionValue:this.message.content,messageState:R}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},errorText(){if(console.debug("error",this.message.error),!(!this.message.error||!this.message.error?.code)){if(this.message.error?.message)return this.message.error.message;switch(this.message.error?.code){case Q:return this.$t("chat.message.errorUsedUp");case we:return this.$t("chat.message.errorApiError");case Ce:return this.$t("chat.message.errorBadRequest");case be:return this.$t("chat.message.errorTimeout");case $e:return this.$t("chat.message.errorBusy");case ye:return this.$t("chat.message.errorContentTooLarge");case ve:return this.$t("chat.message.errorTooManyRequests");case P:return this.$t("chat.message.errorNotApplied");case oe:return;case se:default:return this.$t("chat.message.errorUnknown")}}},showBuyMore(){return this.message.role===O&&this.message.error?.code===Q}},watch:{},methods:{startEditing(){this.isEditing=!0,this.questionValue=this.message.content,console.debug("start to get answer",this.message)},cancelEdit(){this.isEditing=!1},onRestart(){this.$emit("restart",this.message)},onEdit(){this.isEditing=!1,this.onSubmit()},onSubmit(){this.$emit("edit",this.message,this.questionValue)},onCopy(){ae(this.message.content.toString(),{debug:!0}),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)},onBuyMore(){this.$router.push({name:_e,params:{id:this.application?.id}})}}}),et=["role"],tt={class:"author"},st={key:0,class:"main"},ot={initial:{opacity:0,y:5},enter:{opacity:1,y:0,scale:1},delay:300,duration:400,layout:!0,transition:{enter:{delay:.3,duration:.5},layout:{duration:.4,easing:"ease-in-out"}},class:"content"},nt={key:0,class:"message-content"},at={key:0},it={key:1,class:"whitespace-pre-wrap break-words w-fit max-w-full py-1"},rt={key:1},lt=["src"],dt={key:2},ct={key:1,class:"whitespace-pre-wrap break-words w-fit max-w-full py-1"},ut={key:1,class:"edits"},mt={class:"flex justify-end"},pt={initial:{opacity:0,y:5},enter:{opacity:1,y:0,scale:1},delay:300,duration:400,layout:!0,transition:{enter:{delay:.3,duration:.5},layout:{duration:.4,easing:"ease-in-out"}},class:"operations"},ht={key:1,class:"error-card"},gt={class:"error-content"},ft={class:"error-text"};function _t(e,t,o,d,r,i){const n=l("el-image"),a=l("markdown-renderer"),b=l("file-preview"),w=l("el-input"),h=l("el-button"),v=l("answering-mark"),p=l("edit-message"),q=l("copy-to-clipboard"),C=l("restart-to-generate"),U=l("font-awesome-icon"),G=te("motion");return s(),u("div",{class:I({message:!0,[e.message.role]:!0}),role:e.message.role},[g("div",tt,[e.message.role==="assistant"?(s(),f(n,{key:0,src:e.modelGroup?.icon,fit:"cover",class:"avatar"},null,8,["src"])):y("",!0)]),e.errorText?(s(),u("div",ht,[g("div",gt,[c(U,{icon:"fa-solid fa-circle-exclamation",class:"error-icon"}),g("span",ft,_(e.errorText),1)]),e.showBuyMore?(s(),f(h,{key:0,round:"",type:"primary",class:"btn-topup",size:"small",onClick:e.onBuyMore},{default:m(()=>[D(_(e.$t("common.button.buyMore")),1)]),_:1},8,["onClick"])):y("",!0)])):(s(),u("div",st,[V((s(),u("div",ot,[e.isEditing?(s(),u("div",ut,[c(w,{modelValue:e.questionValue,"onUpdate:modelValue":t[0]||(t[0]=$=>e.questionValue=$),type:"textarea",class:"mb-2",onKeydown:W(M(e.onEdit,["exact","prevent"]),["enter"])},null,8,["modelValue","onKeydown"]),g("div",mt,[c(h,{round:"",onClick:e.cancelEdit},{default:m(()=>[D(_(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),c(h,{type:"primary",class:"btn-confirm",round:"",onClick:e.onEdit},{default:m(()=>[D(_(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])])):(s(),u("div",nt,[Array.isArray(e.message.content)?(s(),u("div",rt,[(s(!0),u(L,null,N(e.message.content,($,F)=>(s(),u("div",{key:F},[$.type==="image_url"?(s(),u("img",{key:0,src:typeof $?.image_url=="string"?$.image_url:$.image_url?.url,fit:"cover",class:"image"},null,8,lt)):y("",!0),$.file_url?(s(),f(b,{key:1,name:typeof $?.file_url=="string"?$.file_url:$.file_url?.url,percentage:0,closable:!1,class:"mt-2"},null,8,["name"])):y("",!0),$.type==="text"?(s(),u("div",dt,[e.message.role==="assistant"?(s(),f(a,{key:0,content:$.text},null,8,["content"])):(s(),u("pre",ct,_($.text?.trim()),1))])):y("",!0)]))),128))])):(s(),u("div",at,[e.message.role==="assistant"?(s(),f(a,{key:0,content:e.message?.content},null,8,["content"])):(s(),u("pre",it,_(e.message.content),1))]))])),e.message.state===e.messageState.PENDING?(s(),f(v,{key:2})):y("",!0)])),[[G]]),V((s(),u("div",pt,[e.message.role==="user"&&!e.isEditing&&!Array.isArray(e.message.content)?(s(),f(p,{key:0,class:"btn-edit",onClick:e.startEditing},null,8,["onClick"])):y("",!0),!Array.isArray(e.message.content)&&(e.message.state===e.messageState.FINISHED||e.message.state===e.messageState.FAILED)?(s(),f(q,{key:1,content:e.message.content,class:"btn-copy"},null,8,["content"])):y("",!0),!Array.isArray(e.message.content)&&(e.message.state===e.messageState.FINISHED||e.message.state===e.messageState.FAILED)&&e.message.role==="assistant"&&e.message===e.messages[e.messages.length-1]?(s(),f(C,{key:2,class:"btn-restart",messages:e.messages,onRestart:e.onRestart},null,8,["messages","onRestart"])):y("",!0)])),[[G]])]))],10,et)}const vt=S(xe,[["render",_t],["__scopeId","data-v-8e83775c"]]),yt=E({name:"Composer",components:{FilePreview:ce,ImagePreview:Le,ElTooltip:K,FontAwesomeIcon:A,ElUpload:Oe,ElButton:B},props:{answering:{type:Boolean,required:!1,default:!1},references:{type:Array,required:!1,default:()=>[]},question:{type:String,required:!0}},emits:["update:question","update:references","submit","stop"],data(){return{inputHeight:"35px",questionValue:this.question||"",fileList:[],uploadUrl:ke()+"/api/v1/files/"}},computed:{model(){return this.$store.state.chat.model},modelGroup(){return this.$store.state.chat.modelGroup},isFileSupported(){return this.model?.isFileSupported},isImageSupported(){return this.model?.isImageSupported},headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)},uploading(){return!!this.fileList.find(e=>e.percentage!==void 0&&e.percentage>=0&&e.percentage<100)},extensions(){if(this.isFileSupported===!1&&this.isImageSupported===!0)return".png,.jpg,.jpeg,.gif,.bmp,.webp,.svg,.tiff,.ico,.heic"}},watch:{urls(e){console.debug("File URLs:",e),e.length>0&&this.$emit("update:references",e)},questionValue(e){this.$emit("update:question",e.trim())},question(e){e!==this.questionValue&&(this.questionValue=e)},references(e){console.debug("References updated:",e),e.length===0&&(this.fileList=[])},isFileSupported(e,t){t&&!e&&(this.fileList=[])}},methods:{isImageUrl:ne,adjustTextareaHeight(){this.$nextTick(()=>{const e=this.$refs.textarea;e&&(e.style.height="35px",e.style.height=e.scrollHeight+"px")})},onSubmit(){!this.question||this.uploading||this.$emit("submit")},onStop(){this.$emit("stop")},onProgress(e,t){console.debug("File upload progress:",t.name,e.loaded,e.total,t.percentage)},onExceed(){k.warning(this.$t("chat.message.uploadReferencesExceed"))},onError(){k.error(this.$t("chat.message.uploadReferencesError"))}}}),$t={class:"composer"},bt={class:"tools"},Ct=["disabled","placeholder"];function wt(e,t,o,d,r,i){const n=l("image-preview"),a=l("file-preview"),b=l("font-awesome-icon"),w=l("el-tooltip"),h=l("el-upload"),v=l("el-button");return s(),u("div",$t,[g("div",bt,[c(h,{"file-list":e.fileList,"onUpdate:fileList":t[0]||(t[0]=p=>e.fileList=p),class:I({upload:!0,disabled:!e.isFileSupported&&!e.isImageSupported||e.answering}),accept:e.extensions,disabled:!e.isFileSupported&&!e.isImageSupported||e.answering,name:"file",limit:10,multiple:!0,action:e.uploadUrl,"list-type":"picture","on-exceed":e.onExceed,"on-error":e.onError,"on-progress":e.onProgress,headers:e.headers},{file:m(({file:p})=>[e.isImageUrl(p.name)?(s(),f(n,{key:0,url:p.url||p.response?.file_url,name:p.name,percentage:p.percentage,onRemove:q=>e.fileList.splice(e.fileList.indexOf(p),1)},null,8,["url","name","percentage","onRemove"])):(s(),f(a,{key:1,name:p.name,percentage:p.percentage,onRemove:q=>e.fileList.splice(e.fileList.indexOf(p),1)},null,8,["name","percentage","onRemove"]))]),default:m(()=>[c(w,{class:"box-item",effect:"dark",content:e.$t("chat.message.uploadFile"),placement:"bottom"},{default:m(()=>[g("span",{class:I({btn:!0,"btn-upload":!0,disabled:!e.isFileSupported&&!e.isImageSupported||e.answering})},[c(b,{icon:"fa-solid fa-plus",class:"icon icon-attachment"})],2)]),_:1},8,["content"])]),_:1},8,["file-list","class","accept","disabled","action","on-exceed","on-error","on-progress","headers"])]),c(v,{disabled:e.answering||!e.questionValue||e.uploading,type:"primary",class:I({btn:!0,"btn-send":!0}),onClick:e.onSubmit},{default:m(()=>[c(b,{icon:"fa-solid fa-arrow-up",class:"icon icon-send"})]),_:1},8,["disabled","onClick"]),V(c(v,{disabled:!e.answering,type:"primary",class:I({btn:!0,"btn-stop":!0}),onClick:e.onStop},{default:m(()=>[c(b,{icon:"fa-solid fa-stop",class:"icon icon-stop"})]),_:1},8,["disabled","onClick"]),[[he,e.answering]]),V(g("textarea",{ref:"textarea","onUpdate:modelValue":t[1]||(t[1]=p=>e.questionValue=p),disabled:e.answering,class:"input",placeholder:e.$t("chat.message.newMessagePlaceholder"),style:fe({height:e.inputHeight}),onKeydown:t[2]||(t[2]=W(M((...p)=>e.onSubmit&&e.onSubmit(...p),["exact","prevent"]),["enter"])),onInput:t[3]||(t[3]=(...p)=>e.adjustTextareaHeight&&e.adjustTextareaHeight(...p))},null,44,Ct),[[ge,e.questionValue]])])}const kt=S(yt,[["render",wt],["__scopeId","data-v-2d5d451e"]]),Et=E({name:"ModelSelector",components:{ElDropdown:de,ElDropdownMenu:le,ElDropdownItem:re,FontAwesomeIcon:A},emits:["update:modelValue","select","model-group-changed","model-changed"],data(){return{options:[H,X,Z,x,ee]}},computed:{model(){return console.log("model",this.$store.state.chat.model),this.$store.state.chat.model},modelGroup(){return this.$route.meta?.modelGroup||H}},watch:{modelGroup(e){console.debug("modelGroup from route changed",e),this.$store.dispatch("chat/setModelGroup",e),this.$store.dispatch("chat/setModel",e.models[0])}},mounted(){console.debug("ModelSelector mounted, checking model group");const t=[H,X,Z,x,ee].find(o=>o.name===this.modelGroup.name);console.debug("Found model group:",t),t&&(this.$store.dispatch("chat/setModelGroup",t),this.$store.dispatch("chat/setModel",t.models[0]))},methods:{onModelGroupChange(e){this.$store.dispatch("chat/setModelGroup",e),this.$emit("model-group-changed",e)},onModelChange(e){this.$store.dispatch("chat/setModel",e),this.$emit("model-changed",e)}}}),St={class:"selector"},Rt={class:"trigger"},Dt=["src"],qt={class:"trigger-name"},It={class:"item"},Gt=["src"],At={class:"item-info"},Ot={key:0,class:"item-name"},Mt={key:1,class:"item-desc"};function Tt(e,t,o,d,r,i){const n=l("font-awesome-icon"),a=l("el-dropdown-item"),b=l("el-dropdown-menu"),w=l("el-dropdown");return s(),u("div",St,[c(w,{trigger:"click","popper-class":"model-selector-popper"},{dropdown:m(()=>[e.modelGroup&&e.modelGroup?.models?(s(),f(b,{key:0},{default:m(()=>[(s(!0),u(L,null,N(e.modelGroup?.models?.filter(h=>h.enabled),(h,v)=>(s(),f(a,{key:v,class:I({active:e.model?.name===h?.name}),onClick:p=>e.onModelChange(h)},{default:m(()=>[g("div",It,[h?.icon?(s(),u("img",{key:0,src:h.icon,class:"item-icon"},null,8,Gt)):y("",!0),g("div",At,[h?.getDisplayName?(s(),u("p",Ot,_(h?.getDisplayName()),1)):y("",!0),h?.getDescription?(s(),u("p",Mt,_(h?.getDescription()),1)):y("",!0)]),e.model?.name===h?.name?(s(),f(n,{key:1,icon:"fa-solid fa-check",class:"item-check"})):y("",!0)])]),_:2},1032,["class","onClick"]))),128))]),_:1})):y("",!0)]),default:m(()=>[g("div",Rt,[e.model?.icon?(s(),u("img",{key:0,src:e.model.icon,class:"trigger-icon"},null,8,Dt)):y("",!0),g("span",qt,_(e.model?.getDisplayName()),1),c(n,{icon:"fa-solid fa-chevron-down",class:"trigger-arrow"})])]),_:1})])}const Vt=S(Et,[["render",Tt],["__scopeId","data-v-ef076115"]]),Lt={},Nt={class:"disclaimer"};function Ut(e,t){return s(),u("p",Nt,_(e.$t("chat.message.howToUse")),1)}const Ft=S(Lt,[["render",Ut],["__scopeId","data-v-d2d980ab"]]),Pt=E({name:"SidePanel",components:{ElInput:ie,ElButton:B,ElDialog:Te,ElDropdown:de,ElDropdownItem:re,ElDropdownMenu:le,FontAwesomeIcon:A,ElSkeleton:Me},props:{},emits:["change-conversation"],data(){return{renameDialogVisible:!1,deleteDialogVisible:!1,actingConversation:void 0,renameDraft:"",renameSubmitting:!1,deleteSubmitting:!1}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},conversationId(){return console.debug("conversationId in side",this.$route.params?.id),this.$route.params?.id?.toString()},conversations(){let e=this.$store.state.chat.conversations;return console.debug("conversations",e),console.debug("modelGroup",this.modelGroup),e=e?.filter(t=>t?.model&&this.modelGroup?.models?.map(o=>o.name)?.includes(t?.model)),console.debug("filtered conversations",e),e},conversationGroups(){const e=new Date;e.setHours(0,0,0,0);const t=new Date(e);t.setDate(t.getDate()-1);const o=new Date(e);o.setDate(o.getDate()-e.getDay());const d=new Date(o);d.setDate(d.getDate()-7);const r=this.conversations?.reduce((i,n)=>{const a=new Date(n.updated_at*1e3);return a>=e?i.today.push(n):a>=t?i.yesterday.push(n):a>=o?i.thisWeek.push(n):i.earlier.push(n),i},{today:[],yesterday:[],thisWeek:[],earlier:[]});return{...r?.today?.length>0?{today:r?.today?.sort((i,n)=>n.updated_at-i.updated_at)}:{},...r?.yesterday?.length>0?{yesterday:r?.yesterday?.sort((i,n)=>n.updated_at-i.updated_at)}:{},...r?.thisWeek?.length>0?{thisWeek:r?.thisWeek?.sort((i,n)=>n.updated_at-i.updated_at)}:{},...r?.earlier?.length>0?{earlier:r?.earlier?.sort((i,n)=>n.updated_at-i.updated_at)}:{}}},application(){return this.$store.state.chat.application},loading(){return this.$store.state.chat.status.getConversations===z.Request},token(){return this.$store.state.chat?.credential?.token}},watch:{modelGroup(){console.debug("modelGroup changed, refreshing conversations");const e=this.conversations?.[0];this.$emit("change-conversation",e?.id)}},methods:{async onNewConversation(){console.debug("onNewConversation from side panel"),this.$emit("change-conversation",void 0)},onClickConversation(e){console.debug("onClickConversation in side panel",e),this.$emit("change-conversation",e)},getConversationTitle(e){return e?.title||e?.messages?.[e?.messages.length-1]?.content||e?.messages?.[0]?.content||""},onConversationCommand(e,t){e==="rename"?this.openRenameDialog(t):e==="delete"&&this.openDeleteDialog(t)},openRenameDialog(e){this.actingConversation=e,this.renameDraft=(e?.title||"").trim(),this.renameDialogVisible=!0},openDeleteDialog(e){this.actingConversation=e,this.deleteDialogVisible=!0},async onConfirmRename(){const e=this.token,t=this.actingConversation?.id,o=(this.renameDraft||"").trim();if(!e){k.error("Token 不存在,请重新登录");return}if(!t){k.error("会话不存在");return}if(!o){k.warning("请输入名称");return}this.renameSubmitting=!0;try{await T.updateConversation({id:t,title:o},{token:e}),await this.$store.dispatch("chat/getConversations"),this.renameDialogVisible=!1,k.success("已重命名")}catch(d){console.error(d),k.error("重命名失败,请稍后重试")}finally{this.renameSubmitting=!1}},async onConfirmDelete(){const e=this.token,t=this.actingConversation?.id;if(!e){k.error("Token 不存在,请重新登录");return}if(!t){k.error("会话不存在");return}this.deleteSubmitting=!0;try{await T.deleteConversation(t,{token:e}),await this.$store.dispatch("chat/getConversations"),t===this.conversationId&&this.$emit("change-conversation",void 0),this.deleteDialogVisible=!1,k.success("已删除")}catch(o){console.error(o),k.error("删除失败,请稍后重试")}finally{this.deleteSubmitting=!1}}}}),Bt={class:"panel"},Ht={key:1,class:"conversations"},jt={class:"icons"},zt={class:"title"},Wt={class:"key"},Kt=["onClick"],Yt={class:"title"},Jt={class:"operations"};function Qt(e,t,o,d,r,i){const n=l("el-skeleton"),a=l("font-awesome-icon"),b=l("el-dropdown-item"),w=l("el-dropdown-menu"),h=l("el-dropdown"),v=l("el-input"),p=l("el-button"),q=l("el-dialog");return s(),u("div",Bt,[e.loading&&e.conversationGroups===void 0?(s(),f(n,{key:0})):(s(),u("div",Ht,[g("div",{class:"conversation",onClick:t[0]||(t[0]=(...C)=>e.onNewConversation&&e.onNewConversation(...C))},[g("div",jt,[c(a,{icon:"fa-solid fa-plus",class:"icon"})]),g("div",zt,_(e.$t("chat.message.startNewChat")),1)]),(s(!0),u(L,null,N(e.conversationGroups,(C,U)=>(s(),u("div",{key:U,class:"group"},[g("div",Wt,_(e.$t(`chat.group.${U}`)),1),(s(!0),u(L,null,N(C,(G,$)=>(s(),u("div",{key:$,class:I({conversation:!0,active:G.id===e.conversationId}),onClick:F=>e.onClickConversation(G.id)},[g("div",Yt,_(e.getConversationTitle(G)),1),g("div",Jt,[c(h,{trigger:"click",placement:"bottom-end",teleported:!0,onCommand:F=>e.onConversationCommand(F,G)},{dropdown:m(()=>[c(w,null,{default:m(()=>[c(b,{command:"rename",onClick:t[2]||(t[2]=M(()=>{},["stop"]))},{default:m(()=>[c(a,{icon:"fa-solid fa-pen-to-square",class:"mr-2"}),t[9]||(t[9]=D(" 重命名 ",-1))]),_:1,__:[9]}),c(b,{command:"delete",onClick:t[3]||(t[3]=M(()=>{},["stop"]))},{default:m(()=>[c(a,{icon:"fa-solid fa-trash",class:"mr-2"}),D(" "+_(e.$t("common.button.delete")),1)]),_:1})]),_:1})]),default:m(()=>[g("span",{class:"more",onClick:t[1]||(t[1]=M(()=>{},["stop"]))},[c(a,{icon:"fa-solid fa-ellipsis"})])]),_:2},1032,["onCommand"])])],10,Kt))),128))]))),128))])),c(q,{modelValue:e.renameDialogVisible,"onUpdate:modelValue":t[6]||(t[6]=C=>e.renameDialogVisible=C),width:"420px",title:"重命名","close-on-click-modal":!1},{footer:m(()=>[c(p,{onClick:t[5]||(t[5]=C=>e.renameDialogVisible=!1)},{default:m(()=>[D(_(e.$t("common.button.cancel")),1)]),_:1}),c(p,{type:"primary",loading:e.renameSubmitting,onClick:e.onConfirmRename},{default:m(()=>[D(_(e.$t("common.button.confirm")),1)]),_:1},8,["loading","onClick"])]),default:m(()=>[c(v,{modelValue:e.renameDraft,"onUpdate:modelValue":t[4]||(t[4]=C=>e.renameDraft=C),autofocus:"",onKeydown:W(e.onConfirmRename,["enter"])},null,8,["modelValue","onKeydown"])]),_:1},8,["modelValue"]),c(q,{modelValue:e.deleteDialogVisible,"onUpdate:modelValue":t[8]||(t[8]=C=>e.deleteDialogVisible=C),width:"420px",title:e.$t("chat.message.confirmDelete"),"close-on-click-modal":!1},{footer:m(()=>[c(p,{onClick:t[7]||(t[7]=C=>e.deleteDialogVisible=!1)},{default:m(()=>[D(_(e.$t("common.button.cancel")),1)]),_:1}),c(p,{type:"danger",loading:e.deleteSubmitting,onClick:e.onConfirmDelete},{default:m(()=>[D(_(e.$t("common.button.delete")),1)]),_:1},8,["loading","onClick"])]),default:m(()=>[t[10]||(t[10]=g("div",{class:"delete-tip"},"确认删除该会话?删除后不可恢复。",-1))]),_:1,__:[10]},8,["modelValue","title"])])}const Xt=S(Pt,[["render",Qt],["__scopeId","data-v-9439b6cb"]]),Zt=E({name:"LayoutChat",components:{SidePanel:Xt,ElDrawer:Ve,ElButton:B,FontAwesomeIcon:A},emits:["change-conversation"],data(){return{drawer:!1}},methods:{onChangeConversation(e){console.debug("onChangeConversation in layout",e),this.$emit("change-conversation",e)}}}),xt={class:"main"},es={class:"side"},ts={class:"chat"};function ss(e,t,o,d,r,i){const n=l("side-panel"),a=l("font-awesome-icon"),b=l("el-button"),w=l("el-drawer");return s(),u("div",xt,[g("div",es,[Y(e.$slots,"side",{},()=>[c(n,{onChangeConversation:e.onChangeConversation},null,8,["onChangeConversation"])],!0)]),g("div",ts,[Y(e.$slots,"chat",{},void 0,!0)]),c(b,{circle:"",class:"menu",onClick:t[0]||(t[0]=h=>e.drawer=!0)},{default:m(()=>[c(a,{icon:"fa-solid fa-bars"})]),_:1}),c(w,{modelValue:e.drawer,"onUpdate:modelValue":t[1]||(t[1]=h=>e.drawer=h),direction:"ltr","with-header":!1,size:"290px"},{default:m(()=>[c(n,{onChangeConversation:e.onChangeConversation},null,8,["onChangeConversation"])]),_:1},8,["modelValue"])])}const os=S(Zt,[["render",ss],["__scopeId","data-v-8a46f4f9"]]),ns=E({name:"ChatConversation",components:{Composer:kt,Disclaimer:Ft,ModelSelector:Vt,Message:vt,Layout:os},data(){return{drawer:!1,question:"",references:[],upload:!1,answering:!1,canceler:void 0,messages:this.$store.state.chat.conversations?.find(e=>e.id===this.$route.params.id?.toString())?.messages||[]}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},model(){return this.$store.state.chat.model},conversationId(){return this.$route.params.id?.toString()},conversation(){return this.$store.state.chat.conversations?.find(e=>e.id===this.conversationId)},service(){return this.$store.state.chat.service},application(){return this.$store.state.chat.application},applications(){return this.$store.state.chat.applications},credential(){return this.$store.state.chat?.credential},needApply(){return this.$store.state.chat.status.getApplications===z.Success&&!this.application},conversations(){return this.$store.state.chat.conversations},initializing(){return this.$store.state.chat.status.getApplications===z.Request}},watch:{async references(e){console.log("references changed",e)},async modelGroup(e){console.debug("modelGroup changed",e)},async conversationId(e){console.debug("conversationId changed",e)}},async mounted(){await this.onGetService(),await this.onGetApplication(),await this.onGetConversations()},methods:{async onGetService(){console.debug("start onGetService"),await this.$store.dispatch("chat/getService"),console.debug("end onGetService")},async onGetApplication(){console.debug("start onGetApplication"),await this.$store.dispatch("chat/getApplications"),console.debug("end onGetApplication")},async onGetConversations(){console.debug("start onGetConversations"),await this.$store.dispatch("chat/getConversations"),console.debug("end onGetConversations")},async onDraft(e){this.question=e,this.onSubmit()},async onStop(){this.canceler&&(this.canceler.abort(),this.answering=!1)},async onRestart(e){const t=this.messages.findIndex(a=>a===e),o=this.messages[t-1];let d=[];if(t!==-1){if(d=this.messages.slice(0,t-1),this.messages=this.messages.slice(0,t),this.references=[],typeof o.content=="string")this.question=o.content;else if(Array.isArray(o.content))for(let a=0;a<o?.content.length;a++)o.content[a].type==="image_url"&&(typeof o?.content?.[a]?.image_url=="string"?this.references.push(o?.content?.[a]?.image_url):this.references.push(o?.content?.[a]?.image_url?.url)),o.content[a].type==="file_url"&&(typeof o?.content?.[a]?.file_url=="string"?this.references.push(o?.content?.[a]?.file_url):this.references.push(o?.content?.[a]?.file_url?.url)),o.content[a].type==="text"&&(this.question=o.content[a].text)}console.debug("onRestart!",this.question,JSON.stringify(this.references));const r=this.credential?.token,i=this.question.trim();if(!r||!i){console.error("no token or endpoint or question"),this.messages.push({error:{code:P},role:O,state:R.FAILED});return}let n=this.conversationId;T.updateConversation({id:this.conversationId,messages:d},{token:r}).then(async()=>{await this.$store.dispatch("chat/setConversation",{id:n,messages:this.messages}),console.debug("finished update conversation",this.messages),console.debug("onRestart",this.question),await this.onRequest()}).catch(a=>{this.handleRequestError(a)})},async onEdit(e,t){const o=this.messages.findIndex(i=>i===e);o!==-1&&(this.messages=this.messages.slice(0,o)),this.question=t;const d=this.credential?.token;if(!d){console.error("no token or endpoint or question"),this.messages.push({error:{code:P},role:O,state:R.FAILED});return}let r=this.conversationId;T.updateConversation({id:this.conversationId,messages:this.messages},{token:d}).then(async()=>{await this.$store.dispatch("chat/setConversation",{id:r,messages:this.messages}),console.debug("finished update conversation",this.messages),this.messages.push({content:this.question,role:j}),console.debug("onEdit",this.question),await this.onRequest()}).catch(i=>{this.handleRequestError(i)})},async onNewConversation(){this.$router.push({params:{id:""}}),this.messages=[],this.question="",this.references=[]},async onRestoreConversation(e){console.debug("onRestoreConversation id",e);const t=this.conversations?.find(i=>i.id===e),o=t?.model;console.debug("conversation model",o);const d=Se.find(i=>i.name===o);console.debug("target model",d);const r=Re.find(i=>i.name===d?.modelGroup);console.debug("target model group",r),this.$store.dispatch("chat/setModelGroup",r),this.$store.dispatch("chat/setModel",d),console.debug("conversation",t),console.debug("conversation messages",this.messages),this.messages=t?.messages||[],this.onScrollDown()},async onChangeConversation(e){console.log("onChangeConversation in conversation",e),await this.onStop(),e?this.onRestoreConversation(e):this.onNewConversation()},async onSubmit(){if(this.references.length>0){let e=[];e.push({type:"text",text:this.question.trim()});for(let t=0;t<this.references.length;t++)ne(this.references[t])?e.push({type:"image_url",image_url:this.references[t]}):e.push({type:"file_url",file_url:this.references[t]});this.messages.push({content:e,role:j})}else this.messages.push({content:this.question.trim(),role:j});console.debug("onSubmit",this.question,this.references),await this.onRequest()},async onRequest(){console.debug("start to get answer",this.messages);const e=this.credential?.token,t=this.question.trim(),o=this.references;if(console.debug("validated",t,o),this.question="",this.references=[],!e||!t){console.error("no token or endpoint or question"),this.messages.push({error:{code:P},role:O,state:R.FAILED});return}let d=this.conversationId;this.messages.push({content:"",role:O,state:R.PENDING}),console.debug("start to get answer",this.messages),this.onScrollDown(),this.answering=!0,this.canceler=new AbortController,T.chatConversation({question:t,model:this.model.name,references:o,id:this.conversationId,stateful:!0},{token:e,stream:r=>{console.debug("stream response",r);const i=this.messages[this.messages.length-1];this.messages[this.messages.length-1]={role:O,content:r.answer,state:i?.state!==R.FINISHED?R.ANSWERING:i?.state},d=r?.id},signal:this.canceler.signal}).then(async()=>{console.debug("finished fetch answer",this.messages),this.messages[this.messages.length-1].state=R.FINISHED,console.debug("finished fetch answer",JSON.stringify(this.messages)),await this.$store.dispatch("chat/setConversation",{id:d,messages:this.messages}),this.answering=!1,d&&await this.$router.push({params:{id:d}}),this.onScrollDown(),await this.$store.dispatch("chat/getConversations"),await this.$store.dispatch("chat/getApplications")}).catch(r=>{this.handleRequestError(r)})},async handleRequestError(e){if(console.error("error happened",e),this.messages&&this.messages.length>0&&(this.messages[this.messages.length-1].state=R.FAILED),e.name==="AbortError"){console.error("aborted");return}else e instanceof Ee?(console.debug("BaseError",e),this.messages[this.messages.length-1].error={code:e.code,message:e.detail}):ue.isCancel(e)?this.messages[this.messages.length-1].error={code:oe}:this.messages&&this.messages.length>0&&(this.messages[this.messages.length-1].error={code:se});this.answering=!1},async onScrollDown(){setTimeout(()=>{const e=document.querySelector(".messages");!e||!this.messages||this.messages.length===0||(e.scrollTop=e?.scrollHeight)},0)}}}),as={key:0,class:"messages"},is={class:"starter"};function rs(e,t,o,d,r,i){const n=l("model-selector"),a=l("message"),b=l("composer"),w=l("disclaimer"),h=l("layout");return s(),f(h,{onChangeConversation:t[4]||(t[4]=v=>e.onChangeConversation(v))},{chat:m(()=>[c(n,{class:"selector",onModelGroupChanged:t[0]||(t[0]=v=>e.onChangeConversation(void 0))}),g("div",{class:I({dialogue:!0,empty:e.messages.length===0})},[e.messages.length>0?(s(),u("div",as,[(s(!0),u(L,null,N(e.messages,(v,p)=>(s(),f(a,{key:p,message:v,messages:e.messages,question:e.question,application:e.application,class:"message","onUpdate:question":t[1]||(t[1]=q=>e.question=q),onEdit:e.onEdit,onRestart:e.onRestart},null,8,["message","messages","question","application","onEdit","onRestart"]))),128))])):y("",!0),g("div",is,[c(b,{question:e.question,"onUpdate:question":t[2]||(t[2]=v=>e.question=v),answering:e.answering,references:e.references,"onUpdate:references":t[3]||(t[3]=v=>e.references=v),onSubmit:e.onSubmit,onStop:e.onStop},null,8,["question","answering","references","onSubmit","onStop"]),c(w,{class:"disclaimer"})])],2)]),_:1})}const $s=S(ns,[["render",rs],["__scopeId","data-v-c210d08b"]]);export{$s as default};
@@ -1 +1 @@
1
- import{bH as p,bR as r}from"./vendor-B4-12K57.js";import{o as m}from"./vendor-element-plus-C2t7-rNg.js";import{d as l,R as n,S as c,l as s,a1 as d,am as a,o as i}from"./vendor-vue-BzRnDgD5.js";import{_ as f}from"./index-BceQaAb7.js";const u=l({name:"CopyToClipboard",components:{FontAwesomeIcon:p,ElTooltip:m},props:{content:{type:[String,Number],required:!1,default:""}},data(){return{copied:!1}},methods:{onCopy(){this.content&&(r(this.content.toString(),{debug:!0}),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3))}}});function _(o,b,C,y,h,k){const e=a("font-awesome-icon"),t=a("el-tooltip");return o.copied?(i(),n(t,{key:1,visible:o.copied,effect:"dark",content:o.$t("common.message.copied"),placement:"bottom"},{default:c(()=>[s(e,{icon:"fa-solid fa-check",class:"icon-check"})]),_:1},8,["visible","content"])):(i(),n(t,{key:0,effect:"dark",content:o.$t("common.button.copy"),placement:"bottom"},{default:c(()=>[s(e,{icon:"fa-regular fa-copy",class:"icon-copy",onClick:d(o.onCopy,["stop"])},null,8,["onClick"])]),_:1},8,["content"]))}const T=f(u,[["render",_],["__scopeId","data-v-cc8e806b"]]);export{T as C};
1
+ import{bH as p,bR as r}from"./vendor-B4-12K57.js";import{o as m}from"./vendor-element-plus-C2t7-rNg.js";import{d as l,R as n,S as c,l as s,a1 as d,am as a,o as i}from"./vendor-vue-BzRnDgD5.js";import{_ as f}from"./index-BwtxyV6k.js";const u=l({name:"CopyToClipboard",components:{FontAwesomeIcon:p,ElTooltip:m},props:{content:{type:[String,Number],required:!1,default:""}},data(){return{copied:!1}},methods:{onCopy(){this.content&&(r(this.content.toString(),{debug:!0}),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3))}}});function _(o,b,C,y,h,k){const e=a("font-awesome-icon"),t=a("el-tooltip");return o.copied?(i(),n(t,{key:1,visible:o.copied,effect:"dark",content:o.$t("common.message.copied"),placement:"bottom"},{default:c(()=>[s(e,{icon:"fa-solid fa-check",class:"icon-check"})]),_:1},8,["visible","content"])):(i(),n(t,{key:0,effect:"dark",content:o.$t("common.button.copy"),placement:"bottom"},{default:c(()=>[s(e,{icon:"fa-regular fa-copy",class:"icon-copy",onClick:d(o.onCopy,["stop"])},null,8,["onClick"])]),_:1},8,["content"]))}const T=f(u,[["render",_],["__scopeId","data-v-cc8e806b"]]);export{T as C};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-B4-12K57.js","assets/vendor-vue-BzRnDgD5.js","assets/vendor-dayjs-D6Igi227.js","assets/vendor-katex-DHBGsivc.js","assets/vendor-katex-CIur2ABi.css","assets/vendor-Cp-P0JlL.css"])))=>i.map(i=>d[i]);
2
- import{o as V}from"./order-C7LItaBN.js";import{_ as M,a6 as me}from"./index-BceQaAb7.js";import{O as N}from"./order-CB3uOPHS.js";import{ae as ye,a5 as Y,bT as fe}from"./vendor-B4-12K57.js";import{x as ee,y as te,E as x,A as ge,B as we,e as ve,a as se,C as ae,k as ie,s as E,D as be,F as ke,G as Pe,n as Se,H as We,t as $e}from"./vendor-element-plus-C2t7-rNg.js";import{d as X,R as g,S as n,l as u,am as f,a as o,W as y,Z as l,o as a,p as Ce,c as p,F as R,ak as T,Y as P,V as U}from"./vendor-vue-BzRnDgD5.js";import{g as Ae}from"./price-DtWUJRlS.js";import{C as _e}from"./CopyToClipboard-C_hpGFI6.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-katex-DHBGsivc.js";function Ee(){const e=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod|android|windows phone/i.test(e)}const Ne=X({name:"PayOrderDialog",components:{ElDialog:x,QrCode:ye,ElRow:te,ElCol:ee},props:{modelValue:{type:Object,required:!0},visible:{type:Boolean,required:!1,default:!1}},emits:["hide","update:modelValue"],data(){return{refreshTimer:void 0}},mounted(){this.onRefresh()},unmounted(){this.refreshTimer&&clearTimeout(this.refreshTimer)},methods:{onRefresh(){if(!this.modelValue.id){console.error("id does not exist");return}V.refresh(this.modelValue.id).then(({data:e})=>{e.state!==N.PAID?setTimeout(()=>{this.onRefresh()},2e3):this.$emit("hide"),this.$emit("update:modelValue",e)}).catch(()=>{setTimeout(()=>{this.onRefresh()},2e3)})}}}),Ie={class:"paycode wechat"},Re={class:"help-text block bg-[#00c800] text-white text-[14px] h-[35px] w-[240px] text-center leading-[35px] mt-[10px] mx-auto"};function Ve(e,t,s,i,c,d){const r=f("qr-code"),h=f("el-col"),W=f("el-row"),$=f("el-dialog");return a(),g($,{"model-value":e.visible,title:e.$t("application.title.buyService"),width:"500px",center:""},{default:n(()=>[u(W,{class:"paycodes py-[30px] w-[500px] mx-auto"},{default:n(()=>[u(h,{span:12},{default:n(()=>[o("div",Ie,[e.modelValue?.pay_url?(a(),g(r,{key:0,value:e.modelValue?.pay_url,size:200,class:"qrcode m-auto w-[200px] h-[200px]",type:"image/png",color:{dark:"#000000",light:"#ffffff"}},null,8,["value"])):y("",!0),o("p",Re,l(e.$t("order.message.wechatPayHelp")),1)])]),_:1}),u(h,{span:12},{default:n(()=>t[0]||(t[0]=[o("div",{class:"help-img"},[o("img",{src:"https://midas.gtimg.cn/enterprise/images/ep_sys_wx_tip.jpg"})],-1)])),_:1,__:[0]})]),_:1})]),_:1},8,["model-value","title"])}const De=M(Ne,[["render",Ve]]),Le=X({name:"PayOrderDialog",components:{ElDialog:x},props:{modelValue:{type:Object,required:!0},visible:{type:Boolean,required:!1,default:!1}},emits:["hide","update:modelValue"],data(){return{refreshTimer:void 0}},watch:{visible:{handler(e){e&&this.modelValue.pay_url&&window.open(this.modelValue.pay_url,"_blank")}}},mounted(){this.onRefresh()},unmounted(){this.refreshTimer&&clearTimeout(this.refreshTimer)},methods:{onRefresh(){if(!this.modelValue.id){console.error("id does not exist");return}V.refresh(this.modelValue.id).then(({data:e})=>{e.state!==N.PAID?setTimeout(()=>{this.onRefresh()},2e3):this.$emit("hide"),this.$emit("update:modelValue",e)}).catch(()=>{setTimeout(()=>{this.onRefresh()},5e3)})}}}),Te={class:"text-center"};function Be(e,t,s,i,c,d){const r=f("el-dialog");return a(),g(r,{"model-value":e.visible,title:e.$t("application.title.buyService"),width:"500px",center:""},{default:n(()=>[o("p",Te,l(e.$t("order.message.buyInExternalUrl")),1)]),_:1},8,["model-value","title"])}const qe=M(Le,[["render",Be],["__scopeId","data-v-fbea8aa1"]]),Oe=X({name:"PayOrderDialog",components:{ElDialog:x},props:{modelValue:{type:Object,required:!0},visible:{type:Boolean,required:!1,default:!1}},emits:["hide","update:modelValue"],data(){return{refreshTimer:void 0}},watch:{visible:{handler(e){e&&this.modelValue.pay_url&&window.open(this.modelValue.pay_url,"_blank")}}},mounted(){this.onRefresh()},unmounted(){this.refreshTimer&&clearTimeout(this.refreshTimer)},methods:{onRefresh(){if(!this.modelValue.id){console.error("id does not exist");return}V.refresh(this.modelValue.id).then(({data:e})=>{e.state!==N.PAID?setTimeout(()=>{this.onRefresh()},2e3):this.$emit("hide"),this.$emit("update:modelValue",e)}).catch(()=>{setTimeout(()=>{this.onRefresh()},5e3)})}}}),Me={class:"text-center"};function Xe(e,t,s,i,c,d){const r=f("el-dialog");return a(),g(r,{"model-value":e.visible,title:e.$t("application.title.buyService"),width:"500px",center:""},{default:n(()=>[o("p",Me,l(e.$t("order.message.buyInExternalUrl")),1)]),_:1},8,["model-value","title"])}const Fe=M(Oe,[["render",Xe]]);async function He(e){const{requirements:t,payerAddress:s,signTransaction:i,signAllTransactions:c,fetchLatestBlockhash:d}=e,{PublicKey:r,Transaction:h,ComputeBudgetProgram:W,TransactionInstruction:$}=await Y(async()=>{const{PublicKey:v,Transaction:_,ComputeBudgetProgram:D,TransactionInstruction:pe}=await import("./vendor-B4-12K57.js").then(he=>he.c3);return{PublicKey:v,Transaction:_,ComputeBudgetProgram:D,TransactionInstruction:pe}},__vite__mapDeps([0,1,2,3,4,5])),{Buffer:b}=await Y(async()=>{const{Buffer:v}=await import("./vendor-B4-12K57.js").then(_=>_.i);return{Buffer:v}},__vite__mapDeps([0,1,2,3,4,5])),k=new r("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),S=new r("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),C=new r(s),m=new r(String(t.payTo||t.pay_to)),A=new r(String(t.asset)),I=t.extra||{},B=String(I.feePayer||I.fee_payer||"");if(!B)throw new Error("Missing feePayer in Solana payment requirements");if(B===s)throw new Error("Invalid Solana payment: payer wallet must not be the fee payer wallet (switch wallet and try again).");const z=new r(B),j=Number(I.decimals??6),q=Number(I.computeUnitLimit??I.compute_unit_limit??0),w=Number(I.computeUnitPriceMicroLamports??I.compute_unit_price_micro_lamports??I.computeUnitPriceLamports??0),F=BigInt(String(t.maxAmountRequired||t.max_amount_required||"0"));if(F<=0n)throw new Error("Invalid amount");const J=(v,_)=>{const[D]=r.findProgramAddressSync([v.toBuffer(),k.toBuffer(),_.toBuffer()],S);return D},ne=J(C,A),oe=J(m,A),H=new Uint8Array(10);H[0]=12,new DataView(H.buffer).setBigUint64(1,F,!0),H[9]=j;const le=new $({programId:k,keys:[{pubkey:ne,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:oe,isSigner:!1,isWritable:!0},{pubkey:C,isSigner:!0,isWritable:!1}],data:b.from(H)}),L=new h;L.feePayer=z,Number.isFinite(q)&&q>0&&L.add(W.setComputeUnitLimit({units:Math.floor(q)})),Number.isFinite(w)&&w>0&&L.add(W.setComputeUnitPrice({microLamports:Math.floor(w)})),L.add(le);const de=String(t.network||"solana").toLowerCase();L.recentBlockhash=await d(de);const G=v=>{if(!v)return"Unknown error";const _=typeof v?.message=="string"?v.message:String(v),D=typeof v?.name=="string"?v.name:"";return D&&D!=="Error"&&!_.startsWith(D)?`${D}: ${_}`:_},K=async()=>{if(!c)return;const v=await c([L]);return Array.isArray(v)?v[0]:void 0};let O;try{i?O=await i(L):O=await K()}catch(v){if(i&&c)try{O=await K()}catch(_){throw new Error(`Solana wallet signing failed: ${G(v)} (fallback failed: ${G(_)})`)}else throw new Error(`Solana wallet signing failed: ${G(v)}`)}if(!O)throw new Error("Solana wallet did not return a signed transaction");const ce=O.serialize({requireAllSignatures:!1,verifySignatures:!1}),Q=b.from(ce).toString("base64"),ue={x402Version:1,scheme:t.scheme||"exact",network:t.network||"solana",payload:{serializedTransaction:Q,transaction:Q}};return btoa(JSON.stringify(ue))}const Ue=X({name:"X402PayOrderDialog",components:{ElDialog:x,ElButton:ie,ElAlert:ae,ElTag:se,ElIcon:ve,ElRadioGroup:we,ElRadioButton:ge,CreditCard:fe},props:{modelValue:{type:Object,required:!0},session:{type:Object,default:void 0},visible:{type:Boolean,default:!1}},emits:["hide","update:modelValue"],data(){return{signing:!1,paying:!1,chainId:void 0,selectedNetwork:void 0,solanaWalletModalVisible:!1,solanaWalletConnecting:!1,evmWalletModalVisible:!1,evmWalletConnecting:!1,evmWallets:[],selectedEvmWalletId:void 0,evmAddress:void 0,requirementsLoading:!1,runtimeRequirementsByNetwork:{},requirementsAttemptedByNetwork:{}}},computed:{dialogWidth(){return Ee()?"100%":"680px"},acceptsList(){const e=this.session?.accepts;if(Array.isArray(e)&&e.length>0)return e.filter(s=>!!(s&&typeof s=="object"));const t=this.paymentRequirements;return Array.isArray(t)&&t.length>0?t.filter(s=>!!(s&&typeof s=="object")):t&&typeof t=="object"?[t]:[]},selectedNetworkResolved(){return String(this.selectedNetwork||this.acceptsList[0]?.network||"base").toLowerCase()},selectedRequirements(){const e=String(this.selectedNetworkResolved||"").toLowerCase();if(!e)return this.acceptsList[0];const t=this.runtimeRequirementsByNetwork[e];if(t)return t;const s=this.acceptsList.find(i=>String(i.network||"").toLowerCase()===e);if(s)return s;if(!this.selectedNetwork)return this.acceptsList[0]},orderMetadata(){const e=this.modelValue?.metadata;return e&&typeof e=="object"?e:void 0},paymentRequirements(){const e=this.session?.payment_requirements||this.session?.paymentRequirements;if(e&&typeof e=="object")return e;const t=this.orderMetadata?.payment_requirements||this.orderMetadata?.paymentRequirements;if(t&&typeof t=="object")return t},expectedNetwork(){return this.selectedNetworkResolved},expectedNetworkLabel(){return this.formatNetworkLabel(this.expectedNetwork)},isSolanaNetwork(){return!!String(this.selectedNetworkResolved||"").toLowerCase().startsWith("solana")},expectedChainIdHex(){const e={base:"0x2105","base-sepolia":"0x14A34",ethereum:"0x1",sepolia:"0xAA36A7",polygon:"0x89",arbitrum:"0xA4B1",optimism:"0xA",bsc:"0x38",avalanche:"0xA86A"},t=(this.expectedNetwork||"").toLowerCase();return e[t]},networkMismatch(){return this.isSolanaNetwork?!1:!!(this.evmAddress&&this.chainId&&this.expectedChainIdHex&&this.chainId.toLowerCase()!==this.expectedChainIdHex.toLowerCase())},hasEvmProvider(){return this.isSolanaNetwork?!1:this.evmWalletsOrdered.length>0},requirementsAvailable(){return!!this.selectedRequirements},networkOptions(){const e=new Set(this.acceptsList.map(s=>String(s.network||"").toLowerCase()).filter(Boolean));if(e.size===0)return[{network:"base",label:"Base"},{network:"solana",label:"Solana"}];const t=s=>s==="base"?0:s.startsWith("solana")?1:2;return Array.from(e).sort((s,i)=>t(s)-t(i)||s.localeCompare(i)).map(s=>({network:s,label:this.formatNetworkLabel(s)}))},paymentSteps(){const e=this.expectedNetworkLabel||this.expectedNetwork||"";return[String(this.$t("order.message.x402Step1")),String(this.$t("order.message.x402Step2",{network:e})),String(this.$t("order.message.x402Step3")),String(this.$t("order.message.x402Step4"))]},evmConnected(){return!!(this.selectedEvmWalletId&&this.evmAddress)},evmProvider(){if(this.selectedEvmWalletId)return this.evmWallets.find(e=>e.id===this.selectedEvmWalletId)?.provider},selectedEvmWalletName(){if(this.selectedEvmWalletId)return this.evmWallets.find(e=>e.id===this.selectedEvmWalletId)?.name},selectedEvmWalletIcon(){if(this.selectedEvmWalletId)return this.evmWallets.find(e=>e.id===this.selectedEvmWalletId)?.icon},evmWalletsOrdered(){return[...this.evmWallets].sort((e,t)=>e.name.localeCompare(t.name))},solanaConnected(){return!!this.$wallet?.connected?.value},solanaAddress(){const e=this.$wallet?.publicKey?.value;if(!(!e||typeof e.toBase58!="function"))return e.toBase58()},solanaWalletsOrdered(){const e=this.$wallet?.wallets?.value??[],t=s=>s==="Installed"?0:s==="Loadable"?1:s==="NotDetected"?2:3;return[...e].sort((s,i)=>t(s.readyState)-t(i.readyState))},selectedSolanaWalletName(){return this.$wallet?.wallet?.value?.adapter?.name},selectedSolanaWalletIcon(){return this.$wallet?.wallet?.value?.adapter?.icon}},watch:{visible(e){if(!e){this.solanaWalletModalVisible=!1,this.evmWalletModalVisible=!1;return}if(!this.selectedNetwork){const i=this.acceptsList[0]?.network;this.selectedNetwork=String(i||"base").toLowerCase()}const t=new Set(this.networkOptions.map(i=>i.network)),s=String(this.selectedNetwork||"").toLowerCase();if(s&&!t.has(s)){const i=this.networkOptions[0]?.network;i&&(this.selectedNetwork=i)}this.maybeLoadRequirements()},selectedNetwork(){this.visible&&this.maybeLoadRequirements()}},mounted(){this.refreshEvmWallets()},methods:{sleep(e){return new Promise(t=>setTimeout(t,e))},getErrorMessage(e){if(!e)return"";if(typeof e=="string")return e;if(typeof e?.message=="string")return e.message;try{return JSON.stringify(e)}catch{return String(e)}},isRetryableSolanaConnectError(e){if(String(e?.name||"")==="WalletNotSelectedError")return!0;const s=this.getErrorMessage(e).toLowerCase();return s.includes("disconnected port object")||s.includes("failed to send message to service worker")||s.includes("message port closed")||s.includes("extension context invalidated")},async connectSolanaWalletWithRetry(e){const t=this.$wallet;if(!t)throw new Error("Wallet API not available");const s=2;let i;for(let c=1;c<=s;c+=1)try{e&&t.select(e),await Ce(),await t.connect();return}catch(d){if(i=d,c<s&&this.isRetryableSolanaConnectError(d)){const h=String(d?.name||"")==="WalletNotSelectedError"?0:300;h&&await this.sleep(h);continue}throw d}throw i},formatNetworkLabel(e){const t=String(e||"").toLowerCase();return t==="base"?"Base":t==="solana"?"Solana":t==="solana-devnet"?"Solana Devnet":t==="ethereum"?"Ethereum":t==="sepolia"?"Sepolia":t==="polygon"?"Polygon":t==="arbitrum"?"Arbitrum":t==="optimism"?"Optimism":t==="bsc"?"BNB Chain":t==="avalanche"?"Avalanche":e||"Unknown"},async confirmPay(e){const t=e||this.expectedNetworkLabel||this.expectedNetwork||"",s=String(this.$t?.("order.message.x402ConfirmTitle")||"Confirm Payment"),i=String(this.$t?.("order.message.x402ConfirmDesc",{network:t})||`Confirm USDC payment on ${t}?`),c=String(this.$t?.("common.button.pay")||"Pay"),d=String(this.$t?.("common.button.cancel")||"Cancel");return be.confirm(i,s,{confirmButtonText:c,cancelButtonText:d,type:"warning"}).then(()=>!0).catch(()=>!1)},async onSelectSolanaWallet(e){if(!this.solanaWalletConnecting&&e?.adapter?.name){this.solanaWalletConnecting=!0;try{await this.connectSolanaWalletWithRetry(e.adapter.name),this.solanaWalletModalVisible=!1}catch(t){console.warn("wallet connect failed",t),E.error(String(this.$t?.("coin.message.connectError")||"Wallet connect failed"))}finally{this.solanaWalletConnecting=!1}}},async disconnectSolanaWallet(){try{await this.$wallet.disconnect()}catch{}},openEvmWalletModal(){this.evmWalletModalVisible=!0,this.refreshEvmWallets()},async refreshEvmWallets(){if(typeof window>"u")return;const e=new Map,t=s=>{const i=s?.detail,c=i?.info,d=i?.provider;if(!c||!d)return;const r=String(c.uuid||c.rdns||c.name||"");r&&(e.has(r)||e.set(r,{id:r,name:String(c.name||"Wallet"),icon:typeof c.icon=="string"?c.icon:void 0,provider:d}))};try{window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),await new Promise(s=>window.setTimeout(s,120))}finally{window.removeEventListener("eip6963:announceProvider",t)}if(e.size===0){const s=window.ethereum;(Array.isArray(s?.providers)?s.providers:s?[s]:[]).forEach((c,d)=>{if(!c)return;let r="Injected";c.isMetaMask?r="MetaMask":c.isCoinbaseWallet?r="Coinbase Wallet":c.isBraveWallet?r="Brave Wallet":c.isRabby?r="Rabby":c.isPhantom&&(r="Phantom");const h=`injected:${r}:${d}`;e.set(h,{id:h,name:r,icon:void 0,provider:c})})}this.evmWallets=Array.from(e.values())},async onSelectEvmWallet(e){if(e?.provider){this.evmWalletModalVisible=!1,this.evmWalletConnecting=!0;try{const t=await e.provider.request({method:"eth_requestAccounts"}),s=Array.isArray(t)?t[0]:void 0;if(!s)throw new Error("No account returned from wallet");this.selectedEvmWalletId=e.id,this.evmAddress=s,await this.refreshChainId(),await this.ensureNetwork()}catch(t){console.warn("EVM wallet connect failed",t),E.error(String(this.$t?.("coin.message.connectError")||"Wallet connect failed")),this.disconnectEvmWallet()}finally{this.evmWalletConnecting=!1}}},disconnectEvmWallet(){this.selectedEvmWalletId=void 0,this.evmAddress=void 0,this.chainId=void 0},async getFreshRequirements(){const e=this.selectedRequirements;if(e)return e;try{const s=(await V.pay(this.modelValue.id,{pay_way:"X402"}))?.data,i=Array.isArray(s?.accepts)?s.accepts:void 0,c=String(this.selectedNetworkResolved||"").toLowerCase();if(Array.isArray(i)&&i.length){const r=i.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:i[0])}const d=s?.payment_requirements;if(Array.isArray(d)&&d.length){const r=d.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:d[0])}return d&&typeof d=="object"?d:void 0}catch(t){const s=t?.response?.data;if(s){const i=Array.isArray(s?.accepts)?s.accepts:void 0,c=String(this.selectedNetworkResolved||"").toLowerCase();if(Array.isArray(i)&&i.length){const r=i.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:i[0])}const d=s?.payment_requirements;if(Array.isArray(d)&&d.length){const r=d.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:d[0])}if(d&&typeof d=="object")return d}return}},async maybeLoadRequirements(e=!1){const t=String(this.selectedNetworkResolved||"").toLowerCase();if(!(!t||this.runtimeRequirementsByNetwork[t]||this.acceptsList.some(i=>String(i.network||"").toLowerCase()===t))&&!(!e&&this.requirementsAttemptedByNetwork[t])){this.requirementsAttemptedByNetwork[t]=!0,this.requirementsLoading=!0;try{const i=await this.getFreshRequirements();i&&(this.runtimeRequirementsByNetwork[t]=i)}finally{this.requirementsLoading=!1}}},async refreshChainId(){if(this.evmProvider)try{const e=await this.evmProvider.request({method:"eth_chainId"});typeof e=="string"&&(this.chainId=e)}catch{}},async ensureNetwork(){if(!(!this.evmProvider||!this.expectedChainIdHex)&&(await this.refreshChainId(),!(this.chainId&&this.chainId.toLowerCase()===this.expectedChainIdHex.toLowerCase()))){try{await this.evmProvider.request({method:"wallet_switchEthereumChain",params:[{chainId:this.expectedChainIdHex}]})}catch{try{await this.evmProvider.request({method:"wallet_addEthereumChain",params:[this.getExpectedChainParams()]})}catch(e){console.error("Failed to add Ethereum chain:",e);try{const t=this.$t&&this.$t("order.message.x402NetworkSwitchFailed")||"Your wallet does not support automatic network switching. Please switch to the required network in the wallet and try again.";E.warning(t)}catch{}}}await this.refreshChainId()}},getExpectedChainParams(){const e={base:{chainId:"0x2105",chainName:"Base",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://mainnet.base.org"],blockExplorerUrls:["https://basescan.org"]},"base-sepolia":{chainId:"0x14A34",chainName:"Base Sepolia",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://sepolia.base.org"],blockExplorerUrls:["https://sepolia.basescan.org"]}},t=(this.expectedNetwork||"").toLowerCase();return e[t]||{chainId:this.expectedChainIdHex}},buildTypedData(e,t){const s=e?.extra||{};return{types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],TransferWithAuthorization:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"validAfter",type:"uint256"},{name:"validBefore",type:"uint256"},{name:"nonce",type:"bytes32"}]},primaryType:"TransferWithAuthorization",domain:{name:s?.name||"USD Coin",version:s?.version||"2",chainId:parseInt(this.expectedChainIdHex||"0x0",16),verifyingContract:e.asset},message:t}},randomNonce32(){const e=new Uint8Array(32);return crypto.getRandomValues(e),"0x"+Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")},async onPayWithSolanaWallet(){if(!this.modelValue?.id)return;const e=this.solanaAddress;if(!e){E.error(String(this.$t?.("order.message.x402NeedConnectAccount")||"Please connect a wallet first."));return}if(!this.requirementsAvailable){E.error(String(this.$t?.("order.message.x402SolanaNotEnabled")||"Solana payment is not available."));return}this.signing=!0;try{if(!await this.confirmPay(this.expectedNetworkLabel))return;let s=await this.getFreshRequirements();if(s||(s=this.selectedRequirements),!s){E.error(String(this.$t?.("order.message.x402PaymentFailed")||"X402 payment failed."));return}const i=this.$wallet?.wallet?.value?.adapter;if(!i?.signTransaction&&!i?.signAllTransactions)throw new Error("Wallet does not support signing transactions");const c=await He({requirements:s,payerAddress:e,signTransaction:i.signTransaction?i.signTransaction.bind(i):void 0,signAllTransactions:i.signAllTransactions?i.signAllTransactions.bind(i):void 0,fetchLatestBlockhash:r=>this.fetchSolanaLatestBlockhash(r)});this.paying=!0;const{data:d}=await V.payX402WithHeader(this.modelValue.id,{pay_way:"X402"},c);this.$emit("update:modelValue",d),this.$emit("hide")}catch(t){const s=t?.response?.data,i=s?.error||s?.detail||"X402 wallet payment failed.";E.error(String(i))}finally{this.signing=!1,this.paying=!1}},async fetchSolanaLatestBlockhash(e){const{data:t}=await me.get("/x402/solana/latest-blockhash/",{params:{network:e||"solana"}}),s=t?.blockhash;if(!s||typeof s!="string")throw new Error("Invalid blockhash response");return s},async onPayWithWallet(){if(!this.modelValue?.id||!this.evmProvider||!this.evmAddress){const e=this.$t&&this.$t("order.message.x402PaymentFailed")||"X402 wallet payment is not available right now. Please try again later.";E.error(e);return}this.signing=!0;try{let e=await this.getFreshRequirements();if(e||(e=this.selectedRequirements),!e){const S=this.$t&&this.$t("order.message.x402PaymentFailed")||"X402 wallet payment failed. Please try again later.";E.error(S);return}if(await this.ensureNetwork(),this.networkMismatch){E.warning(String(this.$t?.("order.message.x402SwitchNetwork",{network:this.expectedNetworkLabel||this.expectedNetwork})||"Please switch your wallet network and try again."));return}if(!await this.confirmPay(this.expectedNetworkLabel))return;const s=Math.floor(Date.now()/1e3),i=Number(e?.maxTimeoutSeconds||e?.max_timeout_seconds||120),c=BigInt(e?.maxAmountRequired||e?.max_amount_required||0).toString(),d={from:this.evmAddress,to:e.payTo||e.pay_to,value:c,validAfter:s,validBefore:s+i,nonce:this.randomNonce32()},r=this.buildTypedData(e,d),h=await this.evmProvider.request({method:"eth_signTypedData_v4",params:[this.evmAddress,JSON.stringify(r)]}),W={from:d.from,to:d.to,value:d.value,validAfter:String(d.validAfter),validBefore:String(d.validBefore),nonce:d.nonce},$={x402Version:1,scheme:e.scheme||"exact",network:e.network||this.expectedNetwork||"base",payload:{authorization:W,signature:h}},b=btoa(JSON.stringify($));this.paying=!0;const{data:k}=await V.payX402WithHeader(this.modelValue.id,{pay_way:"X402"},b);this.$emit("update:modelValue",k),this.$emit("hide")}catch(e){let t;const s=e?.response?.data;if(s){const i=s?.error||s?.detail;typeof i=="string"&&(t=i)}t||(t=this.$t&&this.$t("order.message.x402PaymentFailed")||"X402 wallet payment failed. Please try again later.");try{E.error(t)}catch{}}finally{this.signing=!1,this.paying=!1}}}}),xe={class:"x402-content"},ze={class:"x402-intro"},je={class:"x402-intro-text"},Ge={class:"x402-wallet"},Je={class:"x402-wallet-head"},Ke={class:"x402-network"},Qe={class:"x402-network-label"},Ye={key:1,class:"x402-requirements-actions"},Ze={class:"x402-wallet-card"},et={class:"x402-wallet-card-head"},tt={key:0,class:"x402-wallet-card-sub x402-wallet-name"},st=["src","alt"],at={key:1,class:"x402-wallet-card-sub"},it={class:"x402-wallet-card-actions"},rt={class:"x402-actions"},nt={class:"x402-wallet-card"},ot={class:"x402-wallet-card-head"},lt={key:0,class:"x402-wallet-card-sub x402-wallet-name"},dt=["src","alt"],ct={key:1,class:"x402-wallet-card-sub"},ut={class:"x402-wallet-card-actions"},pt={class:"x402-actions"},ht={class:"x402-steps"},mt={class:"x402-steps-title"},yt={class:"x402-steps-list"},ft={class:"x402-step-index"},gt={class:"x402-step-text"},wt={class:"wallet-list"},vt=["disabled","onClick"],bt=["src","alt"],kt={class:"wallet-list-name"},Pt={key:1,class:"wallet-list-status"},St={class:"wallet-list"},Wt=["disabled","onClick"],$t=["src","alt"],Ct={class:"wallet-list-name"},At={key:0,class:"text-center text-[13px] text-[var(--el-text-color-regular)]"};function _t(e,t,s,i,c,d){const r=f("credit-card"),h=f("el-icon"),W=f("el-radio-button"),$=f("el-radio-group"),b=f("el-alert"),k=f("el-button"),S=f("el-tag"),C=f("el-dialog");return a(),p(R,null,[u(C,{"model-value":e.visible,title:e.$t("order.title.x402"),width:e.dialogWidth,top:"8vh",class:"x402-dialog"},{default:n(()=>[o("section",xe,[o("header",ze,[u(h,{size:20,class:"x402-intro-icon"},{default:n(()=>[u(r)]),_:1}),o("p",je,l(e.$t("order.message.x402IntroShort")),1)]),o("section",Ge,[o("div",Je,[o("div",Ke,[o("span",Qe,l(e.$t("order.message.x402IntegrationNetworkLabel")),1),u($,{modelValue:e.selectedNetwork,"onUpdate:modelValue":t[0]||(t[0]=m=>e.selectedNetwork=m),size:"small",class:"x402-network-group"},{default:n(()=>[(a(!0),p(R,null,T(e.networkOptions,m=>(a(),g(W,{key:m.network,label:m.network},{default:n(()=>[P(l(m.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),e.selectedNetworkResolved==="solana"&&!e.selectedRequirements&&!e.requirementsLoading?(a(),g(b,{key:0,type:"info",closable:!1,class:"x402-alert",description:e.$t("order.message.x402SolanaNotEnabled")},null,8,["description"])):y("",!0),!e.selectedRequirements&&!e.requirementsLoading?(a(),p("div",Ye,[u(k,{link:"",type:"primary",size:"small",onClick:t[1]||(t[1]=m=>e.maybeLoadRequirements(!0))},{default:n(()=>[P(l(e.$t("common.button.refresh")),1)]),_:1})])):y("",!0),e.isSolanaNetwork?(a(),p(R,{key:2},[o("div",Ze,[o("div",et,[t[5]||(t[5]=o("span",{class:"x402-wallet-card-title"},"Solana Wallet",-1)),e.solanaConnected?(a(),g(S,{key:0,class:"x402-wallet-card-tag"},{default:n(()=>[P(l(e.$t("order.message.x402WalletConnected")),1)]),_:1})):y("",!0)]),e.solanaConnected&&e.selectedSolanaWalletName?(a(),p("div",tt,[e.selectedSolanaWalletIcon?(a(),p("img",{key:0,class:"wallet-list-icon",src:e.selectedSolanaWalletIcon,alt:e.selectedSolanaWalletName},null,8,st)):y("",!0),o("span",null,l(e.selectedSolanaWalletName),1)])):y("",!0),e.solanaConnected&&e.solanaAddress?(a(),p("div",at,l(e.solanaAddress.substring(0,10))+"..."+l(e.solanaAddress.substring(e.solanaAddress.length-10)),1)):y("",!0),o("div",it,[e.solanaConnected?(a(),g(k,{key:1,onClick:e.disconnectSolanaWallet},{default:n(()=>[P(l(e.$t("coin.button.disconnect")),1)]),_:1},8,["onClick"])):(a(),g(k,{key:0,type:"primary",onClick:t[2]||(t[2]=m=>e.solanaWalletModalVisible=!0)},{default:n(()=>[P(l(e.$t("order.message.x402ConnectWallet")),1)]),_:1}))])]),o("div",rt,[u(k,{type:"primary",disabled:!e.solanaConnected||!e.solanaAddress||!e.requirementsAvailable,loading:e.signing||e.paying,onClick:e.onPayWithSolanaWallet},{default:n(()=>[P(l(e.$t("order.message.x402WalletPayCta")),1)]),_:1},8,["disabled","loading","onClick"])])],64)):(a(),p(R,{key:3},[o("div",nt,[o("div",ot,[t[6]||(t[6]=o("span",{class:"x402-wallet-card-title"},"EVM Wallet",-1)),e.evmConnected?(a(),g(S,{key:0,class:"x402-wallet-card-tag"},{default:n(()=>[P(l(e.$t("order.message.x402WalletConnected")),1)]),_:1})):y("",!0)]),e.evmConnected&&e.selectedEvmWalletName?(a(),p("div",lt,[e.selectedEvmWalletIcon?(a(),p("img",{key:0,class:"wallet-list-icon",src:e.selectedEvmWalletIcon,alt:e.selectedEvmWalletName},null,8,dt)):y("",!0),o("span",null,l(e.selectedEvmWalletName),1)])):y("",!0),e.evmConnected&&e.evmAddress?(a(),p("div",ct,l(e.evmAddress.substring(0,10))+"..."+l(e.evmAddress.substring(e.evmAddress.length-10)),1)):y("",!0),o("div",ut,[e.evmConnected?(a(),g(k,{key:1,onClick:e.disconnectEvmWallet},{default:n(()=>[P(l(e.$t("coin.button.disconnect")),1)]),_:1},8,["onClick"])):(a(),g(k,{key:0,type:"primary",onClick:e.openEvmWalletModal},{default:n(()=>[P(l(e.$t("order.message.x402ConnectWallet")),1)]),_:1},8,["onClick"]))])]),e.hasEvmProvider?e.networkMismatch?(a(),g(b,{key:1,type:"warning",closable:!1,"show-icon":"",class:"x402-alert",title:e.$t("order.message.x402SwitchNetwork",{network:e.expectedNetworkLabel||e.expectedNetwork})},null,8,["title"])):y("",!0):(a(),g(b,{key:0,type:"info",closable:!1,class:"x402-alert",description:e.$t("order.message.x402NoWalletDesc")},null,8,["description"])),o("div",pt,[e.hasEvmProvider?(a(),g(k,{key:0,type:"primary",disabled:!e.evmConnected||!e.requirementsAvailable||e.networkMismatch,loading:e.signing||e.paying,onClick:e.onPayWithWallet},{default:n(()=>[P(l(e.$t("order.message.x402WalletPayCta")),1)]),_:1},8,["disabled","loading","onClick"])):y("",!0)])],64)),o("div",ht,[o("div",mt,l(e.$t("order.message.x402StepsTitle")),1),o("ol",yt,[(a(!0),p(R,null,T(e.paymentSteps,(m,A)=>(a(),p("li",{key:A,class:"x402-step"},[o("span",ft,l(A+1),1),o("span",gt,l(m),1)]))),128))])])])])]),_:1},8,["model-value","title","width"]),u(C,{modelValue:e.solanaWalletModalVisible,"onUpdate:modelValue":t[3]||(t[3]=m=>e.solanaWalletModalVisible=m),title:e.$t("order.message.x402ConnectWallet"),width:"420px","align-center":""},{default:n(()=>[o("div",wt,[(a(!0),p(R,null,T(e.solanaWalletsOrdered,m=>(a(),p("button",{key:m.adapter.name,class:"wallet-list-item",disabled:e.solanaWalletConnecting,onClick:A=>e.onSelectSolanaWallet(m)},[m.adapter.icon?(a(),p("img",{key:0,class:"wallet-list-icon",src:m.adapter.icon,alt:m.adapter.name},null,8,bt)):y("",!0),o("span",kt,l(m.adapter.name),1),m.readyState==="Installed"?(a(),p("span",Pt,"Detected")):y("",!0)],8,vt))),128))])]),_:1},8,["modelValue","title"]),u(C,{modelValue:e.evmWalletModalVisible,"onUpdate:modelValue":t[4]||(t[4]=m=>e.evmWalletModalVisible=m),title:e.$t("order.message.x402ConnectWallet"),width:"420px","align-center":""},{default:n(()=>[o("div",St,[(a(!0),p(R,null,T(e.evmWalletsOrdered,m=>(a(),p("button",{key:m.id,class:"wallet-list-item",disabled:e.evmWalletConnecting,onClick:A=>e.onSelectEvmWallet(m)},[m.icon?(a(),p("img",{key:0,class:"wallet-list-icon",src:m.icon,alt:m.name},null,8,$t)):y("",!0),o("span",Ct,l(m.name),1),t[7]||(t[7]=o("span",{class:"wallet-list-status"},"Detected",-1))],8,Wt))),128)),e.evmWalletsOrdered.length===0?(a(),p("div",At,l(e.$t("order.message.x402NoWalletDesc")),1)):y("",!0)])]),_:1},8,["modelValue","title"])],64)}const Et=M(Ue,[["render",_t],["__scopeId","data-v-43eb4bb3"]]),Nt=7e3,Z=2e3;var re=(e=>(e.WechatPay="WechatPay",e.Stripe="Stripe",e.AliPay="AliPay",e.X402="X402",e))(re||{});const It=X({name:"ConsoleOrderDetail",components:{ElButton:ie,CopyToClipboard:_e,ElRow:te,ElCard:$e,ElCol:ee,ElSkeleton:We,ElDivider:Se,ElAlert:ae,ElDescriptions:Pe,ElDescriptionsItem:ke,ElTag:se,WechatPayOrder:De,StripePayOrder:qe,AlipayPayOrder:Fe,X402PayOrder:Et},data(){return{PayWay:re,payWay:"WechatPay",OrderState:N,order:void 0,x402Session:void 0,showPayWays:!0,loading:!1,paying:!1,prepaying:!1}},computed:{config(){return this.$store.getters.config},id(){return this.$route.params?.id?.toString()},redirect(){return this.$route.query?.redirect},pricingInfo(){const e=this.order?.metadata?.pricing||{},t=S=>typeof S=="number"&&Number.isFinite(S)?S:void 0,s=t(e?.original_price),i=t(e?.discounted_price),c=t(e?.discount_rate),d=t(e?.discount_rate_vip),r=t(e?.discount_rate_x402),h=t(this.order?.price),W=s??h??0,$=i??h??W,b=t(this.order?.discount)??c??0,k=Array.isArray(e?.discounted_methods)?e.discounted_methods.filter(S=>typeof S=="string"&&S.length>0):[];return{original:W,discounted:$,discountRate:b,discountedMethods:k,discountRateVip:d,discountRateX402:r}},appliedDiscountMethods(){return this.pricingInfo.discountedMethods||[]},hasVipApplied(){return this.appliedDiscountMethods.includes("vip")},hasX402Applied(){return this.appliedDiscountMethods.includes("x402")},pendingX402Preview(){return this.payWay==="X402"&&this.order?.pay_way!=="X402"&&this.x402DiscountRate>0},finalOriginalPrice(){return this.pricingInfo.original||0},baseEffectivePrice(){const e=this.order?.price;return typeof e=="number"&&Number.isFinite(e)?e:this.pricingInfo.discounted},previewX402Price(){const e=this.baseEffectivePrice||0,t=this.x402DiscountRate;return!t||t<=0?e:e*(1-t)},finalDiscountedPrice(){return this.pendingX402Preview?this.previewX402Price:this.baseEffectivePrice},showOriginalPrice(){return this.finalOriginalPrice<=0?!1:this.finalOriginalPrice>this.finalDiscountedPrice},totalDiscountRate(){const e=this.pricingInfo.discountRate??0;return this.pendingX402Preview?1-(1-e)*(1-this.x402DiscountRate):e},hasAnyDiscount(){return this.totalDiscountRate>0},discountBadges(){const e=[];return this.hasVipApplied&&this.vipDiscountPercent&&e.push({key:"vip",text:this.$t("order.message.discountTag",{percent:this.vipDiscountPercent}).toString(),type:"success"}),this.shouldDisplayX402Badge&&this.x402BadgePercent&&e.push({key:"x402",text:this.$t("order.message.x402DiscountTag",{percent:this.x402BadgePercent}).toString(),type:"success"}),e},discountHints(){const e=[];return this.hasVipApplied&&this.vipDiscountPercent&&e.push(this.$t("order.message.discountHint",{percent:this.vipDiscountPercent}).toString()),this.hasX402Applied&&this.x402AppliedPercent?e.push(this.$t("order.message.x402DiscountApplied",{percent:this.x402AppliedPercent}).toString()):this.pendingX402Preview&&this.x402BadgePercent&&e.push(this.$t("order.message.x402DiscountHint",{percent:this.x402BadgePercent}).toString()),e},x402DiscountRate(){const e=this.config?.features?.DISCOUNT_FOR_X402;return typeof e=="number"&&Number.isFinite(e)&&e>0?e:0},vipDiscountPercent(){const e=(this.pricingInfo.discountRateVip??0)*100;return!Number.isFinite(e)||e<=0?"":Number.isInteger(e)?e.toFixed(0):e.toFixed(1)},x402AppliedPercent(){const t=(this.pricingInfo.discountRateX402??0)*100;return!Number.isFinite(t)||t<=0?"":Number.isInteger(t)?t.toFixed(0):t.toFixed(1)},x402BadgePercent(){const t=(this.hasX402Applied?this.pricingInfo.discountRateX402??this.x402DiscountRate:this.x402DiscountRate)*100;return!Number.isFinite(t)||t<=0?"":Number.isInteger(t)?t.toFixed(0):t.toFixed(1)},shouldDisplayX402Badge(){return this.hasX402Applied||this.pendingX402Preview},shouldShowPriceBlock(){return this.finalOriginalPrice>0||this.finalDiscountedPrice>0||this.hasAnyDiscount||this.pendingX402Preview},orderFailedReason(){if(!this.order||this.order.state!==N.FAILED)return;const t=(this.order.metadata||{})?.x402?.last_error||{};return(typeof t.reason=="string"?t.reason.trim():"")||void 0}},watch:{paying(e){e?this.startOrderPolling():this.stopOrderPolling()},order:{handler(e){if(e?.state===N.PAID){this.x402Session=void 0,setTimeout(()=>{this.redirect&&window.location.replace(this.redirect?.toString())},2e3);return}e?.state&&e.state!==N.PENDING&&e.state!==N.FAILED&&(this.x402Session=void 0)},deep:!0},payWay(e){e!=="X402"&&(this.x402Session=void 0)}},created(){this._orderRefreshTimer=void 0},mounted(){this.onFetchData()},beforeUnmount(){this.stopOrderPolling()},methods:{getPriceString:Ae,startOrderPolling(e=0){this.stopOrderPolling();const t=async()=>{try{const{data:s}=await V.refresh(this.id);if(this.order=s,s?.state===N.PAID||s?.state===N.FAILED||s?.state===N.EXPIRED){this.paying=!1,this.stopOrderPolling();return}}catch{}this.paying&&(this._orderRefreshTimer=window.setTimeout(t,Nt))};this._orderRefreshTimer=window.setTimeout(t,e)},stopOrderPolling(){const e=this._orderRefreshTimer;e&&(clearTimeout(e),this._orderRefreshTimer=void 0)},onFetchData(){this.loading=!0,V.refresh(this.id).then(({data:e})=>{this.order=e,e.pay_way&&(this.payWay=e.pay_way),this.loading=!1}).catch(()=>{this.loading=!1})},onRepay(){this.payWay==="X402"&&(this.x402Session=void 0),this.paying=!0,this.startOrderPolling()},onPay(){this.prepaying=!0,this.payWay==="X402"&&(this.x402Session=void 0),V.pay(this.id,{pay_way:this.payWay}).then(({data:e})=>{if(this.prepaying=!1,e?.id&&(this.order=e),this.payWay==="X402"&&e){const t=e;t.accepts&&(this.x402Session=t)}(this.order&&this.order.price&&this.order.price>0||this.payWay==="X402")&&(this.paying=!0,this.startOrderPolling(Z))}).catch(e=>{this.prepaying=!1;const t=e?.response?.data;if(this.payWay==="X402"&&t){this.x402Session=t,this.paying=!0,this.startOrderPolling(Z);return}})}}}),Rt={class:"title"},Vt={key:0,class:"pt-5"},Dt={key:1,class:"order"},Lt={key:0},Tt={key:1},Bt={key:2},qt={key:3},Ot={key:0,class:"price-block"},Mt={class:"price-line"},Xt={key:0,class:"price original"},Ft={class:"price current unfree"},Ht={key:1,class:"price free"},Ut={key:0,class:"payways mb-6"},xt={class:"payname"},zt={class:"payname"},jt={class:"payname"},Gt={class:"payname"},Jt={key:1},Kt={key:2};function Qt(e,t,s,i,c,d){const r=f("el-col"),h=f("el-row"),W=f("el-skeleton"),$=f("copy-to-clipboard"),b=f("el-descriptions-item"),k=f("el-tag"),S=f("el-descriptions"),C=f("el-divider"),m=f("el-alert"),A=f("el-button"),I=f("el-card"),B=f("wechat-pay-order"),z=f("stripe-pay-order"),j=f("alipay-pay-order"),q=f("x402-pay-order");return a(),g(h,{class:"panel"},{default:n(()=>[u(r,{span:24},{default:n(()=>[u(h,null,{default:n(()=>[u(r,{span:24},{default:n(()=>[o("h2",Rt,l(e.$t("order.title.info")),1)]),_:1})]),_:1}),u(h,null,{default:n(()=>[u(r,{span:24},{default:n(()=>[u(I,{shadow:"hover"},{default:n(()=>[u(h,null,{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[e.loading?(a(),p("div",Vt,[u(W,{animated:""})])):(a(),p("div",Dt,[u(S,{column:1},{default:n(()=>[u(b,{label:e.$t("order.field.id")},{default:n(()=>[o("span",null,l(e.order?.id),1),e.order?.id?(a(),g($,{key:0,content:e.order?.id,class:"inline-block"},null,8,["content"])):y("",!0)]),_:1},8,["label"]),u(b,{label:e.$t("order.field.description")},{default:n(()=>[P(l(e.order?.description),1)]),_:1},8,["label"]),e.order?.application?.service?(a(),g(b,{key:0,label:e.$t("order.field.api")},{default:n(()=>[P(l(e.order?.application?.service?.title),1)]),_:1},8,["label"])):y("",!0),e.order?.pay_way?(a(),g(b,{key:1,label:e.$t("order.field.payWay")},{default:n(()=>[e.order?.pay_way===e.PayWay.WechatPay?(a(),p("span",Lt,l(e.$t("order.title.wechatPay")),1)):e.order?.pay_way===e.PayWay.Stripe?(a(),p("span",Tt,l(e.$t("order.title.stripe")),1)):e.order?.pay_way===e.PayWay.AliPay?(a(),p("span",Bt,l(e.$t("order.title.aliPay")),1)):e.order?.pay_way===e.PayWay.X402?(a(),p("span",qt,l(e.$t("order.title.x402")),1)):y("",!0)]),_:1},8,["label"])):y("",!0),u(b,{label:e.$t("order.field.createdAt")},{default:n(()=>[P(l(e.$dayjs.format(e.order?.created_at)),1)]),_:1},8,["label"]),u(b,{label:e.$t("order.field.price")},{default:n(()=>[e.shouldShowPriceBlock?(a(),p("div",Ot,[o("div",Mt,[e.showOriginalPrice?(a(),p("span",Xt,l(e.getPriceString({value:e.finalOriginalPrice})),1)):y("",!0),o("span",Ft,l(e.getPriceString({value:e.finalDiscountedPrice})),1),(a(!0),p(R,null,T(e.discountBadges,w=>(a(),g(k,{key:w.key,class:"discount-tag",effect:"light",size:"small",type:w.type},{default:n(()=>[P(l(w.text),1)]),_:2},1032,["type"]))),128))]),(a(!0),p(R,null,T(e.discountHints,(w,F)=>(a(),p("p",{key:F,class:"discount-hint"},l(w),1))),128))])):(a(),p("span",Ht,l(e.$t("order.message.free")),1))]),_:1},8,["label"])]),_:1})]))]),_:1})]),_:1}),e.order?.state===e.OrderState.PAID||e.order?.state===e.OrderState.FINISHED?(a(),g(h,{key:0,class:"mb-5"},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),u(m,{title:e.$t("order.message.paidSuccessfully"),type:"success","show-icon":"",closable:!1},null,8,["title"])]),_:1})]),_:1})):y("",!0),e.order?.state===e.OrderState.EXPIRED?(a(),g(h,{key:1,class:"mb-5"},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),u(m,{title:e.$t("order.message.orderExpired"),type:"error","show-icon":"",closable:!1},null,8,["title"])]),_:1})]),_:1})):y("",!0),e.order?.state===e.OrderState.FAILED?(a(),g(h,{key:2,class:"mb-5"},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),u(m,{title:e.$t("order.state.failed"),description:e.orderFailedReason,type:"error","show-icon":"",closable:!1},null,8,["title","description"])]),_:1})]),_:1})):y("",!0),e.order?.state===e.OrderState.PENDING?(a(),g(h,{key:3},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),e.showPayWays&&e.order.price&&e.order.price>0&&!e.order.pay_way?(a(),p("div",Ut,[o("div",{class:U({payway:!0,wechatpay:!0,active:e.payWay===e.PayWay.WechatPay}),onClick:t[0]||(t[0]=w=>e.payWay=e.PayWay.WechatPay)},[t[12]||(t[12]=o("span",{class:"payicon wechatpay"},null,-1)),o("span",xt,l(e.$t("order.title.wechatPay")),1)],2),o("div",{class:U({payway:!0,alipay:!0,active:e.payWay===e.PayWay.AliPay}),onClick:t[1]||(t[1]=w=>e.payWay=e.PayWay.AliPay)},[t[13]||(t[13]=o("span",{class:"payicon alipay"},null,-1)),o("span",zt,l(e.$t("order.title.aliPay")),1)],2),o("div",{class:U({payway:!0,stripe:!0,active:e.payWay===e.PayWay.Stripe}),onClick:t[2]||(t[2]=w=>e.payWay=e.PayWay.Stripe)},[t[14]||(t[14]=o("span",{class:"payicon stripe"},null,-1)),o("span",jt,l(e.$t("order.title.stripe")),1)],2),o("div",{class:U({payway:!0,x402:!0,relative:!0,active:e.payWay===e.PayWay.X402}),onClick:t[3]||(t[3]=w=>e.payWay=e.PayWay.X402)},[t[15]||(t[15]=o("span",{class:"payicon x402"},null,-1)),o("span",Gt,l(e.$t("order.title.x402")),1),e.x402DiscountRate>0?(a(),g(k,{key:0,class:"absolute -top-2 right-0",effect:"light",size:"small",type:"success"},{default:n(()=>[P(l(e.$t("order.message.x402DiscountTag",{percent:e.x402BadgePercent})),1)]),_:1})):y("",!0)],2)])):y("",!0),e.order?.pay_way?(a(),p("div",Kt,[u(A,{type:"primary",round:"",size:"large",class:"btn-repay",onClick:e.onRepay},{default:n(()=>[P(l(e.$t("common.button.repay")),1)]),_:1},8,["onClick"])])):(a(),p("div",Jt,[u(A,{loading:e.prepaying,round:"",type:"primary",size:"large",class:"btn-pay",onClick:e.onPay},{default:n(()=>[P(l(e.$t("common.button.pay")),1)]),_:1},8,["loading","onClick"])]))]),_:1})]),_:1})):y("",!0)]),_:1})]),_:1})]),_:1}),u(h,null,{default:n(()=>[u(r,{span:24},{default:n(()=>[e.order&&e.payWay===e.PayWay.WechatPay?(a(),g(B,{key:0,modelValue:e.order,"onUpdate:modelValue":t[4]||(t[4]=w=>e.order=w),visible:e.paying,onHide:t[5]||(t[5]=w=>e.paying=!1)},null,8,["modelValue","visible"])):y("",!0),e.order&&e.payWay===e.PayWay.Stripe?(a(),g(z,{key:1,modelValue:e.order,"onUpdate:modelValue":t[6]||(t[6]=w=>e.order=w),visible:e.paying,onHide:t[7]||(t[7]=w=>e.paying=!1)},null,8,["modelValue","visible"])):y("",!0),e.order&&e.payWay===e.PayWay.AliPay?(a(),g(j,{key:2,modelValue:e.order,"onUpdate:modelValue":t[8]||(t[8]=w=>e.order=w),visible:e.paying,onHide:t[9]||(t[9]=w=>e.paying=!1)},null,8,["modelValue","visible"])):y("",!0),e.order&&e.payWay===e.PayWay.X402?(a(),g(q,{key:3,modelValue:e.order,"onUpdate:modelValue":t[10]||(t[10]=w=>e.order=w),session:e.x402Session,visible:e.paying,onHide:t[11]||(t[11]=w=>e.paying=!1)},null,8,["modelValue","session","visible"])):y("",!0)]),_:1})]),_:1})]),_:1})]),_:1})}const cs=M(It,[["render",Qt],["__scopeId","data-v-62615fcb"]]);export{cs as default};
2
+ import{o as V}from"./order-DYcfG_Yw.js";import{_ as M,a6 as me}from"./index-BwtxyV6k.js";import{O as N}from"./order-CB3uOPHS.js";import{ae as ye,a5 as Y,bT as fe}from"./vendor-B4-12K57.js";import{x as ee,y as te,E as x,A as ge,B as we,e as ve,a as se,C as ae,k as ie,s as E,D as be,F as ke,G as Pe,n as Se,H as We,t as $e}from"./vendor-element-plus-C2t7-rNg.js";import{d as X,R as g,S as n,l as u,am as f,a as o,W as y,Z as l,o as a,p as Ce,c as p,F as R,ak as T,Y as P,V as U}from"./vendor-vue-BzRnDgD5.js";import{g as Ae}from"./price-Clo8IP03.js";import{C as _e}from"./CopyToClipboard-D0yPTPYW.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-katex-DHBGsivc.js";function Ee(){const e=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod|android|windows phone/i.test(e)}const Ne=X({name:"PayOrderDialog",components:{ElDialog:x,QrCode:ye,ElRow:te,ElCol:ee},props:{modelValue:{type:Object,required:!0},visible:{type:Boolean,required:!1,default:!1}},emits:["hide","update:modelValue"],data(){return{refreshTimer:void 0}},mounted(){this.onRefresh()},unmounted(){this.refreshTimer&&clearTimeout(this.refreshTimer)},methods:{onRefresh(){if(!this.modelValue.id){console.error("id does not exist");return}V.refresh(this.modelValue.id).then(({data:e})=>{e.state!==N.PAID?setTimeout(()=>{this.onRefresh()},2e3):this.$emit("hide"),this.$emit("update:modelValue",e)}).catch(()=>{setTimeout(()=>{this.onRefresh()},2e3)})}}}),Ie={class:"paycode wechat"},Re={class:"help-text block bg-[#00c800] text-white text-[14px] h-[35px] w-[240px] text-center leading-[35px] mt-[10px] mx-auto"};function Ve(e,t,s,i,c,d){const r=f("qr-code"),h=f("el-col"),W=f("el-row"),$=f("el-dialog");return a(),g($,{"model-value":e.visible,title:e.$t("application.title.buyService"),width:"500px",center:""},{default:n(()=>[u(W,{class:"paycodes py-[30px] w-[500px] mx-auto"},{default:n(()=>[u(h,{span:12},{default:n(()=>[o("div",Ie,[e.modelValue?.pay_url?(a(),g(r,{key:0,value:e.modelValue?.pay_url,size:200,class:"qrcode m-auto w-[200px] h-[200px]",type:"image/png",color:{dark:"#000000",light:"#ffffff"}},null,8,["value"])):y("",!0),o("p",Re,l(e.$t("order.message.wechatPayHelp")),1)])]),_:1}),u(h,{span:12},{default:n(()=>t[0]||(t[0]=[o("div",{class:"help-img"},[o("img",{src:"https://midas.gtimg.cn/enterprise/images/ep_sys_wx_tip.jpg"})],-1)])),_:1,__:[0]})]),_:1})]),_:1},8,["model-value","title"])}const De=M(Ne,[["render",Ve]]),Le=X({name:"PayOrderDialog",components:{ElDialog:x},props:{modelValue:{type:Object,required:!0},visible:{type:Boolean,required:!1,default:!1}},emits:["hide","update:modelValue"],data(){return{refreshTimer:void 0}},watch:{visible:{handler(e){e&&this.modelValue.pay_url&&window.open(this.modelValue.pay_url,"_blank")}}},mounted(){this.onRefresh()},unmounted(){this.refreshTimer&&clearTimeout(this.refreshTimer)},methods:{onRefresh(){if(!this.modelValue.id){console.error("id does not exist");return}V.refresh(this.modelValue.id).then(({data:e})=>{e.state!==N.PAID?setTimeout(()=>{this.onRefresh()},2e3):this.$emit("hide"),this.$emit("update:modelValue",e)}).catch(()=>{setTimeout(()=>{this.onRefresh()},5e3)})}}}),Te={class:"text-center"};function Be(e,t,s,i,c,d){const r=f("el-dialog");return a(),g(r,{"model-value":e.visible,title:e.$t("application.title.buyService"),width:"500px",center:""},{default:n(()=>[o("p",Te,l(e.$t("order.message.buyInExternalUrl")),1)]),_:1},8,["model-value","title"])}const qe=M(Le,[["render",Be],["__scopeId","data-v-fbea8aa1"]]),Oe=X({name:"PayOrderDialog",components:{ElDialog:x},props:{modelValue:{type:Object,required:!0},visible:{type:Boolean,required:!1,default:!1}},emits:["hide","update:modelValue"],data(){return{refreshTimer:void 0}},watch:{visible:{handler(e){e&&this.modelValue.pay_url&&window.open(this.modelValue.pay_url,"_blank")}}},mounted(){this.onRefresh()},unmounted(){this.refreshTimer&&clearTimeout(this.refreshTimer)},methods:{onRefresh(){if(!this.modelValue.id){console.error("id does not exist");return}V.refresh(this.modelValue.id).then(({data:e})=>{e.state!==N.PAID?setTimeout(()=>{this.onRefresh()},2e3):this.$emit("hide"),this.$emit("update:modelValue",e)}).catch(()=>{setTimeout(()=>{this.onRefresh()},5e3)})}}}),Me={class:"text-center"};function Xe(e,t,s,i,c,d){const r=f("el-dialog");return a(),g(r,{"model-value":e.visible,title:e.$t("application.title.buyService"),width:"500px",center:""},{default:n(()=>[o("p",Me,l(e.$t("order.message.buyInExternalUrl")),1)]),_:1},8,["model-value","title"])}const Fe=M(Oe,[["render",Xe]]);async function He(e){const{requirements:t,payerAddress:s,signTransaction:i,signAllTransactions:c,fetchLatestBlockhash:d}=e,{PublicKey:r,Transaction:h,ComputeBudgetProgram:W,TransactionInstruction:$}=await Y(async()=>{const{PublicKey:v,Transaction:_,ComputeBudgetProgram:D,TransactionInstruction:pe}=await import("./vendor-B4-12K57.js").then(he=>he.c3);return{PublicKey:v,Transaction:_,ComputeBudgetProgram:D,TransactionInstruction:pe}},__vite__mapDeps([0,1,2,3,4,5])),{Buffer:b}=await Y(async()=>{const{Buffer:v}=await import("./vendor-B4-12K57.js").then(_=>_.i);return{Buffer:v}},__vite__mapDeps([0,1,2,3,4,5])),k=new r("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),S=new r("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),C=new r(s),m=new r(String(t.payTo||t.pay_to)),A=new r(String(t.asset)),I=t.extra||{},B=String(I.feePayer||I.fee_payer||"");if(!B)throw new Error("Missing feePayer in Solana payment requirements");if(B===s)throw new Error("Invalid Solana payment: payer wallet must not be the fee payer wallet (switch wallet and try again).");const z=new r(B),j=Number(I.decimals??6),q=Number(I.computeUnitLimit??I.compute_unit_limit??0),w=Number(I.computeUnitPriceMicroLamports??I.compute_unit_price_micro_lamports??I.computeUnitPriceLamports??0),F=BigInt(String(t.maxAmountRequired||t.max_amount_required||"0"));if(F<=0n)throw new Error("Invalid amount");const J=(v,_)=>{const[D]=r.findProgramAddressSync([v.toBuffer(),k.toBuffer(),_.toBuffer()],S);return D},ne=J(C,A),oe=J(m,A),H=new Uint8Array(10);H[0]=12,new DataView(H.buffer).setBigUint64(1,F,!0),H[9]=j;const le=new $({programId:k,keys:[{pubkey:ne,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:oe,isSigner:!1,isWritable:!0},{pubkey:C,isSigner:!0,isWritable:!1}],data:b.from(H)}),L=new h;L.feePayer=z,Number.isFinite(q)&&q>0&&L.add(W.setComputeUnitLimit({units:Math.floor(q)})),Number.isFinite(w)&&w>0&&L.add(W.setComputeUnitPrice({microLamports:Math.floor(w)})),L.add(le);const de=String(t.network||"solana").toLowerCase();L.recentBlockhash=await d(de);const G=v=>{if(!v)return"Unknown error";const _=typeof v?.message=="string"?v.message:String(v),D=typeof v?.name=="string"?v.name:"";return D&&D!=="Error"&&!_.startsWith(D)?`${D}: ${_}`:_},K=async()=>{if(!c)return;const v=await c([L]);return Array.isArray(v)?v[0]:void 0};let O;try{i?O=await i(L):O=await K()}catch(v){if(i&&c)try{O=await K()}catch(_){throw new Error(`Solana wallet signing failed: ${G(v)} (fallback failed: ${G(_)})`)}else throw new Error(`Solana wallet signing failed: ${G(v)}`)}if(!O)throw new Error("Solana wallet did not return a signed transaction");const ce=O.serialize({requireAllSignatures:!1,verifySignatures:!1}),Q=b.from(ce).toString("base64"),ue={x402Version:1,scheme:t.scheme||"exact",network:t.network||"solana",payload:{serializedTransaction:Q,transaction:Q}};return btoa(JSON.stringify(ue))}const Ue=X({name:"X402PayOrderDialog",components:{ElDialog:x,ElButton:ie,ElAlert:ae,ElTag:se,ElIcon:ve,ElRadioGroup:we,ElRadioButton:ge,CreditCard:fe},props:{modelValue:{type:Object,required:!0},session:{type:Object,default:void 0},visible:{type:Boolean,default:!1}},emits:["hide","update:modelValue"],data(){return{signing:!1,paying:!1,chainId:void 0,selectedNetwork:void 0,solanaWalletModalVisible:!1,solanaWalletConnecting:!1,evmWalletModalVisible:!1,evmWalletConnecting:!1,evmWallets:[],selectedEvmWalletId:void 0,evmAddress:void 0,requirementsLoading:!1,runtimeRequirementsByNetwork:{},requirementsAttemptedByNetwork:{}}},computed:{dialogWidth(){return Ee()?"100%":"680px"},acceptsList(){const e=this.session?.accepts;if(Array.isArray(e)&&e.length>0)return e.filter(s=>!!(s&&typeof s=="object"));const t=this.paymentRequirements;return Array.isArray(t)&&t.length>0?t.filter(s=>!!(s&&typeof s=="object")):t&&typeof t=="object"?[t]:[]},selectedNetworkResolved(){return String(this.selectedNetwork||this.acceptsList[0]?.network||"base").toLowerCase()},selectedRequirements(){const e=String(this.selectedNetworkResolved||"").toLowerCase();if(!e)return this.acceptsList[0];const t=this.runtimeRequirementsByNetwork[e];if(t)return t;const s=this.acceptsList.find(i=>String(i.network||"").toLowerCase()===e);if(s)return s;if(!this.selectedNetwork)return this.acceptsList[0]},orderMetadata(){const e=this.modelValue?.metadata;return e&&typeof e=="object"?e:void 0},paymentRequirements(){const e=this.session?.payment_requirements||this.session?.paymentRequirements;if(e&&typeof e=="object")return e;const t=this.orderMetadata?.payment_requirements||this.orderMetadata?.paymentRequirements;if(t&&typeof t=="object")return t},expectedNetwork(){return this.selectedNetworkResolved},expectedNetworkLabel(){return this.formatNetworkLabel(this.expectedNetwork)},isSolanaNetwork(){return!!String(this.selectedNetworkResolved||"").toLowerCase().startsWith("solana")},expectedChainIdHex(){const e={base:"0x2105","base-sepolia":"0x14A34",ethereum:"0x1",sepolia:"0xAA36A7",polygon:"0x89",arbitrum:"0xA4B1",optimism:"0xA",bsc:"0x38",avalanche:"0xA86A"},t=(this.expectedNetwork||"").toLowerCase();return e[t]},networkMismatch(){return this.isSolanaNetwork?!1:!!(this.evmAddress&&this.chainId&&this.expectedChainIdHex&&this.chainId.toLowerCase()!==this.expectedChainIdHex.toLowerCase())},hasEvmProvider(){return this.isSolanaNetwork?!1:this.evmWalletsOrdered.length>0},requirementsAvailable(){return!!this.selectedRequirements},networkOptions(){const e=new Set(this.acceptsList.map(s=>String(s.network||"").toLowerCase()).filter(Boolean));if(e.size===0)return[{network:"base",label:"Base"},{network:"solana",label:"Solana"}];const t=s=>s==="base"?0:s.startsWith("solana")?1:2;return Array.from(e).sort((s,i)=>t(s)-t(i)||s.localeCompare(i)).map(s=>({network:s,label:this.formatNetworkLabel(s)}))},paymentSteps(){const e=this.expectedNetworkLabel||this.expectedNetwork||"";return[String(this.$t("order.message.x402Step1")),String(this.$t("order.message.x402Step2",{network:e})),String(this.$t("order.message.x402Step3")),String(this.$t("order.message.x402Step4"))]},evmConnected(){return!!(this.selectedEvmWalletId&&this.evmAddress)},evmProvider(){if(this.selectedEvmWalletId)return this.evmWallets.find(e=>e.id===this.selectedEvmWalletId)?.provider},selectedEvmWalletName(){if(this.selectedEvmWalletId)return this.evmWallets.find(e=>e.id===this.selectedEvmWalletId)?.name},selectedEvmWalletIcon(){if(this.selectedEvmWalletId)return this.evmWallets.find(e=>e.id===this.selectedEvmWalletId)?.icon},evmWalletsOrdered(){return[...this.evmWallets].sort((e,t)=>e.name.localeCompare(t.name))},solanaConnected(){return!!this.$wallet?.connected?.value},solanaAddress(){const e=this.$wallet?.publicKey?.value;if(!(!e||typeof e.toBase58!="function"))return e.toBase58()},solanaWalletsOrdered(){const e=this.$wallet?.wallets?.value??[],t=s=>s==="Installed"?0:s==="Loadable"?1:s==="NotDetected"?2:3;return[...e].sort((s,i)=>t(s.readyState)-t(i.readyState))},selectedSolanaWalletName(){return this.$wallet?.wallet?.value?.adapter?.name},selectedSolanaWalletIcon(){return this.$wallet?.wallet?.value?.adapter?.icon}},watch:{visible(e){if(!e){this.solanaWalletModalVisible=!1,this.evmWalletModalVisible=!1;return}if(!this.selectedNetwork){const i=this.acceptsList[0]?.network;this.selectedNetwork=String(i||"base").toLowerCase()}const t=new Set(this.networkOptions.map(i=>i.network)),s=String(this.selectedNetwork||"").toLowerCase();if(s&&!t.has(s)){const i=this.networkOptions[0]?.network;i&&(this.selectedNetwork=i)}this.maybeLoadRequirements()},selectedNetwork(){this.visible&&this.maybeLoadRequirements()}},mounted(){this.refreshEvmWallets()},methods:{sleep(e){return new Promise(t=>setTimeout(t,e))},getErrorMessage(e){if(!e)return"";if(typeof e=="string")return e;if(typeof e?.message=="string")return e.message;try{return JSON.stringify(e)}catch{return String(e)}},isRetryableSolanaConnectError(e){if(String(e?.name||"")==="WalletNotSelectedError")return!0;const s=this.getErrorMessage(e).toLowerCase();return s.includes("disconnected port object")||s.includes("failed to send message to service worker")||s.includes("message port closed")||s.includes("extension context invalidated")},async connectSolanaWalletWithRetry(e){const t=this.$wallet;if(!t)throw new Error("Wallet API not available");const s=2;let i;for(let c=1;c<=s;c+=1)try{e&&t.select(e),await Ce(),await t.connect();return}catch(d){if(i=d,c<s&&this.isRetryableSolanaConnectError(d)){const h=String(d?.name||"")==="WalletNotSelectedError"?0:300;h&&await this.sleep(h);continue}throw d}throw i},formatNetworkLabel(e){const t=String(e||"").toLowerCase();return t==="base"?"Base":t==="solana"?"Solana":t==="solana-devnet"?"Solana Devnet":t==="ethereum"?"Ethereum":t==="sepolia"?"Sepolia":t==="polygon"?"Polygon":t==="arbitrum"?"Arbitrum":t==="optimism"?"Optimism":t==="bsc"?"BNB Chain":t==="avalanche"?"Avalanche":e||"Unknown"},async confirmPay(e){const t=e||this.expectedNetworkLabel||this.expectedNetwork||"",s=String(this.$t?.("order.message.x402ConfirmTitle")||"Confirm Payment"),i=String(this.$t?.("order.message.x402ConfirmDesc",{network:t})||`Confirm USDC payment on ${t}?`),c=String(this.$t?.("common.button.pay")||"Pay"),d=String(this.$t?.("common.button.cancel")||"Cancel");return be.confirm(i,s,{confirmButtonText:c,cancelButtonText:d,type:"warning"}).then(()=>!0).catch(()=>!1)},async onSelectSolanaWallet(e){if(!this.solanaWalletConnecting&&e?.adapter?.name){this.solanaWalletConnecting=!0;try{await this.connectSolanaWalletWithRetry(e.adapter.name),this.solanaWalletModalVisible=!1}catch(t){console.warn("wallet connect failed",t),E.error(String(this.$t?.("coin.message.connectError")||"Wallet connect failed"))}finally{this.solanaWalletConnecting=!1}}},async disconnectSolanaWallet(){try{await this.$wallet.disconnect()}catch{}},openEvmWalletModal(){this.evmWalletModalVisible=!0,this.refreshEvmWallets()},async refreshEvmWallets(){if(typeof window>"u")return;const e=new Map,t=s=>{const i=s?.detail,c=i?.info,d=i?.provider;if(!c||!d)return;const r=String(c.uuid||c.rdns||c.name||"");r&&(e.has(r)||e.set(r,{id:r,name:String(c.name||"Wallet"),icon:typeof c.icon=="string"?c.icon:void 0,provider:d}))};try{window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),await new Promise(s=>window.setTimeout(s,120))}finally{window.removeEventListener("eip6963:announceProvider",t)}if(e.size===0){const s=window.ethereum;(Array.isArray(s?.providers)?s.providers:s?[s]:[]).forEach((c,d)=>{if(!c)return;let r="Injected";c.isMetaMask?r="MetaMask":c.isCoinbaseWallet?r="Coinbase Wallet":c.isBraveWallet?r="Brave Wallet":c.isRabby?r="Rabby":c.isPhantom&&(r="Phantom");const h=`injected:${r}:${d}`;e.set(h,{id:h,name:r,icon:void 0,provider:c})})}this.evmWallets=Array.from(e.values())},async onSelectEvmWallet(e){if(e?.provider){this.evmWalletModalVisible=!1,this.evmWalletConnecting=!0;try{const t=await e.provider.request({method:"eth_requestAccounts"}),s=Array.isArray(t)?t[0]:void 0;if(!s)throw new Error("No account returned from wallet");this.selectedEvmWalletId=e.id,this.evmAddress=s,await this.refreshChainId(),await this.ensureNetwork()}catch(t){console.warn("EVM wallet connect failed",t),E.error(String(this.$t?.("coin.message.connectError")||"Wallet connect failed")),this.disconnectEvmWallet()}finally{this.evmWalletConnecting=!1}}},disconnectEvmWallet(){this.selectedEvmWalletId=void 0,this.evmAddress=void 0,this.chainId=void 0},async getFreshRequirements(){const e=this.selectedRequirements;if(e)return e;try{const s=(await V.pay(this.modelValue.id,{pay_way:"X402"}))?.data,i=Array.isArray(s?.accepts)?s.accepts:void 0,c=String(this.selectedNetworkResolved||"").toLowerCase();if(Array.isArray(i)&&i.length){const r=i.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:i[0])}const d=s?.payment_requirements;if(Array.isArray(d)&&d.length){const r=d.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:d[0])}return d&&typeof d=="object"?d:void 0}catch(t){const s=t?.response?.data;if(s){const i=Array.isArray(s?.accepts)?s.accepts:void 0,c=String(this.selectedNetworkResolved||"").toLowerCase();if(Array.isArray(i)&&i.length){const r=i.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:i[0])}const d=s?.payment_requirements;if(Array.isArray(d)&&d.length){const r=d.find(h=>String(h?.network||"").toLowerCase()===c);return r||(this.selectedNetwork?void 0:d[0])}if(d&&typeof d=="object")return d}return}},async maybeLoadRequirements(e=!1){const t=String(this.selectedNetworkResolved||"").toLowerCase();if(!(!t||this.runtimeRequirementsByNetwork[t]||this.acceptsList.some(i=>String(i.network||"").toLowerCase()===t))&&!(!e&&this.requirementsAttemptedByNetwork[t])){this.requirementsAttemptedByNetwork[t]=!0,this.requirementsLoading=!0;try{const i=await this.getFreshRequirements();i&&(this.runtimeRequirementsByNetwork[t]=i)}finally{this.requirementsLoading=!1}}},async refreshChainId(){if(this.evmProvider)try{const e=await this.evmProvider.request({method:"eth_chainId"});typeof e=="string"&&(this.chainId=e)}catch{}},async ensureNetwork(){if(!(!this.evmProvider||!this.expectedChainIdHex)&&(await this.refreshChainId(),!(this.chainId&&this.chainId.toLowerCase()===this.expectedChainIdHex.toLowerCase()))){try{await this.evmProvider.request({method:"wallet_switchEthereumChain",params:[{chainId:this.expectedChainIdHex}]})}catch{try{await this.evmProvider.request({method:"wallet_addEthereumChain",params:[this.getExpectedChainParams()]})}catch(e){console.error("Failed to add Ethereum chain:",e);try{const t=this.$t&&this.$t("order.message.x402NetworkSwitchFailed")||"Your wallet does not support automatic network switching. Please switch to the required network in the wallet and try again.";E.warning(t)}catch{}}}await this.refreshChainId()}},getExpectedChainParams(){const e={base:{chainId:"0x2105",chainName:"Base",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://mainnet.base.org"],blockExplorerUrls:["https://basescan.org"]},"base-sepolia":{chainId:"0x14A34",chainName:"Base Sepolia",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://sepolia.base.org"],blockExplorerUrls:["https://sepolia.basescan.org"]}},t=(this.expectedNetwork||"").toLowerCase();return e[t]||{chainId:this.expectedChainIdHex}},buildTypedData(e,t){const s=e?.extra||{};return{types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],TransferWithAuthorization:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"validAfter",type:"uint256"},{name:"validBefore",type:"uint256"},{name:"nonce",type:"bytes32"}]},primaryType:"TransferWithAuthorization",domain:{name:s?.name||"USD Coin",version:s?.version||"2",chainId:parseInt(this.expectedChainIdHex||"0x0",16),verifyingContract:e.asset},message:t}},randomNonce32(){const e=new Uint8Array(32);return crypto.getRandomValues(e),"0x"+Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")},async onPayWithSolanaWallet(){if(!this.modelValue?.id)return;const e=this.solanaAddress;if(!e){E.error(String(this.$t?.("order.message.x402NeedConnectAccount")||"Please connect a wallet first."));return}if(!this.requirementsAvailable){E.error(String(this.$t?.("order.message.x402SolanaNotEnabled")||"Solana payment is not available."));return}this.signing=!0;try{if(!await this.confirmPay(this.expectedNetworkLabel))return;let s=await this.getFreshRequirements();if(s||(s=this.selectedRequirements),!s){E.error(String(this.$t?.("order.message.x402PaymentFailed")||"X402 payment failed."));return}const i=this.$wallet?.wallet?.value?.adapter;if(!i?.signTransaction&&!i?.signAllTransactions)throw new Error("Wallet does not support signing transactions");const c=await He({requirements:s,payerAddress:e,signTransaction:i.signTransaction?i.signTransaction.bind(i):void 0,signAllTransactions:i.signAllTransactions?i.signAllTransactions.bind(i):void 0,fetchLatestBlockhash:r=>this.fetchSolanaLatestBlockhash(r)});this.paying=!0;const{data:d}=await V.payX402WithHeader(this.modelValue.id,{pay_way:"X402"},c);this.$emit("update:modelValue",d),this.$emit("hide")}catch(t){const s=t?.response?.data,i=s?.error||s?.detail||"X402 wallet payment failed.";E.error(String(i))}finally{this.signing=!1,this.paying=!1}},async fetchSolanaLatestBlockhash(e){const{data:t}=await me.get("/x402/solana/latest-blockhash/",{params:{network:e||"solana"}}),s=t?.blockhash;if(!s||typeof s!="string")throw new Error("Invalid blockhash response");return s},async onPayWithWallet(){if(!this.modelValue?.id||!this.evmProvider||!this.evmAddress){const e=this.$t&&this.$t("order.message.x402PaymentFailed")||"X402 wallet payment is not available right now. Please try again later.";E.error(e);return}this.signing=!0;try{let e=await this.getFreshRequirements();if(e||(e=this.selectedRequirements),!e){const S=this.$t&&this.$t("order.message.x402PaymentFailed")||"X402 wallet payment failed. Please try again later.";E.error(S);return}if(await this.ensureNetwork(),this.networkMismatch){E.warning(String(this.$t?.("order.message.x402SwitchNetwork",{network:this.expectedNetworkLabel||this.expectedNetwork})||"Please switch your wallet network and try again."));return}if(!await this.confirmPay(this.expectedNetworkLabel))return;const s=Math.floor(Date.now()/1e3),i=Number(e?.maxTimeoutSeconds||e?.max_timeout_seconds||120),c=BigInt(e?.maxAmountRequired||e?.max_amount_required||0).toString(),d={from:this.evmAddress,to:e.payTo||e.pay_to,value:c,validAfter:s,validBefore:s+i,nonce:this.randomNonce32()},r=this.buildTypedData(e,d),h=await this.evmProvider.request({method:"eth_signTypedData_v4",params:[this.evmAddress,JSON.stringify(r)]}),W={from:d.from,to:d.to,value:d.value,validAfter:String(d.validAfter),validBefore:String(d.validBefore),nonce:d.nonce},$={x402Version:1,scheme:e.scheme||"exact",network:e.network||this.expectedNetwork||"base",payload:{authorization:W,signature:h}},b=btoa(JSON.stringify($));this.paying=!0;const{data:k}=await V.payX402WithHeader(this.modelValue.id,{pay_way:"X402"},b);this.$emit("update:modelValue",k),this.$emit("hide")}catch(e){let t;const s=e?.response?.data;if(s){const i=s?.error||s?.detail;typeof i=="string"&&(t=i)}t||(t=this.$t&&this.$t("order.message.x402PaymentFailed")||"X402 wallet payment failed. Please try again later.");try{E.error(t)}catch{}}finally{this.signing=!1,this.paying=!1}}}}),xe={class:"x402-content"},ze={class:"x402-intro"},je={class:"x402-intro-text"},Ge={class:"x402-wallet"},Je={class:"x402-wallet-head"},Ke={class:"x402-network"},Qe={class:"x402-network-label"},Ye={key:1,class:"x402-requirements-actions"},Ze={class:"x402-wallet-card"},et={class:"x402-wallet-card-head"},tt={key:0,class:"x402-wallet-card-sub x402-wallet-name"},st=["src","alt"],at={key:1,class:"x402-wallet-card-sub"},it={class:"x402-wallet-card-actions"},rt={class:"x402-actions"},nt={class:"x402-wallet-card"},ot={class:"x402-wallet-card-head"},lt={key:0,class:"x402-wallet-card-sub x402-wallet-name"},dt=["src","alt"],ct={key:1,class:"x402-wallet-card-sub"},ut={class:"x402-wallet-card-actions"},pt={class:"x402-actions"},ht={class:"x402-steps"},mt={class:"x402-steps-title"},yt={class:"x402-steps-list"},ft={class:"x402-step-index"},gt={class:"x402-step-text"},wt={class:"wallet-list"},vt=["disabled","onClick"],bt=["src","alt"],kt={class:"wallet-list-name"},Pt={key:1,class:"wallet-list-status"},St={class:"wallet-list"},Wt=["disabled","onClick"],$t=["src","alt"],Ct={class:"wallet-list-name"},At={key:0,class:"text-center text-[13px] text-[var(--el-text-color-regular)]"};function _t(e,t,s,i,c,d){const r=f("credit-card"),h=f("el-icon"),W=f("el-radio-button"),$=f("el-radio-group"),b=f("el-alert"),k=f("el-button"),S=f("el-tag"),C=f("el-dialog");return a(),p(R,null,[u(C,{"model-value":e.visible,title:e.$t("order.title.x402"),width:e.dialogWidth,top:"8vh",class:"x402-dialog"},{default:n(()=>[o("section",xe,[o("header",ze,[u(h,{size:20,class:"x402-intro-icon"},{default:n(()=>[u(r)]),_:1}),o("p",je,l(e.$t("order.message.x402IntroShort")),1)]),o("section",Ge,[o("div",Je,[o("div",Ke,[o("span",Qe,l(e.$t("order.message.x402IntegrationNetworkLabel")),1),u($,{modelValue:e.selectedNetwork,"onUpdate:modelValue":t[0]||(t[0]=m=>e.selectedNetwork=m),size:"small",class:"x402-network-group"},{default:n(()=>[(a(!0),p(R,null,T(e.networkOptions,m=>(a(),g(W,{key:m.network,label:m.network},{default:n(()=>[P(l(m.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),e.selectedNetworkResolved==="solana"&&!e.selectedRequirements&&!e.requirementsLoading?(a(),g(b,{key:0,type:"info",closable:!1,class:"x402-alert",description:e.$t("order.message.x402SolanaNotEnabled")},null,8,["description"])):y("",!0),!e.selectedRequirements&&!e.requirementsLoading?(a(),p("div",Ye,[u(k,{link:"",type:"primary",size:"small",onClick:t[1]||(t[1]=m=>e.maybeLoadRequirements(!0))},{default:n(()=>[P(l(e.$t("common.button.refresh")),1)]),_:1})])):y("",!0),e.isSolanaNetwork?(a(),p(R,{key:2},[o("div",Ze,[o("div",et,[t[5]||(t[5]=o("span",{class:"x402-wallet-card-title"},"Solana Wallet",-1)),e.solanaConnected?(a(),g(S,{key:0,class:"x402-wallet-card-tag"},{default:n(()=>[P(l(e.$t("order.message.x402WalletConnected")),1)]),_:1})):y("",!0)]),e.solanaConnected&&e.selectedSolanaWalletName?(a(),p("div",tt,[e.selectedSolanaWalletIcon?(a(),p("img",{key:0,class:"wallet-list-icon",src:e.selectedSolanaWalletIcon,alt:e.selectedSolanaWalletName},null,8,st)):y("",!0),o("span",null,l(e.selectedSolanaWalletName),1)])):y("",!0),e.solanaConnected&&e.solanaAddress?(a(),p("div",at,l(e.solanaAddress.substring(0,10))+"..."+l(e.solanaAddress.substring(e.solanaAddress.length-10)),1)):y("",!0),o("div",it,[e.solanaConnected?(a(),g(k,{key:1,onClick:e.disconnectSolanaWallet},{default:n(()=>[P(l(e.$t("coin.button.disconnect")),1)]),_:1},8,["onClick"])):(a(),g(k,{key:0,type:"primary",onClick:t[2]||(t[2]=m=>e.solanaWalletModalVisible=!0)},{default:n(()=>[P(l(e.$t("order.message.x402ConnectWallet")),1)]),_:1}))])]),o("div",rt,[u(k,{type:"primary",disabled:!e.solanaConnected||!e.solanaAddress||!e.requirementsAvailable,loading:e.signing||e.paying,onClick:e.onPayWithSolanaWallet},{default:n(()=>[P(l(e.$t("order.message.x402WalletPayCta")),1)]),_:1},8,["disabled","loading","onClick"])])],64)):(a(),p(R,{key:3},[o("div",nt,[o("div",ot,[t[6]||(t[6]=o("span",{class:"x402-wallet-card-title"},"EVM Wallet",-1)),e.evmConnected?(a(),g(S,{key:0,class:"x402-wallet-card-tag"},{default:n(()=>[P(l(e.$t("order.message.x402WalletConnected")),1)]),_:1})):y("",!0)]),e.evmConnected&&e.selectedEvmWalletName?(a(),p("div",lt,[e.selectedEvmWalletIcon?(a(),p("img",{key:0,class:"wallet-list-icon",src:e.selectedEvmWalletIcon,alt:e.selectedEvmWalletName},null,8,dt)):y("",!0),o("span",null,l(e.selectedEvmWalletName),1)])):y("",!0),e.evmConnected&&e.evmAddress?(a(),p("div",ct,l(e.evmAddress.substring(0,10))+"..."+l(e.evmAddress.substring(e.evmAddress.length-10)),1)):y("",!0),o("div",ut,[e.evmConnected?(a(),g(k,{key:1,onClick:e.disconnectEvmWallet},{default:n(()=>[P(l(e.$t("coin.button.disconnect")),1)]),_:1},8,["onClick"])):(a(),g(k,{key:0,type:"primary",onClick:e.openEvmWalletModal},{default:n(()=>[P(l(e.$t("order.message.x402ConnectWallet")),1)]),_:1},8,["onClick"]))])]),e.hasEvmProvider?e.networkMismatch?(a(),g(b,{key:1,type:"warning",closable:!1,"show-icon":"",class:"x402-alert",title:e.$t("order.message.x402SwitchNetwork",{network:e.expectedNetworkLabel||e.expectedNetwork})},null,8,["title"])):y("",!0):(a(),g(b,{key:0,type:"info",closable:!1,class:"x402-alert",description:e.$t("order.message.x402NoWalletDesc")},null,8,["description"])),o("div",pt,[e.hasEvmProvider?(a(),g(k,{key:0,type:"primary",disabled:!e.evmConnected||!e.requirementsAvailable||e.networkMismatch,loading:e.signing||e.paying,onClick:e.onPayWithWallet},{default:n(()=>[P(l(e.$t("order.message.x402WalletPayCta")),1)]),_:1},8,["disabled","loading","onClick"])):y("",!0)])],64)),o("div",ht,[o("div",mt,l(e.$t("order.message.x402StepsTitle")),1),o("ol",yt,[(a(!0),p(R,null,T(e.paymentSteps,(m,A)=>(a(),p("li",{key:A,class:"x402-step"},[o("span",ft,l(A+1),1),o("span",gt,l(m),1)]))),128))])])])])]),_:1},8,["model-value","title","width"]),u(C,{modelValue:e.solanaWalletModalVisible,"onUpdate:modelValue":t[3]||(t[3]=m=>e.solanaWalletModalVisible=m),title:e.$t("order.message.x402ConnectWallet"),width:"420px","align-center":""},{default:n(()=>[o("div",wt,[(a(!0),p(R,null,T(e.solanaWalletsOrdered,m=>(a(),p("button",{key:m.adapter.name,class:"wallet-list-item",disabled:e.solanaWalletConnecting,onClick:A=>e.onSelectSolanaWallet(m)},[m.adapter.icon?(a(),p("img",{key:0,class:"wallet-list-icon",src:m.adapter.icon,alt:m.adapter.name},null,8,bt)):y("",!0),o("span",kt,l(m.adapter.name),1),m.readyState==="Installed"?(a(),p("span",Pt,"Detected")):y("",!0)],8,vt))),128))])]),_:1},8,["modelValue","title"]),u(C,{modelValue:e.evmWalletModalVisible,"onUpdate:modelValue":t[4]||(t[4]=m=>e.evmWalletModalVisible=m),title:e.$t("order.message.x402ConnectWallet"),width:"420px","align-center":""},{default:n(()=>[o("div",St,[(a(!0),p(R,null,T(e.evmWalletsOrdered,m=>(a(),p("button",{key:m.id,class:"wallet-list-item",disabled:e.evmWalletConnecting,onClick:A=>e.onSelectEvmWallet(m)},[m.icon?(a(),p("img",{key:0,class:"wallet-list-icon",src:m.icon,alt:m.name},null,8,$t)):y("",!0),o("span",Ct,l(m.name),1),t[7]||(t[7]=o("span",{class:"wallet-list-status"},"Detected",-1))],8,Wt))),128)),e.evmWalletsOrdered.length===0?(a(),p("div",At,l(e.$t("order.message.x402NoWalletDesc")),1)):y("",!0)])]),_:1},8,["modelValue","title"])],64)}const Et=M(Ue,[["render",_t],["__scopeId","data-v-43eb4bb3"]]),Nt=7e3,Z=2e3;var re=(e=>(e.WechatPay="WechatPay",e.Stripe="Stripe",e.AliPay="AliPay",e.X402="X402",e))(re||{});const It=X({name:"ConsoleOrderDetail",components:{ElButton:ie,CopyToClipboard:_e,ElRow:te,ElCard:$e,ElCol:ee,ElSkeleton:We,ElDivider:Se,ElAlert:ae,ElDescriptions:Pe,ElDescriptionsItem:ke,ElTag:se,WechatPayOrder:De,StripePayOrder:qe,AlipayPayOrder:Fe,X402PayOrder:Et},data(){return{PayWay:re,payWay:"WechatPay",OrderState:N,order:void 0,x402Session:void 0,showPayWays:!0,loading:!1,paying:!1,prepaying:!1}},computed:{config(){return this.$store.getters.config},id(){return this.$route.params?.id?.toString()},redirect(){return this.$route.query?.redirect},pricingInfo(){const e=this.order?.metadata?.pricing||{},t=S=>typeof S=="number"&&Number.isFinite(S)?S:void 0,s=t(e?.original_price),i=t(e?.discounted_price),c=t(e?.discount_rate),d=t(e?.discount_rate_vip),r=t(e?.discount_rate_x402),h=t(this.order?.price),W=s??h??0,$=i??h??W,b=t(this.order?.discount)??c??0,k=Array.isArray(e?.discounted_methods)?e.discounted_methods.filter(S=>typeof S=="string"&&S.length>0):[];return{original:W,discounted:$,discountRate:b,discountedMethods:k,discountRateVip:d,discountRateX402:r}},appliedDiscountMethods(){return this.pricingInfo.discountedMethods||[]},hasVipApplied(){return this.appliedDiscountMethods.includes("vip")},hasX402Applied(){return this.appliedDiscountMethods.includes("x402")},pendingX402Preview(){return this.payWay==="X402"&&this.order?.pay_way!=="X402"&&this.x402DiscountRate>0},finalOriginalPrice(){return this.pricingInfo.original||0},baseEffectivePrice(){const e=this.order?.price;return typeof e=="number"&&Number.isFinite(e)?e:this.pricingInfo.discounted},previewX402Price(){const e=this.baseEffectivePrice||0,t=this.x402DiscountRate;return!t||t<=0?e:e*(1-t)},finalDiscountedPrice(){return this.pendingX402Preview?this.previewX402Price:this.baseEffectivePrice},showOriginalPrice(){return this.finalOriginalPrice<=0?!1:this.finalOriginalPrice>this.finalDiscountedPrice},totalDiscountRate(){const e=this.pricingInfo.discountRate??0;return this.pendingX402Preview?1-(1-e)*(1-this.x402DiscountRate):e},hasAnyDiscount(){return this.totalDiscountRate>0},discountBadges(){const e=[];return this.hasVipApplied&&this.vipDiscountPercent&&e.push({key:"vip",text:this.$t("order.message.discountTag",{percent:this.vipDiscountPercent}).toString(),type:"success"}),this.shouldDisplayX402Badge&&this.x402BadgePercent&&e.push({key:"x402",text:this.$t("order.message.x402DiscountTag",{percent:this.x402BadgePercent}).toString(),type:"success"}),e},discountHints(){const e=[];return this.hasVipApplied&&this.vipDiscountPercent&&e.push(this.$t("order.message.discountHint",{percent:this.vipDiscountPercent}).toString()),this.hasX402Applied&&this.x402AppliedPercent?e.push(this.$t("order.message.x402DiscountApplied",{percent:this.x402AppliedPercent}).toString()):this.pendingX402Preview&&this.x402BadgePercent&&e.push(this.$t("order.message.x402DiscountHint",{percent:this.x402BadgePercent}).toString()),e},x402DiscountRate(){const e=this.config?.features?.DISCOUNT_FOR_X402;return typeof e=="number"&&Number.isFinite(e)&&e>0?e:0},vipDiscountPercent(){const e=(this.pricingInfo.discountRateVip??0)*100;return!Number.isFinite(e)||e<=0?"":Number.isInteger(e)?e.toFixed(0):e.toFixed(1)},x402AppliedPercent(){const t=(this.pricingInfo.discountRateX402??0)*100;return!Number.isFinite(t)||t<=0?"":Number.isInteger(t)?t.toFixed(0):t.toFixed(1)},x402BadgePercent(){const t=(this.hasX402Applied?this.pricingInfo.discountRateX402??this.x402DiscountRate:this.x402DiscountRate)*100;return!Number.isFinite(t)||t<=0?"":Number.isInteger(t)?t.toFixed(0):t.toFixed(1)},shouldDisplayX402Badge(){return this.hasX402Applied||this.pendingX402Preview},shouldShowPriceBlock(){return this.finalOriginalPrice>0||this.finalDiscountedPrice>0||this.hasAnyDiscount||this.pendingX402Preview},orderFailedReason(){if(!this.order||this.order.state!==N.FAILED)return;const t=(this.order.metadata||{})?.x402?.last_error||{};return(typeof t.reason=="string"?t.reason.trim():"")||void 0}},watch:{paying(e){e?this.startOrderPolling():this.stopOrderPolling()},order:{handler(e){if(e?.state===N.PAID){this.x402Session=void 0,setTimeout(()=>{this.redirect&&window.location.replace(this.redirect?.toString())},2e3);return}e?.state&&e.state!==N.PENDING&&e.state!==N.FAILED&&(this.x402Session=void 0)},deep:!0},payWay(e){e!=="X402"&&(this.x402Session=void 0)}},created(){this._orderRefreshTimer=void 0},mounted(){this.onFetchData()},beforeUnmount(){this.stopOrderPolling()},methods:{getPriceString:Ae,startOrderPolling(e=0){this.stopOrderPolling();const t=async()=>{try{const{data:s}=await V.refresh(this.id);if(this.order=s,s?.state===N.PAID||s?.state===N.FAILED||s?.state===N.EXPIRED){this.paying=!1,this.stopOrderPolling();return}}catch{}this.paying&&(this._orderRefreshTimer=window.setTimeout(t,Nt))};this._orderRefreshTimer=window.setTimeout(t,e)},stopOrderPolling(){const e=this._orderRefreshTimer;e&&(clearTimeout(e),this._orderRefreshTimer=void 0)},onFetchData(){this.loading=!0,V.refresh(this.id).then(({data:e})=>{this.order=e,e.pay_way&&(this.payWay=e.pay_way),this.loading=!1}).catch(()=>{this.loading=!1})},onRepay(){this.payWay==="X402"&&(this.x402Session=void 0),this.paying=!0,this.startOrderPolling()},onPay(){this.prepaying=!0,this.payWay==="X402"&&(this.x402Session=void 0),V.pay(this.id,{pay_way:this.payWay}).then(({data:e})=>{if(this.prepaying=!1,e?.id&&(this.order=e),this.payWay==="X402"&&e){const t=e;t.accepts&&(this.x402Session=t)}(this.order&&this.order.price&&this.order.price>0||this.payWay==="X402")&&(this.paying=!0,this.startOrderPolling(Z))}).catch(e=>{this.prepaying=!1;const t=e?.response?.data;if(this.payWay==="X402"&&t){this.x402Session=t,this.paying=!0,this.startOrderPolling(Z);return}})}}}),Rt={class:"title"},Vt={key:0,class:"pt-5"},Dt={key:1,class:"order"},Lt={key:0},Tt={key:1},Bt={key:2},qt={key:3},Ot={key:0,class:"price-block"},Mt={class:"price-line"},Xt={key:0,class:"price original"},Ft={class:"price current unfree"},Ht={key:1,class:"price free"},Ut={key:0,class:"payways mb-6"},xt={class:"payname"},zt={class:"payname"},jt={class:"payname"},Gt={class:"payname"},Jt={key:1},Kt={key:2};function Qt(e,t,s,i,c,d){const r=f("el-col"),h=f("el-row"),W=f("el-skeleton"),$=f("copy-to-clipboard"),b=f("el-descriptions-item"),k=f("el-tag"),S=f("el-descriptions"),C=f("el-divider"),m=f("el-alert"),A=f("el-button"),I=f("el-card"),B=f("wechat-pay-order"),z=f("stripe-pay-order"),j=f("alipay-pay-order"),q=f("x402-pay-order");return a(),g(h,{class:"panel"},{default:n(()=>[u(r,{span:24},{default:n(()=>[u(h,null,{default:n(()=>[u(r,{span:24},{default:n(()=>[o("h2",Rt,l(e.$t("order.title.info")),1)]),_:1})]),_:1}),u(h,null,{default:n(()=>[u(r,{span:24},{default:n(()=>[u(I,{shadow:"hover"},{default:n(()=>[u(h,null,{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[e.loading?(a(),p("div",Vt,[u(W,{animated:""})])):(a(),p("div",Dt,[u(S,{column:1},{default:n(()=>[u(b,{label:e.$t("order.field.id")},{default:n(()=>[o("span",null,l(e.order?.id),1),e.order?.id?(a(),g($,{key:0,content:e.order?.id,class:"inline-block"},null,8,["content"])):y("",!0)]),_:1},8,["label"]),u(b,{label:e.$t("order.field.description")},{default:n(()=>[P(l(e.order?.description),1)]),_:1},8,["label"]),e.order?.application?.service?(a(),g(b,{key:0,label:e.$t("order.field.api")},{default:n(()=>[P(l(e.order?.application?.service?.title),1)]),_:1},8,["label"])):y("",!0),e.order?.pay_way?(a(),g(b,{key:1,label:e.$t("order.field.payWay")},{default:n(()=>[e.order?.pay_way===e.PayWay.WechatPay?(a(),p("span",Lt,l(e.$t("order.title.wechatPay")),1)):e.order?.pay_way===e.PayWay.Stripe?(a(),p("span",Tt,l(e.$t("order.title.stripe")),1)):e.order?.pay_way===e.PayWay.AliPay?(a(),p("span",Bt,l(e.$t("order.title.aliPay")),1)):e.order?.pay_way===e.PayWay.X402?(a(),p("span",qt,l(e.$t("order.title.x402")),1)):y("",!0)]),_:1},8,["label"])):y("",!0),u(b,{label:e.$t("order.field.createdAt")},{default:n(()=>[P(l(e.$dayjs.format(e.order?.created_at)),1)]),_:1},8,["label"]),u(b,{label:e.$t("order.field.price")},{default:n(()=>[e.shouldShowPriceBlock?(a(),p("div",Ot,[o("div",Mt,[e.showOriginalPrice?(a(),p("span",Xt,l(e.getPriceString({value:e.finalOriginalPrice})),1)):y("",!0),o("span",Ft,l(e.getPriceString({value:e.finalDiscountedPrice})),1),(a(!0),p(R,null,T(e.discountBadges,w=>(a(),g(k,{key:w.key,class:"discount-tag",effect:"light",size:"small",type:w.type},{default:n(()=>[P(l(w.text),1)]),_:2},1032,["type"]))),128))]),(a(!0),p(R,null,T(e.discountHints,(w,F)=>(a(),p("p",{key:F,class:"discount-hint"},l(w),1))),128))])):(a(),p("span",Ht,l(e.$t("order.message.free")),1))]),_:1},8,["label"])]),_:1})]))]),_:1})]),_:1}),e.order?.state===e.OrderState.PAID||e.order?.state===e.OrderState.FINISHED?(a(),g(h,{key:0,class:"mb-5"},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),u(m,{title:e.$t("order.message.paidSuccessfully"),type:"success","show-icon":"",closable:!1},null,8,["title"])]),_:1})]),_:1})):y("",!0),e.order?.state===e.OrderState.EXPIRED?(a(),g(h,{key:1,class:"mb-5"},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),u(m,{title:e.$t("order.message.orderExpired"),type:"error","show-icon":"",closable:!1},null,8,["title"])]),_:1})]),_:1})):y("",!0),e.order?.state===e.OrderState.FAILED?(a(),g(h,{key:2,class:"mb-5"},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),u(m,{title:e.$t("order.state.failed"),description:e.orderFailedReason,type:"error","show-icon":"",closable:!1},null,8,["title","description"])]),_:1})]),_:1})):y("",!0),e.order?.state===e.OrderState.PENDING?(a(),g(h,{key:3},{default:n(()=>[u(r,{span:16,offset:4},{default:n(()=>[u(C,{"border-style":"dashed"}),e.showPayWays&&e.order.price&&e.order.price>0&&!e.order.pay_way?(a(),p("div",Ut,[o("div",{class:U({payway:!0,wechatpay:!0,active:e.payWay===e.PayWay.WechatPay}),onClick:t[0]||(t[0]=w=>e.payWay=e.PayWay.WechatPay)},[t[12]||(t[12]=o("span",{class:"payicon wechatpay"},null,-1)),o("span",xt,l(e.$t("order.title.wechatPay")),1)],2),o("div",{class:U({payway:!0,alipay:!0,active:e.payWay===e.PayWay.AliPay}),onClick:t[1]||(t[1]=w=>e.payWay=e.PayWay.AliPay)},[t[13]||(t[13]=o("span",{class:"payicon alipay"},null,-1)),o("span",zt,l(e.$t("order.title.aliPay")),1)],2),o("div",{class:U({payway:!0,stripe:!0,active:e.payWay===e.PayWay.Stripe}),onClick:t[2]||(t[2]=w=>e.payWay=e.PayWay.Stripe)},[t[14]||(t[14]=o("span",{class:"payicon stripe"},null,-1)),o("span",jt,l(e.$t("order.title.stripe")),1)],2),o("div",{class:U({payway:!0,x402:!0,relative:!0,active:e.payWay===e.PayWay.X402}),onClick:t[3]||(t[3]=w=>e.payWay=e.PayWay.X402)},[t[15]||(t[15]=o("span",{class:"payicon x402"},null,-1)),o("span",Gt,l(e.$t("order.title.x402")),1),e.x402DiscountRate>0?(a(),g(k,{key:0,class:"absolute -top-2 right-0",effect:"light",size:"small",type:"success"},{default:n(()=>[P(l(e.$t("order.message.x402DiscountTag",{percent:e.x402BadgePercent})),1)]),_:1})):y("",!0)],2)])):y("",!0),e.order?.pay_way?(a(),p("div",Kt,[u(A,{type:"primary",round:"",size:"large",class:"btn-repay",onClick:e.onRepay},{default:n(()=>[P(l(e.$t("common.button.repay")),1)]),_:1},8,["onClick"])])):(a(),p("div",Jt,[u(A,{loading:e.prepaying,round:"",type:"primary",size:"large",class:"btn-pay",onClick:e.onPay},{default:n(()=>[P(l(e.$t("common.button.pay")),1)]),_:1},8,["loading","onClick"])]))]),_:1})]),_:1})):y("",!0)]),_:1})]),_:1})]),_:1}),u(h,null,{default:n(()=>[u(r,{span:24},{default:n(()=>[e.order&&e.payWay===e.PayWay.WechatPay?(a(),g(B,{key:0,modelValue:e.order,"onUpdate:modelValue":t[4]||(t[4]=w=>e.order=w),visible:e.paying,onHide:t[5]||(t[5]=w=>e.paying=!1)},null,8,["modelValue","visible"])):y("",!0),e.order&&e.payWay===e.PayWay.Stripe?(a(),g(z,{key:1,modelValue:e.order,"onUpdate:modelValue":t[6]||(t[6]=w=>e.order=w),visible:e.paying,onHide:t[7]||(t[7]=w=>e.paying=!1)},null,8,["modelValue","visible"])):y("",!0),e.order&&e.payWay===e.PayWay.AliPay?(a(),g(j,{key:2,modelValue:e.order,"onUpdate:modelValue":t[8]||(t[8]=w=>e.order=w),visible:e.paying,onHide:t[9]||(t[9]=w=>e.paying=!1)},null,8,["modelValue","visible"])):y("",!0),e.order&&e.payWay===e.PayWay.X402?(a(),g(q,{key:3,modelValue:e.order,"onUpdate:modelValue":t[10]||(t[10]=w=>e.order=w),session:e.x402Session,visible:e.paying,onHide:t[11]||(t[11]=w=>e.paying=!1)},null,8,["modelValue","session","visible"])):y("",!0)]),_:1})]),_:1})]),_:1})]),_:1})}const cs=M(It,[["render",Qt],["__scopeId","data-v-62615fcb"]]);export{cs as default};
@@ -1 +1 @@
1
- import{bQ as y,bH as N}from"./vendor-B4-12K57.js";import{e as V,k as b,q as U,E as k,r as L,s as C,a as T}from"./vendor-element-plus-C2t7-rNg.js";import{d as v,c as _,l as n,a as s,S as o,am as i,Y as r,Z as a,F as h,o as m,R as $,ak as A,aj as z}from"./vendor-vue-BzRnDgD5.js";import{_ as E,a5 as F}from"./index-BceQaAb7.js";const K=v({name:"EditText",components:{ElDialog:k,ElInput:U,ElButton:b,ElIcon:V,Edit:y},props:{modelValue:{type:String,required:!0},title:{type:String,required:!0},placeholder:{type:String,required:!0}},emits:["confirm","cancel"],data(){return{editing:!1,value:this.modelValue}},methods:{onCancel(){this.editing=!1},onConfirm(){this.$emit("confirm",this.value),this.editing=!1}}}),M={class:"edit-body"},O={class:"dialog-footer"};function D(e,t,S,I,w,q){const c=i("el-input"),d=i("el-button"),p=i("el-dialog"),f=i("edit"),g=i("el-icon");return m(),_(h,null,[n(p,{modelValue:e.editing,"onUpdate:modelValue":t[1]||(t[1]=u=>e.editing=u),title:e.title,width:"400px",class:"edit-dialog"},{footer:o(()=>[s("span",O,[n(d,{round:"",onClick:e.onCancel},{default:o(()=>[r(a(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),n(d,{round:"",type:"primary",onClick:e.onConfirm},{default:o(()=>[r(a(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])]),default:o(()=>[s("div",M,[n(c,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=u=>e.value=u),placeholder:e.placeholder},null,8,["modelValue","placeholder"])])]),_:1},8,["modelValue","title"]),s("span",{class:"edit",onClick:t[2]||(t[2]=u=>e.editing=!0)},[n(g,{class:"icon"},{default:o(()=>[n(f)]),_:1})])],64)}const ie=E(K,[["render",D]]),J=v({name:"EditImage",components:{ElDialog:k,ElButton:b,FontAwesomeIcon:N,ElIcon:V,Edit:y,ElUpload:L},props:{modelValue:{type:String,required:!0},title:{type:String,required:!0},tip:{type:String,required:!0}},emits:["confirm","cancel"],data(){return{editing:!1,value:this.modelValue,fileList:[],uploadUrl:F()+"/api/v1/files/"}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)}},methods:{onCancel(){this.editing=!1},onConfirm(){this.$emit("confirm",this.urls?.[0]),this.editing=!1},onExceed(){C.warning(this.$t("site.message.uploadImageExceed"))},onError(){C.error(this.$t("site.message.uploadImageError"))}}}),j={class:"edit-body"},H={class:"el-upload__tip"},P={class:"dialog-footer"};function Q(e,t,S,I,w,q){const c=i("font-awesome-icon"),d=i("el-button"),p=i("el-upload"),f=i("el-dialog"),g=i("edit"),u=i("el-icon");return m(),_(h,null,[n(f,{modelValue:e.editing,"onUpdate:modelValue":t[1]||(t[1]=l=>e.editing=l),title:e.title,width:"400px",class:"edit-dialog"},{footer:o(()=>[s("span",P,[n(d,{round:"",onClick:e.onCancel},{default:o(()=>[r(a(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),n(d,{round:"",type:"primary",onClick:e.onConfirm},{default:o(()=>[r(a(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])]),default:o(()=>[s("div",j,[n(p,{"file-list":e.fileList,"onUpdate:fileList":t[0]||(t[0]=l=>e.fileList=l),name:"file",limit:5,multiple:!0,action:e.uploadUrl,"list-type":"picture","on-exceed":e.onExceed,"on-error":e.onError,headers:e.headers},{tip:o(()=>[s("div",H,a(e.tip),1)]),default:o(()=>[n(d,{round:"",type:"primary",class:"btn btn-upload"},{default:o(()=>[n(c,{icon:"fa-solid fa-upload",class:"icon mr-2"}),r(" "+a(e.$t("site.button.upload")),1)]),_:1})]),_:1},8,["file-list","action","on-exceed","on-error","headers"])])]),_:1},8,["modelValue","title"]),s("span",{class:"edit",onClick:t[2]||(t[2]=l=>e.editing=!0)},[n(u,{class:"icon"},{default:o(()=>[n(g)]),_:1})])],64)}const le=E(J,[["render",Q]]),R=v({name:"EditText",components:{ElDialog:k,ElInput:U,ElButton:b,ElIcon:V,ElTag:T,Edit:y},props:{modelValue:{type:Array,required:!0},title:{type:String,required:!0},placeholder:{type:String,required:!0},tip:{type:String,default:void 0},min:{type:Number,default:void 0},minErrorMessage:{type:String,default:void 0}},emits:["confirm","cancel"],data(){return{inputVisible:!1,inputValue:"",editing:!1,value:JSON.parse(JSON.stringify(this.modelValue))}},methods:{onCancel(){this.editing=!1},onConfirm(){if(this.min!==void 0&&this.value.length<this.min){C.error(this.minErrorMessage);return}this.$emit("confirm",this.value),this.editing=!1},onClose(e){this.value.splice(this.value.indexOf(e),1)},onInputConfirm(){const e=this.inputValue;e&&this.value.push(e),this.inputVisible=!1,this.inputValue=""},onNewItem(){this.inputVisible=!0,this.$nextTick(()=>{this.$refs.input.focus()})}}}),Y={class:"edit-body"},Z={class:"tags"},G={class:"block tip"},W={class:"dialog-footer"};function X(e,t,S,I,w,q){const c=i("el-tag"),d=i("el-input"),p=i("el-button"),f=i("el-dialog"),g=i("edit"),u=i("el-icon");return m(),_(h,null,[n(f,{modelValue:e.editing,"onUpdate:modelValue":t[1]||(t[1]=l=>e.editing=l),title:e.title,width:"400px",class:"edit-dialog"},{footer:o(()=>[s("span",W,[n(p,{round:"",onClick:e.onCancel},{default:o(()=>[r(a(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),n(p,{round:"",type:"primary",onClick:e.onConfirm},{default:o(()=>[r(a(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])]),default:o(()=>[s("div",Y,[s("div",Z,[(m(!0),_(h,null,A(e.value,(l,B)=>(m(),$(c,{key:B,closable:"",round:"",class:"mr-2 mb-2","disable-transitions":!1,onClose:x=>e.onClose(l)},{default:o(()=>[r(a(l),1)]),_:2},1032,["onClose"]))),128))]),e.inputVisible?(m(),$(d,{key:0,ref:"input",modelValue:e.inputValue,"onUpdate:modelValue":t[0]||(t[0]=l=>e.inputValue=l),class:"block",size:"small",onKeyup:z(e.onInputConfirm,["enter"]),onBlur:e.onInputConfirm},null,8,["modelValue","onKeyup","onBlur"])):(m(),$(p,{key:1,round:"",class:"block",size:"small",onClick:e.onNewItem},{default:o(()=>t[3]||(t[3]=[r(" + ",-1)])),_:1,__:[3]},8,["onClick"])),s("span",G,a(e.tip),1)])]),_:1},8,["modelValue","title"]),s("span",{class:"edit",onClick:t[2]||(t[2]=l=>e.editing=!0)},[n(u,{class:"icon"},{default:o(()=>[n(g)]),_:1})])],64)}const se=E(R,[["render",X]]);export{se as E,le as a,ie as b};
1
+ import{bQ as y,bH as N}from"./vendor-B4-12K57.js";import{e as V,k as b,q as U,E as k,r as L,s as C,a as T}from"./vendor-element-plus-C2t7-rNg.js";import{d as v,c as _,l as n,a as s,S as o,am as i,Y as r,Z as a,F as h,o as m,R as $,ak as A,aj as z}from"./vendor-vue-BzRnDgD5.js";import{_ as E,a5 as F}from"./index-BwtxyV6k.js";const K=v({name:"EditText",components:{ElDialog:k,ElInput:U,ElButton:b,ElIcon:V,Edit:y},props:{modelValue:{type:String,required:!0},title:{type:String,required:!0},placeholder:{type:String,required:!0}},emits:["confirm","cancel"],data(){return{editing:!1,value:this.modelValue}},methods:{onCancel(){this.editing=!1},onConfirm(){this.$emit("confirm",this.value),this.editing=!1}}}),M={class:"edit-body"},O={class:"dialog-footer"};function D(e,t,S,I,w,q){const c=i("el-input"),d=i("el-button"),p=i("el-dialog"),f=i("edit"),g=i("el-icon");return m(),_(h,null,[n(p,{modelValue:e.editing,"onUpdate:modelValue":t[1]||(t[1]=u=>e.editing=u),title:e.title,width:"400px",class:"edit-dialog"},{footer:o(()=>[s("span",O,[n(d,{round:"",onClick:e.onCancel},{default:o(()=>[r(a(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),n(d,{round:"",type:"primary",onClick:e.onConfirm},{default:o(()=>[r(a(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])]),default:o(()=>[s("div",M,[n(c,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=u=>e.value=u),placeholder:e.placeholder},null,8,["modelValue","placeholder"])])]),_:1},8,["modelValue","title"]),s("span",{class:"edit",onClick:t[2]||(t[2]=u=>e.editing=!0)},[n(g,{class:"icon"},{default:o(()=>[n(f)]),_:1})])],64)}const ie=E(K,[["render",D]]),J=v({name:"EditImage",components:{ElDialog:k,ElButton:b,FontAwesomeIcon:N,ElIcon:V,Edit:y,ElUpload:L},props:{modelValue:{type:String,required:!0},title:{type:String,required:!0},tip:{type:String,required:!0}},emits:["confirm","cancel"],data(){return{editing:!1,value:this.modelValue,fileList:[],uploadUrl:F()+"/api/v1/files/"}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)}},methods:{onCancel(){this.editing=!1},onConfirm(){this.$emit("confirm",this.urls?.[0]),this.editing=!1},onExceed(){C.warning(this.$t("site.message.uploadImageExceed"))},onError(){C.error(this.$t("site.message.uploadImageError"))}}}),j={class:"edit-body"},H={class:"el-upload__tip"},P={class:"dialog-footer"};function Q(e,t,S,I,w,q){const c=i("font-awesome-icon"),d=i("el-button"),p=i("el-upload"),f=i("el-dialog"),g=i("edit"),u=i("el-icon");return m(),_(h,null,[n(f,{modelValue:e.editing,"onUpdate:modelValue":t[1]||(t[1]=l=>e.editing=l),title:e.title,width:"400px",class:"edit-dialog"},{footer:o(()=>[s("span",P,[n(d,{round:"",onClick:e.onCancel},{default:o(()=>[r(a(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),n(d,{round:"",type:"primary",onClick:e.onConfirm},{default:o(()=>[r(a(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])]),default:o(()=>[s("div",j,[n(p,{"file-list":e.fileList,"onUpdate:fileList":t[0]||(t[0]=l=>e.fileList=l),name:"file",limit:5,multiple:!0,action:e.uploadUrl,"list-type":"picture","on-exceed":e.onExceed,"on-error":e.onError,headers:e.headers},{tip:o(()=>[s("div",H,a(e.tip),1)]),default:o(()=>[n(d,{round:"",type:"primary",class:"btn btn-upload"},{default:o(()=>[n(c,{icon:"fa-solid fa-upload",class:"icon mr-2"}),r(" "+a(e.$t("site.button.upload")),1)]),_:1})]),_:1},8,["file-list","action","on-exceed","on-error","headers"])])]),_:1},8,["modelValue","title"]),s("span",{class:"edit",onClick:t[2]||(t[2]=l=>e.editing=!0)},[n(u,{class:"icon"},{default:o(()=>[n(g)]),_:1})])],64)}const le=E(J,[["render",Q]]),R=v({name:"EditText",components:{ElDialog:k,ElInput:U,ElButton:b,ElIcon:V,ElTag:T,Edit:y},props:{modelValue:{type:Array,required:!0},title:{type:String,required:!0},placeholder:{type:String,required:!0},tip:{type:String,default:void 0},min:{type:Number,default:void 0},minErrorMessage:{type:String,default:void 0}},emits:["confirm","cancel"],data(){return{inputVisible:!1,inputValue:"",editing:!1,value:JSON.parse(JSON.stringify(this.modelValue))}},methods:{onCancel(){this.editing=!1},onConfirm(){if(this.min!==void 0&&this.value.length<this.min){C.error(this.minErrorMessage);return}this.$emit("confirm",this.value),this.editing=!1},onClose(e){this.value.splice(this.value.indexOf(e),1)},onInputConfirm(){const e=this.inputValue;e&&this.value.push(e),this.inputVisible=!1,this.inputValue=""},onNewItem(){this.inputVisible=!0,this.$nextTick(()=>{this.$refs.input.focus()})}}}),Y={class:"edit-body"},Z={class:"tags"},G={class:"block tip"},W={class:"dialog-footer"};function X(e,t,S,I,w,q){const c=i("el-tag"),d=i("el-input"),p=i("el-button"),f=i("el-dialog"),g=i("edit"),u=i("el-icon");return m(),_(h,null,[n(f,{modelValue:e.editing,"onUpdate:modelValue":t[1]||(t[1]=l=>e.editing=l),title:e.title,width:"400px",class:"edit-dialog"},{footer:o(()=>[s("span",W,[n(p,{round:"",onClick:e.onCancel},{default:o(()=>[r(a(e.$t("common.button.cancel")),1)]),_:1},8,["onClick"]),n(p,{round:"",type:"primary",onClick:e.onConfirm},{default:o(()=>[r(a(e.$t("common.button.confirm")),1)]),_:1},8,["onClick"])])]),default:o(()=>[s("div",Y,[s("div",Z,[(m(!0),_(h,null,A(e.value,(l,B)=>(m(),$(c,{key:B,closable:"",round:"",class:"mr-2 mb-2","disable-transitions":!1,onClose:x=>e.onClose(l)},{default:o(()=>[r(a(l),1)]),_:2},1032,["onClose"]))),128))]),e.inputVisible?(m(),$(d,{key:0,ref:"input",modelValue:e.inputValue,"onUpdate:modelValue":t[0]||(t[0]=l=>e.inputValue=l),class:"block",size:"small",onKeyup:z(e.onInputConfirm,["enter"]),onBlur:e.onInputConfirm},null,8,["modelValue","onKeyup","onBlur"])):(m(),$(p,{key:1,round:"",class:"block",size:"small",onClick:e.onNewItem},{default:o(()=>t[3]||(t[3]=[r(" + ",-1)])),_:1,__:[3]},8,["onClick"])),s("span",G,a(e.tip),1)])]),_:1},8,["modelValue","title"]),s("span",{class:"edit",onClick:t[2]||(t[2]=l=>e.editing=!0)},[n(u,{class:"icon"},{default:o(()=>[n(g)]),_:1})])],64)}const se=E(R,[["render",X]]);export{se as E,le as a,ie as b};
@@ -1 +1 @@
1
- import{I as A}from"./api-Ch0ZHArw.js";import{_ as y,ad as q,ae as F,aa as L}from"./index-BceQaAb7.js";import"./vendor-B4-12K57.js";import{g as E}from"./price-DtWUJRlS.js";import{d as S,c as s,Z as t,o as a,F as _,ak as v,W as l,Y as g,R as d,S as i,l as o,am as n,a as $,U as D,V as R,_ as N}from"./vendor-vue-BzRnDgD5.js";import{o as z}from"./order-C7LItaBN.js";import{A as G,B as W,n as j,k as H,I as J,J as Y,t as Z,x as K,y as Q,H as X,s as x}from"./vendor-element-plus-C2t7-rNg.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-katex-DHBGsivc.js";const ee=S({name:"ApiPrice",props:{price:{type:Number,required:!1,default:0},unit:{type:String,required:!1,default:void 0},start:{type:Boolean,required:!1,default:!1}},methods:{getPriceString:E}}),ae={class:"price-text"},te={key:0,class:"unfree"},ie={key:1,class:"free"};function se(e,p,k,C,I,O){return a(),s("div",ae,[e.price>0?(a(),s("span",te,t(e.getPriceString({value:e.price}))+" "+t(e.unit?` / ${e.unit}`:"")+t(e.start?e.$t("common.message.startPrice"):""),1)):(a(),s("span",ie,t(e.$t("common.message.free")),1))])}const oe=y(ee,[["render",se],["__scopeId","data-v-bb068181"]]),re=S({name:"ServiceEstimation",components:{},props:{service:{type:Object,required:!0},package:{type:Object,required:!0}},methods:{getPriceString:E}}),ne={class:"estimation"},le={key:0,class:"item"},pe={key:0},ce={key:1},ue={key:2},de={key:0},me={key:1};function he(e,p,k,C,I,O){return a(),s("div",ne,[(a(!0),s(_,null,v(e.service?.apis,(m,h)=>(a(),s("div",{key:h},[(a(!0),s(_,null,v(m?.estimation,(c,f)=>(a(),s("div",{key:f,class:"items"},[e.package?.amount&&c?.cost?(a(),s("p",le,[g(" ≈ "+t(c.name)+" "+t(Math.round(e.package.amount/c.cost))+" "+t(e.$t("api.unit.count"))+" ",1),e.package.price>0?(a(),s("span",pe," - "+t(e.getPriceString({value:e.package.price/(e.package.amount/c.cost),fractionDigits:3})+" / "+e.$t("api.unit.count")),1)):l("",!0),c.remark?(a(),s("span",ce," ("+t(c.remark)+") ",1)):l("",!0),c?.comparisons?.length>0?(a(),s("span",ue," - ")):l("",!0),(a(!0),s(_,null,v(c?.comparisons,(r,b)=>(a(),s("span",{key:b,class:"comparison"},[r?.value<0?(a(),s("i",de,t(e.$t("api.message.cheaperThan").replace("$[[value]]",r?.target?.toString()))+" "+t(Math.abs(r?.value)*100)+"% ",1)):l("",!0),r?.value>0?(a(),s("i",me,t(e.$t("api.message.moreExpensiveThan").replace("$[[value]]",r?.target?.toString()))+" "+t(Math.abs(r?.value)*100)+"% ",1)):l("",!0)]))),128))])):l("",!0)]))),128))]))),128))])}const ge=y(re,[["render",he],["__scopeId","data-v-370bc975"]]),fe=S({name:"ConsoleApplicationBuy",components:{ElSkeleton:X,ElRow:Q,ElCol:K,ElCard:Z,ElForm:Y,ElFormItem:J,ElButton:H,ElDivider:j,ElRadioGroup:W,ElRadioButton:G,Price:oe,ServiceEstimation:ge},data(){return{lang:this.$i18n.locale,application:void 0,loading:!1,type:A.USAGE,form:{packageId:void 0,amount:void 0},creating:!1}},computed:{applicationId(){return this.$route.params?.id?.toString()},id(){return this.$route.params?.id?.toString()},price(){return this.application?.service?.price&&this.form.amount?this.form.amount*this.application.service?.price:0},packages(){return this.application?.packages?.filter(e=>e.type===A.USAGE).sort((e,p)=>e.amount-p.amount)||[]},package(){if(this.packages&&this.form.packageId){const e=this.packages.filter(p=>p.id===this.form.packageId);if(e.length>0)return e[0]}}},mounted(){this.onFetchApplication()},methods:{getDiscount(e){return this.packages&&this.packages.length>0?this.lang?.startsWith("zh")?(10*e?.price/e?.amount/(this.packages[0].price/this.packages[0]?.amount)).toFixed(1)+"折":Math.round(100-100*e?.price/e?.amount/(this.packages[0].price/this.packages[0]?.amount))+"% OFF":""},onSubscribe(){this.$router.push({name:F,params:this.$route.params})},getPriceString:E,onFetchApplication(){this.loading=!0,L.get(this.id).then(({data:e})=>{this.application=e,this.loading=!1,this.form.packageId=this.packages?.[0]?.id}).catch(()=>{this.loading=!1})},onChangeType(){this.$router.push({name:F,params:this.$route.params})},onCreateOrder(){if(!this.application?.id)return;this.creating=!0;const e=this.$t(`service.unit.${this.application?.service?.unit}s`);z.create({application_id:this.application?.id,amount:this.package?.amount,...this.form.packageId!=="custom"&&this.package?{package_id:this.package.id}:{},description:this.application?.service?`${this.application?.service?.title} x ${this.package?.amount} ${e}`:this.$t("application.title.globalBuy")+" - "+this.package?.amount+" "+this.$t("service.unit.credits")}).then(({data:p})=>{this.creating=!1;const k=p;this.$router.push({name:q,params:{id:k.id}})}).catch(()=>{x.error(this.$t("order.message.createFailed")),this.creating=!1})}}}),ke={class:"title"},$e={key:0},_e={class:"text-[var(--el-text-color-secondary)] text-[12px] mb-3"},ve={key:0,class:"ml-2"},be={key:1,class:R({price:!0,free:!0})};function ye(e,p,k,C,I,O){const m=n("el-col"),h=n("el-row"),c=n("el-skeleton"),f=n("el-divider"),r=n("el-form-item"),b=n("el-radio-button"),T=n("el-radio-group"),w=n("service-estimation"),V=n("price"),B=n("el-button"),U=n("el-form"),M=n("el-card");return a(),d(h,{class:"panel"},{default:i(()=>[o(m,{span:24},{default:i(()=>[o(h,null,{default:i(()=>[o(m,{span:24},{default:i(()=>[$("h2",ke,t(e.$t("common.title.buyMore")),1)]),_:1})]),_:1}),o(h,null,{default:i(()=>[o(m,{span:24},{default:i(()=>[o(M,{shadow:"hover",class:"min-h-[500px]"},{default:i(()=>[o(h,null,{default:i(()=>[o(m,{span:16,offset:4},{default:i(()=>[e.loading?(a(),d(c,{key:0})):e.application?(a(),d(U,{key:1,"label-width":"100px"},{default:i(()=>[e.application?.service?l("",!0):(a(),s("div",$e,[$("p",_e,t(e.$t("application.message.globalBalanceBuyDescription")),1),o(f,{"border-style":"dashed"})])),e.application?.service?(a(),d(r,{key:1,label:e.$t("application.field.service")},{default:i(()=>[g(t(e.application?.service?.title),1)]),_:1},8,["label"])):(a(),d(r,{key:2,label:e.$t("application.field.scope")},{default:i(()=>[g(t(e.$t("application.title.globalBuy")),1)]),_:1},8,["label"])),o(r,{label:e.$t("application.field.package"),class:"mb-0"},{default:i(()=>[e.packages?(a(),d(T,{key:0,modelValue:e.form.packageId,"onUpdate:modelValue":p[0]||(p[0]=u=>e.form.packageId=u)},{default:i(()=>[(a(!0),s(_,null,v(e.packages,(u,P)=>(a(),d(b,{key:P,label:u.id,class:"mb-2"},{default:i(()=>[D($("span",{class:"corner"},t(e.getDiscount(u)),513),[[N,P!==0]]),g(" "+t(u.amount)+" "+t(e.$t(`service.unit.${e.application?.service?.unit||"credit"}s`)),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])):l("",!0)]),_:1},8,["label"]),e.application?.service?.apis&&e.application?.service?.apis?.map(u=>u?.estimation).filter(u=>!!u)?.length>0?(a(),d(r,{key:3},{default:i(()=>[e.application?.service?(a(),d(w,{key:0,service:e.application.service,package:e.package},null,8,["service","package"])):l("",!0)]),_:1})):l("",!0),o(r,{label:e.$t("service.field.price")},{default:i(()=>[o(V,{price:e.package?.price},null,8,["price"]),e.package?(a(),s("span",ve,"("+t(e.getPriceString({value:e.package?.price/e.package?.amount})+" / "+e.$t(`service.unit.${e.application?.service?.unit||"credits"}`))+") ",1)):l("",!0)]),_:1},8,["label"]),o(f,{"border-style":"dashed"}),o(r,{label:e.$t("application.field.shouldPayPrice")},{default:i(()=>[e.package?(a(),s("span",{key:0,class:R({price:!0,unfree:e.package?.price>0,free:e.package?.price===0})},t(e.getPriceString({value:e.package?.price})),3)):(a(),s("span",be," $ 0 "))]),_:1},8,["label"]),o(r,null,{default:i(()=>[o(B,{type:"primary",size:"large",class:"btn-create",loading:e.creating,round:"",onClick:e.onCreateOrder},{default:i(()=>[g(t(e.$t("application.button.createOrder")),1)]),_:1},8,["loading","onClick"])]),_:1}),o(f,{"border-style":"dashed"}),D(o(r,{label:""},{default:i(()=>[$("span",null,t(e.$t("console.message.doNotWantExtra")),1),o(B,{type:"primary",class:"btn btn-subscribe",round:"",size:"small",onClick:e.onSubscribe},{default:i(()=>[g(t(e.$t("console.message.subscribe")),1)]),_:1},8,["onClick"])]),_:1},512),[[N,!1]])]),_:1})):l("",!0)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Re=y(fe,[["render",ye],["__scopeId","data-v-fcfd9ab5"]]);export{Re as default};
1
+ import{I as A}from"./api-Ch0ZHArw.js";import{_ as y,ad as q,ae as F,aa as L}from"./index-BwtxyV6k.js";import"./vendor-B4-12K57.js";import{g as E}from"./price-Clo8IP03.js";import{d as S,c as s,Z as t,o as a,F as _,ak as v,W as l,Y as g,R as d,S as i,l as o,am as n,a as $,U as D,V as R,_ as N}from"./vendor-vue-BzRnDgD5.js";import{o as z}from"./order-DYcfG_Yw.js";import{A as G,B as W,n as j,k as H,I as J,J as Y,t as Z,x as K,y as Q,H as X,s as x}from"./vendor-element-plus-C2t7-rNg.js";import"./vendor-axios-NIGUFBhG.js";import"./vendor-vue-router-nHemWFue.js";import"./vendor-dayjs-D6Igi227.js";import"./vendor-katex-DHBGsivc.js";const ee=S({name:"ApiPrice",props:{price:{type:Number,required:!1,default:0},unit:{type:String,required:!1,default:void 0},start:{type:Boolean,required:!1,default:!1}},methods:{getPriceString:E}}),ae={class:"price-text"},te={key:0,class:"unfree"},ie={key:1,class:"free"};function se(e,p,k,C,I,O){return a(),s("div",ae,[e.price>0?(a(),s("span",te,t(e.getPriceString({value:e.price}))+" "+t(e.unit?` / ${e.unit}`:"")+t(e.start?e.$t("common.message.startPrice"):""),1)):(a(),s("span",ie,t(e.$t("common.message.free")),1))])}const oe=y(ee,[["render",se],["__scopeId","data-v-bb068181"]]),re=S({name:"ServiceEstimation",components:{},props:{service:{type:Object,required:!0},package:{type:Object,required:!0}},methods:{getPriceString:E}}),ne={class:"estimation"},le={key:0,class:"item"},pe={key:0},ce={key:1},ue={key:2},de={key:0},me={key:1};function he(e,p,k,C,I,O){return a(),s("div",ne,[(a(!0),s(_,null,v(e.service?.apis,(m,h)=>(a(),s("div",{key:h},[(a(!0),s(_,null,v(m?.estimation,(c,f)=>(a(),s("div",{key:f,class:"items"},[e.package?.amount&&c?.cost?(a(),s("p",le,[g(" ≈ "+t(c.name)+" "+t(Math.round(e.package.amount/c.cost))+" "+t(e.$t("api.unit.count"))+" ",1),e.package.price>0?(a(),s("span",pe," - "+t(e.getPriceString({value:e.package.price/(e.package.amount/c.cost),fractionDigits:3})+" / "+e.$t("api.unit.count")),1)):l("",!0),c.remark?(a(),s("span",ce," ("+t(c.remark)+") ",1)):l("",!0),c?.comparisons?.length>0?(a(),s("span",ue," - ")):l("",!0),(a(!0),s(_,null,v(c?.comparisons,(r,b)=>(a(),s("span",{key:b,class:"comparison"},[r?.value<0?(a(),s("i",de,t(e.$t("api.message.cheaperThan").replace("$[[value]]",r?.target?.toString()))+" "+t(Math.abs(r?.value)*100)+"% ",1)):l("",!0),r?.value>0?(a(),s("i",me,t(e.$t("api.message.moreExpensiveThan").replace("$[[value]]",r?.target?.toString()))+" "+t(Math.abs(r?.value)*100)+"% ",1)):l("",!0)]))),128))])):l("",!0)]))),128))]))),128))])}const ge=y(re,[["render",he],["__scopeId","data-v-370bc975"]]),fe=S({name:"ConsoleApplicationBuy",components:{ElSkeleton:X,ElRow:Q,ElCol:K,ElCard:Z,ElForm:Y,ElFormItem:J,ElButton:H,ElDivider:j,ElRadioGroup:W,ElRadioButton:G,Price:oe,ServiceEstimation:ge},data(){return{lang:this.$i18n.locale,application:void 0,loading:!1,type:A.USAGE,form:{packageId:void 0,amount:void 0},creating:!1}},computed:{applicationId(){return this.$route.params?.id?.toString()},id(){return this.$route.params?.id?.toString()},price(){return this.application?.service?.price&&this.form.amount?this.form.amount*this.application.service?.price:0},packages(){return this.application?.packages?.filter(e=>e.type===A.USAGE).sort((e,p)=>e.amount-p.amount)||[]},package(){if(this.packages&&this.form.packageId){const e=this.packages.filter(p=>p.id===this.form.packageId);if(e.length>0)return e[0]}}},mounted(){this.onFetchApplication()},methods:{getDiscount(e){return this.packages&&this.packages.length>0?this.lang?.startsWith("zh")?(10*e?.price/e?.amount/(this.packages[0].price/this.packages[0]?.amount)).toFixed(1)+"折":Math.round(100-100*e?.price/e?.amount/(this.packages[0].price/this.packages[0]?.amount))+"% OFF":""},onSubscribe(){this.$router.push({name:F,params:this.$route.params})},getPriceString:E,onFetchApplication(){this.loading=!0,L.get(this.id).then(({data:e})=>{this.application=e,this.loading=!1,this.form.packageId=this.packages?.[0]?.id}).catch(()=>{this.loading=!1})},onChangeType(){this.$router.push({name:F,params:this.$route.params})},onCreateOrder(){if(!this.application?.id)return;this.creating=!0;const e=this.$t(`service.unit.${this.application?.service?.unit}s`);z.create({application_id:this.application?.id,amount:this.package?.amount,...this.form.packageId!=="custom"&&this.package?{package_id:this.package.id}:{},description:this.application?.service?`${this.application?.service?.title} x ${this.package?.amount} ${e}`:this.$t("application.title.globalBuy")+" - "+this.package?.amount+" "+this.$t("service.unit.credits")}).then(({data:p})=>{this.creating=!1;const k=p;this.$router.push({name:q,params:{id:k.id}})}).catch(()=>{x.error(this.$t("order.message.createFailed")),this.creating=!1})}}}),ke={class:"title"},$e={key:0},_e={class:"text-[var(--el-text-color-secondary)] text-[12px] mb-3"},ve={key:0,class:"ml-2"},be={key:1,class:R({price:!0,free:!0})};function ye(e,p,k,C,I,O){const m=n("el-col"),h=n("el-row"),c=n("el-skeleton"),f=n("el-divider"),r=n("el-form-item"),b=n("el-radio-button"),T=n("el-radio-group"),w=n("service-estimation"),V=n("price"),B=n("el-button"),U=n("el-form"),M=n("el-card");return a(),d(h,{class:"panel"},{default:i(()=>[o(m,{span:24},{default:i(()=>[o(h,null,{default:i(()=>[o(m,{span:24},{default:i(()=>[$("h2",ke,t(e.$t("common.title.buyMore")),1)]),_:1})]),_:1}),o(h,null,{default:i(()=>[o(m,{span:24},{default:i(()=>[o(M,{shadow:"hover",class:"min-h-[500px]"},{default:i(()=>[o(h,null,{default:i(()=>[o(m,{span:16,offset:4},{default:i(()=>[e.loading?(a(),d(c,{key:0})):e.application?(a(),d(U,{key:1,"label-width":"100px"},{default:i(()=>[e.application?.service?l("",!0):(a(),s("div",$e,[$("p",_e,t(e.$t("application.message.globalBalanceBuyDescription")),1),o(f,{"border-style":"dashed"})])),e.application?.service?(a(),d(r,{key:1,label:e.$t("application.field.service")},{default:i(()=>[g(t(e.application?.service?.title),1)]),_:1},8,["label"])):(a(),d(r,{key:2,label:e.$t("application.field.scope")},{default:i(()=>[g(t(e.$t("application.title.globalBuy")),1)]),_:1},8,["label"])),o(r,{label:e.$t("application.field.package"),class:"mb-0"},{default:i(()=>[e.packages?(a(),d(T,{key:0,modelValue:e.form.packageId,"onUpdate:modelValue":p[0]||(p[0]=u=>e.form.packageId=u)},{default:i(()=>[(a(!0),s(_,null,v(e.packages,(u,P)=>(a(),d(b,{key:P,label:u.id,class:"mb-2"},{default:i(()=>[D($("span",{class:"corner"},t(e.getDiscount(u)),513),[[N,P!==0]]),g(" "+t(u.amount)+" "+t(e.$t(`service.unit.${e.application?.service?.unit||"credit"}s`)),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])):l("",!0)]),_:1},8,["label"]),e.application?.service?.apis&&e.application?.service?.apis?.map(u=>u?.estimation).filter(u=>!!u)?.length>0?(a(),d(r,{key:3},{default:i(()=>[e.application?.service?(a(),d(w,{key:0,service:e.application.service,package:e.package},null,8,["service","package"])):l("",!0)]),_:1})):l("",!0),o(r,{label:e.$t("service.field.price")},{default:i(()=>[o(V,{price:e.package?.price},null,8,["price"]),e.package?(a(),s("span",ve,"("+t(e.getPriceString({value:e.package?.price/e.package?.amount})+" / "+e.$t(`service.unit.${e.application?.service?.unit||"credits"}`))+") ",1)):l("",!0)]),_:1},8,["label"]),o(f,{"border-style":"dashed"}),o(r,{label:e.$t("application.field.shouldPayPrice")},{default:i(()=>[e.package?(a(),s("span",{key:0,class:R({price:!0,unfree:e.package?.price>0,free:e.package?.price===0})},t(e.getPriceString({value:e.package?.price})),3)):(a(),s("span",be," $ 0 "))]),_:1},8,["label"]),o(r,null,{default:i(()=>[o(B,{type:"primary",size:"large",class:"btn-create",loading:e.creating,round:"",onClick:e.onCreateOrder},{default:i(()=>[g(t(e.$t("application.button.createOrder")),1)]),_:1},8,["loading","onClick"])]),_:1}),o(f,{"border-style":"dashed"}),D(o(r,{label:""},{default:i(()=>[$("span",null,t(e.$t("console.message.doNotWantExtra")),1),o(B,{type:"primary",class:"btn btn-subscribe",round:"",size:"small",onClick:e.onSubscribe},{default:i(()=>[g(t(e.$t("console.message.subscribe")),1)]),_:1},8,["onClick"])]),_:1},512),[[N,!1]])]),_:1})):l("",!0)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Re=y(fe,[["render",ye],["__scopeId","data-v-fcfd9ab5"]]);export{Re as default};
@@ -1 +1 @@
1
- import{bH as c}from"./vendor-B4-12K57.js";import{av as p,_ as m}from"./index-BceQaAb7.js";import{P as f}from"./vendor-element-plus-C2t7-rNg.js";import{d,c as a,a as t,W as x,l as o,U as u,am as n,_,Z as g,o as i}from"./vendor-vue-BzRnDgD5.js";const h=d({name:"FilePreview",components:{FontAwesomeIcon:c,ElProgress:f},props:{name:{type:String,required:!0},percentage:{type:Number,required:!1,default:void 0},closable:{type:Boolean,required:!1,default:!0}},emits:["remove"],methods:{isImageUrl:p}}),v={class:"file cursor-pointer relative rounded-[10px] h-[50px] w-[250px] flex flex-row items-center justify-start bg-[var(--el-bg-color)]"},w={class:"left h-[50px] w-[50px] flex items-center justify-center"},y={class:"wrapper relative w-[35px] h-[35px] flex items-center justify-center rounded-[10px] text-white bg-[#10a37f] m-auto"},b={class:"right flex-1 h-[50px] flex items-center justify-start pl-[2px] text-[14px] text-[var(--el-text-color-primary)] truncate"},k={class:"text-xs font-bold truncate"},$={key:0,class:"close absolute cursor-pointer top-[5px] right-[5px] bg-[rgba(0,0,0,0.7)] text-white w-[15px] rounded-full h-[15px] flex text-[10px] text-center items-center justify-center"};function j(e,s,B,C,F,N){const r=n("font-awesome-icon"),l=n("el-progress");return i(),a("div",v,[t("div",w,[t("div",y,[o(r,{icon:"fa-regular fa-file-alt"}),u(o(l,{type:"circle","stroke-width":3,percentage:e.percentage,width:25,class:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[25px] h-[25px] z-[10] m-auto"},null,8,["percentage"]),[[_,e.percentage&&e.percentage<100]])])]),t("div",b,[t("span",k,g(e.name),1)]),e.closable?(i(),a("div",$,[o(r,{icon:"fa-solid fa-xmark",class:"icon icon-close",onClick:s[0]||(s[0]=P=>e.$emit("remove"))})])):x("",!0)])}const E=m(h,[["render",j]]);export{E as F};
1
+ import{bH as c}from"./vendor-B4-12K57.js";import{av as p,_ as m}from"./index-BwtxyV6k.js";import{P as f}from"./vendor-element-plus-C2t7-rNg.js";import{d,c as a,a as t,W as x,l as o,U as u,am as n,_,Z as g,o as i}from"./vendor-vue-BzRnDgD5.js";const h=d({name:"FilePreview",components:{FontAwesomeIcon:c,ElProgress:f},props:{name:{type:String,required:!0},percentage:{type:Number,required:!1,default:void 0},closable:{type:Boolean,required:!1,default:!0}},emits:["remove"],methods:{isImageUrl:p}}),v={class:"file cursor-pointer relative rounded-[10px] h-[50px] w-[250px] flex flex-row items-center justify-start bg-[var(--el-bg-color)]"},w={class:"left h-[50px] w-[50px] flex items-center justify-center"},y={class:"wrapper relative w-[35px] h-[35px] flex items-center justify-center rounded-[10px] text-white bg-[#10a37f] m-auto"},b={class:"right flex-1 h-[50px] flex items-center justify-start pl-[2px] text-[14px] text-[var(--el-text-color-primary)] truncate"},k={class:"text-xs font-bold truncate"},$={key:0,class:"close absolute cursor-pointer top-[5px] right-[5px] bg-[rgba(0,0,0,0.7)] text-white w-[15px] rounded-full h-[15px] flex text-[10px] text-center items-center justify-center"};function j(e,s,B,C,F,N){const r=n("font-awesome-icon"),l=n("el-progress");return i(),a("div",v,[t("div",w,[t("div",y,[o(r,{icon:"fa-regular fa-file-alt"}),u(o(l,{type:"circle","stroke-width":3,percentage:e.percentage,width:25,class:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[25px] h-[25px] z-[10] m-auto"},null,8,["percentage"]),[[_,e.percentage&&e.percentage<100]])])]),t("div",b,[t("span",k,g(e.name),1)]),e.closable?(i(),a("div",$,[o(r,{icon:"fa-solid fa-xmark",class:"icon icon-close",onClick:s[0]||(s[0]=P=>e.$emit("remove"))})])):x("",!0)])}const E=m(h,[["render",j]]);export{E as F};