@hieuzest/koishi-plugin-mahjongpub 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -4
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{icons as
|
|
1
|
+
import{icons as At,send as R,receive as Lt}from"@koishijs/client";import{createElementBlock as h,openBlock as d,createCommentVNode as V,createElementVNode as p,defineComponent as H,warn as Ut,watch as ce,unref as T,inject as fe,ref as S,computed as j,isRef as Ft,getCurrentInstance as _e,provide as Bt,renderSlot as Ve,mergeProps as Kt,normalizeClass as Y,createVNode as s,Transition as mt,withCtx as l,withDirectives as Le,toDisplayString as P,normalizeStyle as ft,vShow as Ue,shallowReactive as Ht,onMounted as je,createBlock as E,resolveDynamicComponent as Gt,Fragment as q,withModifiers as Se,isVNode as vt,render as et,resolveComponent as k,createTextVNode as x,renderList as Q,withKeys as De,reactive as Zt,onUnmounted as Jt,nextTick as Yt}from"vue";import{isClient as Fe,useEventListener as qt,useResizeObserver as Wt,useTimeoutFn as Xt}from"@vueuse/core";const ie=(e,n)=>{const t=e.__vccOpts||e;for(const[a,o]of n)t[a]=o;return t},Qt={},en={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"};function tn(e,n){return d(),h("svg",en,[V(" Mahjong tile "),n[0]||(n[0]=p("rect",{x:"3",y:"1",width:"18",height:"22",rx:"2",ry:"2",fill:"none",stroke:"currentColor","stroke-width":"1.5"},null,-1)),n[1]||(n[1]=p("rect",{x:"5",y:"3",width:"14",height:"18",rx:"1",ry:"1",fill:"none",stroke:"currentColor","stroke-width":"0.8"},null,-1)),V(" 中 character simplified "),n[2]||(n[2]=p("rect",{x:"8",y:"7",width:"8",height:"10",rx:"0.5",fill:"none",stroke:"currentColor","stroke-width":"1.2"},null,-1)),n[3]||(n[3]=p("line",{x1:"12",y1:"7",x2:"12",y2:"17",stroke:"currentColor","stroke-width":"1.2"},null,-1)),n[4]||(n[4]=p("line",{x1:"8",y1:"12",x2:"16",y2:"12",stroke:"currentColor","stroke-width":"1.2"},null,-1))])}const nn=ie(Qt,[["render",tn]]);At.register("mahjongpub:icon",nn);/**
|
|
2
2
|
* @vue/shared v3.5.26
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
|
-
**/const nn=Object.prototype.hasOwnProperty,tt=(e,n)=>nn.call(e,n),Ie=e=>typeof e=="function",ze=e=>typeof e=="string",yt=e=>e!==null&&typeof e=="object";var on=typeof global=="object"&&global&&global.Object===Object&&global,an=typeof self=="object"&&self&&self.Object===Object&&self,Fe=on||an||Function("return this")(),ve=Fe.Symbol,gt=Object.prototype,ln=gt.hasOwnProperty,sn=gt.toString,he=ve?ve.toStringTag:void 0;function rn(e){var n=ln.call(e,he),t=e[he];try{e[he]=void 0;var o=true}catch{}var a=sn.call(e);return o&&(n?e[he]=t:delete e[he]),a}var un=Object.prototype,dn=un.toString;function cn(e){return dn.call(e)}var pn="[object Null]",mn="[object Undefined]",nt=ve?ve.toStringTag:void 0;function ht(e){return e==null?e===void 0?mn:pn:nt&&nt in Object(e)?rn(e):cn(e)}function fn(e){return e!=null&&typeof e=="object"}var vn="[object Symbol]";function Be(e){return typeof e=="symbol"||fn(e)&&ht(e)==vn}function yn(e,n){for(var t=-1,o=e==null?0:e.length,a=Array(o);++t<o;)a[t]=n(e[t],t,e);return a}var Ke=Array.isArray,ot=ve?ve.prototype:void 0,at=ot?ot.toString:void 0;function _t(e){if(typeof e=="string")return e;if(Ke(e))return yn(e,_t)+"";if(Be(e))return at?at.call(e):"";var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function bt(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var gn="[object AsyncFunction]",hn="[object Function]",_n="[object GeneratorFunction]",bn="[object Proxy]";function wn(e){if(!bt(e))return false;var n=ht(e);return n==hn||n==_n||n==gn||n==bn}var Ee=Fe["__core-js_shared__"],lt=function(){var e=/[^.]+$/.exec(Ee&&Ee.keys&&Ee.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Cn(e){return!!lt&< in e}var xn=Function.prototype,$n=xn.toString;function kn(e){if(e!=null){try{return $n.call(e)}catch{}try{return e+""}catch{}}return""}var Sn=/[\\^$.*+?()[\]{}|]/g,In=/^\[object .+?Constructor\]$/,zn=Function.prototype,Tn=Object.prototype,Vn=zn.toString,jn=Tn.hasOwnProperty,Pn=RegExp("^"+Vn.call(jn).replace(Sn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Nn(e){if(!bt(e)||Cn(e))return false;var n=wn(e)?Pn:In;return n.test(kn(e))}function On(e,n){return e==null?void 0:e[n]}function wt(e,n){var t=On(e,n);return Nn(t)?t:void 0}function En(e,n){return e===n||e!==e&&n!==n}var Mn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dn=/^\w*$/;function Rn(e,n){if(Ke(e))return false;var t=typeof e;return t=="number"||t=="symbol"||t=="boolean"||e==null||Be(e)?true:Dn.test(e)||!Mn.test(e)||n!=null&&e in Object(n)}var be=wt(Object,"create");function An(){this.__data__=be?be(null):{},this.size=0}function Ln(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n}var Un="__lodash_hash_undefined__",Fn=Object.prototype,Bn=Fn.hasOwnProperty;function Kn(e){var n=this.__data__;if(be){var t=n[e];return t===Un?void 0:t}return Bn.call(n,e)?n[e]:void 0}var Hn=Object.prototype,Gn=Hn.hasOwnProperty;function Zn(e){var n=this.__data__;return be?n[e]!==void 0:Gn.call(n,e)}var Jn="__lodash_hash_undefined__";function Yn(e,n){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=be&&n===void 0?Jn:n,this}function pe(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var o=e[n];this.set(o[0],o[1])}}pe.prototype.clear=An;pe.prototype.delete=Ln;pe.prototype.get=Kn;pe.prototype.has=Zn;pe.prototype.set=Yn;function qn(){this.__data__=[],this.size=0}function Pe(e,n){for(var t=e.length;t--;)if(En(e[t][0],n))return t;return-1}var Wn=Array.prototype,Xn=Wn.splice;function Qn(e){var n=this.__data__,t=Pe(n,e);if(t<0)return false;var o=n.length-1;return t==o?n.pop():Xn.call(n,t,1),--this.size,true}function eo(e){var n=this.__data__,t=Pe(n,e);return t<0?void 0:n[t][1]}function to(e){return Pe(this.__data__,e)>-1}function no(e,n){var t=this.__data__,o=Pe(t,e);return o<0?(++this.size,t.push([e,n])):t[o][1]=n,this}function ge(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var o=e[n];this.set(o[0],o[1])}}ge.prototype.clear=qn;ge.prototype.delete=Qn;ge.prototype.get=eo;ge.prototype.has=to;ge.prototype.set=no;var oo=wt(Fe,"Map");function ao(){this.size=0,this.__data__={hash:new pe,map:new(oo||ge),string:new pe}}function lo(e){var n=typeof e;return n=="string"||n=="number"||n=="symbol"||n=="boolean"?e!=="__proto__":e===null}function Ne(e,n){var t=e.__data__;return lo(n)?t[typeof n=="string"?"string":"hash"]:t.map}function so(e){var n=Ne(this,e).delete(e);return this.size-=n?1:0,n}function ro(e){return Ne(this,e).get(e)}function io(e){return Ne(this,e).has(e)}function uo(e,n){var t=Ne(this,e),o=t.size;return t.set(e,n),this.size+=t.size==o?0:1,this}function me(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var o=e[n];this.set(o[0],o[1])}}me.prototype.clear=ao;me.prototype.delete=so;me.prototype.get=ro;me.prototype.has=io;me.prototype.set=uo;var co="Expected a function";function He(e,n){if(typeof e!="function"||n!=null&&typeof n!="function")throw new TypeError(co);var t=function(){var o=arguments,a=n?n.apply(this,o):o[0],i=t.cache;if(i.has(a))return i.get(a);var d=e.apply(this,o);return t.cache=i.set(a,d)||i,d};return t.cache=new(He.Cache||me),t}He.Cache=me;var po=500;function mo(e){var n=He(e,function(o){return t.size===po&&t.clear(),o}),t=n.cache;return n}var fo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vo=/\\(\\)?/g,yo=mo(function(e){var n=[];return e.charCodeAt(0)===46&&n.push(""),e.replace(fo,function(t,o,a,i){n.push(a?i.replace(vo,"$1"):o||t)}),n});function go(e){return e==null?"":_t(e)}function ho(e,n){return Ke(e)?e:Rn(e,n)?[e]:yo(go(e))}function _o(e){if(typeof e=="string"||Be(e))return e;var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function bo(e,n){n=ho(n,e);for(var t=0,o=n.length;e!=null&&t<o;)e=e[_o(n[t++])];return t&&t==o?e:void 0}function wo(e,n,t){var o=e==null?void 0:bo(e,n);return o===void 0?t:o}function Co(e){for(var n=-1,t=e==null?0:e.length,o={};++n<t;){var a=e[n];o[a[0]]=a[1]}return o}const xo=e=>e===void 0,we=e=>typeof e=="number",$o=e=>typeof Element>"u"?false:e instanceof Element,ko=e=>ze(e)?!Number.isNaN(Number(e)):false,st=e=>Object.keys(e);function De(e,n="px"){if(!e)return"";if(we(e)||ko(e))return`${e}${n}`;if(ze(e))return e}/*! Element Plus Icons Vue v2.3.2 */var So=H({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(n,t)=>(u(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),Io=So,zo=H({name:"Close",__name:"close",setup(e){return(n,t)=>(u(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),To=zo,Vo=H({name:"InfoFilled",__name:"info-filled",setup(e){return(n,t)=>(u(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),jo=Vo,Po=H({name:"SuccessFilled",__name:"success-filled",setup(e){return(n,t)=>(u(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),No=Po,Oo=H({name:"WarningFilled",__name:"warning-filled",setup(e){return(n,t)=>(u(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),Eo=Oo;const Ct="__epPropKey",le=e=>e,Mo=e=>yt(e)&&!!e[Ct],xt=(e,n)=>{if(!yt(e)||Mo(e))return e;const{values:t,required:o,default:a,type:i,validator:d}=e,C={type:i,required:!!o,validator:t||d?I=>{let y=false,_=[];if(t&&(_=Array.from(t),tt(e,"default")&&_.push(a),y||(y=_.includes(I))),d&&(y||(y=d(I))),!y&&_.length>0){const g=[...new Set(_)].map($=>JSON.stringify($)).join(", ");Lt(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${g}], got value ${JSON.stringify(I)}.`)}return y}:void 0,[Ct]:true};return tt(e,"default")&&(C.default=a),C},Ce=e=>Co(Object.entries(e).map(([n,t])=>[n,xt(t,n)])),Do=le([String,Object,Function]),Ro={Close:To},rt={success:No,warning:Eo,error:Io,info:jo},$t=(e,n)=>(e.install=t=>{for(const o of[e,...Object.values({})])t.component(o.name,o)},e),Ao=(e,n)=>(e.install=t=>{e._context=t._context,t.config.globalProperties[n]=e},e),Lo={esc:"Escape"},Uo=["","default","small","large"],Fo=e=>e,it=({from:e,replacement:n,scope:t,version:o,ref:a,type:i="API"},d)=>{ce(()=>T(d),m=>{},{immediate:true})};var Bo={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const Ko=e=>(n,t)=>Ho(n,t,T(e)),Ho=(e,n,t)=>wo(t,e,e).replace(/\{(\w+)\}/g,(o,a)=>{var i;return`${(i=n==null?void 0:n[a])!=null?i:`{${a}}`}`}),Go=e=>{const n=j(()=>T(e).name),t=Ut(e)?e:S(e);return{lang:n,locale:t,t:Ko(e)}},kt=Symbol("localeContextKey"),Zo=e=>{const n=e||fe(kt,S());return Go(j(()=>n.value||Bo))},ke="el",Jo="is-",de=(e,n,t,o,a)=>{let i=`${e}-${n}`;return t&&(i+=`-${t}`),o&&(i+=`__${o}`),a&&(i+=`--${a}`),i},St=Symbol("namespaceContextKey"),Yo=e=>{const n=e||(_e()?fe(St,S(ke)):S(ke));return j(()=>T(n)||ke)},Ge=(e,n)=>{const t=Yo(n);return{namespace:t,b:(v="")=>de(t.value,e,v,"",""),e:v=>v?de(t.value,e,"",v,""):"",m:v=>v?de(t.value,e,"","",v):"",be:(v,f)=>v&&f?de(t.value,e,v,f,""):"",em:(v,f)=>v&&f?de(t.value,e,"",v,f):"",bm:(v,f)=>v&&f?de(t.value,e,v,"",f):"",bem:(v,f,p)=>v&&f&&p?de(t.value,e,v,f,p):"",is:(v,...f)=>{const p=f.length>=1?f[0]:true;return v&&p?`${Jo}${v}`:""},cssVar:v=>{const f={};for(const p in v)v[p]&&(f[`--${t.value}-${p}`]=v[p]);return f},cssVarName:v=>`--${t.value}-${v}`,cssVarBlock:v=>{const f={};for(const p in v)v[p]&&(f[`--${t.value}-${e}-${p}`]=v[p]);return f},cssVarBlockName:v=>`--${t.value}-${e}-${v}`}},ut={current:0},dt=S(0),It=2e3,ct=Symbol("elZIndexContextKey"),zt=Symbol("zIndexContextKey"),qo=e=>{const n=_e()?fe(ct,ut):ut,t=e||(_e()?fe(zt,void 0):void 0),o=j(()=>{const d=T(t);return we(d)?d:It}),a=j(()=>o.value+dt.value),i=()=>(n.current++,dt.value=n.current,a.value);return!Ue&&fe(ct),{initialZIndex:o,currentZIndex:a,nextZIndex:i}},Wo=xt({type:String,values:Uo,required:false}),Xo=Symbol("size"),Qo=Symbol("emptyValuesContextKey"),ea=Ce({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Ie(e)?!e():!e}}),Tt=Symbol(),Te=S();function Vt(e,n=void 0){return _e()?fe(Tt,Te):Te}function ta(e,n){const t=Vt(),o=Ge(e,j(()=>{var m;return((m=t.value)==null?void 0:m.namespace)||ke})),a=Zo(j(()=>{var m;return(m=t.value)==null?void 0:m.locale})),i=qo(j(()=>{var m;return((m=t.value)==null?void 0:m.zIndex)||It})),d=j(()=>{var m;return T(n)||((m=t.value)==null?void 0:m.size)||""});return jt(j(()=>T(t)||{})),{ns:o,locale:a,zIndex:i,size:d}}const jt=(e,n,t=false)=>{var o;const a=!!_e(),i=a?Vt():void 0,d=(o=void 0)!=null?o:a?Ft:void 0;if(!d)return;const m=j(()=>{const C=T(e);return i!=null&&i.value?na(i.value,C):C});return d(Tt,m),d(kt,j(()=>m.value.locale)),d(St,j(()=>m.value.namespace)),d(zt,j(()=>m.value.zIndex)),d(Xo,{size:j(()=>m.value.size||"")}),d(Qo,j(()=>({emptyValues:m.value.emptyValues,valueOnClear:m.value.valueOnClear}))),(t||!Te.value)&&(Te.value=m.value),m},na=(e,n)=>{const t=[...new Set([...st(e),...st(n)])],o={};for(const a of t)o[a]=n[a]!==void 0?n[a]:e[a];return o},oa=Ce({a11y:{type:Boolean,default:true},locale:{type:le(Object)},size:Wo,button:{type:le(Object)},experimentalFeatures:{type:le(Object)},keyboardNavigation:{type:Boolean,default:true},message:{type:le(Object)},zIndex:Number,namespace:{type:String,default:"el"},...ea}),Re={};H({name:"ElConfigProvider",props:oa,setup(e,{slots:n}){ce(()=>e.message,o=>{Object.assign(Re,o??{})},{immediate:true,deep:true});const t=jt(e);return()=>Ve(n,"default",{config:t==null?void 0:t.value})}});var Ze=(e,n)=>{const t=e.__vccOpts||e;for(const[o,a]of n)t[o]=a;return t};const aa=Ce({size:{type:le([Number,String])},color:{type:String}}),la=H({name:"ElIcon",inheritAttrs:false}),sa=H({...la,props:aa,setup(e){const n=e,t=Ge("icon"),o=j(()=>{const{size:a,color:i}=n;return!a&&!i?{}:{fontSize:xo(a)?void 0:De(a),"--color":i}});return(a,i)=>(u(),h("i",Bt({class:T(t).b(),style:T(o)},a.$attrs),[Ve(a.$slots,"default")],16))}});var ra=Ze(sa,[["__file","icon.vue"]]);const pt=$t(ra),ia=Ce({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:true},color:String,dotStyle:{type:le([String,Object,Array])},badgeStyle:{type:le([String,Object,Array])},offset:{type:le(Array),default:[0,0]},dotClass:{type:String},badgeClass:{type:String}}),ua=["textContent"],da=H({name:"ElBadge"}),ca=H({...da,props:ia,setup(e,{expose:n}){const t=e,o=Ge("badge"),a=j(()=>t.isDot?"":we(t.value)&&we(t.max)?t.max<t.value?`${t.max}+`:t.value===0&&!t.showZero?"":`${t.value}`:`${t.value}`),i=j(()=>{var d,m,C,I,y,_;return[{backgroundColor:t.color,marginRight:De(-((m=(d=t.offset)==null?void 0:d[0])!=null?m:0)),marginTop:De((I=(C=t.offset)==null?void 0:C[1])!=null?I:0)},(y=t.dotStyle)!=null?y:{},(_=t.badgeStyle)!=null?_:{}]});return it({from:"dot-style",replacement:"badge-style",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},j(()=>!!t.dotStyle)),it({from:"dot-class",replacement:"badge-class",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},j(()=>!!t.dotClass)),n({content:a}),(d,m)=>(u(),h("div",{class:Y(T(o).b())},[Ve(d.$slots,"default"),s(mt,{name:`${T(o).namespace.value}-zoom-in-center`,persisted:""},{default:l(()=>[Ae(c("sup",{class:Y([T(o).e("content"),T(o).em("content",d.type),T(o).is("fixed",!!d.$slots.default),T(o).is("dot",d.isDot),d.dotClass,d.badgeClass]),style:ft(T(i)),textContent:N(T(a))},null,14,ua),[[Le,!d.hidden&&(T(a)||d.isDot)]])]),_:1},8,["name"])],2))}});var pa=Ze(ca,[["__file","badge.vue"]]);const ma=$t(pa),Pt=["success","info","warning","error"],Z=Fo({customClass:"",center:false,dangerouslyUseHTMLString:false,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:false,type:"info",plain:false,offset:16,zIndex:0,grouping:false,repeatNum:1,appendTo:Ue?document.body:void 0}),fa=Ce({customClass:{type:String,default:Z.customClass},center:{type:Boolean,default:Z.center},dangerouslyUseHTMLString:{type:Boolean,default:Z.dangerouslyUseHTMLString},duration:{type:Number,default:Z.duration},icon:{type:Do,default:Z.icon},id:{type:String,default:Z.id},message:{type:le([String,Object,Function]),default:Z.message},onClose:{type:le(Function),default:Z.onClose},showClose:{type:Boolean,default:Z.showClose},type:{type:String,values:Pt,default:Z.type},plain:{type:Boolean,default:Z.plain},offset:{type:Number,default:Z.offset},zIndex:{type:Number,default:Z.zIndex},grouping:{type:Boolean,default:Z.grouping},repeatNum:{type:Number,default:Z.repeatNum}}),va={destroy:()=>true},se=Kt([]),ya=e=>{const n=se.findIndex(a=>a.id===e),t=se[n];let o;return n>0&&(o=se[n-1]),{current:t,prev:o}},ga=e=>{const{prev:n}=ya(e);return n?n.vm.exposed.bottom.value:0},ha=(e,n)=>se.findIndex(o=>o.id===e)>0?16:n,_a=["id"],ba=["innerHTML"],wa=H({name:"ElMessage"}),Ca=H({...wa,props:fa,emits:va,setup(e,{expose:n}){const t=e,{Close:o}=Ro,{ns:a,zIndex:i}=ta("message"),{currentZIndex:d,nextZIndex:m}=i,C=S(),I=S(false),y=S(0);let _;const g=j(()=>t.type?t.type==="error"?"danger":t.type:"info"),$=j(()=>{const E=t.type;return{[a.bm("icon",E)]:E&&rt[E]}}),O=j(()=>t.icon||rt[t.type]||""),v=j(()=>ga(t.id)),f=j(()=>ha(t.id,t.offset)+v.value),p=j(()=>y.value+f.value),w=j(()=>({top:`${f.value}px`,zIndex:d.value}));function B(){t.duration!==0&&({stop:_}=Wt(()=>{L()},t.duration))}function U(){_==null||_()}function L(){I.value=false}function J({code:E}){E===Lo.esc&&L()}return je(()=>{B(),m(),I.value=true}),ce(()=>t.repeatNum,()=>{U(),B()}),Yt(document,"keydown",J),qt(C,()=>{y.value=C.value.getBoundingClientRect().height}),n({visible:I,bottom:p,close:L}),(E,z)=>(u(),D(mt,{name:T(a).b("fade"),onBeforeLeave:E.onClose,onAfterLeave:z[0]||(z[0]=K=>E.$emit("destroy")),persisted:""},{default:l(()=>[Ae(c("div",{id:E.id,ref_key:"messageRef",ref:C,class:Y([T(a).b(),{[T(a).m(E.type)]:E.type},T(a).is("center",E.center),T(a).is("closable",E.showClose),T(a).is("plain",E.plain),E.customClass]),style:ft(T(w)),role:"alert",onMouseenter:U,onMouseleave:B},[E.repeatNum>1?(u(),D(T(ma),{key:0,value:E.repeatNum,type:T(g),class:Y(T(a).e("badge"))},null,8,["value","type","class"])):V("v-if",true),T(O)?(u(),D(T(pt),{key:1,class:Y([T(a).e("icon"),T($)])},{default:l(()=>[(u(),D(Ht(T(O))))]),_:1},8,["class"])):V("v-if",true),Ve(E.$slots,"default",{},()=>[E.dangerouslyUseHTMLString?(u(),h(q,{key:1},[V(" Caution here, message could've been compromised, never use user's input as message "),c("p",{class:Y(T(a).e("content")),innerHTML:E.message},null,10,ba)],2112)):(u(),h("p",{key:0,class:Y(T(a).e("content"))},N(E.message),3))]),E.showClose?(u(),D(T(pt),{key:2,class:Y(T(a).e("closeBtn")),onClick:Se(L,["stop"])},{default:l(()=>[s(T(o))]),_:1},8,["class","onClick"])):V("v-if",true)],46,_a),[[Le,I.value]])]),_:3},8,["name","onBeforeLeave"]))}});var xa=Ze(Ca,[["__file","message.vue"]]);let $a=1;const Nt=e=>{const n=!e||ze(e)||vt(e)||Ie(e)?{message:e}:e,t={...Z,...n};if(!t.appendTo)t.appendTo=document.body;else if(ze(t.appendTo)){let o=document.querySelector(t.appendTo);$o(o)||(o=document.body),t.appendTo=o}return t},ka=e=>{const n=se.indexOf(e);if(n===-1)return;se.splice(n,1);const{handler:t}=e;t.close()},Sa=({appendTo:e,...n},t)=>{const o=`message_${$a++}`,a=n.onClose,i=document.createElement("div"),d={...n,id:o,onClose:()=>{a==null||a(),ka(y)},onDestroy:()=>{et(null,i)}},m=s(xa,d,Ie(d.message)||vt(d.message)?{default:Ie(d.message)?d.message:()=>d.message}:null);m.appContext=t||ye._context,et(m,i),e.appendChild(i.firstElementChild);const C=m.component,y={id:o,vnode:m,vm:C,handler:{close:()=>{C.exposed.visible.value=false}},props:m.component.props};return y},ye=(e={},n)=>{if(!Ue)return{close:()=>{}};if(we(Re.max)&&se.length>=Re.max)return{close:()=>{}};const t=Nt(e);if(t.grouping&&se.length){const a=se.find(({vnode:i})=>{var d;return((d=i.props)==null?void 0:d.message)===t.message});if(a)return a.props.repeatNum+=1,a.props.type=t.type,a.handler}const o=Sa(t,n);return se.push(o),o.handler};Pt.forEach(e=>{ye[e]=(n={},t)=>{const o=Nt(n);return ye({...o,type:e},t)}});function Ia(e){for(const n of se)(!e||e===n.props.type)&&n.handler.close()}ye.closeAll=Ia;ye._context=null;const F=Ao(ye,"$message"),za={class:"sidebar"},Ta={class:"sidebar-header"},Va={class:"contest-list"},ja=["onClick","onContextmenu"],Pa={class:"contest-name"},Na={class:"contest-cid"},Oa=H({__name:"sidebar",props:{contests:{},activeCid:{}},emits:["select","add","remove","update"],setup(e,{emit:n}){const t=n,o=S(false),a=S(null),i=S(""),d=S(null),m=S(false);async function C(){if(a.value){m.value=true;try{d.value=await A("mahjongpub/search-contests",a.value)}catch(f){F.error(`查询失败: ${f}`)}finally{m.value=false}}}async function I(){if(d.value){m.value=true;try{const f={cid:d.value.cid,name:d.value.name,adminPassword:i.value||void 0};await A("mahjongpub/add-managed",f),t("add",f),o.value=false,a.value=null,d.value=null,i.value=""}catch(f){F.error(`添加失败: ${f}`)}finally{m.value=false}}}const y=S(false),_=S(null),g=S("");function $(f,p){_.value=p,g.value=p.adminPassword??"",y.value=true}async function O(){if(_.value)try{await A("mahjongpub/update-managed",_.value.cid,{adminPassword:g.value||void 0}),t("update",_.value.cid,{adminPassword:g.value||void 0}),y.value=false}catch(f){F.error(`保存失败: ${f}`)}}async function v(){if(_.value)try{await A("mahjongpub/remove-managed",_.value.cid),t("remove",_.value.cid),y.value=false}catch(f){F.error(`移除失败: ${f}`)}}return(f,p)=>{const w=k("el-button"),B=k("el-icon"),U=k("el-input"),L=k("el-form-item"),J=k("el-form"),E=k("el-dialog");return u(),h("div",za,[c("div",Ta,[p[9]||(p[9]=c("span",null,"比赛列表",-1)),s(w,{size:"small",type:"primary",onClick:p[0]||(p[0]=z=>o.value=true)},{default:l(()=>[...p[8]||(p[8]=[x("+ 添加",-1)])]),_:1})]),c("div",Va,[(u(true),h(q,null,X(e.contests,z=>(u(),h("div",{key:z.cid,class:Y(["contest-item",{active:z.cid===e.activeCid}]),onClick:K=>f.$emit("select",z.cid),onContextmenu:Se(K=>$(K,z),["prevent"])},[c("div",Pa,N(z.name),1),c("div",Na,"#"+N(z.cid),1),z.adminPassword?(u(),D(B,{key:0,class:"admin-badge",title:"已配置管理密码"},{default:l(()=>[...p[10]||(p[10]=[c("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"currentColor"},[c("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"})],-1)])]),_:1})):V("v-if",true)],42,ja))),128))]),V(" Import Dialog "),s(E,{modelValue:o.value,"onUpdate:modelValue":p[4]||(p[4]=z=>o.value=z),title:"添加比赛",width:"420"},{footer:l(()=>[s(w,{onClick:p[3]||(p[3]=z=>o.value=false)},{default:l(()=>[...p[11]||(p[11]=[x("取消",-1)])]),_:1}),s(w,{loading:m.value,onClick:C},{default:l(()=>[...p[12]||(p[12]=[x("查询",-1)])]),_:1},8,["loading"]),s(w,{type:"primary",disabled:!d.value,onClick:I},{default:l(()=>[...p[13]||(p[13]=[x("添加",-1)])]),_:1},8,["disabled"])]),default:l(()=>[s(J,{"label-width":"80px",onSubmit:Se(I,["prevent"])},{default:l(()=>[s(L,{label:"比赛 ID"},{default:l(()=>[s(U,{modelValue:a.value,"onUpdate:modelValue":p[1]||(p[1]=z=>a.value=z),modelModifiers:{number:true},placeholder:"输入大凤林比赛 ID"},null,8,["modelValue"])]),_:1}),d.value?(u(),D(L,{key:0,label:"比赛名称"},{default:l(()=>[c("span",null,N(d.value.name),1)]),_:1})):V("v-if",true),d.value?(u(),D(L,{key:1,label:"当前轮次"},{default:l(()=>[c("span",null,N(d.value.round),1)]),_:1})):V("v-if",true),s(L,{label:"管理密码"},{default:l(()=>[s(U,{modelValue:i.value,"onUpdate:modelValue":p[2]||(p[2]=z=>i.value=z),placeholder:"可选,用于队伍管理","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),V(" Context Menu (password edit) "),s(E,{modelValue:y.value,"onUpdate:modelValue":p[7]||(p[7]=z=>y.value=z),title:"编辑比赛",width:"400"},{footer:l(()=>[s(w,{type:"danger",onClick:v},{default:l(()=>[...p[14]||(p[14]=[x("移除比赛",-1)])]),_:1}),s(w,{onClick:p[6]||(p[6]=z=>y.value=false)},{default:l(()=>[...p[15]||(p[15]=[x("取消",-1)])]),_:1}),s(w,{type:"primary",onClick:O},{default:l(()=>[...p[16]||(p[16]=[x("保存",-1)])]),_:1})]),default:l(()=>[_.value?(u(),D(J,{key:0,"label-width":"80px"},{default:l(()=>[s(L,{label:"比赛名称"},{default:l(()=>[c("span",null,N(_.value.name)+" (#"+N(_.value.cid)+")",1)]),_:1}),s(L,{label:"管理密码"},{default:l(()=>[s(U,{modelValue:g.value,"onUpdate:modelValue":p[5]||(p[5]=z=>g.value=z),placeholder:"留空则无队伍管理权限","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})):V("v-if",true)]),_:1},8,["modelValue"])])}}}),Ea=ue(Oa,[["__scopeId","data-v-e7b90e50"]]),Ma={class:"cls-header"},Da={class:"cls-title"},Ra={key:0,class:"error-msg"},Aa={class:"player-list"},La={class:"player-info"},Ua={class:"player-name"},Fa={class:"swap-popover"},Ba={key:0,class:"swap-section"},Ka=["onClick"],Ha={class:"swap-manual"},Ga={class:"swap-mode-actions"},Za={class:"player-right"},Ja=["onClick"],Ya={key:1,class:"point-edit"},qa={key:0,class:"no-players"},Wa={class:"cls-actions"},Xa=H({__name:"cls-card",props:{cls:{},status:{},externalCheckResult:{},hasAdmin:{type:Boolean}},emits:["start","stop","check","swap","edit-point"],setup(e,{emit:n}){const t=e,o=n,a=j(()=>t.status.next??t.status.last??[]),i=j(()=>t.status.status==="pending"||t.status.status==="suspended"),d=S(false),m=S(null),C=j(()=>m.value??t.externalCheckResult??null),I=S(""),y=S({});function _(p,w){y.value[p]=w}function g(p){const w=y.value[p];w!==void 0&&o("edit-point",p,w),y.value[p]=void 0}function $(){d.value=true,m.value=null,o("check",p=>{m.value=p,d.value=false})}function O(p,w,B){w!=null&&w.trim()&&(o("swap",p,w.trim(),B),I.value="")}const v=j(()=>{switch(t.status.status){case"pending":return"info";case"running":return"success";case"finished":return"";case"suspended":return"warning";case"error":return"danger"}}),f=j(()=>{switch(t.status.status){case"pending":return"等待中";case"running":return"进行中";case"finished":return"已结束";case"suspended":return"已停止";case"error":return"错误"}});return(p,w)=>{const B=k("el-tag"),U=k("el-button"),L=k("el-divider"),J=k("el-input"),E=k("el-popover"),z=k("el-card");return u(),D(z,{class:Y(["cls-card",`status-${e.status.status}`]),shadow:"hover"},{header:l(()=>[c("div",Ma,[c("span",Da,N(e.cls)+"组 - "+N(e.status.rowi+1),1),s(B,{type:v.value,size:"small",effect:"dark"},{default:l(()=>[x(N(f.value),1)]),_:1},8,["type"])])]),default:l(()=>[e.status.status==="error"&&e.status.msg?(u(),h("div",Ra,N(e.status.msg),1)):V("v-if",true),c("div",Aa,[(u(true),h(q,null,X(a.value,(K,G)=>{var xe;return u(),h("div",{key:G,class:"player-row"},[c("div",La,[C.value?(u(),h("span",{key:0,class:Y(["online-dot",(xe=C.value[G])!=null&&xe.online?"online":"offline"])},null,2)):V("v-if",true),c("span",Ua,N(K.player),1),i.value?(u(),D(E,{key:1,trigger:"click",width:220,placement:"right","popper-class":"swap-popover-container"},{reference:l(()=>[s(U,{size:"small",text:"",class:"swap-btn",title:"换人"},{default:l(()=>[...w[3]||(w[3]=[x("✎",-1)])]),_:1})]),default:l(()=>{var Q;return[c("div",Fa,[(Q=K.teammates)!=null&&Q.length?(u(),h("div",Ba,[w[4]||(w[4]=c("div",{class:"swap-title"},"从队伍名单选择",-1)),(u(true),h(q,null,X(K.teammates,(re,b)=>(u(),h("div",{key:b,class:Y(["swap-option",{active:re===K.player}]),onClick:r=>O(G,re,false)},N(re),11,Ka))),128))])):V("v-if",true),s(L,{style:{margin:"8px 0"}}),w[7]||(w[7]=c("div",{class:"swap-title"},"手动输入",-1)),c("div",Ha,[s(J,{modelValue:I.value,"onUpdate:modelValue":w[0]||(w[0]=re=>I.value=re),size:"small",placeholder:"选手名"},null,8,["modelValue"])]),c("div",Ga,[s(U,{size:"small",onClick:re=>O(G,I.value,false)},{default:l(()=>[...w[5]||(w[5]=[x("临时替换",-1)])]),_:1},8,["onClick"]),e.hasAdmin?(u(),D(U,{key:0,size:"small",type:"primary",onClick:re=>O(G,I.value,true)},{default:l(()=>[...w[6]||(w[6]=[x("修改名单",-1)])]),_:1},8,["onClick"])):V("v-if",true)])])]}),_:2},1024)):V("v-if",true)]),c("div",Za,[y.value[G]?(u(),h("div",Ya,[s(J,{modelValue:y.value[G],"onUpdate:modelValue":Q=>y.value[G]=Q,modelModifiers:{number:true},size:"small",style:{width:"70px"},onKeyup:[Me(Q=>g(G),["enter"]),Me(Q=>y.value[G]=void 0,["escape"])]},null,8,["modelValue","onUpdate:modelValue","onKeyup"]),s(U,{size:"small",text:"",type:"primary",class:"point-edit-btn",onClick:Q=>g(G)},{default:l(()=>[...w[8]||(w[8]=[x("✓",-1)])]),_:1},8,["onClick"]),s(U,{size:"small",text:"",class:"point-edit-btn",onClick:Q=>y.value[G]=void 0},{default:l(()=>[...w[9]||(w[9]=[x("✕",-1)])]),_:1},8,["onClick"])])):(u(),h("span",{key:0,class:Y(["player-point",{editable:i.value}]),onClick:Q=>i.value&&_(G,K.point)},N(K.point),11,Ja))])])}),128)),a.value.length?V("v-if",true):(u(),h("div",qa,"-"))]),c("div",Wa,[e.status.status==="pending"||e.status.status==="suspended"?(u(),D(U,{key:0,type:"success",size:"small",onClick:w[1]||(w[1]=K=>p.$emit("start"))},{default:l(()=>[...w[10]||(w[10]=[x(" 开赛 ",-1)])]),_:1})):V("v-if",true),e.status.status==="pending"||e.status.status==="running"?(u(),D(U,{key:1,type:"warning",size:"small",onClick:w[2]||(w[2]=K=>p.$emit("stop"))},{default:l(()=>[...w[11]||(w[11]=[x(" 停止 ",-1)])]),_:1})):V("v-if",true),i.value?(u(),D(U,{key:2,size:"small",loading:d.value,onClick:$},{default:l(()=>[...w[12]||(w[12]=[x(" 检查 ",-1)])]),_:1},8,["loading"])):V("v-if",true)])]),_:1},8,["class"])}}}),Qa=ue(Xa,[["__scopeId","data-v-559ac705"]]),el={class:"match-manager"},tl={class:"config-header"},nl={class:"schedule-section"},ol={class:"schedule-list"},al={class:"config-actions"},ll={class:"subscriber-list"},sl={key:0,class:"subscriber-empty"},rl={class:"subscriber-add"},il={class:"schedule-control-header"},ul={class:"schedule-control-list"},dl={class:"schedule-info"},cl={key:0,class:"schedule-time"},pl={key:2,class:"status-section"},ml={class:"status-header"},fl={class:"status-actions"},vl={class:"cls-grid"},yl={key:3,class:"status-placeholder"},gl={class:"log-header"},hl={class:"log-time"},_l={class:"log-msg"},bl={key:0,class:"log-empty"},wl=H({__name:"match-manager",props:{cid:{},contestInfo:{}},emits:["refresh"],setup(e,{emit:n}){const t=e,o=n,a=S({type:"ssb",round:1,lobby:"",playerIndex:0,ver:0,maxRow:void 0,schedules:[]}),i=S([]),d=S([]),m=S(),C=S(false),I=S(false),y=Gt({}),_=S("");let g=null;ce(()=>{var b;return(b=t.contestInfo)==null?void 0:b.extra},b=>{var r;b&&(a.value.type=b.type??"ssb",a.value.round=b.round??((r=t.contestInfo)==null?void 0:r.totalRounds)??1,a.value.lobby=b.lobby??"",a.value.playerIndex=b.playerIndex??0,a.value.ver=b.ver??0,a.value.maxRow=b.maxRow,a.value.schedules=(b.schedules??[]).map(M=>({...M,_time:M.startAt?new Date(2e3,0,1,...M.startAt.split(":").map(Number)):void 0})))},{immediate:true});function $(){a.value.schedules.push({maxRow:10,_time:void 0})}async function O(){const b=a.value.schedules.map(r=>({maxRow:r.maxRow,startAt:r._time?`${r._time.getHours().toString().padStart(2,"0")}:${r._time.getMinutes().toString().padStart(2,"0")}`:void 0}));await A("mahjongpub/init",t.cid,{type:a.value.type,round:a.value.round,lobby:a.value.lobby||void 0,playerIndex:a.value.playerIndex,ver:a.value.ver,maxRow:a.value.maxRow,schedules:b.length?b:void 0}),o("refresh"),await f()}async function v(){await A("mahjongpub/deinit",t.cid),i.value=[],o("refresh")}async function f(){var b;if(!(!((b=t.contestInfo)!=null&&b.extra)&&!i.value.length))try{i.value=await A("mahjongpub/cls-status",t.cid)}catch(r){console.error("Failed to refresh status:",r)}}async function p(b){await A("mahjongpub/start",t.cid,[b]),setTimeout(f,1e3)}async function w(b){await A("mahjongpub/stop",t.cid,[b]),setTimeout(f,500)}async function B(b,r){try{const M=await A("mahjongpub/check-players",t.cid,b);y[b]=M,r(M)}catch(M){F.error(`检查失败: ${M}`),r([])}}async function U(){I.value=true;const b=[];try{const r=i.value.filter(([,M])=>M.status==="pending"||M.status==="suspended").map(([M,ee])=>[M,ee]);for(const[M,ee]of r)try{const te=await A("mahjongpub/check-players",t.cid,M);y[M]=te}catch(te){b.push(`${M}组: ${te}`);const ne=ee.next??ee.last??[];y[M]=ne.map(oe=>({player:oe.player,online:false}))}b.length&&F.warning(`部分检查失败:
|
|
6
|
-
${
|
|
7
|
-
`)}`)}finally{I.value=false}}async function L(b,r,M,ee){try{if(ee){const te=i.value.find(([oe])=>oe===b);if(!te)return;const ne=(te[1].next??te[1].last??[]).map(oe=>oe.player);ne[r]=M,await A("mahjongpub/swap-cls-players",t.cid,b,ne),F.success("名单已修改")}else await A("mahjongpub/override-player",t.cid,b,r,M),F.success("临时替换成功");await f()}catch(te){F.error(`换人失败: ${te}`)}}async function J(b,r,M){try{await A("mahjongpub/edit-point",t.cid,b,r,M),F.success("分数已修改"),await f()}catch(ee){F.error(`修改失败: ${ee}`)}}async function E(){const b=_.value.trim();if(b)try{await A("mahjongpub/add-subscriber",t.cid,b),_.value="",o("refresh")}catch(r){F.error(`添加失败: ${r}`)}}async function z(b){try{await A("mahjongpub/remove-subscriber",t.cid,b),o("refresh")}catch(r){F.error(`移除失败: ${r}`)}}async function K(b){try{await A("mahjongpub/apply-schedule",t.cid,b),o("refresh"),setTimeout(f,1e3)}catch(r){F.error(`应用失败: ${r}`)}}async function G(b){try{await A("mahjongpub/toggle-schedule-pause",t.cid,b),o("refresh")}catch(r){F.error(`操作失败: ${r}`)}}async function xe(){C.value=true;try{await A("mahjongpub/start",t.cid,[])}finally{C.value=false,setTimeout(f,1e3)}}async function Q(){await A("mahjongpub/stop",t.cid,[]),setTimeout(f,500)}function re(b){const r=new Date,M=`${r.getHours().toString().padStart(2,"0")}:${r.getMinutes().toString().padStart(2,"0")}:${r.getSeconds().toString().padStart(2,"0")}`;d.value.push({time:M,message:b}),d.value.length>200&&d.value.splice(0,d.value.length-200),Jt(()=>{m.value&&(m.value.scrollTop=m.value.scrollHeight)})}return At("mahjongpub/log",b=>{const[r,M]=b;r===t.cid&&re(M)}),je(()=>{var b;(b=t.contestInfo)!=null&&b.extra&&f(),g=setInterval(f,3e3)}),Zt(()=>{g&&clearInterval(g)}),(b,r)=>{var Ye,qe,We,Xe,Qe;const M=k("el-tag"),ee=k("el-option"),te=k("el-select"),ne=k("el-form-item"),oe=k("el-input-number"),Je=k("el-input"),Ot=k("el-form"),Et=k("el-time-picker"),ae=k("el-button"),$e=k("el-card"),Mt=k("el-switch");return u(),h("div",el,[V(" Config Bar "),s($e,{class:"config-card",shadow:"never"},{header:l(()=>{var R,P;return[c("div",tl,[c("span",null,N((R=e.contestInfo)==null?void 0:R.name)+" — 比赛配置",1),(P=e.contestInfo)!=null&&P.extra?(u(),D(M,{key:0,type:"success",size:"small"},{default:l(()=>[...r[9]||(r[9]=[x("已初始化",-1)])]),_:1})):(u(),D(M,{key:1,type:"info",size:"small"},{default:l(()=>[...r[10]||(r[10]=[x("未初始化",-1)])]),_:1}))])]}),default:l(()=>{var R;return[s(Ot,{inline:true,size:"small","label-width":"70px"},{default:l(()=>[s(ne,{label:"类型"},{default:l(()=>[s(te,{modelValue:a.value.type,"onUpdate:modelValue":r[0]||(r[0]=P=>a.value.type=P),style:{width:"100px"}},{default:l(()=>[s(ee,{label:"掌心 (ti)",value:"ti"}),s(ee,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(ne,{label:"轮次"},{default:l(()=>{var P;return[s(oe,{modelValue:a.value.round,"onUpdate:modelValue":r[1]||(r[1]=ie=>a.value.round=ie),min:1,max:((P=e.contestInfo)==null?void 0:P.totalRounds)??99,"controls-position":"right",style:{width:"100px"}},null,8,["modelValue","max"])]}),_:1}),s(ne,{label:"比赛场"},{default:l(()=>[s(Je,{modelValue:a.value.lobby,"onUpdate:modelValue":r[2]||(r[2]=P=>a.value.lobby=P),style:{width:"120px"},placeholder:"lobby ID"},null,8,["modelValue"])]),_:1}),s(ne,{label:"选手序号"},{default:l(()=>[s(oe,{modelValue:a.value.playerIndex,"onUpdate:modelValue":r[3]||(r[3]=P=>a.value.playerIndex=P),min:0,"controls-position":"right",style:{width:"80px"}},null,8,["modelValue"])]),_:1}),s(ne,{label:"版本"},{default:l(()=>[s(oe,{modelValue:a.value.ver,"onUpdate:modelValue":r[4]||(r[4]=P=>a.value.ver=P),min:0,"controls-position":"right",style:{width:"80px"}},null,8,["modelValue"])]),_:1}),s(ne,{label:"最大行"},{default:l(()=>[s(oe,{modelValue:a.value.maxRow,"onUpdate:modelValue":r[5]||(r[5]=P=>a.value.maxRow=P),min:1,"controls-position":"right",style:{width:"80px"}},null,8,["modelValue"])]),_:1})]),_:1}),c("div",nl,[r[13]||(r[13]=c("div",{class:"schedule-label"},"定时阶段",-1)),c("div",ol,[(u(true),h(q,null,X(a.value.schedules,(P,ie)=>(u(),h("div",{key:ie,class:"schedule-row"},[s(oe,{modelValue:P.maxRow,"onUpdate:modelValue":W=>P.maxRow=W,min:1,size:"small","controls-position":"right",style:{width:"80px"},placeholder:"maxRow"},null,8,["modelValue","onUpdate:modelValue"]),s(Et,{modelValue:P._time,"onUpdate:modelValue":W=>P._time=W,size:"small",format:"HH:mm",style:{width:"120px"},placeholder:"开始时间",clearable:""},null,8,["modelValue","onUpdate:modelValue"]),s(ae,{size:"small",type:"danger",text:"",onClick:W=>a.value.schedules.splice(ie,1)},{default:l(()=>[...r[11]||(r[11]=[x("×",-1)])]),_:1},8,["onClick"])]))),128))]),s(ae,{size:"small",onClick:$},{default:l(()=>[...r[12]||(r[12]=[x("+ 添加阶段",-1)])]),_:1})]),c("div",al,[s(ae,{type:"primary",size:"small",onClick:O},{default:l(()=>[...r[14]||(r[14]=[x("初始化",-1)])]),_:1}),s(ae,{type:"danger",size:"small",disabled:!((R=e.contestInfo)!=null&&R.extra),onClick:v},{default:l(()=>[...r[15]||(r[15]=[x("反初始化",-1)])]),_:1},8,["disabled"])])]}),_:1}),V(" Subscribers "),(Ye=e.contestInfo)!=null&&Ye.extra?(u(),D($e,{key:0,class:"subscriber-card",shadow:"never"},{header:l(()=>[...r[16]||(r[16]=[c("div",{class:"subscriber-header"},[c("span",null,"消息订阅")],-1)])]),default:l(()=>{var R;return[c("div",ll,[(u(true),h(q,null,X(e.contestInfo.extra.subscribers,P=>(u(),D(M,{key:P,closable:"",size:"small",class:"subscriber-tag",onClose:ie=>z(P)},{default:l(()=>[x(N(P),1)]),_:2},1032,["onClose"]))),128)),(R=e.contestInfo.extra.subscribers)!=null&&R.length?V("v-if",true):(u(),h("span",sl,"暂无订阅"))]),c("div",rl,[s(Je,{modelValue:_.value,"onUpdate:modelValue":r[6]||(r[6]=P=>_.value=P),size:"small",placeholder:"platform:channelId",style:{width:"240px"},onKeyup:Me(E,["enter"])},null,8,["modelValue"]),s(ae,{size:"small",type:"primary",onClick:E},{default:l(()=>[...r[17]||(r[17]=[x("添加",-1)])]),_:1})])]}),_:1})):V("v-if",true),V(" Schedule Control (runtime) "),(Xe=(We=(qe=e.contestInfo)==null?void 0:qe.extra)==null?void 0:We.schedules)!=null&&Xe.length?(u(),D($e,{key:1,class:"schedule-control-card",shadow:"never"},{header:l(()=>[c("div",il,[c("span",null,"定时控制 (当前 maxRow="+N(e.contestInfo.extra.maxRow??"默认")+")",1),s(Mt,{"model-value":!e.contestInfo.extra.schedulePaused,"active-text":"自动","inactive-text":"暂停",size:"small",onChange:r[7]||(r[7]=R=>G(!R))},null,8,["model-value"])])]),default:l(()=>[c("div",ul,[(u(true),h(q,null,X(e.contestInfo.extra.schedules,(R,P)=>(u(),h("div",{key:P,class:"schedule-control-row"},[c("span",dl,[x(" 阶段 "+N(P+1)+":"+N(R.maxRow)+" 行 ",1),R.startAt?(u(),h("span",cl,"@ "+N(R.startAt),1)):V("v-if",true)]),e.contestInfo.extra.maxRow>=R.maxRow?(u(),D(M,{key:0,type:"success",size:"small"},{default:l(()=>[...r[18]||(r[18]=[x("已生效",-1)])]),_:1})):(u(),D(ae,{key:1,size:"small",type:"primary",onClick:ie=>K(R.maxRow)},{default:l(()=>[...r[19]||(r[19]=[x(" 立即生效 ",-1)])]),_:1},8,["onClick"]))]))),128))])]),_:1})):V("v-if",true),V(" Status Cards "),(Qe=e.contestInfo)!=null&&Qe.extra?(u(),h("div",pl,[c("div",ml,[c("span",null,"对局状态 — 第 "+N(e.contestInfo.extra.round??e.contestInfo.totalRounds)+" 轮",1),c("div",fl,[s(ae,{type:"success",size:"small",loading:C.value,onClick:xe},{default:l(()=>[...r[20]||(r[20]=[x("全部开赛",-1)])]),_:1},8,["loading"]),s(ae,{type:"warning",size:"small",onClick:Q},{default:l(()=>[...r[21]||(r[21]=[x("全部停止",-1)])]),_:1}),s(ae,{size:"small",loading:I.value,onClick:U},{default:l(()=>[...r[22]||(r[22]=[x("全部检查",-1)])]),_:1},8,["loading"]),s(ae,{size:"small",onClick:f},{default:l(()=>[...r[23]||(r[23]=[x("刷新",-1)])]),_:1})])]),c("div",vl,[(u(true),h(q,null,X(i.value,([R,P])=>{var ie;return u(),D(Qa,{key:R,cls:R,status:P,"external-check-result":y[R],"has-admin":(ie=e.contestInfo)==null?void 0:ie.hasAdmin,onStart:W=>p(R),onStop:W=>w(R),onCheck:W=>B(R,W),onSwap:(W,Oe,Dt)=>L(R,W,Oe,Dt),onEditPoint:(W,Oe)=>J(R,W,Oe)},null,8,["cls","status","external-check-result","has-admin","onStart","onStop","onCheck","onSwap","onEditPoint"])}),128))])])):(u(),h("div",yl,[...r[24]||(r[24]=[c("p",null,"请先初始化比赛配置",-1)])])),V(" Log Panel "),s($e,{class:"log-card",shadow:"never"},{header:l(()=>[c("div",gl,[r[26]||(r[26]=c("span",null,"日志",-1)),s(ae,{size:"small",text:"",onClick:r[8]||(r[8]=R=>d.value=[])},{default:l(()=>[...r[25]||(r[25]=[x("清空",-1)])]),_:1})])]),default:l(()=>[c("div",{ref_key:"logScrollRef",ref:m,class:"log-scroll"},[(u(true),h(q,null,X(d.value,(R,P)=>(u(),h("div",{key:P,class:"log-line"},[c("span",hl,N(R.time),1),c("span",_l,N(R.message),1)]))),128)),d.value.length?V("v-if",true):(u(),h("div",bl,"暂无日志"))],512)]),_:1})])}}}),Cl=ue(wl,[["__scopeId","data-v-a3d29773"]]),xl={class:"team-manager"},$l={class:"team-header"},kl={class:"team-header-actions"},Sl={key:0,class:"inline-edit"},Il={class:"player-index"},zl={class:"inline-edit-actions"},Tl={key:1,class:"player-display"},Vl={key:0,class:"no-players"},jl=H({__name:"team-manager",props:{cid:{}},setup(e){const n=e,t=S([]),o=S(""),a=S(null),i=S([]),d=S(false),m=j(()=>{if(!o.value)return t.value;const g=o.value.toLowerCase();return t.value.filter($=>$.name.toLowerCase().includes(g)||$.tid.toString().includes(g)||$.players.some(O=>O.toLowerCase().includes(g)))});async function C(){try{t.value=await A("mahjongpub/list-teams",n.cid)}catch(g){F.error(`加载队伍失败: ${g}`)}}function I(g){a.value=g.tid,i.value=[...g.players]}function y(){a.value=null,i.value=[]}async function _(g){d.value=true;try{const $=i.value.filter(v=>v.trim()),O=await A("mahjongpub/update-team-players",n.cid,g.tid,$);F.success(O||"保存成功"),a.value=null,i.value=[],await C()}catch($){F.error(`保存失败: ${$}`)}finally{d.value=false}}return je(C),(g,$)=>{const O=k("el-input"),v=k("el-button"),f=k("el-table-column"),p=k("el-tag"),w=k("el-table");return u(),h("div",xl,[c("div",$l,[$[3]||($[3]=c("span",null,"队伍管理",-1)),c("div",kl,[s(O,{modelValue:o.value,"onUpdate:modelValue":$[0]||($[0]=B=>o.value=B),size:"small",placeholder:"搜索队名/选手",clearable:"",style:{width:"200px"}},null,8,["modelValue"]),s(v,{size:"small",onClick:C},{default:l(()=>[...$[2]||($[2]=[x("刷新",-1)])]),_:1})])]),s(w,{data:m.value,size:"small",border:"",class:"team-table","row-key":"tid"},{default:l(()=>[s(f,{prop:"tid",label:"ID",width:"60",sortable:""}),s(f,{prop:"name",label:"队名",width:"120",sortable:""}),s(f,{label:"选手名单","min-width":"400"},{default:l(({row:B})=>[a.value===B.tid?(u(),h("div",Sl,[(u(true),h(q,null,X(i.value,(U,L)=>(u(),h("div",{key:L,class:"inline-edit-row"},[c("span",Il,N(L+1)+".",1),s(O,{modelValue:i.value[L],"onUpdate:modelValue":J=>i.value[L]=J,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),s(v,{size:"small",type:"danger",text:"",onClick:J=>i.value.splice(L,1)},{default:l(()=>[...$[4]||($[4]=[x("×",-1)])]),_:1},8,["onClick"])]))),128)),c("div",zl,[s(v,{size:"small",onClick:$[1]||($[1]=U=>i.value.push(""))},{default:l(()=>[...$[5]||($[5]=[x("+ 添加",-1)])]),_:1}),s(v,{size:"small",type:"primary",loading:d.value,onClick:U=>_(B)},{default:l(()=>[...$[6]||($[6]=[x("保存",-1)])]),_:1},8,["loading","onClick"]),s(v,{size:"small",onClick:y},{default:l(()=>[...$[7]||($[7]=[x("取消",-1)])]),_:1})])])):(u(),h("div",Tl,[(u(true),h(q,null,X(B.players,(U,L)=>(u(),D(p,{key:L,size:"small",class:"player-tag"},{default:l(()=>[x(N(U),1)]),_:2},1024))),128)),B.players.length?V("v-if",true):(u(),h("span",Vl,"无选手"))]))]),_:1}),s(f,{label:"操作",width:"80",align:"center"},{default:l(({row:B})=>[a.value!==B.tid?(u(),D(v,{key:0,size:"small",text:"",onClick:U=>I(B)},{default:l(()=>[...$[8]||($[8]=[x(" 编辑 ",-1)])]),_:1},8,["onClick"])):V("v-if",true)]),_:1})]),_:1},8,["data"])])}}}),Pl=ue(jl,[["__scopeId","data-v-064b204b"]]),Nl={class:"lobby-panel"},Ol={class:"lobby-config"},El={class:"section-header"},Ml={key:1,class:"empty-hint"},Dl={class:"section-header"},Rl={key:0,class:"game-list"},Al={class:"game-header"},Ll=["title"],Ul={class:"game-actions"},Fl={class:"game-players"},Bl={key:1,class:"empty-hint"},Kl=H({__name:"lobby-panel",props:{cid:{},initLobby:{},initType:{}},setup(e){const n=e,t=S(n.initLobby??""),o=S(n.initType??"ssb"),a=S([]),i=S([]),d=S(false);ce(()=>n.initLobby,_=>{_&&(t.value=_)}),ce(()=>n.initType,_=>{_&&(o.value=_)});async function m(){if(t.value){d.value=true;try{const[_,g]=await Promise.all([A("mahjongpub/lobby-players",+t.value,o.value),A("mahjongpub/lobby-games",+t.value,o.value)]);a.value=_,i.value=g}catch(_){F.error(`查询失败: ${_}`)}finally{d.value=false}}}async function C(_){try{await A("mahjongpub/lobby-pause",+t.value,o.value,_),F.success("已暂停")}catch(g){F.error(`暂停失败: ${g}`)}}async function I(_){try{await A("mahjongpub/lobby-resume",+t.value,o.value,_),F.success("已恢复")}catch(g){F.error(`恢复失败: ${g}`)}}async function y(_){try{await A("mahjongpub/lobby-stop",+t.value,o.value,_),F.success("已中止"),await m()}catch(g){F.error(`中止失败: ${g}`)}}return(_,g)=>{const $=k("el-input"),O=k("el-form-item"),v=k("el-option"),f=k("el-select"),p=k("el-button"),w=k("el-form"),B=k("el-table-column"),U=k("el-table"),L=k("el-card"),J=k("el-popconfirm"),E=k("el-tag");return u(),h("div",Nl,[c("div",Ol,[s(w,{inline:true,size:"small"},{default:l(()=>[s(O,{label:"比赛场 ID"},{default:l(()=>[s($,{modelValue:t.value,"onUpdate:modelValue":g[0]||(g[0]=z=>t.value=z),placeholder:"lobby ID",style:{width:"140px"}},null,8,["modelValue"])]),_:1}),s(O,{label:"平台"},{default:l(()=>[s(f,{modelValue:o.value,"onUpdate:modelValue":g[1]||(g[1]=z=>o.value=z),style:{width:"120px"}},{default:l(()=>[s(v,{label:"掌心 (ti)",value:"ti"}),s(v,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(O,null,{default:l(()=>[s(p,{size:"small",type:"primary",onClick:m},{default:l(()=>[...g[2]||(g[2]=[x("刷新",-1)])]),_:1})]),_:1})]),_:1})]),V(" Ready Players "),s(L,{shadow:"never",class:"section-card"},{header:l(()=>[c("div",El,[c("span",null,"待机选手 ("+N(a.value.length)+")",1)])]),default:l(()=>[a.value.length?(u(),D(U,{key:0,data:a.value,size:"small",border:"","max-height":"300"},{default:l(()=>[s(B,{prop:"nickname",label:"昵称","min-width":"150"}),s(B,{prop:"accountId",label:"ID",width:"120"})]),_:1},8,["data"])):(u(),h("div",Ml,N(d.value?"加载中...":t.value?"暂无待机选手":"请输入比赛场 ID 后查询"),1))]),_:1}),V(" Running Games "),s(L,{shadow:"never",class:"section-card"},{header:l(()=>[c("div",Dl,[c("span",null,"进行中对局 ("+N(i.value.length)+")",1)])]),default:l(()=>[i.value.length?(u(),h("div",Rl,[(u(true),h(q,null,X(i.value,z=>(u(),D(L,{key:z.id,shadow:"hover",class:"game-card"},{default:l(()=>[c("div",Al,[c("span",{class:"game-id",title:z.id},N(z.id.slice(0,12))+"...",9,Ll),c("div",Ul,[s(p,{size:"small",type:"warning",onClick:K=>C(z.id)},{default:l(()=>[...g[3]||(g[3]=[x("暂停",-1)])]),_:1},8,["onClick"]),s(p,{size:"small",type:"primary",onClick:K=>I(z.id)},{default:l(()=>[...g[4]||(g[4]=[x("恢复",-1)])]),_:1},8,["onClick"]),s(J,{title:"确定中止该对局?",onConfirm:K=>y(z.id)},{reference:l(()=>[s(p,{size:"small",type:"danger"},{default:l(()=>[...g[5]||(g[5]=[x("中止",-1)])]),_:1})]),_:1},8,["onConfirm"])])]),c("div",Fl,[(u(true),h(q,null,X(z.players,(K,G)=>(u(),D(E,{key:G,size:"small",class:"player-tag"},{default:l(()=>[x(N(K.nickname||`#${K.accountId}`),1)]),_:2},1024))),128))])]),_:2},1024))),128))])):(u(),h("div",Bl,N(d.value?"加载中...":t.value?"暂无进行中对局":"请输入比赛场 ID 后查询"),1))]),_:1})])}}}),Hl=ue(Kl,[["__scopeId","data-v-a21c65dd"]]),Gl={key:0,class:"empty-state"},Zl={key:1,class:"empty-state"},Jl={key:2,class:"contest-panel"},Yl={class:"first-tab-label"},ql={key:1},Wl=H({__name:"contest-panel",props:{cid:{},managed:{},sidebarCollapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(e,{emit:n}){const t=e,o=S("match"),a=S(false),i=S(null);async function d(){a.value=true;try{i.value=await A("mahjongpub/contest-info",t.cid)}catch(m){console.error("Failed to load contest info:",m)}finally{a.value=false}}return ce(()=>t.cid,()=>{o.value="match",d()},{immediate:true}),(m,C)=>{const I=k("el-button"),y=k("el-tab-pane"),_=k("el-tooltip"),g=k("el-tabs");return e.cid?a.value&&!i.value?(u(),h("div",Zl,[...C[3]||(C[3]=[c("p",null,"加载中...",-1)])])):(u(),h("div",Jl,[s(g,{modelValue:o.value,"onUpdate:modelValue":C[1]||(C[1]=$=>o.value=$)},{default:l(()=>{var $;return[s(y,{name:"match"},{label:l(()=>[c("div",Yl,[s(I,{class:"sidebar-toggle-btn",size:"small",text:"",title:e.sidebarCollapsed?"展开侧边栏":"收起侧边栏",onClick:C[0]||(C[0]=Se(O=>m.$emit("toggle-sidebar"),["stop"]))},{default:l(()=>[x(N(e.sidebarCollapsed?"▶":"◀"),1)]),_:1},8,["title"]),C[4]||(C[4]=c("span",null,"比赛进程",-1))])]),default:l(()=>[s(Cl,{cid:e.cid,"contest-info":i.value,onRefresh:d},null,8,["cid","contest-info"])]),_:1}),s(y,{label:"队伍管理",name:"team",disabled:!(($=i.value)!=null&&$.hasAdmin)},{label:l(()=>{var O;return[(O=i.value)!=null&&O.hasAdmin?(u(),h("span",ql,"队伍管理")):(u(),D(_,{key:0,content:"请先配置管理密码(右键侧边栏比赛项)",placement:"top"},{default:l(()=>[...C[5]||(C[5]=[c("span",null,"队伍管理",-1)])]),_:1}))]}),default:l(()=>{var O;return[(O=i.value)!=null&&O.hasAdmin?(u(),D(Pl,{key:0,cid:e.cid},null,8,["cid"])):V("v-if",true)]}),_:1},8,["disabled"]),s(y,{label:"比赛场",name:"lobby"},{default:l(()=>{var O,v,f,p;return[s(Hl,{cid:e.cid,"init-lobby":(v=(O=i.value)==null?void 0:O.extra)==null?void 0:v.lobby,"init-type":(p=(f=i.value)==null?void 0:f.extra)==null?void 0:p.type},null,8,["cid","init-lobby","init-type"])]}),_:1})]}),_:1},8,["modelValue"])])):(u(),h("div",Gl,[...C[2]||(C[2]=[c("p",null,"请选择比赛",-1)])]))}}}),Xl=ue(Wl,[["__scopeId","data-v-c9a9bbef"]]),Ql={class:"main-layout"},es={class:"content-wrapper"},ts={key:1,class:"empty-state"},ns=H({__name:"layout",setup(e){const n=S([]),t=S(null),o=S(false),a=j(()=>n.value.find(I=>I.cid===t.value)??null);async function i(){n.value=await A("mahjongpub/list-managed")}async function d(I){await i(),t.value=I.cid}async function m(I){var y;await i(),t.value===I&&(t.value=((y=n.value[0])==null?void 0:y.cid)??null)}async function C(I,y){await i()}return je(i),(I,y)=>{const _=k("k-layout");return u(),D(_,null,{default:l(()=>[c("div",Ql,[c("div",{class:Y(["sidebar-wrapper",{collapsed:o.value}])},[Ae(s(Ea,{contests:n.value,"active-cid":t.value,onSelect:y[0]||(y[0]=g=>t.value=g),onAdd:d,onRemove:m,onUpdate:C},null,8,["contests","active-cid"]),[[Le,!o.value]])],2),c("div",es,[t.value?(u(),D(Xl,{key:t.value,cid:t.value,managed:a.value,"sidebar-collapsed":o.value,onToggleSidebar:y[1]||(y[1]=g=>o.value=!o.value)},null,8,["cid","managed","sidebar-collapsed"])):(u(),h("div",ts,[...y[2]||(y[2]=[c("p",null,"请从左侧选择或添加比赛",-1)])]))])])]),_:1})}}}),os=ue(ns,[["__scopeId","data-v-592f974d"]]),rs=e=>{e.page({name:"比赛管理",path:"/mahjongpub",icon:"mahjongpub:icon",component:os,authority:3})};export{rs as default};
|
|
5
|
+
**/const an=Object.prototype.hasOwnProperty,tt=(e,n)=>an.call(e,n),Ie=e=>typeof e=="function",ze=e=>typeof e=="string",yt=e=>e!==null&&typeof e=="object";var on=typeof global=="object"&&global&&global.Object===Object&&global,ln=typeof self=="object"&&self&&self.Object===Object&&self,Be=on||ln||Function("return this")(),ve=Be.Symbol,gt=Object.prototype,sn=gt.hasOwnProperty,rn=gt.toString,he=ve?ve.toStringTag:void 0;function un(e){var n=sn.call(e,he),t=e[he];try{e[he]=void 0;var a=true}catch{}var o=rn.call(e);return a&&(n?e[he]=t:delete e[he]),o}var dn=Object.prototype,cn=dn.toString;function pn(e){return cn.call(e)}var mn="[object Null]",fn="[object Undefined]",nt=ve?ve.toStringTag:void 0;function ht(e){return e==null?e===void 0?fn:mn:nt&&nt in Object(e)?un(e):pn(e)}function vn(e){return e!=null&&typeof e=="object"}var yn="[object Symbol]";function Ke(e){return typeof e=="symbol"||vn(e)&&ht(e)==yn}function gn(e,n){for(var t=-1,a=e==null?0:e.length,o=Array(a);++t<a;)o[t]=n(e[t],t,e);return o}var He=Array.isArray,at=ve?ve.prototype:void 0,ot=at?at.toString:void 0;function _t(e){if(typeof e=="string")return e;if(He(e))return gn(e,_t)+"";if(Ke(e))return ot?ot.call(e):"";var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function bt(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var hn="[object AsyncFunction]",_n="[object Function]",bn="[object GeneratorFunction]",wn="[object Proxy]";function Cn(e){if(!bt(e))return false;var n=ht(e);return n==_n||n==bn||n==hn||n==wn}var Me=Be["__core-js_shared__"],lt=function(){var e=/[^.]+$/.exec(Me&&Me.keys&&Me.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function $n(e){return!!lt&< in e}var xn=Function.prototype,kn=xn.toString;function Sn(e){if(e!=null){try{return kn.call(e)}catch{}try{return e+""}catch{}}return""}var In=/[\\^$.*+?()[\]{}|]/g,zn=/^\[object .+?Constructor\]$/,Tn=Function.prototype,Vn=Object.prototype,jn=Tn.toString,Pn=Vn.hasOwnProperty,Nn=RegExp("^"+jn.call(Pn).replace(In,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function On(e){if(!bt(e)||$n(e))return false;var n=Cn(e)?Nn:zn;return n.test(Sn(e))}function En(e,n){return e==null?void 0:e[n]}function wt(e,n){var t=En(e,n);return On(t)?t:void 0}function Mn(e,n){return e===n||e!==e&&n!==n}var Dn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rn=/^\w*$/;function An(e,n){if(He(e))return false;var t=typeof e;return t=="number"||t=="symbol"||t=="boolean"||e==null||Ke(e)?true:Rn.test(e)||!Dn.test(e)||n!=null&&e in Object(n)}var be=wt(Object,"create");function Ln(){this.__data__=be?be(null):{},this.size=0}function Un(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n}var Fn="__lodash_hash_undefined__",Bn=Object.prototype,Kn=Bn.hasOwnProperty;function Hn(e){var n=this.__data__;if(be){var t=n[e];return t===Fn?void 0:t}return Kn.call(n,e)?n[e]:void 0}var Gn=Object.prototype,Zn=Gn.hasOwnProperty;function Jn(e){var n=this.__data__;return be?n[e]!==void 0:Zn.call(n,e)}var Yn="__lodash_hash_undefined__";function qn(e,n){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=be&&n===void 0?Yn:n,this}function pe(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}pe.prototype.clear=Ln;pe.prototype.delete=Un;pe.prototype.get=Hn;pe.prototype.has=Jn;pe.prototype.set=qn;function Wn(){this.__data__=[],this.size=0}function Pe(e,n){for(var t=e.length;t--;)if(Mn(e[t][0],n))return t;return-1}var Xn=Array.prototype,Qn=Xn.splice;function ea(e){var n=this.__data__,t=Pe(n,e);if(t<0)return false;var a=n.length-1;return t==a?n.pop():Qn.call(n,t,1),--this.size,true}function ta(e){var n=this.__data__,t=Pe(n,e);return t<0?void 0:n[t][1]}function na(e){return Pe(this.__data__,e)>-1}function aa(e,n){var t=this.__data__,a=Pe(t,e);return a<0?(++this.size,t.push([e,n])):t[a][1]=n,this}function ge(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}ge.prototype.clear=Wn;ge.prototype.delete=ea;ge.prototype.get=ta;ge.prototype.has=na;ge.prototype.set=aa;var oa=wt(Be,"Map");function la(){this.size=0,this.__data__={hash:new pe,map:new(oa||ge),string:new pe}}function sa(e){var n=typeof e;return n=="string"||n=="number"||n=="symbol"||n=="boolean"?e!=="__proto__":e===null}function Ne(e,n){var t=e.__data__;return sa(n)?t[typeof n=="string"?"string":"hash"]:t.map}function ra(e){var n=Ne(this,e).delete(e);return this.size-=n?1:0,n}function ia(e){return Ne(this,e).get(e)}function ua(e){return Ne(this,e).has(e)}function da(e,n){var t=Ne(this,e),a=t.size;return t.set(e,n),this.size+=t.size==a?0:1,this}function me(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}me.prototype.clear=la;me.prototype.delete=ra;me.prototype.get=ia;me.prototype.has=ua;me.prototype.set=da;var ca="Expected a function";function Ge(e,n){if(typeof e!="function"||n!=null&&typeof n!="function")throw new TypeError(ca);var t=function(){var a=arguments,o=n?n.apply(this,a):a[0],i=t.cache;if(i.has(o))return i.get(o);var c=e.apply(this,a);return t.cache=i.set(o,c)||i,c};return t.cache=new(Ge.Cache||me),t}Ge.Cache=me;var pa=500;function ma(e){var n=Ge(e,function(a){return t.size===pa&&t.clear(),a}),t=n.cache;return n}var fa=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,va=/\\(\\)?/g,ya=ma(function(e){var n=[];return e.charCodeAt(0)===46&&n.push(""),e.replace(fa,function(t,a,o,i){n.push(o?i.replace(va,"$1"):a||t)}),n});function ga(e){return e==null?"":_t(e)}function ha(e,n){return He(e)?e:An(e,n)?[e]:ya(ga(e))}function _a(e){if(typeof e=="string"||Ke(e))return e;var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function ba(e,n){n=ha(n,e);for(var t=0,a=n.length;e!=null&&t<a;)e=e[_a(n[t++])];return t&&t==a?e:void 0}function wa(e,n,t){var a=e==null?void 0:ba(e,n);return a===void 0?t:a}function Ca(e){for(var n=-1,t=e==null?0:e.length,a={};++n<t;){var o=e[n];a[o[0]]=o[1]}return a}const $a=e=>e===void 0,we=e=>typeof e=="number",xa=e=>typeof Element>"u"?false:e instanceof Element,ka=e=>ze(e)?!Number.isNaN(Number(e)):false,st=e=>Object.keys(e);function Re(e,n="px"){if(!e)return"";if(we(e)||ka(e))return`${e}${n}`;if(ze(e))return e}/*! Element Plus Icons Vue v2.3.2 */var Sa=H({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(n,t)=>(d(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[p("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),Ia=Sa,za=H({name:"Close",__name:"close",setup(e){return(n,t)=>(d(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[p("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Ta=za,Va=H({name:"InfoFilled",__name:"info-filled",setup(e){return(n,t)=>(d(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[p("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),ja=Va,Pa=H({name:"SuccessFilled",__name:"success-filled",setup(e){return(n,t)=>(d(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[p("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Na=Pa,Oa=H({name:"WarningFilled",__name:"warning-filled",setup(e){return(n,t)=>(d(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[p("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),Ea=Oa;const Ct="__epPropKey",le=e=>e,Ma=e=>yt(e)&&!!e[Ct],$t=(e,n)=>{if(!yt(e)||Ma(e))return e;const{values:t,required:a,default:o,type:i,validator:c}=e,$={type:i,required:!!a,validator:t||c?I=>{let y=false,_=[];if(t&&(_=Array.from(t),tt(e,"default")&&_.push(o),y||(y=_.includes(I))),c&&(y||(y=c(I))),!y&&_.length>0){const g=[...new Set(_)].map(C=>JSON.stringify(C)).join(", ");Ut(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${g}], got value ${JSON.stringify(I)}.`)}return y}:void 0,[Ct]:true};return tt(e,"default")&&($.default=o),$},Ce=e=>Ca(Object.entries(e).map(([n,t])=>[n,$t(t,n)])),Da=le([String,Object,Function]),Ra={Close:Ta},rt={success:Na,warning:Ea,error:Ia,info:ja},xt=(e,n)=>(e.install=t=>{for(const a of[e,...Object.values({})])t.component(a.name,a)},e),Aa=(e,n)=>(e.install=t=>{e._context=t._context,t.config.globalProperties[n]=e},e),La={esc:"Escape"},Ua=["","default","small","large"],Fa=e=>e,it=({from:e,replacement:n,scope:t,version:a,ref:o,type:i="API"},c)=>{ce(()=>T(c),m=>{},{immediate:true})};var Ba={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const Ka=e=>(n,t)=>Ha(n,t,T(e)),Ha=(e,n,t)=>wa(t,e,e).replace(/\{(\w+)\}/g,(a,o)=>{var i;return`${(i=n==null?void 0:n[o])!=null?i:`{${o}}`}`}),Ga=e=>{const n=j(()=>T(e).name),t=Ft(e)?e:S(e);return{lang:n,locale:t,t:Ka(e)}},kt=Symbol("localeContextKey"),Za=e=>{const n=e||fe(kt,S());return Ga(j(()=>n.value||Ba))},ke="el",Ja="is-",de=(e,n,t,a,o)=>{let i=`${e}-${n}`;return t&&(i+=`-${t}`),a&&(i+=`__${a}`),o&&(i+=`--${o}`),i},St=Symbol("namespaceContextKey"),Ya=e=>{const n=e||(_e()?fe(St,S(ke)):S(ke));return j(()=>T(n)||ke)},Ze=(e,n)=>{const t=Ya(n);return{namespace:t,b:(f="")=>de(t.value,e,f,"",""),e:f=>f?de(t.value,e,"",f,""):"",m:f=>f?de(t.value,e,"","",f):"",be:(f,w)=>f&&w?de(t.value,e,f,w,""):"",em:(f,w)=>f&&w?de(t.value,e,"",f,w):"",bm:(f,w)=>f&&w?de(t.value,e,f,"",w):"",bem:(f,w,u)=>f&&w&&u?de(t.value,e,f,w,u):"",is:(f,...w)=>{const u=w.length>=1?w[0]:true;return f&&u?`${Ja}${f}`:""},cssVar:f=>{const w={};for(const u in f)f[u]&&(w[`--${t.value}-${u}`]=f[u]);return w},cssVarName:f=>`--${t.value}-${f}`,cssVarBlock:f=>{const w={};for(const u in f)f[u]&&(w[`--${t.value}-${e}-${u}`]=f[u]);return w},cssVarBlockName:f=>`--${t.value}-${e}-${f}`}},ut={current:0},dt=S(0),It=2e3,ct=Symbol("elZIndexContextKey"),zt=Symbol("zIndexContextKey"),qa=e=>{const n=_e()?fe(ct,ut):ut,t=e||(_e()?fe(zt,void 0):void 0),a=j(()=>{const c=T(t);return we(c)?c:It}),o=j(()=>a.value+dt.value),i=()=>(n.current++,dt.value=n.current,o.value);return!Fe&&fe(ct),{initialZIndex:a,currentZIndex:o,nextZIndex:i}},Wa=$t({type:String,values:Ua,required:false}),Xa=Symbol("size"),Qa=Symbol("emptyValuesContextKey"),eo=Ce({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Ie(e)?!e():!e}}),Tt=Symbol(),Te=S();function Vt(e,n=void 0){return _e()?fe(Tt,Te):Te}function to(e,n){const t=Vt(),a=Ze(e,j(()=>{var m;return((m=t.value)==null?void 0:m.namespace)||ke})),o=Za(j(()=>{var m;return(m=t.value)==null?void 0:m.locale})),i=qa(j(()=>{var m;return((m=t.value)==null?void 0:m.zIndex)||It})),c=j(()=>{var m;return T(n)||((m=t.value)==null?void 0:m.size)||""});return jt(j(()=>T(t)||{})),{ns:a,locale:o,zIndex:i,size:c}}const jt=(e,n,t=false)=>{var a;const o=!!_e(),i=o?Vt():void 0,c=(a=void 0)!=null?a:o?Bt:void 0;if(!c)return;const m=j(()=>{const $=T(e);return i!=null&&i.value?no(i.value,$):$});return c(Tt,m),c(kt,j(()=>m.value.locale)),c(St,j(()=>m.value.namespace)),c(zt,j(()=>m.value.zIndex)),c(Xa,{size:j(()=>m.value.size||"")}),c(Qa,j(()=>({emptyValues:m.value.emptyValues,valueOnClear:m.value.valueOnClear}))),(t||!Te.value)&&(Te.value=m.value),m},no=(e,n)=>{const t=[...new Set([...st(e),...st(n)])],a={};for(const o of t)a[o]=n[o]!==void 0?n[o]:e[o];return a},ao=Ce({a11y:{type:Boolean,default:true},locale:{type:le(Object)},size:Wa,button:{type:le(Object)},experimentalFeatures:{type:le(Object)},keyboardNavigation:{type:Boolean,default:true},message:{type:le(Object)},zIndex:Number,namespace:{type:String,default:"el"},...eo}),Ae={};H({name:"ElConfigProvider",props:ao,setup(e,{slots:n}){ce(()=>e.message,a=>{Object.assign(Ae,a??{})},{immediate:true,deep:true});const t=jt(e);return()=>Ve(n,"default",{config:t==null?void 0:t.value})}});var Je=(e,n)=>{const t=e.__vccOpts||e;for(const[a,o]of n)t[a]=o;return t};const oo=Ce({size:{type:le([Number,String])},color:{type:String}}),lo=H({name:"ElIcon",inheritAttrs:false}),so=H({...lo,props:oo,setup(e){const n=e,t=Ze("icon"),a=j(()=>{const{size:o,color:i}=n;return!o&&!i?{}:{fontSize:$a(o)?void 0:Re(o),"--color":i}});return(o,i)=>(d(),h("i",Kt({class:T(t).b(),style:T(a)},o.$attrs),[Ve(o.$slots,"default")],16))}});var ro=Je(so,[["__file","icon.vue"]]);const pt=xt(ro),io=Ce({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:true},color:String,dotStyle:{type:le([String,Object,Array])},badgeStyle:{type:le([String,Object,Array])},offset:{type:le(Array),default:[0,0]},dotClass:{type:String},badgeClass:{type:String}}),uo=["textContent"],co=H({name:"ElBadge"}),po=H({...co,props:io,setup(e,{expose:n}){const t=e,a=Ze("badge"),o=j(()=>t.isDot?"":we(t.value)&&we(t.max)?t.max<t.value?`${t.max}+`:t.value===0&&!t.showZero?"":`${t.value}`:`${t.value}`),i=j(()=>{var c,m,$,I,y,_;return[{backgroundColor:t.color,marginRight:Re(-((m=(c=t.offset)==null?void 0:c[0])!=null?m:0)),marginTop:Re((I=($=t.offset)==null?void 0:$[1])!=null?I:0)},(y=t.dotStyle)!=null?y:{},(_=t.badgeStyle)!=null?_:{}]});return it({from:"dot-style",replacement:"badge-style",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},j(()=>!!t.dotStyle)),it({from:"dot-class",replacement:"badge-class",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},j(()=>!!t.dotClass)),n({content:o}),(c,m)=>(d(),h("div",{class:Y(T(a).b())},[Ve(c.$slots,"default"),s(mt,{name:`${T(a).namespace.value}-zoom-in-center`,persisted:""},{default:l(()=>[Le(p("sup",{class:Y([T(a).e("content"),T(a).em("content",c.type),T(a).is("fixed",!!c.$slots.default),T(a).is("dot",c.isDot),c.dotClass,c.badgeClass]),style:ft(T(i)),textContent:P(T(o))},null,14,uo),[[Ue,!c.hidden&&(T(o)||c.isDot)]])]),_:1},8,["name"])],2))}});var mo=Je(po,[["__file","badge.vue"]]);const fo=xt(mo),Pt=["success","info","warning","error"],Z=Fa({customClass:"",center:false,dangerouslyUseHTMLString:false,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:false,type:"info",plain:false,offset:16,zIndex:0,grouping:false,repeatNum:1,appendTo:Fe?document.body:void 0}),vo=Ce({customClass:{type:String,default:Z.customClass},center:{type:Boolean,default:Z.center},dangerouslyUseHTMLString:{type:Boolean,default:Z.dangerouslyUseHTMLString},duration:{type:Number,default:Z.duration},icon:{type:Da,default:Z.icon},id:{type:String,default:Z.id},message:{type:le([String,Object,Function]),default:Z.message},onClose:{type:le(Function),default:Z.onClose},showClose:{type:Boolean,default:Z.showClose},type:{type:String,values:Pt,default:Z.type},plain:{type:Boolean,default:Z.plain},offset:{type:Number,default:Z.offset},zIndex:{type:Number,default:Z.zIndex},grouping:{type:Boolean,default:Z.grouping},repeatNum:{type:Number,default:Z.repeatNum}}),yo={destroy:()=>true},se=Ht([]),go=e=>{const n=se.findIndex(o=>o.id===e),t=se[n];let a;return n>0&&(a=se[n-1]),{current:t,prev:a}},ho=e=>{const{prev:n}=go(e);return n?n.vm.exposed.bottom.value:0},_o=(e,n)=>se.findIndex(a=>a.id===e)>0?16:n,bo=["id"],wo=["innerHTML"],Co=H({name:"ElMessage"}),$o=H({...Co,props:vo,emits:yo,setup(e,{expose:n}){const t=e,{Close:a}=Ra,{ns:o,zIndex:i}=to("message"),{currentZIndex:c,nextZIndex:m}=i,$=S(),I=S(false),y=S(0);let _;const g=j(()=>t.type?t.type==="error"?"danger":t.type:"info"),C=j(()=>{const M=t.type;return{[o.bm("icon",M)]:M&&rt[M]}}),N=j(()=>t.icon||rt[t.type]||""),f=j(()=>ho(t.id)),w=j(()=>_o(t.id,t.offset)+f.value),u=j(()=>y.value+w.value),b=j(()=>({top:`${w.value}px`,zIndex:c.value}));function B(){t.duration!==0&&({stop:_}=Xt(()=>{L()},t.duration))}function U(){_==null||_()}function L(){I.value=false}function J({code:M}){M===La.esc&&L()}return je(()=>{B(),m(),I.value=true}),ce(()=>t.repeatNum,()=>{U(),B()}),qt(document,"keydown",J),Wt($,()=>{y.value=$.value.getBoundingClientRect().height}),n({visible:I,bottom:u,close:L}),(M,z)=>(d(),E(mt,{name:T(o).b("fade"),onBeforeLeave:M.onClose,onAfterLeave:z[0]||(z[0]=K=>M.$emit("destroy")),persisted:""},{default:l(()=>[Le(p("div",{id:M.id,ref_key:"messageRef",ref:$,class:Y([T(o).b(),{[T(o).m(M.type)]:M.type},T(o).is("center",M.center),T(o).is("closable",M.showClose),T(o).is("plain",M.plain),M.customClass]),style:ft(T(b)),role:"alert",onMouseenter:U,onMouseleave:B},[M.repeatNum>1?(d(),E(T(fo),{key:0,value:M.repeatNum,type:T(g),class:Y(T(o).e("badge"))},null,8,["value","type","class"])):V("v-if",true),T(N)?(d(),E(T(pt),{key:1,class:Y([T(o).e("icon"),T(C)])},{default:l(()=>[(d(),E(Gt(T(N))))]),_:1},8,["class"])):V("v-if",true),Ve(M.$slots,"default",{},()=>[M.dangerouslyUseHTMLString?(d(),h(q,{key:1},[V(" Caution here, message could've been compromised, never use user's input as message "),p("p",{class:Y(T(o).e("content")),innerHTML:M.message},null,10,wo)],2112)):(d(),h("p",{key:0,class:Y(T(o).e("content"))},P(M.message),3))]),M.showClose?(d(),E(T(pt),{key:2,class:Y(T(o).e("closeBtn")),onClick:Se(L,["stop"])},{default:l(()=>[s(T(a))]),_:1},8,["class","onClick"])):V("v-if",true)],46,bo),[[Ue,I.value]])]),_:3},8,["name","onBeforeLeave"]))}});var xo=Je($o,[["__file","message.vue"]]);let ko=1;const Nt=e=>{const n=!e||ze(e)||vt(e)||Ie(e)?{message:e}:e,t={...Z,...n};if(!t.appendTo)t.appendTo=document.body;else if(ze(t.appendTo)){let a=document.querySelector(t.appendTo);xa(a)||(a=document.body),t.appendTo=a}return t},So=e=>{const n=se.indexOf(e);if(n===-1)return;se.splice(n,1);const{handler:t}=e;t.close()},Io=({appendTo:e,...n},t)=>{const a=`message_${ko++}`,o=n.onClose,i=document.createElement("div"),c={...n,id:a,onClose:()=>{o==null||o(),So(y)},onDestroy:()=>{et(null,i)}},m=s(xo,c,Ie(c.message)||vt(c.message)?{default:Ie(c.message)?c.message:()=>c.message}:null);m.appContext=t||ye._context,et(m,i),e.appendChild(i.firstElementChild);const $=m.component,y={id:a,vnode:m,vm:$,handler:{close:()=>{$.exposed.visible.value=false}},props:m.component.props};return y},ye=(e={},n)=>{if(!Fe)return{close:()=>{}};if(we(Ae.max)&&se.length>=Ae.max)return{close:()=>{}};const t=Nt(e);if(t.grouping&&se.length){const o=se.find(({vnode:i})=>{var c;return((c=i.props)==null?void 0:c.message)===t.message});if(o)return o.props.repeatNum+=1,o.props.type=t.type,o.handler}const a=Io(t,n);return se.push(a),a.handler};Pt.forEach(e=>{ye[e]=(n={},t)=>{const a=Nt(n);return ye({...a,type:e},t)}});function zo(e){for(const n of se)(!e||e===n.props.type)&&n.handler.close()}ye.closeAll=zo;ye._context=null;const F=Aa(ye,"$message"),To={class:"sidebar"},Vo={class:"sidebar-header"},jo={class:"contest-list"},Po=["onClick","onContextmenu"],No={class:"contest-name"},Oo={class:"contest-cid"},Eo=H({__name:"sidebar",props:{contests:{},activeCid:{}},emits:["select","add","remove","update"],setup(e,{emit:n}){const t=n,a=S(false),o=S(null),i=S(""),c=S(null),m=S(false);async function $(){if(o.value){m.value=true;try{c.value=await R("mahjongpub/search-contests",o.value)}catch(w){F.error(`查询失败: ${w}`)}finally{m.value=false}}}async function I(){if(c.value){m.value=true;try{const w={cid:c.value.cid,name:c.value.name,adminPassword:i.value||void 0};await R("mahjongpub/add-managed",w),t("add",w),a.value=false,o.value=null,c.value=null,i.value=""}catch(w){F.error(`添加失败: ${w}`)}finally{m.value=false}}}const y=S(false),_=S(null),g=S("");function C(w,u){_.value=u,g.value=u.adminPassword??"",y.value=true}async function N(){if(_.value)try{await R("mahjongpub/update-managed",_.value.cid,{adminPassword:g.value||void 0}),t("update",_.value.cid,{adminPassword:g.value||void 0}),y.value=false}catch(w){F.error(`保存失败: ${w}`)}}async function f(){if(_.value)try{await R("mahjongpub/remove-managed",_.value.cid),t("remove",_.value.cid),y.value=false}catch(w){F.error(`移除失败: ${w}`)}}return(w,u)=>{const b=k("el-button"),B=k("el-icon"),U=k("el-input"),L=k("el-form-item"),J=k("el-form"),M=k("el-dialog");return d(),h("div",To,[p("div",Vo,[u[9]||(u[9]=p("span",null,"比赛列表",-1)),s(b,{size:"small",type:"primary",onClick:u[0]||(u[0]=z=>a.value=true)},{default:l(()=>[...u[8]||(u[8]=[x("+ 添加",-1)])]),_:1})]),p("div",jo,[(d(true),h(q,null,Q(e.contests,z=>(d(),h("div",{key:z.cid,class:Y(["contest-item",{active:z.cid===e.activeCid}]),onClick:K=>w.$emit("select",z.cid),onContextmenu:Se(K=>C(K,z),["prevent"])},[p("div",No,P(z.name),1),p("div",Oo,"#"+P(z.cid),1),z.adminPassword?(d(),E(B,{key:0,class:"admin-badge",title:"已配置管理密码"},{default:l(()=>[...u[10]||(u[10]=[p("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"currentColor"},[p("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"})],-1)])]),_:1})):V("v-if",true)],42,Po))),128))]),V(" Import Dialog "),s(M,{modelValue:a.value,"onUpdate:modelValue":u[4]||(u[4]=z=>a.value=z),title:"添加比赛",width:"420"},{footer:l(()=>[s(b,{onClick:u[3]||(u[3]=z=>a.value=false)},{default:l(()=>[...u[11]||(u[11]=[x("取消",-1)])]),_:1}),s(b,{loading:m.value,onClick:$},{default:l(()=>[...u[12]||(u[12]=[x("查询",-1)])]),_:1},8,["loading"]),s(b,{type:"primary",disabled:!c.value,onClick:I},{default:l(()=>[...u[13]||(u[13]=[x("添加",-1)])]),_:1},8,["disabled"])]),default:l(()=>[s(J,{"label-width":"80px",onSubmit:Se(I,["prevent"])},{default:l(()=>[s(L,{label:"比赛 ID"},{default:l(()=>[s(U,{modelValue:o.value,"onUpdate:modelValue":u[1]||(u[1]=z=>o.value=z),modelModifiers:{number:true},placeholder:"输入大凤林比赛 ID"},null,8,["modelValue"])]),_:1}),c.value?(d(),E(L,{key:0,label:"比赛名称"},{default:l(()=>[p("span",null,P(c.value.name),1)]),_:1})):V("v-if",true),c.value?(d(),E(L,{key:1,label:"当前轮次"},{default:l(()=>[p("span",null,P(c.value.round),1)]),_:1})):V("v-if",true),s(L,{label:"管理密码"},{default:l(()=>[s(U,{modelValue:i.value,"onUpdate:modelValue":u[2]||(u[2]=z=>i.value=z),placeholder:"可选,用于队伍管理","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),V(" Context Menu (password edit) "),s(M,{modelValue:y.value,"onUpdate:modelValue":u[7]||(u[7]=z=>y.value=z),title:"编辑比赛",width:"400"},{footer:l(()=>[s(b,{type:"danger",onClick:f},{default:l(()=>[...u[14]||(u[14]=[x("移除比赛",-1)])]),_:1}),s(b,{onClick:u[6]||(u[6]=z=>y.value=false)},{default:l(()=>[...u[15]||(u[15]=[x("取消",-1)])]),_:1}),s(b,{type:"primary",onClick:N},{default:l(()=>[...u[16]||(u[16]=[x("保存",-1)])]),_:1})]),default:l(()=>[_.value?(d(),E(J,{key:0,"label-width":"80px"},{default:l(()=>[s(L,{label:"比赛名称"},{default:l(()=>[p("span",null,P(_.value.name)+" (#"+P(_.value.cid)+")",1)]),_:1}),s(L,{label:"管理密码"},{default:l(()=>[s(U,{modelValue:g.value,"onUpdate:modelValue":u[5]||(u[5]=z=>g.value=z),placeholder:"留空则无队伍管理权限","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})):V("v-if",true)]),_:1},8,["modelValue"])])}}}),Mo=ie(Eo,[["__scopeId","data-v-e7b90e50"]]),Do={class:"cls-header"},Ro={class:"cls-title"},Ao={key:0,class:"error-msg"},Lo={class:"player-list"},Uo={class:"player-info"},Fo={class:"player-name"},Bo={class:"swap-popover"},Ko={key:0,class:"swap-section"},Ho=["onClick"],Go={class:"swap-manual"},Zo={class:"swap-mode-actions"},Jo={class:"player-right"},Yo=["onClick"],qo={key:1,class:"point-edit"},Wo={key:0,class:"no-players"},Xo={class:"cls-actions"},Qo=H({__name:"cls-card",props:{cls:{},status:{},externalCheckResult:{},hasAdmin:{type:Boolean}},emits:["start","stop","check","swap","edit-point"],setup(e,{emit:n}){const t=e,a=n,o=j(()=>t.status.next??t.status.last??[]),i=j(()=>t.status.status==="pending"||t.status.status==="suspended"),c=S(false),m=S(null),$=j(()=>m.value??t.externalCheckResult??null),I=S(""),y=S({});function _(u,b){y.value[u]=b}function g(u){const b=y.value[u];b!==void 0&&a("edit-point",u,b),y.value[u]=void 0}function C(){c.value=true,m.value=null,a("check",u=>{m.value=u,c.value=false})}function N(u,b,B){b!=null&&b.trim()&&(a("swap",u,b.trim(),B),I.value="")}const f=j(()=>{switch(t.status.status){case"pending":return"info";case"running":return"success";case"finished":return"";case"suspended":return"warning";case"error":return"danger"}}),w=j(()=>{switch(t.status.status){case"pending":return"等待中";case"running":return"进行中";case"finished":return"已结束";case"suspended":return"已停止";case"error":return"错误"}});return(u,b)=>{const B=k("el-tag"),U=k("el-button"),L=k("el-divider"),J=k("el-input"),M=k("el-popover"),z=k("el-card");return d(),E(z,{class:Y(["cls-card",`status-${e.status.status}`]),shadow:"hover"},{header:l(()=>[p("div",Do,[p("span",Ro,P(e.cls)+"组 - "+P(e.status.rowi+1),1),s(B,{type:f.value,size:"small",effect:"dark"},{default:l(()=>[x(P(w.value),1)]),_:1},8,["type"])])]),default:l(()=>[e.status.status==="error"&&e.status.msg?(d(),h("div",Ao,P(e.status.msg),1)):V("v-if",true),p("div",Lo,[(d(true),h(q,null,Q(o.value,(K,G)=>{var $e;return d(),h("div",{key:G,class:"player-row"},[p("div",Uo,[$.value?(d(),h("span",{key:0,class:Y(["online-dot",($e=$.value[G])!=null&&$e.online?"online":"offline"])},null,2)):V("v-if",true),p("span",Fo,P(K.player),1),i.value?(d(),E(M,{key:1,trigger:"click",width:220,placement:"right","popper-class":"swap-popover-container"},{reference:l(()=>[s(U,{size:"small",text:"",class:"swap-btn",title:"换人"},{default:l(()=>[...b[3]||(b[3]=[x("✎",-1)])]),_:1})]),default:l(()=>{var ee;return[p("div",Bo,[(ee=K.teammates)!=null&&ee.length?(d(),h("div",Ko,[b[4]||(b[4]=p("div",{class:"swap-title"},"从队伍名单选择",-1)),(d(true),h(q,null,Q(K.teammates,(re,Oe)=>(d(),h("div",{key:Oe,class:Y(["swap-option",{active:re===K.player}]),onClick:v=>N(G,re,false)},P(re),11,Ho))),128))])):V("v-if",true),s(L,{style:{margin:"8px 0"}}),b[7]||(b[7]=p("div",{class:"swap-title"},"手动输入",-1)),p("div",Go,[s(J,{modelValue:I.value,"onUpdate:modelValue":b[0]||(b[0]=re=>I.value=re),size:"small",placeholder:"选手名"},null,8,["modelValue"])]),p("div",Zo,[s(U,{size:"small",onClick:re=>N(G,I.value,false)},{default:l(()=>[...b[5]||(b[5]=[x("临时替换",-1)])]),_:1},8,["onClick"]),e.hasAdmin?(d(),E(U,{key:0,size:"small",type:"primary",onClick:re=>N(G,I.value,true)},{default:l(()=>[...b[6]||(b[6]=[x("修改名单",-1)])]),_:1},8,["onClick"])):V("v-if",true)])])]}),_:2},1024)):V("v-if",true)]),p("div",Jo,[y.value[G]?(d(),h("div",qo,[s(J,{modelValue:y.value[G],"onUpdate:modelValue":ee=>y.value[G]=ee,modelModifiers:{number:true},size:"small",style:{width:"70px"},onKeyup:[De(ee=>g(G),["enter"]),De(ee=>y.value[G]=void 0,["escape"])]},null,8,["modelValue","onUpdate:modelValue","onKeyup"]),s(U,{size:"small",text:"",type:"primary",class:"point-edit-btn",onClick:ee=>g(G)},{default:l(()=>[...b[8]||(b[8]=[x("✓",-1)])]),_:1},8,["onClick"]),s(U,{size:"small",text:"",class:"point-edit-btn",onClick:ee=>y.value[G]=void 0},{default:l(()=>[...b[9]||(b[9]=[x("✕",-1)])]),_:1},8,["onClick"])])):(d(),h("span",{key:0,class:Y(["player-point",{editable:i.value}]),onClick:ee=>i.value&&_(G,K.point)},P(K.point),11,Yo))])])}),128)),o.value.length?V("v-if",true):(d(),h("div",Wo,"-"))]),p("div",Xo,[e.status.status==="pending"||e.status.status==="suspended"?(d(),E(U,{key:0,type:"success",size:"small",onClick:b[1]||(b[1]=K=>u.$emit("start"))},{default:l(()=>[...b[10]||(b[10]=[x(" 开赛 ",-1)])]),_:1})):V("v-if",true),e.status.status==="pending"||e.status.status==="running"?(d(),E(U,{key:1,type:"warning",size:"small",onClick:b[2]||(b[2]=K=>u.$emit("stop"))},{default:l(()=>[...b[11]||(b[11]=[x(" 停止 ",-1)])]),_:1})):V("v-if",true),i.value?(d(),E(U,{key:2,size:"small",loading:c.value,onClick:C},{default:l(()=>[...b[12]||(b[12]=[x(" 检查 ",-1)])]),_:1},8,["loading"])):V("v-if",true)])]),_:1},8,["class"])}}}),el=ie(Qo,[["__scopeId","data-v-559ac705"]]),tl={class:"match-manager"},nl={class:"config-header"},al={class:"schedule-section"},ol={class:"schedule-list"},ll={class:"config-actions"},sl={class:"subscriber-list"},rl={key:0,class:"subscriber-empty"},il={class:"subscriber-add"},ul={class:"schedule-control-header"},dl={class:"schedule-control-list"},cl={class:"schedule-info"},pl={key:0,class:"schedule-time"},ml={key:2,class:"status-section"},fl={class:"status-header"},vl={class:"status-actions"},yl={class:"cls-grid"},gl={key:3,class:"status-placeholder"},hl={class:"log-header"},_l={class:"log-time"},bl={class:"log-msg"},wl={key:0,class:"log-empty"},Cl=H({__name:"match-manager",props:{cid:{},contestInfo:{}},emits:["refresh"],setup(e,{emit:n}){const t=e,a=n,o=S({type:"ssb",round:"",lobby:"",playerIndex:"",ver:"",maxRow:"",schedules:[]}),i=S([]),c=S([]),m=S(),$=S(false),I=S(false),y=Zt({}),_=S("");let g=null;function C(v){if(v===""||v===void 0||v===null)return;const r=Number(v);return isNaN(r)?void 0:r}ce(()=>{var v;return(v=t.contestInfo)==null?void 0:v.extra},v=>{v&&(o.value.type=v.type??"ssb",o.value.round=v.round??"",o.value.lobby=v.lobby??"",o.value.playerIndex=v.playerIndex??"",o.value.ver=v.ver??"",o.value.maxRow=v.maxRow??"",o.value.schedules=(v.schedules??[]).map(r=>({...r,_time:r.startAt?new Date(2e3,0,1,...r.startAt.split(":").map(Number)):void 0})))},{immediate:true});function N(){o.value.schedules.push({maxRow:10,_time:void 0})}async function f(){const v=o.value.schedules.map(r=>({maxRow:r.maxRow,startAt:r._time?`${r._time.getHours().toString().padStart(2,"0")}:${r._time.getMinutes().toString().padStart(2,"0")}`:void 0}));await R("mahjongpub/init",t.cid,{type:o.value.type,round:C(o.value.round),lobby:o.value.lobby||void 0,playerIndex:C(o.value.playerIndex),ver:C(o.value.ver),maxRow:C(o.value.maxRow),schedules:v.length?v:void 0}),a("refresh"),await u()}async function w(){await R("mahjongpub/deinit",t.cid),i.value=[],a("refresh")}async function u(){var v;if(!(!((v=t.contestInfo)!=null&&v.extra)&&!i.value.length))try{i.value=await R("mahjongpub/cls-status",t.cid)}catch(r){console.error("Failed to refresh status:",r)}}async function b(v){await R("mahjongpub/start",t.cid,[v]),setTimeout(u,1e3)}async function B(v){await R("mahjongpub/stop",t.cid,[v]),setTimeout(u,500)}async function U(v,r){try{const A=await R("mahjongpub/check-players",t.cid,v);y[v]=A,r(A)}catch(A){F.error(`检查失败: ${A}`),r([])}}async function L(){I.value=true;const v=[];try{const r=i.value.filter(([,A])=>A.status==="pending"||A.status==="suspended").map(([A,te])=>[A,te]);for(const[A,te]of r)try{const ne=await R("mahjongpub/check-players",t.cid,A);y[A]=ne}catch(ne){v.push(`${A}组: ${ne}`);const ae=te.next??te.last??[];y[A]=ae.map(W=>({player:W.player,online:false}))}v.length&&F.warning(`部分检查失败:
|
|
6
|
+
${v.join(`
|
|
7
|
+
`)}`)}finally{I.value=false}}async function J(v,r,A,te){try{if(te){const ne=i.value.find(([W])=>W===v);if(!ne)return;const ae=(ne[1].next??ne[1].last??[]).map(W=>W.player);ae[r]=A,await R("mahjongpub/swap-cls-players",t.cid,v,ae),F.success("名单已修改")}else await R("mahjongpub/override-player",t.cid,v,r,A),F.success("临时替换成功");await u()}catch(ne){F.error(`换人失败: ${ne}`)}}async function M(v,r,A){try{await R("mahjongpub/edit-point",t.cid,v,r,A),F.success("分数已修改"),await u()}catch(te){F.error(`修改失败: ${te}`)}}async function z(){const v=_.value.trim();if(v)try{await R("mahjongpub/add-subscriber",t.cid,v),_.value="",a("refresh")}catch(r){F.error(`添加失败: ${r}`)}}async function K(v){try{await R("mahjongpub/remove-subscriber",t.cid,v),a("refresh")}catch(r){F.error(`移除失败: ${r}`)}}async function G(v){try{await R("mahjongpub/apply-schedule",t.cid,v),a("refresh"),setTimeout(u,1e3)}catch(r){F.error(`应用失败: ${r}`)}}async function $e(v){try{await R("mahjongpub/toggle-schedule-pause",t.cid,v),a("refresh")}catch(r){F.error(`操作失败: ${r}`)}}async function ee(){$.value=true;try{await R("mahjongpub/start",t.cid,[])}finally{$.value=false,setTimeout(u,1e3)}}async function re(){await R("mahjongpub/stop",t.cid,[]),setTimeout(u,500)}function Oe(v){const r=new Date,A=`${r.getHours().toString().padStart(2,"0")}:${r.getMinutes().toString().padStart(2,"0")}:${r.getSeconds().toString().padStart(2,"0")}`;c.value.push({time:A,message:v}),c.value.length>200&&c.value.splice(0,c.value.length-200),Yt(()=>{m.value&&(m.value.scrollTop=m.value.scrollHeight)})}return Lt("mahjongpub/log",v=>{const[r,A]=v;r===t.cid&&Oe(A)}),je(()=>{var v;(v=t.contestInfo)!=null&&v.extra&&u(),g=setInterval(u,3e3)}),Jt(()=>{g&&clearInterval(g)}),(v,r)=>{var Ye,qe,We,Xe,Qe;const A=k("el-tag"),te=k("el-option"),ne=k("el-select"),ae=k("el-form-item"),W=k("el-input"),Ot=k("el-form"),Et=k("el-input-number"),Mt=k("el-time-picker"),oe=k("el-button"),xe=k("el-card"),Dt=k("el-switch");return d(),h("div",tl,[V(" Config Bar "),s(xe,{class:"config-card",shadow:"never"},{header:l(()=>{var D,O;return[p("div",nl,[p("span",null,P((D=e.contestInfo)==null?void 0:D.name)+" — 比赛配置",1),(O=e.contestInfo)!=null&&O.extra?(d(),E(A,{key:0,type:"success",size:"small"},{default:l(()=>[...r[9]||(r[9]=[x("已初始化",-1)])]),_:1})):(d(),E(A,{key:1,type:"info",size:"small"},{default:l(()=>[...r[10]||(r[10]=[x("未初始化",-1)])]),_:1}))])]}),default:l(()=>{var D;return[s(Ot,{inline:true,size:"small","label-width":"70px"},{default:l(()=>[s(ae,{label:"类型"},{default:l(()=>[s(ne,{modelValue:o.value.type,"onUpdate:modelValue":r[0]||(r[0]=O=>o.value.type=O),style:{width:"100px"}},{default:l(()=>[s(te,{label:"掌心 (ti)",value:"ti"}),s(te,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(ae,{label:"轮次"},{default:l(()=>[s(W,{modelValue:o.value.round,"onUpdate:modelValue":r[1]||(r[1]=O=>o.value.round=O),style:{width:"80px"},placeholder:"默认"},null,8,["modelValue"])]),_:1}),s(ae,{label:"比赛场"},{default:l(()=>[s(W,{modelValue:o.value.lobby,"onUpdate:modelValue":r[2]||(r[2]=O=>o.value.lobby=O),style:{width:"120px"},placeholder:"lobby ID"},null,8,["modelValue"])]),_:1}),s(ae,{label:"选手序号"},{default:l(()=>[s(W,{modelValue:o.value.playerIndex,"onUpdate:modelValue":r[3]||(r[3]=O=>o.value.playerIndex=O),style:{width:"60px"},placeholder:"自动"},null,8,["modelValue"])]),_:1}),s(ae,{label:"版本"},{default:l(()=>[s(W,{modelValue:o.value.ver,"onUpdate:modelValue":r[4]||(r[4]=O=>o.value.ver=O),style:{width:"60px"},placeholder:"0"},null,8,["modelValue"])]),_:1}),s(ae,{label:"最大行"},{default:l(()=>[s(W,{modelValue:o.value.maxRow,"onUpdate:modelValue":r[5]||(r[5]=O=>o.value.maxRow=O),style:{width:"60px"},placeholder:"默认"},null,8,["modelValue"])]),_:1})]),_:1}),p("div",al,[r[13]||(r[13]=p("div",{class:"schedule-label"},"定时阶段",-1)),p("div",ol,[(d(true),h(q,null,Q(o.value.schedules,(O,ue)=>(d(),h("div",{key:ue,class:"schedule-row"},[s(Et,{modelValue:O.maxRow,"onUpdate:modelValue":X=>O.maxRow=X,min:1,size:"small","controls-position":"right",style:{width:"80px"},placeholder:"maxRow"},null,8,["modelValue","onUpdate:modelValue"]),s(Mt,{modelValue:O._time,"onUpdate:modelValue":X=>O._time=X,size:"small",format:"HH:mm",style:{width:"120px"},placeholder:"开始时间",clearable:""},null,8,["modelValue","onUpdate:modelValue"]),s(oe,{size:"small",type:"danger",text:"",onClick:X=>o.value.schedules.splice(ue,1)},{default:l(()=>[...r[11]||(r[11]=[x("×",-1)])]),_:1},8,["onClick"])]))),128))]),s(oe,{size:"small",onClick:N},{default:l(()=>[...r[12]||(r[12]=[x("+ 添加阶段",-1)])]),_:1})]),p("div",ll,[s(oe,{type:"primary",size:"small",onClick:f},{default:l(()=>[...r[14]||(r[14]=[x("初始化",-1)])]),_:1}),s(oe,{type:"danger",size:"small",disabled:!((D=e.contestInfo)!=null&&D.extra),onClick:w},{default:l(()=>[...r[15]||(r[15]=[x("反初始化",-1)])]),_:1},8,["disabled"])])]}),_:1}),V(" Subscribers "),(Ye=e.contestInfo)!=null&&Ye.extra?(d(),E(xe,{key:0,class:"subscriber-card",shadow:"never"},{header:l(()=>[...r[16]||(r[16]=[p("div",{class:"subscriber-header"},[p("span",null,"消息订阅")],-1)])]),default:l(()=>{var D;return[p("div",sl,[(d(true),h(q,null,Q(e.contestInfo.extra.subscribers,O=>(d(),E(A,{key:O,closable:"",size:"small",class:"subscriber-tag",onClose:ue=>K(O)},{default:l(()=>[x(P(O),1)]),_:2},1032,["onClose"]))),128)),(D=e.contestInfo.extra.subscribers)!=null&&D.length?V("v-if",true):(d(),h("span",rl,"暂无订阅"))]),p("div",il,[s(W,{modelValue:_.value,"onUpdate:modelValue":r[6]||(r[6]=O=>_.value=O),size:"small",placeholder:"platform:channelId",style:{width:"240px"},onKeyup:De(z,["enter"])},null,8,["modelValue"]),s(oe,{size:"small",type:"primary",onClick:z},{default:l(()=>[...r[17]||(r[17]=[x("添加",-1)])]),_:1})])]}),_:1})):V("v-if",true),V(" Schedule Control (runtime) "),(Xe=(We=(qe=e.contestInfo)==null?void 0:qe.extra)==null?void 0:We.schedules)!=null&&Xe.length?(d(),E(xe,{key:1,class:"schedule-control-card",shadow:"never"},{header:l(()=>[p("div",ul,[p("span",null,"定时控制 (当前 maxRow="+P(e.contestInfo.extra.maxRow??"默认")+")",1),s(Dt,{"model-value":!e.contestInfo.extra.schedulePaused,"active-text":"自动","inactive-text":"暂停",size:"small",onChange:r[7]||(r[7]=D=>$e(!D))},null,8,["model-value"])])]),default:l(()=>[p("div",dl,[(d(true),h(q,null,Q(e.contestInfo.extra.schedules,(D,O)=>(d(),h("div",{key:O,class:"schedule-control-row"},[p("span",cl,[x(" 阶段 "+P(O+1)+":"+P(D.maxRow)+" 行 ",1),D.startAt?(d(),h("span",pl,"@ "+P(D.startAt),1)):V("v-if",true)]),e.contestInfo.extra.maxRow>=D.maxRow?(d(),E(A,{key:0,type:"success",size:"small"},{default:l(()=>[...r[18]||(r[18]=[x("已生效",-1)])]),_:1})):(d(),E(oe,{key:1,size:"small",type:"primary",onClick:ue=>G(D.maxRow)},{default:l(()=>[...r[19]||(r[19]=[x(" 立即生效 ",-1)])]),_:1},8,["onClick"]))]))),128))])]),_:1})):V("v-if",true),V(" Status Cards "),(Qe=e.contestInfo)!=null&&Qe.extra?(d(),h("div",ml,[p("div",fl,[p("span",null,"对局状态 — 第 "+P(e.contestInfo.extra.round??e.contestInfo.totalRounds)+" 轮",1),p("div",vl,[s(oe,{type:"success",size:"small",loading:$.value,onClick:ee},{default:l(()=>[...r[20]||(r[20]=[x("全部开赛",-1)])]),_:1},8,["loading"]),s(oe,{type:"warning",size:"small",onClick:re},{default:l(()=>[...r[21]||(r[21]=[x("全部停止",-1)])]),_:1}),s(oe,{size:"small",loading:I.value,onClick:L},{default:l(()=>[...r[22]||(r[22]=[x("全部检查",-1)])]),_:1},8,["loading"]),s(oe,{size:"small",onClick:u},{default:l(()=>[...r[23]||(r[23]=[x("刷新",-1)])]),_:1})])]),p("div",yl,[(d(true),h(q,null,Q(i.value,([D,O])=>{var ue;return d(),E(el,{key:D,cls:D,status:O,"external-check-result":y[D],"has-admin":(ue=e.contestInfo)==null?void 0:ue.hasAdmin,onStart:X=>b(D),onStop:X=>B(D),onCheck:X=>U(D,X),onSwap:(X,Ee,Rt)=>J(D,X,Ee,Rt),onEditPoint:(X,Ee)=>M(D,X,Ee)},null,8,["cls","status","external-check-result","has-admin","onStart","onStop","onCheck","onSwap","onEditPoint"])}),128))])])):(d(),h("div",gl,[...r[24]||(r[24]=[p("p",null,"请先初始化比赛配置",-1)])])),V(" Log Panel "),s(xe,{class:"log-card",shadow:"never"},{header:l(()=>[p("div",hl,[r[26]||(r[26]=p("span",null,"日志",-1)),s(oe,{size:"small",text:"",onClick:r[8]||(r[8]=D=>c.value=[])},{default:l(()=>[...r[25]||(r[25]=[x("清空",-1)])]),_:1})])]),default:l(()=>[p("div",{ref_key:"logScrollRef",ref:m,class:"log-scroll"},[(d(true),h(q,null,Q(c.value,(D,O)=>(d(),h("div",{key:O,class:"log-line"},[p("span",_l,P(D.time),1),p("span",bl,P(D.message),1)]))),128)),c.value.length?V("v-if",true):(d(),h("div",wl,"暂无日志"))],512)]),_:1})])}}}),$l=ie(Cl,[["__scopeId","data-v-13c91849"]]),xl={class:"team-manager"},kl={class:"team-header"},Sl={class:"team-header-actions"},Il={key:0,class:"inline-edit"},zl={class:"player-index"},Tl={class:"inline-edit-actions"},Vl={key:1,class:"player-display"},jl={key:0,class:"no-players"},Pl=H({__name:"team-manager",props:{cid:{}},setup(e){const n=e,t=S([]),a=S(""),o=S(null),i=S([]),c=S(false),m=j(()=>{if(!a.value)return t.value;const g=a.value.toLowerCase();return t.value.filter(C=>C.name.toLowerCase().includes(g)||C.tid.toString().includes(g)||C.players.some(N=>N.toLowerCase().includes(g)))});async function $(){try{t.value=await R("mahjongpub/list-teams",n.cid)}catch(g){F.error(`加载队伍失败: ${g}`)}}function I(g){o.value=g.tid,i.value=[...g.players]}function y(){o.value=null,i.value=[]}async function _(g){c.value=true;try{const C=i.value.filter(f=>f.trim()),N=await R("mahjongpub/update-team-players",n.cid,g.tid,C);F.success(N||"保存成功"),o.value=null,i.value=[],await $()}catch(C){F.error(`保存失败: ${C}`)}finally{c.value=false}}return je($),(g,C)=>{const N=k("el-input"),f=k("el-button"),w=k("el-table-column"),u=k("el-tag"),b=k("el-table");return d(),h("div",xl,[p("div",kl,[C[3]||(C[3]=p("span",null,"队伍管理",-1)),p("div",Sl,[s(N,{modelValue:a.value,"onUpdate:modelValue":C[0]||(C[0]=B=>a.value=B),size:"small",placeholder:"搜索队名/选手",clearable:"",style:{width:"200px"}},null,8,["modelValue"]),s(f,{size:"small",onClick:$},{default:l(()=>[...C[2]||(C[2]=[x("刷新",-1)])]),_:1})])]),s(b,{data:m.value,size:"small",border:"",class:"team-table","row-key":"tid"},{default:l(()=>[s(w,{prop:"tid",label:"ID",width:"60",sortable:""}),s(w,{prop:"name",label:"队名",width:"120",sortable:""}),s(w,{label:"选手名单","min-width":"400"},{default:l(({row:B})=>[o.value===B.tid?(d(),h("div",Il,[(d(true),h(q,null,Q(i.value,(U,L)=>(d(),h("div",{key:L,class:"inline-edit-row"},[p("span",zl,P(L+1)+".",1),s(N,{modelValue:i.value[L],"onUpdate:modelValue":J=>i.value[L]=J,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),s(f,{size:"small",type:"danger",text:"",onClick:J=>i.value.splice(L,1)},{default:l(()=>[...C[4]||(C[4]=[x("×",-1)])]),_:1},8,["onClick"])]))),128)),p("div",Tl,[s(f,{size:"small",onClick:C[1]||(C[1]=U=>i.value.push(""))},{default:l(()=>[...C[5]||(C[5]=[x("+ 添加",-1)])]),_:1}),s(f,{size:"small",type:"primary",loading:c.value,onClick:U=>_(B)},{default:l(()=>[...C[6]||(C[6]=[x("保存",-1)])]),_:1},8,["loading","onClick"]),s(f,{size:"small",onClick:y},{default:l(()=>[...C[7]||(C[7]=[x("取消",-1)])]),_:1})])])):(d(),h("div",Vl,[(d(true),h(q,null,Q(B.players,(U,L)=>(d(),E(u,{key:L,size:"small",class:"player-tag"},{default:l(()=>[x(P(U),1)]),_:2},1024))),128)),B.players.length?V("v-if",true):(d(),h("span",jl,"无选手"))]))]),_:1}),s(w,{label:"操作",width:"80",align:"center"},{default:l(({row:B})=>[o.value!==B.tid?(d(),E(f,{key:0,size:"small",text:"",onClick:U=>I(B)},{default:l(()=>[...C[8]||(C[8]=[x(" 编辑 ",-1)])]),_:1},8,["onClick"])):V("v-if",true)]),_:1})]),_:1},8,["data"])])}}}),Nl=ie(Pl,[["__scopeId","data-v-064b204b"]]),Ol={class:"lobby-panel"},El={class:"lobby-config"},Ml={class:"section-header"},Dl={key:1,class:"empty-hint"},Rl={class:"section-header"},Al={key:0,class:"game-list"},Ll={class:"game-header"},Ul=["title"],Fl={class:"game-actions"},Bl={class:"game-players"},Kl={key:1,class:"empty-hint"},Hl=H({__name:"lobby-panel",props:{cid:{},initLobby:{},initType:{}},setup(e){const n=e,t=S(n.initLobby??""),a=S(n.initType??"ssb"),o=S([]),i=S([]),c=S(false);ce(()=>n.initLobby,_=>{_&&(t.value=_)}),ce(()=>n.initType,_=>{_&&(a.value=_)});async function m(){if(t.value){c.value=true;try{const[_,g]=await Promise.all([R("mahjongpub/lobby-players",+t.value,a.value),R("mahjongpub/lobby-games",+t.value,a.value)]);o.value=_,i.value=g}catch(_){F.error(`查询失败: ${_}`)}finally{c.value=false}}}async function $(_){try{await R("mahjongpub/lobby-pause",+t.value,a.value,_),F.success("已暂停")}catch(g){F.error(`暂停失败: ${g}`)}}async function I(_){try{await R("mahjongpub/lobby-resume",+t.value,a.value,_),F.success("已恢复")}catch(g){F.error(`恢复失败: ${g}`)}}async function y(_){try{await R("mahjongpub/lobby-stop",+t.value,a.value,_),F.success("已中止"),await m()}catch(g){F.error(`中止失败: ${g}`)}}return(_,g)=>{const C=k("el-input"),N=k("el-form-item"),f=k("el-option"),w=k("el-select"),u=k("el-button"),b=k("el-form"),B=k("el-table-column"),U=k("el-table"),L=k("el-card"),J=k("el-popconfirm"),M=k("el-tag");return d(),h("div",Ol,[p("div",El,[s(b,{inline:true,size:"small"},{default:l(()=>[s(N,{label:"比赛场 ID"},{default:l(()=>[s(C,{modelValue:t.value,"onUpdate:modelValue":g[0]||(g[0]=z=>t.value=z),placeholder:"lobby ID",style:{width:"140px"}},null,8,["modelValue"])]),_:1}),s(N,{label:"平台"},{default:l(()=>[s(w,{modelValue:a.value,"onUpdate:modelValue":g[1]||(g[1]=z=>a.value=z),style:{width:"120px"}},{default:l(()=>[s(f,{label:"掌心 (ti)",value:"ti"}),s(f,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(N,null,{default:l(()=>[s(u,{size:"small",type:"primary",onClick:m},{default:l(()=>[...g[2]||(g[2]=[x("刷新",-1)])]),_:1})]),_:1})]),_:1})]),V(" Ready Players "),s(L,{shadow:"never",class:"section-card"},{header:l(()=>[p("div",Ml,[p("span",null,"待机选手 ("+P(o.value.length)+")",1)])]),default:l(()=>[o.value.length?(d(),E(U,{key:0,data:o.value,size:"small",border:"","max-height":"300"},{default:l(()=>[s(B,{prop:"nickname",label:"昵称","min-width":"150"}),s(B,{prop:"accountId",label:"ID",width:"120"})]),_:1},8,["data"])):(d(),h("div",Dl,P(c.value?"加载中...":t.value?"暂无待机选手":"请输入比赛场 ID 后查询"),1))]),_:1}),V(" Running Games "),s(L,{shadow:"never",class:"section-card"},{header:l(()=>[p("div",Rl,[p("span",null,"进行中对局 ("+P(i.value.length)+")",1)])]),default:l(()=>[i.value.length?(d(),h("div",Al,[(d(true),h(q,null,Q(i.value,z=>(d(),E(L,{key:z.id,shadow:"hover",class:"game-card"},{default:l(()=>[p("div",Ll,[p("span",{class:"game-id",title:z.id},P(z.id.slice(0,12))+"...",9,Ul),p("div",Fl,[s(u,{size:"small",type:"warning",onClick:K=>$(z.id)},{default:l(()=>[...g[3]||(g[3]=[x("暂停",-1)])]),_:1},8,["onClick"]),s(u,{size:"small",type:"primary",onClick:K=>I(z.id)},{default:l(()=>[...g[4]||(g[4]=[x("恢复",-1)])]),_:1},8,["onClick"]),s(J,{title:"确定中止该对局?",onConfirm:K=>y(z.id)},{reference:l(()=>[s(u,{size:"small",type:"danger"},{default:l(()=>[...g[5]||(g[5]=[x("中止",-1)])]),_:1})]),_:1},8,["onConfirm"])])]),p("div",Bl,[(d(true),h(q,null,Q(z.players,(K,G)=>(d(),E(M,{key:G,size:"small",class:"player-tag"},{default:l(()=>[x(P(K.nickname||`#${K.accountId}`),1)]),_:2},1024))),128))])]),_:2},1024))),128))])):(d(),h("div",Kl,P(c.value?"加载中...":t.value?"暂无进行中对局":"请输入比赛场 ID 后查询"),1))]),_:1})])}}}),Gl=ie(Hl,[["__scopeId","data-v-a21c65dd"]]),Zl={key:0,class:"empty-state"},Jl={key:1,class:"empty-state"},Yl={key:2,class:"contest-panel"},ql={class:"first-tab-label"},Wl={key:1},Xl=H({__name:"contest-panel",props:{cid:{},managed:{},sidebarCollapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(e,{emit:n}){const t=e,a=S("match"),o=S(false),i=S(null);async function c(){o.value=true;try{i.value=await R("mahjongpub/contest-info",t.cid)}catch(m){console.error("Failed to load contest info:",m)}finally{o.value=false}}return ce(()=>t.cid,()=>{a.value="match",c()},{immediate:true}),(m,$)=>{const I=k("el-button"),y=k("el-tab-pane"),_=k("el-tooltip"),g=k("el-tabs");return e.cid?o.value&&!i.value?(d(),h("div",Jl,[...$[3]||($[3]=[p("p",null,"加载中...",-1)])])):(d(),h("div",Yl,[s(g,{modelValue:a.value,"onUpdate:modelValue":$[1]||($[1]=C=>a.value=C)},{default:l(()=>{var C;return[s(y,{name:"match"},{label:l(()=>[p("div",ql,[s(I,{class:"sidebar-toggle-btn",size:"small",text:"",title:e.sidebarCollapsed?"展开侧边栏":"收起侧边栏",onClick:$[0]||($[0]=Se(N=>m.$emit("toggle-sidebar"),["stop"]))},{default:l(()=>[x(P(e.sidebarCollapsed?"▶":"◀"),1)]),_:1},8,["title"]),$[4]||($[4]=p("span",null,"比赛进程",-1))])]),default:l(()=>[s($l,{cid:e.cid,"contest-info":i.value,onRefresh:c},null,8,["cid","contest-info"])]),_:1}),s(y,{label:"队伍管理",name:"team",disabled:!((C=i.value)!=null&&C.hasAdmin)},{label:l(()=>{var N;return[(N=i.value)!=null&&N.hasAdmin?(d(),h("span",Wl,"队伍管理")):(d(),E(_,{key:0,content:"请先配置管理密码(右键侧边栏比赛项)",placement:"top"},{default:l(()=>[...$[5]||($[5]=[p("span",null,"队伍管理",-1)])]),_:1}))]}),default:l(()=>{var N;return[(N=i.value)!=null&&N.hasAdmin?(d(),E(Nl,{key:0,cid:e.cid},null,8,["cid"])):V("v-if",true)]}),_:1},8,["disabled"]),s(y,{label:"比赛场",name:"lobby"},{default:l(()=>{var N,f,w,u;return[s(Gl,{cid:e.cid,"init-lobby":(f=(N=i.value)==null?void 0:N.extra)==null?void 0:f.lobby,"init-type":(u=(w=i.value)==null?void 0:w.extra)==null?void 0:u.type},null,8,["cid","init-lobby","init-type"])]}),_:1})]}),_:1},8,["modelValue"])])):(d(),h("div",Zl,[...$[2]||($[2]=[p("p",null,"请选择比赛",-1)])]))}}}),Ql=ie(Xl,[["__scopeId","data-v-c9a9bbef"]]),es={class:"main-layout"},ts={class:"content-wrapper"},ns={key:1,class:"empty-state"},as=H({__name:"layout",setup(e){const n=S([]),t=S(null),a=S(false),o=j(()=>n.value.find(I=>I.cid===t.value)??null);async function i(){n.value=await R("mahjongpub/list-managed")}async function c(I){await i(),t.value=I.cid}async function m(I){var y;await i(),t.value===I&&(t.value=((y=n.value[0])==null?void 0:y.cid)??null)}async function $(I,y){await i()}return je(i),(I,y)=>{const _=k("k-layout");return d(),E(_,null,{default:l(()=>[p("div",es,[p("div",{class:Y(["sidebar-wrapper",{collapsed:a.value}])},[Le(s(Mo,{contests:n.value,"active-cid":t.value,onSelect:y[0]||(y[0]=g=>t.value=g),onAdd:c,onRemove:m,onUpdate:$},null,8,["contests","active-cid"]),[[Ue,!a.value]])],2),p("div",ts,[t.value?(d(),E(Ql,{key:t.value,cid:t.value,managed:o.value,"sidebar-collapsed":a.value,onToggleSidebar:y[1]||(y[1]=g=>a.value=!a.value)},null,8,["cid","managed","sidebar-collapsed"])):(d(),h("div",ns,[...y[2]||(y[2]=[p("p",null,"请从左侧选择或添加比赛",-1)])]))])])]),_:1})}}}),os=ie(as,[["__scopeId","data-v-592f974d"]]),is=e=>{e.page({name:"比赛管理",path:"/mahjongpub",icon:"mahjongpub:icon",component:os,authority:3})};export{is as default};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.sidebar[data-v-e7b90e50]{height:100%;display:flex;flex-direction:column}.sidebar-header[data-v-e7b90e50]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--k-color-divider);font-weight:700}.contest-list[data-v-e7b90e50]{flex:1;overflow-y:auto}.contest-item[data-v-e7b90e50]{padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--k-color-divider);position:relative;transition:background-color .2s}.contest-item[data-v-e7b90e50]:hover{background:var(--k-hover-bg, var(--el-fill-color-light))}.contest-item.active[data-v-e7b90e50]{background:var(--k-hover-bg, var(--el-color-primary-light-9));border-left:3px solid var(--el-color-primary)}.contest-name[data-v-e7b90e50]{font-size:14px;font-weight:500}.contest-cid[data-v-e7b90e50]{font-size:12px;color:var(--k-text-light)}.admin-badge[data-v-e7b90e50]{position:absolute;top:10px;right:12px;color:var(--el-color-success)}.cls-card[data-v-559ac705]{border-left:3px solid transparent}.cls-card.status-pending[data-v-559ac705]{border-left-color:var(--el-color-info)}.cls-card.status-running[data-v-559ac705]{border-left-color:var(--el-color-success)}.cls-card.status-finished[data-v-559ac705]{border-left-color:var(--el-color-primary)}.cls-card.status-suspended[data-v-559ac705]{border-left-color:var(--el-color-warning)}.cls-card.status-error[data-v-559ac705]{border-left-color:var(--el-color-danger)}.cls-header[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center}.cls-title[data-v-559ac705]{font-weight:700}.error-msg[data-v-559ac705]{color:var(--el-color-danger);font-size:12px;margin-bottom:8px}.player-list[data-v-559ac705]{display:flex;flex-direction:column;gap:4px}.player-row[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 4px;border-radius:2px}.player-row[data-v-559ac705]:nth-child(odd){background:var(--k-hover-bg, var(--el-fill-color))}.player-info[data-v-559ac705]{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden}.online-dot[data-v-559ac705]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.online-dot.online[data-v-559ac705]{background:var(--el-color-success)}.online-dot.offline[data-v-559ac705]{background:var(--el-color-danger)}.player-name[data-v-559ac705]{font-weight:500;color:var(--k-text-normal, var(--el-text-color-primary))}.player-right[data-v-559ac705]{display:flex;align-items:center;gap:4px;flex-shrink:0}.player-point[data-v-559ac705]{color:var(--k-text-light, var(--el-text-color-secondary));font-family:monospace}.player-point.editable[data-v-559ac705]{cursor:pointer;border-bottom:1px dashed var(--el-border-color)}.player-point.editable[data-v-559ac705]:hover{color:var(--el-color-primary)}.point-edit[data-v-559ac705]{display:flex;align-items:center;gap:2px;margin-left:auto}.point-edit-btn[data-v-559ac705]{padding:0 4px;min-width:auto;font-size:13px;margin-left:0!important}.swap-btn[data-v-559ac705]{padding:2px;font-size:13px}.no-players[data-v-559ac705]{text-align:center;color:var(--k-text-light, var(--el-text-color-secondary))}.cls-actions[data-v-559ac705]{margin-top:8px;display:flex;gap:4px;flex-wrap:wrap}.swap-popover-container{padding:8px 4px 8px 12px!important}.swap-popover-container .swap-popover{max-height:240px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--el-border-color) transparent}.swap-popover-container .swap-popover::-webkit-scrollbar{width:4px}.swap-popover-container .swap-popover::-webkit-scrollbar-track{background:transparent}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:2px}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-placeholder)}.swap-popover-container .swap-title{font-size:12px;color:var(--el-text-color-secondary);margin-bottom:4px}.swap-popover-container .swap-option{padding:4px 8px;cursor:pointer;border-radius:4px;font-size:13px}.swap-popover-container .swap-option:hover{background:var(--el-fill-color-light)}.swap-popover-container .swap-option.active{color:var(--el-color-primary);font-weight:500}.swap-popover-container .swap-manual{display:flex;gap:4px;margin-bottom:8px}.swap-popover-container .swap-mode-actions{display:flex;gap:4px;justify-content:flex-end}.swap-popover-container .swap-section{margin-bottom:4px}.match-manager[data-v-a3d29773]{display:flex;flex-direction:column;gap:16px;min-height:100%}.config-header[data-v-a3d29773]{display:flex;align-items:center;gap:8px}.config-card[data-v-a3d29773] .el-card__body{padding-top:12px;padding-bottom:12px}.config-actions[data-v-a3d29773]{margin-top:8px}.status-section[data-v-a3d29773]{display:flex;flex-direction:column;gap:12px}.status-header[data-v-a3d29773]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.status-actions[data-v-a3d29773]{display:flex;gap:8px}.cls-grid[data-v-a3d29773]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.status-placeholder[data-v-a3d29773]{text-align:center;padding:40px;color:var(--k-text-light)}.log-card[data-v-a3d29773]{flex:1;display:flex;flex-direction:column;min-height:200px}.log-card[data-v-a3d29773] .el-card__body{padding:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.log-header[data-v-a3d29773]{display:flex;justify-content:space-between;align-items:center}.log-scroll[data-v-a3d29773]{flex:1;overflow-y:auto;padding:8px 16px;font-family:monospace;font-size:12px;scrollbar-width:thin}.log-scroll[data-v-a3d29773]::-webkit-scrollbar{width:6px}.log-scroll[data-v-a3d29773]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:3px}.log-scroll[data-v-a3d29773]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker, var(--el-text-color-placeholder))}.log-line[data-v-a3d29773]{padding:2px 0;line-height:1.5}.log-time[data-v-a3d29773]{color:var(--k-text-light);margin-right:8px}.log-empty[data-v-a3d29773]{text-align:center;color:var(--k-text-light);padding:20px}.subscriber-card[data-v-a3d29773] .el-card__body{padding-top:12px;padding-bottom:12px}.subscriber-header[data-v-a3d29773]{font-weight:700}.subscriber-list[data-v-a3d29773]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.subscriber-tag[data-v-a3d29773]{font-family:monospace}.subscriber-empty[data-v-a3d29773]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:13px}.subscriber-add[data-v-a3d29773]{display:flex;gap:8px;align-items:center}.schedule-section[data-v-a3d29773]{margin-top:12px;border-top:1px solid var(--k-color-divider, var(--el-border-color-lighter));padding-top:12px}.schedule-label[data-v-a3d29773]{font-size:13px;font-weight:500;margin-bottom:8px}.schedule-list[data-v-a3d29773]{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.schedule-row[data-v-a3d29773]{display:flex;gap:8px;align-items:center}.schedule-control-card[data-v-a3d29773] .el-card__body{padding-top:12px;padding-bottom:12px}.schedule-control-header[data-v-a3d29773]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.schedule-control-list[data-v-a3d29773]{display:flex;flex-direction:column;gap:8px}.schedule-control-row[data-v-a3d29773]{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-radius:4px;background:var(--k-hover-bg, var(--el-fill-color))}.schedule-info[data-v-a3d29773]{font-size:13px}.schedule-time[data-v-a3d29773]{color:var(--k-text-light, var(--el-text-color-secondary));margin-left:4px}.team-manager[data-v-064b204b]{display:flex;flex-direction:column;gap:12px}.team-header[data-v-064b204b]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.team-header-actions[data-v-064b204b]{display:flex;gap:8px}.player-display[data-v-064b204b]{display:flex;flex-wrap:wrap;gap:4px}.player-tag[data-v-064b204b]{font-size:12px}.no-players[data-v-064b204b]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px}.inline-edit[data-v-064b204b]{display:flex;flex-direction:column;gap:4px;padding:4px 0}.inline-edit-row[data-v-064b204b]{display:flex;align-items:center;gap:6px}.player-index[data-v-064b204b]{width:20px;text-align:right;color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px;flex-shrink:0}.inline-edit-actions[data-v-064b204b]{display:flex;gap:6px;margin-top:4px}.lobby-panel[data-v-a21c65dd]{display:flex;flex-direction:column;gap:16px}.lobby-config[data-v-a21c65dd]{margin-bottom:4px}.section-card[data-v-a21c65dd] .el-card__header{padding:12px 16px}.section-header[data-v-a21c65dd]{font-weight:700}.empty-hint[data-v-a21c65dd]{text-align:center;padding:20px;color:var(--k-text-light);font-size:13px}.game-list[data-v-a21c65dd]{display:flex;flex-direction:column;gap:8px}.game-card[data-v-a21c65dd]{border-left:3px solid var(--el-color-success)}.game-card[data-v-a21c65dd] .el-card__body{padding:12px}.game-header[data-v-a21c65dd]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.game-id[data-v-a21c65dd]{font-family:monospace;font-size:12px;color:var(--k-text-light)}.game-actions[data-v-a21c65dd]{display:flex;gap:4px}.game-players[data-v-a21c65dd]{display:flex;gap:6px;flex-wrap:wrap}.player-tag[data-v-a21c65dd]{font-size:13px}.contest-panel[data-v-c9a9bbef]{height:100%;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}.first-tab-label[data-v-c9a9bbef]{display:inline-flex;align-items:center;gap:4px}.sidebar-toggle-btn[data-v-c9a9bbef]{font-size:inherit;padding:0;min-width:auto;height:auto;line-height:inherit;color:var(--el-text-color-primary);font-weight:400}.sidebar-toggle-btn[data-v-c9a9bbef]:hover{color:var(--el-color-primary)}.contest-panel[data-v-c9a9bbef] .el-tabs{display:flex;flex-direction:column;flex:1;overflow:hidden}.contest-panel[data-v-c9a9bbef] .el-tabs__header{padding-left:8px}.contest-panel[data-v-c9a9bbef] .el-tabs__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.contest-panel[data-v-c9a9bbef] .el-tab-pane{flex:1;overflow-y:auto;padding:12px 16px 16px}.empty-state[data-v-c9a9bbef]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--k-text-light)}.main-layout[data-v-592f974d]{display:flex;height:100%;overflow:hidden}.sidebar-wrapper[data-v-592f974d]{position:relative;width:240px;min-width:240px;border-right:1px solid var(--k-color-divider, var(--el-border-color-lighter));transition:width .2s,min-width .2s;display:flex;flex-direction:column}.sidebar-wrapper.collapsed[data-v-592f974d]{width:0;min-width:0;overflow:hidden}.content-wrapper[data-v-592f974d]{flex:1;overflow:hidden;min-width:0}.empty-state[data-v-592f974d]{display:flex;align-items:center;justify-content:center;height:100%;color:var(--k-text-light);font-size:16px}
|
|
1
|
+
.sidebar[data-v-e7b90e50]{height:100%;display:flex;flex-direction:column}.sidebar-header[data-v-e7b90e50]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--k-color-divider);font-weight:700}.contest-list[data-v-e7b90e50]{flex:1;overflow-y:auto}.contest-item[data-v-e7b90e50]{padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--k-color-divider);position:relative;transition:background-color .2s}.contest-item[data-v-e7b90e50]:hover{background:var(--k-hover-bg, var(--el-fill-color-light))}.contest-item.active[data-v-e7b90e50]{background:var(--k-hover-bg, var(--el-color-primary-light-9));border-left:3px solid var(--el-color-primary)}.contest-name[data-v-e7b90e50]{font-size:14px;font-weight:500}.contest-cid[data-v-e7b90e50]{font-size:12px;color:var(--k-text-light)}.admin-badge[data-v-e7b90e50]{position:absolute;top:10px;right:12px;color:var(--el-color-success)}.cls-card[data-v-559ac705]{border-left:3px solid transparent}.cls-card.status-pending[data-v-559ac705]{border-left-color:var(--el-color-info)}.cls-card.status-running[data-v-559ac705]{border-left-color:var(--el-color-success)}.cls-card.status-finished[data-v-559ac705]{border-left-color:var(--el-color-primary)}.cls-card.status-suspended[data-v-559ac705]{border-left-color:var(--el-color-warning)}.cls-card.status-error[data-v-559ac705]{border-left-color:var(--el-color-danger)}.cls-header[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center}.cls-title[data-v-559ac705]{font-weight:700}.error-msg[data-v-559ac705]{color:var(--el-color-danger);font-size:12px;margin-bottom:8px}.player-list[data-v-559ac705]{display:flex;flex-direction:column;gap:4px}.player-row[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 4px;border-radius:2px}.player-row[data-v-559ac705]:nth-child(odd){background:var(--k-hover-bg, var(--el-fill-color))}.player-info[data-v-559ac705]{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden}.online-dot[data-v-559ac705]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.online-dot.online[data-v-559ac705]{background:var(--el-color-success)}.online-dot.offline[data-v-559ac705]{background:var(--el-color-danger)}.player-name[data-v-559ac705]{font-weight:500;color:var(--k-text-normal, var(--el-text-color-primary))}.player-right[data-v-559ac705]{display:flex;align-items:center;gap:4px;flex-shrink:0}.player-point[data-v-559ac705]{color:var(--k-text-light, var(--el-text-color-secondary));font-family:monospace}.player-point.editable[data-v-559ac705]{cursor:pointer;border-bottom:1px dashed var(--el-border-color)}.player-point.editable[data-v-559ac705]:hover{color:var(--el-color-primary)}.point-edit[data-v-559ac705]{display:flex;align-items:center;gap:2px;margin-left:auto}.point-edit-btn[data-v-559ac705]{padding:0 4px;min-width:auto;font-size:13px;margin-left:0!important}.swap-btn[data-v-559ac705]{padding:2px;font-size:13px}.no-players[data-v-559ac705]{text-align:center;color:var(--k-text-light, var(--el-text-color-secondary))}.cls-actions[data-v-559ac705]{margin-top:8px;display:flex;gap:4px;flex-wrap:wrap}.swap-popover-container{padding:8px 4px 8px 12px!important}.swap-popover-container .swap-popover{max-height:240px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--el-border-color) transparent}.swap-popover-container .swap-popover::-webkit-scrollbar{width:4px}.swap-popover-container .swap-popover::-webkit-scrollbar-track{background:transparent}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:2px}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-placeholder)}.swap-popover-container .swap-title{font-size:12px;color:var(--el-text-color-secondary);margin-bottom:4px}.swap-popover-container .swap-option{padding:4px 8px;cursor:pointer;border-radius:4px;font-size:13px}.swap-popover-container .swap-option:hover{background:var(--el-fill-color-light)}.swap-popover-container .swap-option.active{color:var(--el-color-primary);font-weight:500}.swap-popover-container .swap-manual{display:flex;gap:4px;margin-bottom:8px}.swap-popover-container .swap-mode-actions{display:flex;gap:4px;justify-content:flex-end}.swap-popover-container .swap-section{margin-bottom:4px}.match-manager[data-v-13c91849]{display:flex;flex-direction:column;gap:16px;min-height:100%}.config-header[data-v-13c91849]{display:flex;align-items:center;gap:8px}.config-card[data-v-13c91849] .el-card__body{padding-top:12px;padding-bottom:12px}.config-actions[data-v-13c91849]{margin-top:8px}.status-section[data-v-13c91849]{display:flex;flex-direction:column;gap:12px}.status-header[data-v-13c91849]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.status-actions[data-v-13c91849]{display:flex;gap:8px}.cls-grid[data-v-13c91849]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.status-placeholder[data-v-13c91849]{text-align:center;padding:40px;color:var(--k-text-light)}.log-card[data-v-13c91849]{flex:1;display:flex;flex-direction:column;min-height:200px}.log-card[data-v-13c91849] .el-card__body{padding:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.log-header[data-v-13c91849]{display:flex;justify-content:space-between;align-items:center}.log-scroll[data-v-13c91849]{flex:1;overflow-y:auto;padding:8px 16px;font-family:monospace;font-size:12px;scrollbar-width:thin}.log-scroll[data-v-13c91849]::-webkit-scrollbar{width:6px}.log-scroll[data-v-13c91849]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:3px}.log-scroll[data-v-13c91849]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker, var(--el-text-color-placeholder))}.log-line[data-v-13c91849]{padding:2px 0;line-height:1.5}.log-time[data-v-13c91849]{color:var(--k-text-light);margin-right:8px}.log-empty[data-v-13c91849]{text-align:center;color:var(--k-text-light);padding:20px}.subscriber-card[data-v-13c91849] .el-card__body{padding-top:12px;padding-bottom:12px}.subscriber-header[data-v-13c91849]{font-weight:700}.subscriber-list[data-v-13c91849]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.subscriber-tag[data-v-13c91849]{font-family:monospace}.subscriber-empty[data-v-13c91849]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:13px}.subscriber-add[data-v-13c91849]{display:flex;gap:8px;align-items:center}.schedule-section[data-v-13c91849]{margin-top:12px;border-top:1px solid var(--k-color-divider, var(--el-border-color-lighter));padding-top:12px}.schedule-label[data-v-13c91849]{font-size:13px;font-weight:500;margin-bottom:8px}.schedule-list[data-v-13c91849]{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.schedule-row[data-v-13c91849]{display:flex;gap:8px;align-items:center}.schedule-control-card[data-v-13c91849] .el-card__body{padding-top:12px;padding-bottom:12px}.schedule-control-header[data-v-13c91849]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.schedule-control-list[data-v-13c91849]{display:flex;flex-direction:column;gap:8px}.schedule-control-row[data-v-13c91849]{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-radius:4px;background:var(--k-hover-bg, var(--el-fill-color))}.schedule-info[data-v-13c91849]{font-size:13px}.schedule-time[data-v-13c91849]{color:var(--k-text-light, var(--el-text-color-secondary));margin-left:4px}.team-manager[data-v-064b204b]{display:flex;flex-direction:column;gap:12px}.team-header[data-v-064b204b]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.team-header-actions[data-v-064b204b]{display:flex;gap:8px}.player-display[data-v-064b204b]{display:flex;flex-wrap:wrap;gap:4px}.player-tag[data-v-064b204b]{font-size:12px}.no-players[data-v-064b204b]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px}.inline-edit[data-v-064b204b]{display:flex;flex-direction:column;gap:4px;padding:4px 0}.inline-edit-row[data-v-064b204b]{display:flex;align-items:center;gap:6px}.player-index[data-v-064b204b]{width:20px;text-align:right;color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px;flex-shrink:0}.inline-edit-actions[data-v-064b204b]{display:flex;gap:6px;margin-top:4px}.lobby-panel[data-v-a21c65dd]{display:flex;flex-direction:column;gap:16px}.lobby-config[data-v-a21c65dd]{margin-bottom:4px}.section-card[data-v-a21c65dd] .el-card__header{padding:12px 16px}.section-header[data-v-a21c65dd]{font-weight:700}.empty-hint[data-v-a21c65dd]{text-align:center;padding:20px;color:var(--k-text-light);font-size:13px}.game-list[data-v-a21c65dd]{display:flex;flex-direction:column;gap:8px}.game-card[data-v-a21c65dd]{border-left:3px solid var(--el-color-success)}.game-card[data-v-a21c65dd] .el-card__body{padding:12px}.game-header[data-v-a21c65dd]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.game-id[data-v-a21c65dd]{font-family:monospace;font-size:12px;color:var(--k-text-light)}.game-actions[data-v-a21c65dd]{display:flex;gap:4px}.game-players[data-v-a21c65dd]{display:flex;gap:6px;flex-wrap:wrap}.player-tag[data-v-a21c65dd]{font-size:13px}.contest-panel[data-v-c9a9bbef]{height:100%;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}.first-tab-label[data-v-c9a9bbef]{display:inline-flex;align-items:center;gap:4px}.sidebar-toggle-btn[data-v-c9a9bbef]{font-size:inherit;padding:0;min-width:auto;height:auto;line-height:inherit;color:var(--el-text-color-primary);font-weight:400}.sidebar-toggle-btn[data-v-c9a9bbef]:hover{color:var(--el-color-primary)}.contest-panel[data-v-c9a9bbef] .el-tabs{display:flex;flex-direction:column;flex:1;overflow:hidden}.contest-panel[data-v-c9a9bbef] .el-tabs__header{padding-left:8px}.contest-panel[data-v-c9a9bbef] .el-tabs__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.contest-panel[data-v-c9a9bbef] .el-tab-pane{flex:1;overflow-y:auto;padding:12px 16px 16px}.empty-state[data-v-c9a9bbef]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--k-text-light)}.main-layout[data-v-592f974d]{display:flex;height:100%;overflow:hidden}.sidebar-wrapper[data-v-592f974d]{position:relative;width:240px;min-width:240px;border-right:1px solid var(--k-color-divider, var(--el-border-color-lighter));transition:width .2s,min-width .2s;display:flex;flex-direction:column}.sidebar-wrapper.collapsed[data-v-592f974d]{width:0;min-width:0;overflow:hidden}.content-wrapper[data-v-592f974d]{flex:1;overflow:hidden;min-width:0}.empty-state[data-v-592f974d]{display:flex;align-items:center;justify-content:center;height:100%;color:var(--k-text-light);font-size:16px}
|