@xcpcio/board-app 0.52.1 → 0.53.1
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/404.html +1 -1
- package/dist/assets/Board-CdRX5Jlm.js +1 -0
- package/dist/assets/Board-_AOcbImO.css +1 -0
- package/dist/assets/ContestStateBadge-7wQzxk8G.js +1 -0
- package/dist/assets/ContestStateBadge-yOXRkC0c.css +1 -0
- package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-Bn95nFBm.js +1 -0
- package/dist/assets/Footer.vue_vue_type_script_setup_true_lang-DKX0udaw.js +1 -0
- package/dist/assets/NavBar-K1-1c5jR.css +1 -0
- package/dist/assets/NavBar-u32CnGNs.js +1 -0
- package/dist/assets/RightArrowIcon-C0kFrdwD.js +1 -0
- package/dist/assets/TheInput.vue_vue_type_script_setup_true_lang-JUZCaDDe.js +1 -0
- package/dist/assets/Tooltip-VVqtpO6L.css +1 -0
- package/dist/assets/Tooltip.vue_vue_type_script_setup_true_lang-BDZrFekD.js +27 -0
- package/dist/assets/_...all_-BQGY1hVe.js +1 -0
- package/dist/assets/{_...all_-efc1d81f.js → _...all_-DWAxHlYz.js} +2 -2
- package/dist/assets/_name_-9a9T81bP.js +1 -0
- package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/assets/about-4fkjm2Q9.js +5 -0
- package/dist/assets/board-layout-iVgXr9cV.js +1 -0
- package/dist/assets/board-loNE7y_y.js +1 -0
- package/dist/assets/constant-BloPFjTg.js +1 -0
- package/dist/assets/default-Dfp7T80x.js +1 -0
- package/dist/assets/en-DDlXf_8q.js +1 -0
- package/dist/assets/headless-mKevhAWY.js +1 -0
- package/dist/assets/home-DtVjeLJy.js +1 -0
- package/dist/assets/index-7LWkxGEA.js +1 -0
- package/dist/assets/index-B6LpxvNH.js +1 -0
- package/dist/assets/{index-241beb5a.css → index-BP90wE2A.css} +1 -1
- package/dist/assets/index-BerApwlM.css +1 -0
- package/dist/assets/index-BjCWriHl.css +5 -0
- package/dist/assets/index-BjMqMJ9d.js +5 -0
- package/dist/assets/index-CJmQltjE.js +1 -0
- package/dist/assets/index-CLjAIeOP.js +25 -0
- package/dist/assets/index-D5ZO7j9A.js +1 -0
- package/dist/assets/{index-5271d2f0.css → index-DRiWpQTB.css} +1 -1
- package/dist/assets/index-DXoiO_9Q.js +50 -0
- package/dist/assets/index-De6dfmWB.css +1 -0
- package/dist/assets/index-T0V7hFOw.js +1 -0
- package/dist/assets/index-layout-DcvtlPA2.js +1 -0
- package/dist/assets/index-w4oLejMc.js +198 -0
- package/dist/assets/pagination-EiFUbGj_.js +3 -0
- package/dist/assets/route-block-B_A1xBdJ.js +1 -0
- package/dist/assets/test-_7cPDLJE.js +1 -0
- package/dist/assets/use-vmodel-CkMPj1sw.js +1 -0
- package/dist/assets/useQueryBoardData-DQ09XmE8.js +1 -0
- package/dist/assets/user-CAaqMJHl.js +1 -0
- package/dist/assets/virtual_pwa-register-Dafkmfjm.js +1 -0
- package/dist/assets/workbox-window.prod.es5-D5gOYdM7.js +2 -0
- package/dist/assets/zh-CN-CNJkghp4.js +1 -0
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +50 -49
- package/src/auto-imports.d.ts +4 -2
- package/src/components/Balloon.vue +3 -2
- package/src/components/BalloonBlock.vue +1 -1
- package/src/components/ContestIndexUI.vue +3 -3
- package/src/components/Countdown.vue +3 -3
- package/src/components/NavBar.vue +1 -1
- package/src/components/Resolver.vue +3 -3
- package/src/components/SearchInput.vue +1 -1
- package/src/components/TheCheckbox.vue +1 -1
- package/src/components/TheCounter.vue +1 -1
- package/src/components/TheInput.vue +3 -3
- package/src/components/battle-of-giants/GiantsOptions.vue +5 -5
- package/src/components/battle-of-giants/GiantsScoreBoard.vue +1 -1
- package/src/components/board/AnimatedSubmissionBlock.vue +2 -2
- package/src/components/board/AnimatedSubmissionsModal.vue +1 -1
- package/src/components/board/Badge.vue +2 -2
- package/src/components/board/Board.vue +17 -12
- package/src/components/board/BoardTab.vue +1 -1
- package/src/components/board/BottomStatistics.vue +1 -1
- package/src/components/board/ContestStateBadge.vue +3 -3
- package/src/components/board/Export.vue +5 -5
- package/src/components/board/Modal.vue +4 -4
- package/src/components/board/ModalMenu.vue +2 -2
- package/src/components/board/OptionsModal.vue +4 -4
- package/src/components/board/ProblemBlock.vue +2 -2
- package/src/components/board/ProblemInfoModal.vue +3 -3
- package/src/components/board/Progress.vue +12 -9
- package/src/components/board/SecondLevelMenu.vue +2 -2
- package/src/components/board/Standings.less +4 -4
- package/src/components/board/Standings.vue +5 -5
- package/src/components/board/Statistics.vue +3 -3
- package/src/components/board/SubmissionsTable.vue +15 -15
- package/src/components/board/SubmissionsTableModal.vue +4 -4
- package/src/components/board/TeamAwards.vue +3 -3
- package/src/components/board/TeamInfoModal.vue +5 -5
- package/src/components/board/TeamProblemBlock.vue +5 -5
- package/src/components/board/TeamUI.vue +3 -3
- package/src/components/flowbite/Tooltip.vue +2 -2
- package/src/components/rating/Rating.vue +1 -1
- package/src/components/rating/RatingBadge.vue +1 -1
- package/src/components/rating/RatingIndexUI.vue +3 -3
- package/src/components/rating/RatingInfoModal.vue +4 -4
- package/src/components/rating/RatingTable.vue +4 -4
- package/src/components/rating/RatingUserUI.vue +2 -2
- package/src/components/table/TablePagination.vue +1 -1
- package/src/components.d.ts +1 -1
- package/src/composables/color.ts +2 -2
- package/src/composables/logo/index.ts +1 -1
- package/src/composables/pagination.ts +2 -2
- package/src/composables/rating.ts +1 -1
- package/src/composables/statistics.ts +1 -1
- package/src/composables/type.ts +4 -4
- package/src/composables/useQueryBoardData.ts +3 -2
- package/src/main.ts +9 -8
- package/src/modules/README.md +1 -1
- package/src/modules/i18n.ts +1 -1
- package/src/modules/nprogress.ts +1 -1
- package/src/modules/pinia.ts +1 -1
- package/src/modules/pwa.ts +1 -1
- package/src/modules/toast.ts +2 -2
- package/src/pages/index.vue +6 -6
- package/src/pages/rating/index.vue +2 -2
- package/src/shims.d.ts +10 -8
- package/src/styles/color.css +10 -0
- package/src/styles/markdown.css +8 -11
- package/src/typed-router.d.ts +33 -0
- package/src/types.ts +1 -1
- package/tsconfig.json +18 -19
- package/vite.config.ts +32 -30
- package/dist/assets/Board-b5bf1828.js +0 -1
- package/dist/assets/Board-f05c0366.css +0 -1
- package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-47ff726d.js +0 -1
- package/dist/assets/TheInput.vue_vue_type_script_setup_true_lang-9cc92a14.js +0 -1
- package/dist/assets/_...all_-80d9c58d.js +0 -1
- package/dist/assets/_name_-5f588c5c.js +0 -1
- package/dist/assets/about-86489903.js +0 -11
- package/dist/assets/board-428898fa.js +0 -1
- package/dist/assets/board-layout-f4b42426.js +0 -1
- package/dist/assets/en-c9a8dbb5.js +0 -1
- package/dist/assets/headless-464cd216.js +0 -1
- package/dist/assets/home-1c2da293.js +0 -1
- package/dist/assets/index-1426f0a6.js +0 -1
- package/dist/assets/index-8a3db893.js +0 -1
- package/dist/assets/index-accb347c.css +0 -1
- package/dist/assets/index-ae8b398e.css +0 -5
- package/dist/assets/index-c4a296e0.js +0 -25
- package/dist/assets/index-f813b721.js +0 -236
- package/dist/assets/index-fe6090d1.js +0 -1
- package/dist/assets/index-layout-6dbef8c0.js +0 -1
- package/dist/assets/pagination-959b8075.js +0 -3
- package/dist/assets/query-8d6474f1.js +0 -1
- package/dist/assets/test-ce57205f.js +0 -1
- package/dist/assets/user-5e4a4fb1.js +0 -1
- package/dist/assets/virtual_pwa-register-ab60e448.js +0 -1
- package/dist/assets/workbox-window.prod.es5-c46a1faa.js +0 -2
- package/dist/assets/zh-CN-8e545f66.js +0 -1
- /package/dist/assets/{_...all_-c60acc8c.css → _..-8Wh-Y8sB.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o={};export{o as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as p}from"./TheInput.vue_vue_type_script_setup_true_lang-JUZCaDDe.js";import{d as c,p as f,H as _,u as b,o as h,c as v,b as e,k as a,h as s,a as x,z as y,O as g}from"./index-DXoiO_9Q.js";import{u as k}from"./user-CAaqMJHl.js";import{b as l}from"./route-block-B_A1xBdJ.js";import"./use-vmodel-CkMPj1sw.js";const V={flex:"","flex-col":"","justify-center":"","items-center":""},w={"text-sm":"","opacity-75":""},I={"w-48":""},B={class:"hidden",for:"input"},C=["disabled"],N=c({name:"IndexPage",__name:"test",setup(R){const i=k(),o=f(i.savedName),u=_();function r(){o.value&&u.push(`/hi/${encodeURIComponent(o.value)}`)}const{t:n}=b();return(U,t)=>{const d=p;return h(),v("div",V,[t[1]||(t[1]=e("div",{"text-4xl":""},[e("div",{"i-carbon-campsite":""})],-1)),t[2]||(t[2]=e("p",null,[e("a",{rel:"noreferrer",href:"https://github.com/antfu/vitesse",target:"_blank"}," Vitesse ")],-1)),e("p",null,[e("em",w,a(s(n)("intro.desc")),1)]),t[3]||(t[3]=e("div",{"py-4":""},null,-1)),e("div",I,[x(d,{modelValue:s(o),"onUpdate:modelValue":t[0]||(t[0]=m=>y(o)?o.value=m:null),placeholder:s(n)("intro.whats-your-name"),autocomplete:"false",onKeydown:g(r,["enter"])},null,8,["modelValue","placeholder"]),e("label",B,a(s(n)("intro.whats-your-name")),1)]),e("div",null,[e("button",{"m-3":"","text-sm":"",btn:"",disabled:!s(o),onClick:r},a(s(n)("button.go")),9,C)])])}}});typeof l=="function"&&l(N);export{N as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{aw as c,ax as r}from"./index-DXoiO_9Q.js";const d=(...p)=>{const s=c().proxy.$props,t=Object.create(null);for(const e of p)if(typeof e=="string")t[e]=r(s,e,void 0,{eventName:`update:${e}`,passive:!0});else{const[o,n=o,a=`update:${o}`,u={}]=e;t[o]=r(s,n,void 0,{eventName:a,passive:!0,...u})}return t};export{d as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var at=r=>{throw TypeError(r)};var K=(r,t,s)=>t.has(r)||at("Cannot "+s);var e=(r,t,s)=>(K(r,t,"read from private field"),s?s.call(r):t.get(r)),b=(r,t,s)=>t.has(r)?at("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,s),l=(r,t,s,i)=>(K(r,t,"write to private field"),i?i.call(r,s):t.set(r,s),s),f=(r,t,s)=>(K(r,t,"access private method"),s);import{u as mt}from"./index-T0V7hFOw.js";import{a4 as gt,a5 as ot,a6 as w,a7 as G,a8 as B,a9 as Ot,aa as ht,ab as ut,ac as Ct,ad as St,ae as wt,af as ct,ag as It,ah as Tt,ai as Et,aj as Qt,g as vt,ak as Dt,al as Ft,C as W,am as lt,an as Ut,ao as dt,ap as jt}from"./index-DXoiO_9Q.js";import{a as xt}from"./constant-BloPFjTg.js";var v,n,k,m,D,M,T,S,N,A,L,F,U,E,_,u,$,Y,H,J,X,Z,q,tt,yt,bt,Pt=(bt=class extends gt{constructor(t,s){super();b(this,u);b(this,v);b(this,n);b(this,k);b(this,m);b(this,D);b(this,M);b(this,T);b(this,S);b(this,N);b(this,A);b(this,L);b(this,F);b(this,U);b(this,E);b(this,_,new Set);this.options=s,l(this,v,t),l(this,S,null),l(this,T,ot()),this.options.experimental_prefetchInRender||e(this,T).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(s)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(e(this,n).addObserver(this),ft(e(this,n),this.options)?f(this,u,$).call(this):this.updateResult(),f(this,u,X).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return et(e(this,n),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return et(e(this,n),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,f(this,u,Z).call(this),f(this,u,q).call(this),e(this,n).removeObserver(this)}setOptions(t,s){const i=this.options,o=e(this,n);if(this.options=e(this,v).defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof w(this.options.enabled,e(this,n))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");f(this,u,tt).call(this),e(this,n).setOptions(this.options),i._defaulted&&!G(this.options,i)&&e(this,v).getQueryCache().notify({type:"observerOptionsUpdated",query:e(this,n),observer:this});const a=this.hasListeners();a&&pt(e(this,n),o,this.options,i)&&f(this,u,$).call(this),this.updateResult(s),a&&(e(this,n)!==o||w(this.options.enabled,e(this,n))!==w(i.enabled,e(this,n))||B(this.options.staleTime,e(this,n))!==B(i.staleTime,e(this,n)))&&f(this,u,Y).call(this);const c=f(this,u,H).call(this);a&&(e(this,n)!==o||w(this.options.enabled,e(this,n))!==w(i.enabled,e(this,n))||c!==e(this,E))&&f(this,u,J).call(this,c)}getOptimisticResult(t){const s=e(this,v).getQueryCache().build(e(this,v),t),i=this.createResult(s,t);return At(this,i)&&(l(this,m,i),l(this,M,this.options),l(this,D,e(this,n).state)),i}getCurrentResult(){return e(this,m)}trackResult(t,s){const i={};return Object.keys(t).forEach(o=>{Object.defineProperty(i,o,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(o),s==null||s(o),t[o])})}),i}trackProp(t){e(this,_).add(t)}getCurrentQuery(){return e(this,n)}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const s=e(this,v).defaultQueryOptions(t),i=e(this,v).getQueryCache().build(e(this,v),s);return i.isFetchingOptimistic=!0,i.fetch().then(()=>this.createResult(i,s))}fetch(t){return f(this,u,$).call(this,{...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),e(this,m)))}createResult(t,s){var nt;const i=e(this,n),o=this.options,a=e(this,m),c=e(this,D),p=e(this,M),R=t!==i?t.state:e(this,k),{state:g}=t;let d={...g},Q=!1,h;if(s._optimisticResults){const O=this.hasListeners(),z=!O&&ft(t,s),Rt=O&&pt(t,i,s,o);(z||Rt)&&(d={...d,...wt(g.data,t.options)}),s._optimisticResults==="isRestoring"&&(d.fetchStatus="idle")}let{error:I,errorUpdatedAt:j,status:C}=d;if(s.select&&d.data!==void 0)if(a&&d.data===(c==null?void 0:c.data)&&s.select===e(this,N))h=e(this,A);else try{l(this,N,s.select),h=s.select(d.data),h=ct(a==null?void 0:a.data,h,s),l(this,A,h),l(this,S,null)}catch(O){l(this,S,O)}else h=d.data;if(s.placeholderData!==void 0&&h===void 0&&C==="pending"){let O;if(a!=null&&a.isPlaceholderData&&s.placeholderData===(p==null?void 0:p.placeholderData))O=a.data;else if(O=typeof s.placeholderData=="function"?s.placeholderData((nt=e(this,L))==null?void 0:nt.state.data,e(this,L)):s.placeholderData,s.select&&O!==void 0)try{O=s.select(O),l(this,S,null)}catch(z){l(this,S,z)}O!==void 0&&(C="success",h=ct(a==null?void 0:a.data,O,s),Q=!0)}e(this,S)&&(I=e(this,S),h=e(this,A),j=Date.now(),C="error");const x=d.fetchStatus==="fetching",P=C==="pending",V=C==="error",it=P&&x,rt=h!==void 0;return{status:C,fetchStatus:d.fetchStatus,isPending:P,isSuccess:C==="success",isError:V,isInitialLoading:it,isLoading:it,data:h,dataUpdatedAt:d.dataUpdatedAt,error:I,errorUpdatedAt:j,failureCount:d.fetchFailureCount,failureReason:d.fetchFailureReason,errorUpdateCount:d.errorUpdateCount,isFetched:d.dataUpdateCount>0||d.errorUpdateCount>0,isFetchedAfterMount:d.dataUpdateCount>R.dataUpdateCount||d.errorUpdateCount>R.errorUpdateCount,isFetching:x,isRefetching:x&&!P,isLoadingError:V&&!rt,isPaused:d.fetchStatus==="paused",isPlaceholderData:Q,isRefetchError:V&&rt,isStale:st(t,s),refetch:this.refetch,promise:e(this,T)}}updateResult(t){const s=e(this,m),i=this.createResult(e(this,n),this.options);if(l(this,D,e(this,n).state),l(this,M,this.options),e(this,D).data!==void 0&&l(this,L,e(this,n)),G(i,s))return;if(this.options.experimental_prefetchInRender){const c=R=>{i.status==="error"?R.reject(i.error):i.data!==void 0&&R.resolve(i.data)},p=()=>{const R=l(this,T,i.promise=ot());c(R)},y=e(this,T);switch(y.status){case"pending":c(y);break;case"fulfilled":(i.status==="error"||i.data!==y.value)&&p();break;case"rejected":(i.status!=="error"||i.error!==y.reason)&&p();break}}l(this,m,i);const o={},a=()=>{if(!s)return!0;const{notifyOnChangeProps:c}=this.options,p=typeof c=="function"?c():c;if(p==="all"||!p&&!e(this,_).size)return!0;const y=new Set(p??e(this,_));return this.options.throwOnError&&y.add("error"),Object.keys(e(this,m)).some(R=>{const g=R;return e(this,m)[g]!==s[g]&&y.has(g)})};(t==null?void 0:t.listeners)!==!1&&a()&&(o.listeners=!0),f(this,u,yt).call(this,{...o,...t})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&f(this,u,X).call(this)}},v=new WeakMap,n=new WeakMap,k=new WeakMap,m=new WeakMap,D=new WeakMap,M=new WeakMap,T=new WeakMap,S=new WeakMap,N=new WeakMap,A=new WeakMap,L=new WeakMap,F=new WeakMap,U=new WeakMap,E=new WeakMap,_=new WeakMap,u=new WeakSet,$=function(t){f(this,u,tt).call(this);let s=e(this,n).fetch(this.options,t);return t!=null&&t.throwOnError||(s=s.catch(Ot)),s},Y=function(){f(this,u,Z).call(this);const t=B(this.options.staleTime,e(this,n));if(ht||e(this,m).isStale||!ut(t))return;const i=Ct(e(this,m).dataUpdatedAt,t)+1;l(this,F,setTimeout(()=>{e(this,m).isStale||this.updateResult()},i))},H=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(e(this,n)):this.options.refetchInterval)??!1},J=function(t){f(this,u,q).call(this),l(this,E,t),!(ht||w(this.options.enabled,e(this,n))===!1||!ut(e(this,E))||e(this,E)===0)&&l(this,U,setInterval(()=>{(this.options.refetchIntervalInBackground||St.isFocused())&&f(this,u,$).call(this)},e(this,E)))},X=function(){f(this,u,Y).call(this),f(this,u,J).call(this,f(this,u,H).call(this))},Z=function(){e(this,F)&&(clearTimeout(e(this,F)),l(this,F,void 0))},q=function(){e(this,U)&&(clearInterval(e(this,U)),l(this,U,void 0))},tt=function(){const t=e(this,v).getQueryCache().build(e(this,v),this.options);if(t===e(this,n))return;const s=e(this,n);l(this,n,t),l(this,k,t.state),this.hasListeners()&&(s==null||s.removeObserver(this),t.addObserver(this))},yt=function(t){It.batch(()=>{t.listeners&&this.listeners.forEach(s=>{s(e(this,m))}),e(this,v).getQueryCache().notify({query:e(this,n),type:"observerResultsUpdated"})})},bt);function Mt(r,t){return w(t.enabled,r)!==!1&&r.state.data===void 0&&!(r.state.status==="error"&&t.retryOnMount===!1)}function ft(r,t){return Mt(r,t)||r.state.data!==void 0&&et(r,t,t.refetchOnMount)}function et(r,t,s){if(w(t.enabled,r)!==!1){const i=typeof s=="function"?s(r):s;return i==="always"||i!==!1&&st(r,t)}return!1}function pt(r,t,s,i){return(r!==t||w(i.enabled,r)===!1)&&(!s.suspense||r.state.status!=="error")&&st(r,s)}function st(r,t){return w(t.enabled,r)!==!1&&r.isStaleByTime(B(t.staleTime,r))}function At(r,t){return!G(r.getCurrentResult(),t)}function Lt(r=""){if(!Tt())throw new Error("vue-query hooks can only be used inside setup() function or functions that support injection context.");const t=Qt(r),s=Et(t);if(!s)throw new Error("No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.");return s}function _t(r,t,s){const i=Lt(),o=vt(()=>{const h=Dt(t);typeof h.enabled=="function"&&(h.enabled=h.enabled());const I=i.defaultQueryOptions(h);return I._optimisticResults=i.isRestoring.value?"isRestoring":"optimistic",I}),a=new r(i,o.value),c=Ft(a.getCurrentResult());let p=()=>{};W(i.isRestoring,h=>{h||(p(),p=a.subscribe(I=>{lt(c,I)}))},{immediate:!0});const y=()=>{a.setOptions(o.value),lt(c,a.getCurrentResult())};W(o,y),Ut(()=>{p()});const R=(...h)=>(y(),c.refetch(...h)),g=()=>new Promise((h,I)=>{let j=()=>{};const C=()=>{if(o.value.enabled!==!1){a.setOptions(o.value);const x=a.getOptimisticResult(o.value);x.isStale?(j(),a.fetchOptimistic(o.value).then(h,P=>{dt(o.value.throwOnError,[P,a.getCurrentQuery()])?I(P):h(a.getCurrentResult())})):(j(),h(x))}};C(),j=W(o,C)});W(()=>c.error,h=>{if(c.isError&&!c.isFetching&&dt(o.value.throwOnError,[h,a.getCurrentQuery()]))throw h});const Q=jt(c);for(const h in c)typeof c[h]=="function"&&(Q[h]=c[h]);return Q.suspense=g,Q.refetch=R,Q}function $t(r,t){return _t(Pt,r)}function Gt(){return mt("data-source","",{transform:String})}function Yt(){return mt("battle-of-giants","",{transform:String})}const kt=3;async function Nt(r,t){const s=r.startsWith("/")?r.slice(1):r;let i=`${window.DATA_HOST}${s}`;r.startsWith("http")&&(i=r),i.endsWith("/")&&(i=i.slice(0,-1));const o=await fetch(`${i}/config.json?t=${t??0}`),a=await fetch(`${i}/team.json?t=${t??0}`),c=await fetch(`${i}/run.json?t=${t??0}`),{status:p,statusText:y}=o;if(p>=300||p<200)throw new Error(`fetch data failed. [status=${p}] [statusText=${y}]`);return Promise.all([o.json(),a.json(),c.json()]).then(g=>({contest:g[0],teams:g[1],submissions:g[2]}))}function Ht(r,t,s=!1){let i=3e4,o=i;const a=vt(()=>Math.floor(t.value.getTime()/1e3/10));return xt.value==="I18N"&&(i=10*1e3,o=i),s&&(i=Number.POSITIVE_INFINITY,o=!1),$t({queryKey:[r,a.value],queryFn:()=>Nt(r,a.value),retry:kt,staleTime:i,refetchInterval:o})}export{Yt as a,Gt as g,Ht as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{au as m,p as r,g as t}from"./index-DXoiO_9Q.js";const l=m("user",()=>{const e=r(""),s=r(new Set),u=t(()=>Array.from(s.value)),o=t(()=>u.value.filter(a=>a!==e.value));function n(a){e.value&&s.value.add(e.value),e.value=a}return{setNewName:n,otherNames:o,savedName:e}});export{l as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as u}from"./index-DXoiO_9Q.js";function _(c={}){const{immediate:o=!1,onNeedRefresh:p,onOfflineReady:a,onRegistered:r,onRegisteredSW:s,onRegisterError:t}=c;let i,n;const d=async(e=!0)=>{await n};async function l(){if("serviceWorker"in navigator){if(i=await u(async()=>{const{Workbox:e}=await import("./workbox-window.prod.es5-D5gOYdM7.js");return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e("/sw.js",{scope:"/",type:"classic"})).catch(e=>{t==null||t(e)}),!i)return;i.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),i.addEventListener("installed",e=>{e.isUpdate||a==null||a()}),i.register({immediate:o}).then(e=>{s?s("/sw.js",e):r==null||r(e)}).catch(e=>{t==null||t(e)})}}return n=l(),d}export{_ as registerSW};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
try{self["workbox:window:7.0.0"]&&_()}catch{}function E(n,r){return new Promise(function(t){var i=new MessageChannel;i.port1.onmessage=function(c){t(c.data)},n.postMessage(r,[i.port2])})}function W(n){var r=function(t,i){if(typeof t!="object"||!t)return t;var c=t[Symbol.toPrimitive];if(c!==void 0){var h=c.call(t,i);if(typeof h!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(n,"string");return typeof r=="symbol"?r:r+""}function k(n,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,W(i.key),i)}}function P(n,r){return P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},P(n,r)}function j(n,r){(r==null||r>n.length)&&(r=n.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=n[t];return i}function L(n,r){var t=typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t)return(t=t.call(n)).next.bind(t);if(Array.isArray(n)||(t=function(c,h){if(c){if(typeof c=="string")return j(c,h);var l=Object.prototype.toString.call(c).slice(8,-1);return l==="Object"&&c.constructor&&(l=c.constructor.name),l==="Map"||l==="Set"?Array.from(c):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?j(c,h):void 0}}(n))||r){t&&(n=t);var i=0;return function(){return i>=n.length?{done:!0}:{done:!1,value:n[i++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}try{self["workbox:core:7.0.0"]&&_()}catch{}var w=function(){var n=this;this.promise=new Promise(function(r,t){n.resolve=r,n.reject=t})};function b(n,r){var t=location.href;return new URL(n,t).href===new URL(r,t).href}var g=function(n,r){this.type=n,Object.assign(this,r)};function d(n,r,t){return t?r?r(n):n:(n&&n.then||(n=Promise.resolve(n)),r?n.then(r):n)}function O(){}var x={type:"SKIP_WAITING"};function S(n,r){return n&&n.then?n.then(O):Promise.resolve()}var U=function(n){function r(v,u){var e,o;return u===void 0&&(u={}),(e=n.call(this)||this).nn={},e.tn=0,e.rn=new w,e.en=new w,e.on=new w,e.un=0,e.an=new Set,e.cn=function(){var s=e.fn,a=s.installing;e.tn>0||!b(a.scriptURL,e.sn.toString())||performance.now()>e.un+6e4?(e.vn=a,s.removeEventListener("updatefound",e.cn)):(e.hn=a,e.an.add(a),e.rn.resolve(a)),++e.tn,a.addEventListener("statechange",e.ln)},e.ln=function(s){var a=e.fn,f=s.target,p=f.state,m=f===e.vn,y={sw:f,isExternal:m,originalEvent:s};!m&&e.mn&&(y.isUpdate=!0),e.dispatchEvent(new g(p,y)),p==="installed"?e.wn=self.setTimeout(function(){p==="installed"&&a.waiting===f&&e.dispatchEvent(new g("waiting",y))},200):p==="activating"&&(clearTimeout(e.wn),m||e.en.resolve(f))},e.yn=function(s){var a=e.hn,f=a!==navigator.serviceWorker.controller;e.dispatchEvent(new g("controlling",{isExternal:f,originalEvent:s,sw:a,isUpdate:e.mn})),f||e.on.resolve(a)},e.gn=(o=function(s){var a=s.data,f=s.ports,p=s.source;return d(e.getSW(),function(){e.an.has(p)&&e.dispatchEvent(new g("message",{data:a,originalEvent:s,ports:f,sw:p}))})},function(){for(var s=[],a=0;a<arguments.length;a++)s[a]=arguments[a];try{return Promise.resolve(o.apply(this,s))}catch(f){return Promise.reject(f)}}),e.sn=v,e.nn=u,navigator.serviceWorker.addEventListener("message",e.gn),e}var t,i;i=n,(t=r).prototype=Object.create(i.prototype),t.prototype.constructor=t,P(t,i);var c,h,l=r.prototype;return l.register=function(v){var u=(v===void 0?{}:v).immediate,e=u!==void 0&&u;try{var o=this;return d(function(s,a){var f=s();return f&&f.then?f.then(a):a(f)}(function(){if(!e&&document.readyState!=="complete")return S(new Promise(function(s){return window.addEventListener("load",s)}))},function(){return o.mn=!!navigator.serviceWorker.controller,o.dn=o.pn(),d(o.bn(),function(s){o.fn=s,o.dn&&(o.hn=o.dn,o.en.resolve(o.dn),o.on.resolve(o.dn),o.dn.addEventListener("statechange",o.ln,{once:!0}));var a=o.fn.waiting;return a&&b(a.scriptURL,o.sn.toString())&&(o.hn=a,Promise.resolve().then(function(){o.dispatchEvent(new g("waiting",{sw:a,wasWaitingBeforeRegister:!0}))}).then(function(){})),o.hn&&(o.rn.resolve(o.hn),o.an.add(o.hn)),o.fn.addEventListener("updatefound",o.cn),navigator.serviceWorker.addEventListener("controllerchange",o.yn),o.fn})}))}catch(s){return Promise.reject(s)}},l.update=function(){try{return this.fn?d(S(this.fn.update())):d()}catch(v){return Promise.reject(v)}},l.getSW=function(){return this.hn!==void 0?Promise.resolve(this.hn):this.rn.promise},l.messageSW=function(v){try{return d(this.getSW(),function(u){return E(u,v)})}catch(u){return Promise.reject(u)}},l.messageSkipWaiting=function(){this.fn&&this.fn.waiting&&E(this.fn.waiting,x)},l.pn=function(){var v=navigator.serviceWorker.controller;return v&&b(v.scriptURL,this.sn.toString())?v:void 0},l.bn=function(){try{var v=this;return d(function(u,e){try{var o=u()}catch(s){return e(s)}return o&&o.then?o.then(void 0,e):o}(function(){return d(navigator.serviceWorker.register(v.sn,v.nn),function(u){return v.un=performance.now(),u})},function(u){throw u}))}catch(u){return Promise.reject(u)}},c=r,(h=[{key:"active",get:function(){return this.en.promise}},{key:"controlling",get:function(){return this.on.promise}}])&&k(c.prototype,h),Object.defineProperty(c,"prototype",{writable:!1}),c}(function(){function n(){this.Pn=new Map}var r=n.prototype;return r.addEventListener=function(t,i){this.jn(t).add(i)},r.removeEventListener=function(t,i){this.jn(t).delete(i)},r.dispatchEvent=function(t){t.target=this;for(var i,c=L(this.jn(t.type));!(i=c()).done;)(0,i.value)(t)},r.jn=function(t){return this.Pn.has(t)||this.Pn.set(t,new Set),this.Pn.get(t)},n}());export{U as Workbox,g as WorkboxEvent,E as messageSW};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const t={button:{about:{t:0,b:{t:2,i:[{t:3}],s:"关于"}},back:{t:0,b:{t:2,i:[{t:3}],s:"返回"}},go:{t:0,b:{t:2,i:[{t:3}],s:"确定"}},home:{t:0,b:{t:2,i:[{t:3}],s:"首页"}},confirm:{t:0,b:{t:2,i:[{t:3}],s:"确认"}},cancel:{t:0,b:{t:2,i:[{t:3}],s:"取消"}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:"切换深色模式"}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:"切换语言"}}},intro:{desc:{t:0,b:{t:2,i:[{t:3}],s:"固执己见的 Vite 项目模板"}},"dynamic-route":{t:0,b:{t:2,i:[{t:3}],s:"动态路由演示"}},hi:{t:0,b:{t:2,i:[{t:3,v:"你好,"},{t:4,k:"name"}]}},aka:{t:0,b:{t:2,i:[{t:3}],s:"也叫"}},"whats-your-name":{t:0,b:{t:2,i:[{t:3}],s:"输入你的名字"}}},"not-found":{t:0,b:{t:2,i:[{t:3}],s:"未找到页面"}},common:{loading:{t:0,b:{t:2,i:[{t:3}],s:"加载中"}},colon:{t:0,b:{t:2,i:[{t:3}],s:":"}}},index:{start:{t:0,b:{t:2,i:[{t:3}],s:"开始时间"}},duration:{t:0,b:{t:2,i:[{t:3}],s:"持续时长"}}},type_menu:{rank:{t:0,b:{t:2,i:[{t:3}],s:"排名"}},submissions:{t:0,b:{t:2,i:[{t:3}],s:"提交"}},statistics:{t:0,b:{t:2,i:[{t:3}],s:"统计"}},balloon:{t:0,b:{t:2,i:[{t:3}],s:"气球"}},export:{t:0,b:{t:2,i:[{t:3}],s:"导出"}},resolver:{t:0,b:{t:2,i:[{t:3}],s:"滚榜"}},options:{t:0,b:{t:2,i:[{t:3}],s:"选项"}},awards:{t:0,b:{t:2,i:[{t:3}],s:"奖项"}},utility:{t:0,b:{t:2,i:[{t:3}],s:"工具"}},countdown:{t:0,b:{t:2,i:[{t:3}],s:"倒计时"}}},standings:{start_time:{t:0,b:{t:2,i:[{t:3}],s:"开始时间"}},end_time:{t:0,b:{t:2,i:[{t:3}],s:"结束时间"}},elapsed:{t:0,b:{t:2,i:[{t:3}],s:"当前时间"}},remaining:{t:0,b:{t:2,i:[{t:3}],s:"剩余时间"}},place:{t:0,b:{t:2,i:[{t:3}],s:"Place"}},team:{t:0,b:{t:2,i:[{t:3}],s:"Team"}},solved:{t:0,b:{t:2,i:[{t:3}],s:"Solved"}},penalty:{t:0,b:{t:2,i:[{t:3}],s:"Penalty"}},dirt:{t:0,b:{t:2,i:[{t:3}],s:"Dirt"}},se:{t:0,b:{t:2,i:[{t:3}],s:"SE"}},statistics:{submitted:{t:0,b:{t:2,i:[{t:3}],s:"Submitted"}},attempted:{t:0,b:{t:2,i:[{t:3}],s:"Attempted"}},accepted:{t:0,b:{t:2,i:[{t:3}],s:"Accepted"}},dirt:{t:0,b:{t:2,i:[{t:3}],s:"Dirt"}},se:{t:0,b:{t:2,i:[{t:3}],s:"SE"}},first_solved:{t:0,b:{t:2,i:[{t:3}],s:"First Solved"}},last_solved:{t:0,b:{t:2,i:[{t:3}],s:"Last Solved"}},head_data:{problems:{t:0,b:{t:2,i:[{t:3}],s:"题目数"}},teams:{t:0,b:{t:2,i:[{t:3}],s:"队伍数"}},submissions:{t:0,b:{t:2,i:[{t:3}],s:"提交数"}}}},options:{calculation_of_penalty:{t:0,b:{t:2,i:[{t:3}],s:"罚时计算方式"}},in_minutes:{t:0,b:{t:2,i:[{t:3}],s:"精确到分钟进行累加"}},in_seconds:{t:0,b:{t:2,i:[{t:3}],s:"精确到秒进行累加"}},accumulate_in_seconds_and_finally_to_the_minute:{t:0,b:{t:2,i:[{t:3}],s:"精确到秒进行累加,最后精确到分钟"}}}},submissions:{total_submissions:{t:0,b:{t:2,i:[{t:3}],s:"总提交数"}}}};export{t as default};
|
package/dist/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.53.1/dist/balloon-192x192.png"><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.53.1/dist/balloon-512x512.svg" color="#00aba9"><meta name="msapplication-TileColor" content="#00aba9"><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return`${_}/`}{let _="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.53.1/dist";_=normalizePath(_),window.CDN_HOST=_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}try{let _=__DEFAULT_LANG__;window.DEFAULT_LANG=_}catch(_){window.DEFAULT_LANG="en"}</script><script>!function(){localStorage.getItem("vueuse-color-scheme")||localStorage.setItem("vueuse-color-scheme","light");const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,o=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===o||e&&"light"!==o)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.53.1/dist/assets/index-DXoiO_9Q.js"></script><link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.53.1/dist/assets/index-BjCWriHl.css"><link rel="manifest" href="/manifest.webmanifest"></head><body class="font-sans"><div id="app"></div><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script");e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var plausibleJSUrl=__PLAUSIBLE_JS_URL__,plausibleDataDomain=__PLAUSIBLE_DATA_DOMAIN__;!function(){var e=document.createElement("script");e.src=plausibleJSUrl,e.defer=!0,e.setAttribute("data-domain",plausibleDataDomain);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script");e.src=`https://hm.baidu.com/hm.js?${baiduAnalyticsId}`;var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var googleAnalyticsId=__GOOGLE_ANALYTICS_ID__;!function(){var e,t,a,r,c,n;location.port||(e=window,t=document,a="script",r="ga",e.GoogleAnalyticsObject=r,e[r]=e[r]||function(){(e[r].q=e[r].q||[]).push(arguments)},e[r].l=1*new Date,c=t.createElement(a),n=t.getElementsByTagName(a)[0],c.async=1,c.src="//www.google-analytics.com/analytics.js",n.parentNode.insertBefore(c,n),ga("create",`${googleAnalyticsId}`,"auto"),ga("send","pageview"))}()}catch(e){}</script></body></html>
|
package/dist/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const
|
|
1
|
+
if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const t=s=>l(s,r),o={module:{uri:r},exports:u,require:t};e[r]=Promise.all(n.map((s=>o[s]||t(s)))).then((s=>(i(...s),u)))}}define(["./workbox-86deb690"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/_..-8Wh-Y8sB.css",revision:null},{url:"assets/_...all_-BQGY1hVe.js",revision:null},{url:"assets/_...all_-DWAxHlYz.js",revision:null},{url:"assets/_name_-9a9T81bP.js",revision:null},{url:"assets/_plugin-vue_export-helper-DlAUqK2U.js",revision:null},{url:"assets/about-4fkjm2Q9.js",revision:null},{url:"assets/Board-_AOcbImO.css",revision:null},{url:"assets/Board-CdRX5Jlm.js",revision:null},{url:"assets/board-layout-iVgXr9cV.js",revision:null},{url:"assets/board-loNE7y_y.js",revision:null},{url:"assets/constant-BloPFjTg.js",revision:null},{url:"assets/ContestStateBadge-7wQzxk8G.js",revision:null},{url:"assets/ContestStateBadge-yOXRkC0c.css",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-Bn95nFBm.js",revision:null},{url:"assets/default-Dfp7T80x.js",revision:null},{url:"assets/en-DDlXf_8q.js",revision:null},{url:"assets/Footer.vue_vue_type_script_setup_true_lang-DKX0udaw.js",revision:null},{url:"assets/headless-mKevhAWY.js",revision:null},{url:"assets/home-DtVjeLJy.js",revision:null},{url:"assets/index-7LWkxGEA.js",revision:null},{url:"assets/index-B6LpxvNH.js",revision:null},{url:"assets/index-BerApwlM.css",revision:null},{url:"assets/index-BjCWriHl.css",revision:null},{url:"assets/index-BjMqMJ9d.js",revision:null},{url:"assets/index-BP90wE2A.css",revision:null},{url:"assets/index-CJmQltjE.js",revision:null},{url:"assets/index-CLjAIeOP.js",revision:null},{url:"assets/index-D5ZO7j9A.js",revision:null},{url:"assets/index-De6dfmWB.css",revision:null},{url:"assets/index-DRiWpQTB.css",revision:null},{url:"assets/index-DXoiO_9Q.js",revision:null},{url:"assets/index-layout-DcvtlPA2.js",revision:null},{url:"assets/index-T0V7hFOw.js",revision:null},{url:"assets/index-w4oLejMc.js",revision:null},{url:"assets/NavBar-K1-1c5jR.css",revision:null},{url:"assets/NavBar-u32CnGNs.js",revision:null},{url:"assets/pagination-EiFUbGj_.js",revision:null},{url:"assets/RightArrowIcon-C0kFrdwD.js",revision:null},{url:"assets/route-block-B_A1xBdJ.js",revision:null},{url:"assets/test-_7cPDLJE.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-JUZCaDDe.js",revision:null},{url:"assets/Tooltip-VVqtpO6L.css",revision:null},{url:"assets/Tooltip.vue_vue_type_script_setup_true_lang-BDZrFekD.js",revision:null},{url:"assets/use-vmodel-CkMPj1sw.js",revision:null},{url:"assets/useQueryBoardData-DQ09XmE8.js",revision:null},{url:"assets/user-CAaqMJHl.js",revision:null},{url:"assets/virtual_pwa-register-Dafkmfjm.js",revision:null},{url:"assets/workbox-window.prod.es5-D5gOYdM7.js",revision:null},{url:"assets/zh-CN-CNJkghp4.js",revision:null},{url:"index.html",revision:"eeca3f83e11d2fd323049a6accb962c5"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"manifest.webmanifest",revision:"3082e8d8ebc9619c6c1055ff243a02a8"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xcpcio/board-app",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.53.1",
|
|
5
5
|
"description": "XCPCIO Board App",
|
|
6
6
|
"author": "Dup4 <lyuzhi.pan@gmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -21,86 +21,87 @@
|
|
|
21
21
|
"Standings"
|
|
22
22
|
],
|
|
23
23
|
"files": [
|
|
24
|
-
"
|
|
24
|
+
"./*.{js,ts,json}",
|
|
25
25
|
"dist",
|
|
26
26
|
"public",
|
|
27
|
-
"
|
|
27
|
+
"src"
|
|
28
28
|
],
|
|
29
29
|
"engines": {
|
|
30
|
-
"node": ">=
|
|
30
|
+
"node": ">=18"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@tanstack/vue-query": "^5.
|
|
34
|
-
"@unhead/vue": "^1.11.
|
|
35
|
-
"@unocss/reset": "^0.
|
|
36
|
-
"@vueuse/components": "^
|
|
37
|
-
"@vueuse/core": "^
|
|
38
|
-
"@vueuse/head": "^
|
|
39
|
-
"@vueuse/router": "^
|
|
33
|
+
"@tanstack/vue-query": "^5.59.6",
|
|
34
|
+
"@unhead/vue": "^1.11.7",
|
|
35
|
+
"@unocss/reset": "^0.63.4",
|
|
36
|
+
"@vueuse/components": "^11.1.0",
|
|
37
|
+
"@vueuse/core": "^11.1.0",
|
|
38
|
+
"@vueuse/head": "^2.0.0",
|
|
39
|
+
"@vueuse/router": "^11.1.0",
|
|
40
40
|
"dayjs": "^1.11.13",
|
|
41
41
|
"file-saver": "^2.0.5",
|
|
42
|
-
"floating-vue": "2.
|
|
43
|
-
"flowbite": "^
|
|
42
|
+
"floating-vue": "5.2.2",
|
|
43
|
+
"flowbite": "^2.5.2",
|
|
44
44
|
"gsap": "^3.12.5",
|
|
45
45
|
"highcharts": "^11.4.8",
|
|
46
|
-
"highcharts-vue": "^
|
|
46
|
+
"highcharts-vue": "^2.0.1",
|
|
47
47
|
"lodash": "^4.17.21",
|
|
48
48
|
"nprogress": "^0.2.0",
|
|
49
|
-
"pinia": "^2.2.
|
|
49
|
+
"pinia": "^2.2.4",
|
|
50
50
|
"sleep-promise": "^9.1.0",
|
|
51
|
-
"vue": "^3.5.
|
|
51
|
+
"vue": "^3.5.11",
|
|
52
52
|
"vue-demi": "^0.14.10",
|
|
53
|
-
"vue-i18n": "^
|
|
53
|
+
"vue-i18n": "^10.0.4",
|
|
54
54
|
"vue-router": "^4.4.5",
|
|
55
55
|
"vue-search-select": "^3.2.0",
|
|
56
56
|
"vue-toast-notification": "^3.1.3",
|
|
57
|
-
"@xcpcio/core": "0.
|
|
58
|
-
"@xcpcio/types": "0.
|
|
57
|
+
"@xcpcio/core": "0.53.1",
|
|
58
|
+
"@xcpcio/types": "0.53.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@antfu/eslint-config": "^
|
|
62
|
-
"@iconify/json": "^2.2.
|
|
63
|
-
"@intlify/unplugin-vue-i18n": "^
|
|
61
|
+
"@antfu/eslint-config": "^3.7.3",
|
|
62
|
+
"@iconify/json": "^2.2.258",
|
|
63
|
+
"@intlify/unplugin-vue-i18n": "^5.2.0",
|
|
64
|
+
"@shikijs/markdown-it": "^1.22.0",
|
|
64
65
|
"@types/file-saver": "^2.0.7",
|
|
65
|
-
"@types/lodash": "^4.17.
|
|
66
|
+
"@types/lodash": "^4.17.10",
|
|
66
67
|
"@types/markdown-it-link-attributes": "^3.0.5",
|
|
67
68
|
"@types/nprogress": "^0.2.3",
|
|
68
|
-
"@unocss/eslint-config": "^0.
|
|
69
|
-
"@vitejs/plugin-vue": "^
|
|
70
|
-
"@vue-macros/volar": "^0.
|
|
69
|
+
"@unocss/eslint-config": "^0.63.4",
|
|
70
|
+
"@vitejs/plugin-vue": "^5.1.4",
|
|
71
|
+
"@vue-macros/volar": "^0.30.3",
|
|
71
72
|
"@vue/test-utils": "^2.4.6",
|
|
72
|
-
"critters": "^0.0.
|
|
73
|
+
"critters": "^0.0.24",
|
|
73
74
|
"cross-env": "^7.0.3",
|
|
74
|
-
"cypress": "^
|
|
75
|
+
"cypress": "^13.15.0",
|
|
75
76
|
"cypress-vite": "^1.5.0",
|
|
76
|
-
"eslint": "^
|
|
77
|
-
"eslint-plugin-cypress": "^
|
|
77
|
+
"eslint": "^9.12.0",
|
|
78
|
+
"eslint-plugin-cypress": "^3.5.0",
|
|
79
|
+
"eslint-plugin-format": "^0.1.2",
|
|
78
80
|
"https-localhost": "^4.7.1",
|
|
79
81
|
"less": "^4.2.0",
|
|
80
82
|
"markdown-it-link-attributes": "^4.0.1",
|
|
81
|
-
"
|
|
82
|
-
"shiki": "^
|
|
83
|
-
"taze": "^0.
|
|
84
|
-
"typescript": "^5.6.
|
|
85
|
-
"unocss": "^0.
|
|
86
|
-
"unplugin-auto-import": "^0.
|
|
87
|
-
"unplugin-vue-components": "^0.
|
|
88
|
-
"unplugin-vue-macros": "^2.12.
|
|
89
|
-
"
|
|
90
|
-
"
|
|
83
|
+
"rollup": "^4.24.0",
|
|
84
|
+
"shiki": "^1.22.0",
|
|
85
|
+
"taze": "^0.17.2",
|
|
86
|
+
"typescript": "^5.6.3",
|
|
87
|
+
"unocss": "^0.63.4",
|
|
88
|
+
"unplugin-auto-import": "^0.18.3",
|
|
89
|
+
"unplugin-vue-components": "^0.27.4",
|
|
90
|
+
"unplugin-vue-macros": "^2.12.3",
|
|
91
|
+
"unplugin-vue-markdown": "^0.26.2",
|
|
92
|
+
"unplugin-vue-router": "^0.10.8",
|
|
93
|
+
"vite": "^5.4.8",
|
|
94
|
+
"vite-bundle-visualizer": "^1.2.1",
|
|
91
95
|
"vite-plugin-html": "^3.2.2",
|
|
92
|
-
"vite-plugin-inspect": "^0.7
|
|
93
|
-
"vite-plugin-
|
|
94
|
-
"vite-plugin-
|
|
95
|
-
"vite-plugin-vue-
|
|
96
|
-
"vite-plugin-vue-devtools": "^0.5.1",
|
|
97
|
-
"vite-plugin-vue-layouts": "^0.8.0",
|
|
98
|
-
"vite-plugin-vue-markdown": "^0.23.8",
|
|
96
|
+
"vite-plugin-inspect": "^0.8.7",
|
|
97
|
+
"vite-plugin-pwa": "^0.20.5",
|
|
98
|
+
"vite-plugin-vue-devtools": "^7.4.6",
|
|
99
|
+
"vite-plugin-vue-layouts": "^0.11.0",
|
|
99
100
|
"vite-plugin-webfont-dl": "^3.9.5",
|
|
100
101
|
"vite-ssg": "^0.23.8",
|
|
101
|
-
"vite-ssg-sitemap": "^0.
|
|
102
|
+
"vite-ssg-sitemap": "^0.8.1",
|
|
102
103
|
"vitest": "^2.1.2",
|
|
103
|
-
"vue-tsc": "^1.
|
|
104
|
+
"vue-tsc": "^2.1.6",
|
|
104
105
|
"workbox-build": "^7.1.1",
|
|
105
106
|
"workbox-window": "^7.1.0"
|
|
106
107
|
},
|
package/src/auto-imports.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
// noinspection JSUnusedGlobalSymbols
|
|
5
5
|
// Generated by unplugin-auto-import
|
|
6
|
+
// biome-ignore lint: disable
|
|
6
7
|
export {}
|
|
7
8
|
declare global {
|
|
8
9
|
const BALLOON_TITLE_SUFFIX: typeof import('./composables/constant')['BALLOON_TITLE_SUFFIX']
|
|
@@ -217,7 +218,7 @@ declare global {
|
|
|
217
218
|
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
|
|
218
219
|
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
|
|
219
220
|
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
|
|
220
|
-
const useLink: typeof import('vue-router')['useLink']
|
|
221
|
+
const useLink: typeof import('vue-router/auto')['useLink']
|
|
221
222
|
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
|
|
222
223
|
const useLocalStorageForFilterOrganizations: typeof import('./composables/useLocalStorage')['useLocalStorageForFilterOrganizations']
|
|
223
224
|
const useLocalStorageForFilterTeams: typeof import('./composables/useLocalStorage')['useLocalStorageForFilterTeams']
|
|
@@ -340,6 +341,7 @@ declare global {
|
|
|
340
341
|
// for vue template auto import
|
|
341
342
|
import { UnwrapRef } from 'vue'
|
|
342
343
|
declare module 'vue' {
|
|
344
|
+
interface GlobalComponents {}
|
|
343
345
|
interface ComponentCustomProperties {
|
|
344
346
|
readonly BALLOON_TITLE_SUFFIX: UnwrapRef<typeof import('./composables/constant')['BALLOON_TITLE_SUFFIX']>
|
|
345
347
|
readonly CDN_HOST: UnwrapRef<typeof import('./composables/constant')['CDN_HOST']>
|
|
@@ -545,7 +547,7 @@ declare module 'vue' {
|
|
|
545
547
|
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
|
546
548
|
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
|
547
549
|
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
|
548
|
-
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
|
|
550
|
+
readonly useLink: UnwrapRef<typeof import('vue-router/auto')['useLink']>
|
|
549
551
|
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
|
550
552
|
readonly useLocalStorageForFilterOrganizations: UnwrapRef<typeof import('./composables/useLocalStorage')['useLocalStorageForFilterOrganizations']>
|
|
551
553
|
readonly useLocalStorageForFilterTeams: UnwrapRef<typeof import('./composables/useLocalStorage')['useLocalStorageForFilterTeams']>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { Balloon, Rank, createContest, createSubmissions, createTeams } from "@xcpcio/core";
|
|
3
2
|
import type { Contest, Submissions, Teams } from "@xcpcio/core";
|
|
4
3
|
import type { Contest as IContest, Submissions as ISubmissions, Teams as ITeams } from "@xcpcio/types";
|
|
4
|
+
import { Balloon, createContest, createSubmissions, createTeams, Rank } from "@xcpcio/core";
|
|
5
5
|
|
|
6
6
|
import { BALLOON_TITLE_SUFFIX } from "~/composables/constant";
|
|
7
7
|
|
|
8
8
|
const props = defineProps<{
|
|
9
|
-
dataSourceUrl: string
|
|
9
|
+
dataSourceUrl: string;
|
|
10
10
|
}>();
|
|
11
11
|
|
|
12
12
|
const title = useTitle(BALLOON_TITLE_SUFFIX);
|
|
@@ -43,6 +43,7 @@ watch(data, async () => {
|
|
|
43
43
|
}, { immediate: true });
|
|
44
44
|
|
|
45
45
|
const balloons = computed(() => {
|
|
46
|
+
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
|
|
46
47
|
return rank.value.balloons.sort(Balloon.compare).reverse().slice(0, 256);
|
|
47
48
|
});
|
|
48
49
|
</script>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { useElementVisibility } from "@vueuse/core";
|
|
3
|
-
|
|
4
2
|
import type { ContestIndex } from "@xcpcio/core";
|
|
3
|
+
|
|
4
|
+
import { useElementVisibility } from "@vueuse/core";
|
|
5
5
|
import { getImageSource } from "@xcpcio/core";
|
|
6
6
|
|
|
7
7
|
import { getLogoFromPreset } from "~/composables/logo";
|
|
8
8
|
|
|
9
9
|
const props = defineProps<{
|
|
10
|
-
data: ContestIndex
|
|
10
|
+
data: ContestIndex;
|
|
11
11
|
}>();
|
|
12
12
|
|
|
13
13
|
const { t } = useI18n();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { createContest } from "@xcpcio/core";
|
|
3
2
|
import type { Contest } from "@xcpcio/core";
|
|
4
|
-
import { ContestState } from "@xcpcio/types";
|
|
5
3
|
import type { Contest as IContest } from "@xcpcio/types";
|
|
4
|
+
import { createContest } from "@xcpcio/core";
|
|
5
|
+
import { ContestState } from "@xcpcio/types";
|
|
6
6
|
|
|
7
7
|
const props = defineProps<{
|
|
8
|
-
dataSourceUrl: string
|
|
8
|
+
dataSourceUrl: string;
|
|
9
9
|
}>();
|
|
10
10
|
|
|
11
11
|
const { t } = useI18n();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { onKeyUp } from "@vueuse/core";
|
|
3
|
-
import { ResolverVue, createContest, createSubmissions, createTeams } from "@xcpcio/core";
|
|
4
2
|
import type { Contest, Submissions, Teams } from "@xcpcio/core";
|
|
5
3
|
import type { Contest as IContest, Submissions as ISubmissions, Teams as ITeams } from "@xcpcio/types";
|
|
4
|
+
import { onKeyUp } from "@vueuse/core";
|
|
5
|
+
import { createContest, createSubmissions, createTeams, ResolverVue } from "@xcpcio/core";
|
|
6
6
|
import { gsap } from "gsap";
|
|
7
7
|
import { ScrollToPlugin } from "gsap/ScrollToPlugin";
|
|
8
8
|
|
|
9
9
|
const props = defineProps<{
|
|
10
|
-
dataSourceUrl: string
|
|
10
|
+
dataSourceUrl: string;
|
|
11
11
|
}>();
|
|
12
12
|
|
|
13
13
|
gsap.registerPlugin(ScrollToPlugin);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
const props = defineProps<{
|
|
3
|
-
textAlign?: "left" | "center" | "right"
|
|
4
|
-
textType?: "text" | "number"
|
|
3
|
+
textAlign?: "left" | "center" | "right";
|
|
4
|
+
textType?: "text" | "number";
|
|
5
5
|
}>();
|
|
6
6
|
|
|
7
7
|
const { modelValue } = defineModels<{
|
|
8
|
-
modelValue: string | number
|
|
8
|
+
modelValue: string | number;
|
|
9
9
|
}>();
|
|
10
10
|
</script>
|
|
11
11
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { MultiSelect } from "vue-search-select";
|
|
3
2
|
import { type Giants, GiantsType, type Rank, type SelectOptionItem } from "@xcpcio/core";
|
|
3
|
+
import { MultiSelect } from "vue-search-select";
|
|
4
4
|
|
|
5
5
|
const props = defineProps<{
|
|
6
|
-
rank: Rank
|
|
7
|
-
orgOptions: SelectOptionItem[]
|
|
8
|
-
teamsOptions: SelectOptionItem[]
|
|
9
|
-
giants: Giants
|
|
6
|
+
rank: Rank;
|
|
7
|
+
orgOptions: SelectOptionItem[];
|
|
8
|
+
teamsOptions: SelectOptionItem[];
|
|
9
|
+
giants: Giants;
|
|
10
10
|
}>();
|
|
11
11
|
|
|
12
12
|
const emit = defineEmits([
|
|
@@ -6,8 +6,8 @@ import type { AnimatedSubmissionBlockItem } from "~/composables/type";
|
|
|
6
6
|
import { LastBlockDisplayType } from "~/composables/type";
|
|
7
7
|
|
|
8
8
|
const props = defineProps<{
|
|
9
|
-
item: AnimatedSubmissionBlockItem
|
|
10
|
-
lastBlockDisplayType: LastBlockDisplayType
|
|
9
|
+
item: AnimatedSubmissionBlockItem;
|
|
10
|
+
lastBlockDisplayType: LastBlockDisplayType;
|
|
11
11
|
}>();
|
|
12
12
|
|
|
13
13
|
const item = computed(() => props.item);
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import
|
|
3
|
-
import { useRouteQuery } from "@vueuse/router";
|
|
2
|
+
import type { Contest, Submissions, Teams } from "@xcpcio/core";
|
|
4
3
|
import { onKeyStroke, useDocumentVisibility, useIntervalFn, useNow } from "@vueuse/core";
|
|
4
|
+
import { useRouteQuery } from "@vueuse/router";
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import type { Contest, Submissions, Teams } from "@xcpcio/core";
|
|
6
|
+
import { createContest, createSubmissions, createTeams, getImageSource, getTimeDiff, Rank, RankOptions } from "@xcpcio/core";
|
|
8
7
|
import { ContestState, type Contest as IContest, type Submissions as ISubmissions, type Teams as ITeams } from "@xcpcio/types";
|
|
9
8
|
|
|
10
|
-
import
|
|
9
|
+
import _ from "lodash";
|
|
11
10
|
import type { Item } from "~/components/board/SecondLevelMenu.vue";
|
|
12
11
|
|
|
12
|
+
import { TITLE_SUFFIX } from "~/composables/constant";
|
|
13
|
+
|
|
13
14
|
const props = defineProps<{
|
|
14
|
-
dataSourceUrl?: string
|
|
15
|
+
dataSourceUrl?: string;
|
|
15
16
|
}>();
|
|
16
17
|
|
|
17
18
|
const route = useRoute();
|
|
@@ -28,6 +29,10 @@ const rankOptions = ref(new RankOptions());
|
|
|
28
29
|
|
|
29
30
|
const enableAutoScroll = ref(false);
|
|
30
31
|
|
|
32
|
+
function fixPath(path: string) {
|
|
33
|
+
return path.replaceAll("%2F", "/");
|
|
34
|
+
}
|
|
35
|
+
|
|
31
36
|
(() => {
|
|
32
37
|
const filterOrganizations = useLocalStorageForFilterOrganizations();
|
|
33
38
|
const filterTeams = useLocalStorageForFilterTeams();
|
|
@@ -45,7 +50,7 @@ const enableAutoScroll = ref(false);
|
|
|
45
50
|
const routeQueryForBattleOfGiants = useRouteQueryForBattleOfGiants();
|
|
46
51
|
if (
|
|
47
52
|
routeQueryForBattleOfGiants.value !== null
|
|
48
|
-
|
|
53
|
+
&& routeQueryForBattleOfGiants.value !== undefined
|
|
49
54
|
) {
|
|
50
55
|
rankOptions.value.battleOfGiants.FromBase64(routeQueryForBattleOfGiants.value);
|
|
51
56
|
}
|
|
@@ -61,8 +66,8 @@ function onChangeCurrentGroup(nextGroup: string) {
|
|
|
61
66
|
}
|
|
62
67
|
(() => {
|
|
63
68
|
const currentGroupFromRouteQuery = useRouteQuery(
|
|
64
|
-
"group",
|
|
65
|
-
"all",
|
|
69
|
+
/* name */ "group",
|
|
70
|
+
/* defaultValue */ "all",
|
|
66
71
|
{ transform: String },
|
|
67
72
|
);
|
|
68
73
|
|
|
@@ -94,7 +99,7 @@ function reBuildRank(options = { force: false }) {
|
|
|
94
99
|
isReBuildRank.value = false;
|
|
95
100
|
}
|
|
96
101
|
|
|
97
|
-
const { data, isError, error, refetch } = useQueryBoardData(props.dataSourceUrl ?? route.path, now);
|
|
102
|
+
const { data, isError, error, refetch } = useQueryBoardData(props.dataSourceUrl ?? fixPath(route.path), now);
|
|
98
103
|
watch(data, async () => {
|
|
99
104
|
if (data.value === null || data.value === undefined) {
|
|
100
105
|
return;
|
|
@@ -187,7 +192,7 @@ const group = computed(() => {
|
|
|
187
192
|
});
|
|
188
193
|
|
|
189
194
|
const groupMenuList = computed(() => {
|
|
190
|
-
const res = Array<Item>();
|
|
195
|
+
const res = new Array<Item>();
|
|
191
196
|
|
|
192
197
|
for (const [k, v] of group.value) {
|
|
193
198
|
const item = {
|
|
@@ -353,7 +358,7 @@ const widthClass = "sm:w-[1260px] xl:w-screen";
|
|
|
353
358
|
>
|
|
354
359
|
<div class="max-w-[92%]">
|
|
355
360
|
<img
|
|
356
|
-
:src="getImageSource(rank.contest.banner, `${DATA_HOST}${route.path.slice(1)}`)"
|
|
361
|
+
:src="getImageSource(rank.contest.banner, `${DATA_HOST}${fixPath(route.path).slice(1)}`)"
|
|
357
362
|
alt="banner"
|
|
358
363
|
>
|
|
359
364
|
</div>
|