var e=Object.defineProperty,l=Object.defineProperties,a=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(l,a,o)=>a in l?e(l,a,{enumerable:!0,configurable:!0,writable:!0,value:o}):l[a]=o;import{a1 as s,N as n,bZ as c,b_ as d,b$ as p,c0 as m,c1 as b,c2 as k,c3 as g,c4 as u,c5 as f,c6 as y,_ as x}from"./index-DuMLoKSq.js";/* empty css                    */import{_ as h}from"./tree-COi5nsc2.js";/* empty css                */import{g as v}from"./explore-Csh7esyt.js";import{ac as _,v as w,h as P,a0 as D,r as O,t as C,a1 as M,j,i as I}from"./element-plus-pFwXBqSo.js";import{az as B,l as L,U as V,ae as $,al as z,ar as A,K as S,z as R,A as E,B as F,R as T,J as W,O as U,Q as N,a5 as q,E as K,D as Z,P as J,L as Q,I as G}from"./vue-vendor-o3p-Y_v4.js";import"./utils-44Y5lmkt.js";import"./terminal-CLC_Uyhw.js";import"./echarts-tmlBSIFE.js";import"./markdown-DJCn8-_8.js";import"./icons-BvcXG-r-.js";const H={"element-loading-text":"加载中",class:"problem-library-page mt-4"},X={class:"max-w-[1740px] mx-auto px-4"},Y={class:"w-full text-center relative"},ee={class:"flex items-center justify-center gap-4 mb-4"},le={class:"absolute top-2 right-4"},ae={class:"explore-container !my-4"},oe={class:"explore-main"},te=["id","onClick"],re={class:"title"},ie={class:"flex items-center gap-2"},se={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},ne={class:"w-full flex justify-around"},ce={key:0,class:"text-base"},de={key:0,style:{margin:"0 auto",border:"solid 1px",width:"600px",padding:"10px 10px"}},pe={style:{"white-space":"pre-line","word-wrap":"break-word"}},me={style:{"text-align":"center"}},be={key:0,class:"flex"},ke={class:"line-through text-gray-500 ml-1"},ge={key:1},ue={key:0,style:{display:"flex"}},fe={style:{width:"30%",margin:"auto","text-align":"center"}},ye={key:1},xe=["href"],he={key:3,class:"problem-flag"};const ve=x({components:{tree:h,Coin:_},setup(){const e=B(),x=L({blocks:[],blockMap:{},isVip:e.getters["user/isVip"],block:{map:{},data:{},nodeMap:{},treeRoot:0,labelWidth:"",linkMap:{}},problem:{isOpen:!1,isOpenAndLoading:!1,noDocker:!1,isSolved:!1,desc:"",title:"",annex:null,category:0,flag:"",price:0,docker:{url:"",createDate:1615863892443,remain:10,process:0,state:0},dockerRemainPercentage:0},activeProblemId:0,overtimer:null,isLoading:!1,isBlockDialogVisible:!1,isBlockDialogLoading:!1}),h=()=>{return e=this,l=null,a=function*(){let e=yield k(x.activeProblemId);if(200==e.code){if(e.data.state<4)x.problem.docker.state=e.data.state,x.problem.docker.process=Math.round(25*e.data.state),x.overtimer=setTimeout(h,3e3);else{x.problem.docker.process=100,x.problem.docker.url=e.data.url,x.problem.docker.remain=e.data.timeout,x.problem.docker.createDate=e.data.create_date+288e5,x.problem.isOpenAndLoading=!1;let l=()=>{if(x.problem.docker.remain>0){x.problem.docker.remain-=1;let e=Date.now()+288e5-x.problem.docker.createDate;x.problem.dockerRemainPercentage=Math.floor(e/(e+1e3*x.problem.docker.remain)*100),x.overtimer=setTimeout(l,1e3)}};l()}return!0}return 202==e.code&&(x.problem.noDocker=!0,!0)},new Promise((o,t)=>{var r=e=>{try{s(a.next(e))}catch(l){t(l)}},i=e=>{try{s(a.throw(e))}catch(l){t(l)}},s=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,i);s((a=a.apply(e,l)).next())});var e,l,a},_=s(()=>{c(x.activeProblemId,0).then(e=>{200==e.code?(x.problem.isOpen=!0,x.problem.isOpenAndLoading=!0,h()):202===e.code&&n.warning({message:"金币不足,请先前往 我的金币 中进行充值。"})})},()=>{n.warning({message:"点击频率过快。"})},4e3),w=s(()=>{d(x.activeProblemId).then(e=>{200==e.code&&(x.problem.isOpen=!1,x.problem.isOpenAndLoading=!1,x.overtimer&&clearTimeout(x.overtimer),n.info({message:"关闭docker成功"}))})},()=>{n.warning({message:"点击频率过快。"})},4e3),P=s(()=>{x.problem.docker.remain<180?n.warning({message:"剩余时长小于3分钟,无法延时!"}):p(x.activeProblemId).then(e=>{200==e.code?n.info({message:"延长时间成功"}):203==e.code?n.info({message:"金币不足,无法续费。"}):204==e.code&&n.info({message:"剩余时长大于2h无法续费。"})})},()=>{n.warning({message:"点击频率过快。"})},4e3),D=(e,l)=>{let a=x.blockMap[e].pos[1]+[100,80,60][x.blockMap[e].size]/2,o=x.blockMap[e].pos[0]+[100,80,60][x.blockMap[e].size]/2,t=x.blockMap[l].pos[1]+[100,80,60][x.blockMap[l].size]/2,r=x.blockMap[l].pos[0]+[100,80,60][x.blockMap[l].size]/2,i=t-a,s=r-o,n=Math.sqrt(i*i+s*s),c=360*Math.atan2(s,i)/(2*Math.PI),d=(t+a)/2,p=(r+o)/2,m=c<=-90?360+c:c,b=document.createElement("div");b.className="explore-node-line",b.style.top=`${p}px`,b.style.left=d-n/2+"px",b.style.width=`${n}px`,b.style.transform=`rotate(${m}deg)`,document.getElementsByClassName("explore-main")[0].append(b)};return x.isLoading=!0,v().then(e=>{if(200==e.code){x.blocks=e.data,x.blockMap={};for(let e of x.blocks)x.blockMap[e.id]=e;for(let e of x.blocks)for(let l of e.conditions)D(e.id,l);x.isLoading=!1}}),V(()=>{x.overtimer&&clearTimeout(x.overtimer)}),O=((e,l)=>{for(var a in l||(l={}))t.call(l,a)&&i(e,a,l[a]);if(o)for(var a of o(l))r.call(l,a)&&i(e,a,l[a]);return e})({},$(x)),C={dockerProcessText:b,navExplorer:m,calcStyle:e=>{let l=e.solved/e.count,a="";return a=l<=.5?"radial-gradient(#fff 60%, #fff 60%,rgba(0,0,0,0) 63%),linear-gradient(90deg, #cecece 50%, transparent 50%, transparent),linear-gradient("+(360*l+90)+"deg, #00b300 50%,#cecece 50%, #cecece)":"radial-gradient(#fff 60%, #fff 60%,rgba(0,0,0,0) 63%),linear-gradient(270deg, #00b300 50%, transparent 50%, transparent),linear-gradient("+(360*l+90)+"deg, #00b300 50%,#cecece 50%, #cecece)",a},submitFlag:()=>{y(x.activeProblemId,x.problem.flag).then(e=>{200===e.code?(n.success({message:"恭喜成功解出本题!"}),x.problem.isOpen=!1,x.problem.isSolved=!0):n.warning({message:"flag有误,请重新提交。"})})},handleBlockClick:e=>{(x.blockMap[e].count>0||2==x.blockMap[e].size)&&(x.isBlockDialogVisible=!0,x.isBlockDialogLoading=!0,x.block.title=x.blockMap[e].title,x.activeProblemId=0,f(x.blockMap[e].sheet).then(e=>{200===e.code&&(x.block.problems=e.data,(()=>{let e={},l={},a=0;for(let o of x.block.problems){e[o.index]={title:o.title,name:o.title,pid:o.pid,state:o.state+1},o.conditions.length>0?l[o.conditions[0]]?l[o.conditions[0]].push(o.index):l[o.conditions[0]]=[o.index]:x.block.treeRoot=o.index,x.block.linkMap[o.index.toString()]=o.conditions,x.block.nodeMap[o.index.toString()]=e[o.index];let t=o.title.match(/[a-zA-Z\$_]/g);t=t?Math.round(t.length/2):0,a=Math.max(a,o.title.length-t)}for(let o in e)if(2==e[o].state&&null!=l[o])for(let a of l[o])0==e[a].state&&(e[a].state+=1);x.block.labelWidth=35+15*a+"px",x.block.map=l,x.block.data=e})(),x.isBlockDialogLoading=!1)}))},handleBlockProblemClick:e=>{x.activeProblemId=x.block.data[e].pid,u(x.activeProblemId).then(e=>{200===e.code&&(x.problem.desc=e.data.desc,x.problem.price=e.data.price,x.problem.category=e.data.category,x.problem.isOpen=e.data.is_open,x.problem.title=e.data.title,x.problem.isSolved=e.data.is_solved,x.problem.annex=e.data.annex,e.data.is_open&&h())})},handleOpenDocker:_,handleCloseDocker:w,handleDelayDocker:P,handleAnnexDownload:()=>{g(x.activeProblemId).then(e=>{if(200==e.code){let l=document.createElement("a");l.style.display="none",l.href=e.data,l.target="_blank",document.body.appendChild(l),l.click(),document.body.removeChild(l)}})}},l(O,a(C));var O,C}},[["render",function(e,l,a,o,t,r){const i=z("font-awesome-icon"),s=P,n=z("router-link"),c=D,d=O,p=h,m=z("Coin"),b=C,k=M,g=j,u=I,f=w,y=A("nss-title");return S((E(),R("div",H,[F("div",X,[T(c,{class:"explore-card mb-6 shadow-lg"},{default:W(()=>[F("div",Y,[F("div",ee,[T(i,{icon:["fas","rocket"],color:"#9b41a1",class:"text-4xl"}),l[4]||(l[4]=F("div",{class:"flex items-center text-4xl font-bold"},[F("span",{style:{color:"#3d59ab"}},"星"),F("span",{style:{color:"#4c55a9"}},"辰"),F("span",{style:{color:"#6c4da6"}},"大"),F("span",{style:{color:"#ab3ea0"}},"海")],-1))]),l[6]||(l[6]=F("p",{class:"text-gray-600 dark:text-gray-400 text-lg mb-4"},"扬帆,启航,我们的征途是星辰大海。",-1)),F("div",le,[T(n,{to:{path:"/problem/admin",query:{pane:"add",source:9}}},{default:W(()=>[T(s,{type:"primary",round:""},{default:W(()=>[T(i,{icon:["fas","plus"],class:"mr-2"}),l[5]||(l[5]=U(" 新题目 ",-1))]),_:1,__:[5]})]),_:1})])])]),_:1}),F("div",ae,[F("div",oe,[(E(!0),R(N,null,q(e.blocks,e=>(E(),R("div",{key:e.id},[F("div",{id:`block-${e.id}`,onClick:l=>o.handleBlockClick(e.id),style:Z({top:e.pos[0]+"px",left:e.pos[1]+"px",backgroundImage:o.calcStyle(e)}),class:K([`explore-block-${["large","middle","small"][e.size]}`,e.count?"explore-block":"explore-none-block"])},[T(d,{effect:"light",placement:"bottom"},{content:W(()=>[U(J(0==e.count?e.title:`完成率:${(e.solved/e.count*100).toFixed(0)}%`),1)]),default:W(()=>[F("div",re,J(e.title),1)]),_:2},1024)],14,te)]))),128))])]),T(u,{modelValue:e.isBlockDialogVisible,"onUpdate:modelValue":l[3]||(l[3]=l=>e.isBlockDialogVisible=l),class:"explore-info",width:"60%"},{header:W(()=>[F("div",ie,[T(i,{icon:["fas","circle-nodes"],class:"text-blue-500"}),F("span",se,J(e.block.title),1)])]),footer:W(()=>l[23]||(l[23]=[])),default:W(()=>[F("div",ne,[0==Object.keys(e.block.data).length?(E(),R("div",ce,[l[10]||(l[10]=F("div",null," 该板块暂时还没有题目。 ",-1)),F("div",null,[l[8]||(l[8]=U("您可以通过右上角新题目按钮贡献题目,题目贡献说明请阅读",-1)),T(n,{class:"underline underline-offset-4",to:"/note/set/5424"},{default:W(()=>l[7]||(l[7]=[U("题目上传说明",-1)])),_:1,__:[7]}),l[9]||(l[9]=U("。",-1))])])):(E(),G(p,{key:1,data:e.block.data,map:e.block.map,index:e.block.treeRoot,config:1,clickF:o.handleBlockProblemClick,labelWidth:e.block.labelWidth},null,8,["data","map","index","clickF","labelWidth"]))]),e.activeProblemId>0?(E(),R("div",de,[F("div",null,[F("p",null," 题目标题:"+J(e.problem.title),1),F("p",null,[l[11]||(l[11]=U(" 题目描述:",-1)),F("pre",pe,J(e.problem.desc?e.problem.desc:"无"),1)])]),F("div",me,[0==e.problem.isOpen?(E(),G(s,{key:0,onClick:o.handleOpenDocker},{default:W(()=>[l[13]||(l[13]=U("开启环境 ",-1)),T(b,null,{default:W(()=>[T(m)]),_:1}),e.isVip&&e.problem.price>0?(E(),R("div",be,[l[12]||(l[12]=U("0",-1)),F("div",ke,J(e.problem.price),1)])):(E(),R("div",ge,J(e.problem.price),1))]),_:1,__:[13]},8,["onClick"])):0==e.problem.noDocker?(E(),R(N,{key:1},[e.problem.isOpenAndLoading?(E(),R("div",ue,[F("div",fe,[T(k,{indeterminate:!0,percentage:e.problem.docker.process,"stroke-width":10},null,8,["percentage"]),F("p",null,J(o.dockerProcessText[e.problem.docker.state]),1),T(s,{onClick:o.handleCloseDocker},{default:W(()=>l[14]||(l[14]=[U("关闭环境",-1)])),_:1,__:[14]},8,["onClick"])])])):(E(),R("div",ye,[(E(!0),R(N,null,q(e.problem.docker.url,e=>(E(),R("p",{key:e},[F("a",{href:`http://${e}/`,target:"blank"},J(e),9,xe)]))),128)),T(k,{style:{width:"400px",margin:"auto auto"},percentage:e.problem.dockerRemainPercentage,format:()=>`剩余:${e.problem.docker.remain}秒`},null,8,["percentage","format"]),T(s,{onClick:o.handleCloseDocker},{default:W(()=>l[15]||(l[15]=[U("关闭环境",-1)])),_:1,__:[15]},8,["onClick"]),T(s,{onClick:o.handleDelayDocker},{default:W(()=>l[16]||(l[16]=[U("延长时间",-1)])),_:1,__:[16]},8,["onClick"])]))],64)):Q("",!0),e.problem.isOpen&&e.problem.annex?(E(),G(s,{key:2,onClick:o.handleAnnexDownload},{default:W(()=>l[17]||(l[17]=[U(" 附件下载 ",-1)])),_:1,__:[17]},8,["onClick"])):Q("",!0),T(d,{effect:"light",placement:"bottom"},{content:W(()=>l[18]||(l[18]=[U(" 跳转至题目详情页参与讨论、查看WriteUp。 ",-1)])),default:W(()=>[T(n,{to:`/problem/${e.activeProblemId}`},{default:W(()=>[T(s,{type:"primary"},{default:W(()=>l[19]||(l[19]=[U("跳转题库",-1)])),_:1,__:[19]})]),_:1},8,["to"])]),_:1}),e.problem.isOpen&&0==e.problem.category?(E(),R("div",he,[0==e.problem.isSolved?(E(),R(N,{key:0},[T(g,{modelValue:e.problem.flag,"onUpdate:modelValue":l[0]||(l[0]=l=>e.problem.flag=l),placeholder:"flag"},null,8,["modelValue"]),T(s,{type:"primary",onClick:l[1]||(l[1]=e=>o.submitFlag())},{default:W(()=>l[20]||(l[20]=[U("提 交",-1)])),_:1,__:[20]})],64)):(E(),G(s,{key:1,style:{color:"green"}},{default:W(()=>l[21]||(l[21]=[U("已解决",-1)])),_:1,__:[21]}))])):e.problem.isOpen?(E(),G(s,{key:4,type:"primary",onClick:l[2]||(l[2]=e=>o.submitFlag()),style:{"margin-top":"10px"}},{default:W(()=>l[22]||(l[22]=[U("提 交",-1)])),_:1,__:[22]})):Q("",!0)])])):Q("",!0)]),_:1},8,["modelValue"])])])),[[f,e.isLoading],[y,"星辰大海"]])}],["__scopeId","data-v-001b3d72"]]);export{ve as default};