@xcpcio/board-app 0.66.2 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/404.html +1 -1
  2. package/dist/assets/Balloon.vue_vue_type_script_setup_true_lang-CVSYxE8q.js +1 -0
  3. package/dist/assets/{Board-CG69kAf7.css → Board-C89Lc-cb.css} +1 -1
  4. package/dist/assets/{Board-sX3HmCh3.js → Board-ZYE9iVvT.js} +108 -108
  5. package/dist/assets/{ContestStateBadge-BqhxSQpe.css → ContestStateBadge-D6uf8wH-.css} +1 -1
  6. package/dist/assets/ContestStateBadge-M2tyF2R2.js +1 -0
  7. package/dist/assets/Countdown-fK8Yi5IE.js +1 -0
  8. package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-B--dkpEf.js +1 -0
  9. package/dist/assets/{Footer-BWV6CMUR.js → Footer-5EqvI5Pw.js} +1 -1
  10. package/dist/assets/{NavBar-CVNz1--5.js → NavBar-Dot9PKUw.js} +1 -1
  11. package/dist/assets/{Resolver-Cu-OKY1L.js → Resolver-Yd-uWMur.js} +1 -1
  12. package/dist/assets/{RightArrowIcon-ClzV1Z1J.js → RightArrowIcon-2ctMH32p.js} +1 -1
  13. package/dist/assets/{TheInput.vue_vue_type_script_setup_true_lang-C21qO8yZ.js → TheInput.vue_vue_type_script_setup_true_lang-BqqBHhl3.js} +1 -1
  14. package/dist/assets/{Tooltip.vue_vue_type_script_setup_true_lang-D8Y2xuKM.js → Tooltip.vue_vue_type_script_setup_true_lang-BFSx1PX0.js} +1 -1
  15. package/dist/assets/_...all_-9ILQSzaE.js +1 -0
  16. package/dist/assets/_...all_-B-QynHK6.js +6 -0
  17. package/dist/assets/{_name_-CNK60UTb.js → _name_-RaGieVvR.js} +1 -1
  18. package/dist/assets/{about-Cz2BvibQ.js → about-DNnMqs94.js} +1 -1
  19. package/dist/assets/board-DmrjMzqp.js +1 -0
  20. package/dist/assets/{board-layout-DciCGZEs.js → board-layout-BSxiOc_Q.js} +1 -1
  21. package/dist/assets/{constant-BWnqIcmY.js → constant-D6Nm4zsw.js} +1 -1
  22. package/dist/assets/{dayjs-Dk3pur30.js → dayjs-txUEIdIq.js} +1 -1
  23. package/dist/assets/{default-C691w98Q.js → default-DVYI5rLy.js} +1 -1
  24. package/dist/assets/en-DYzJz2c1.js +1 -0
  25. package/dist/assets/{headless-CORlMDXV.js → headless-DNk-Av30.js} +1 -1
  26. package/dist/assets/{home-hTEr1TJm.js → home-DtZxkw_X.js} +1 -1
  27. package/dist/assets/{index-BiwUz1KO.css → index-BGJAeisZ.css} +1 -1
  28. package/dist/assets/{index-B4yWQlcU.js → index-BW1DT02C.js} +1 -1
  29. package/dist/assets/index-BeHHcwg1.js +1 -0
  30. package/dist/assets/index-BetRF1su.js +1 -0
  31. package/dist/assets/{index-9_oqoLcR.js → index-DA67idY7.js} +5 -5
  32. package/dist/assets/{index-D6pv9dGi.js → index-DSyYcmRD.js} +2 -2
  33. package/dist/assets/index-HzZPY3xn.js +1 -0
  34. package/dist/assets/{index-layout-CnsXfFdQ.js → index-layout-D1p6y6vz.js} +1 -1
  35. package/dist/assets/{pagination-DnhQ5r1u.js → pagination-f8dx5hXg.js} +1 -1
  36. package/dist/assets/{person-U3tcpMKk.js → person-CTZ9LyDi.js} +1 -1
  37. package/dist/assets/query-DSjYhsbY.js +39 -0
  38. package/dist/assets/rank-BbnylyV_.js +1 -0
  39. package/dist/assets/{test-Cflk2EUV.js → test-C0_2hMsN.js} +1 -1
  40. package/dist/assets/{use-vmodel-Bl_BJeQo.js → use-vmodel-BmoIT9Gg.js} +1 -1
  41. package/dist/assets/useQueryBoardData-BfELgSoK.js +1 -0
  42. package/dist/assets/{user-LgM0y5TK.js → user-Dx6zM0gp.js} +1 -1
  43. package/dist/assets/{virtual_pwa-register-72WHXVVX.js → virtual_pwa-register-BfEpgXzG.js} +1 -1
  44. package/dist/assets/zh-CN-Cbd_t3aN.js +1 -0
  45. package/dist/index.html +1 -1
  46. package/dist/sw.js +1 -1
  47. package/package.json +3 -3
  48. package/src/auto-imports.d.ts +19 -4
  49. package/src/components/CustomBalloon.vue +1 -3
  50. package/src/components/CustomBoard.vue +1 -3
  51. package/src/components/CustomCountdown.vue +1 -3
  52. package/src/components/CustomResolver.vue +1 -3
  53. package/src/components/DataSourceInput.vue +1 -3
  54. package/src/components/board/Badge.vue +1 -1
  55. package/src/components/board/Board.vue +5 -20
  56. package/src/components/board/OptionsModal.vue +1 -1
  57. package/src/components/board/Progress.vue +1 -2
  58. package/src/components/board/SecondLevelMenu.vue +1 -2
  59. package/src/components/board/Standings.vue +1 -1
  60. package/src/components/board/TeamInfo.vue +116 -0
  61. package/src/components/board/TeamInfoModal.vue +16 -13
  62. package/src/components/board/TeamUI.vue +2 -1
  63. package/src/components/board/Utility.vue +1 -2
  64. package/src/components.d.ts +1 -0
  65. package/src/composables/query.ts +46 -6
  66. package/src/composables/rating.ts +6 -2
  67. package/src/composables/useRouteQueryWithoutParam.ts +157 -0
  68. package/src/pages/[...all].vue +1 -7
  69. package/src/pages/index.vue +1 -2
  70. package/dist/assets/Balloon.vue_vue_type_script_setup_true_lang-Cd-QNnDt.js +0 -1
  71. package/dist/assets/ContestStateBadge-Cad99MQ4.js +0 -1
  72. package/dist/assets/Countdown-Dhia-u0Y.js +0 -1
  73. package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-DVWnGqx-.js +0 -1
  74. package/dist/assets/_...all_-D0bkV7XM.js +0 -1
  75. package/dist/assets/_...all_-DJwQ4yj4.js +0 -6
  76. package/dist/assets/board-CAZpPFLb.js +0 -1
  77. package/dist/assets/contest-CgNGJetR.js +0 -39
  78. package/dist/assets/en-78xzu5B_.js +0 -1
  79. package/dist/assets/index-BX3T_nMP.js +0 -1
  80. package/dist/assets/index-DncwAlQA.js +0 -1
  81. package/dist/assets/index-mCQ-iQmf.js +0 -1
  82. package/dist/assets/query-CDfDbkZE.js +0 -1
  83. package/dist/assets/rank-B4f6mi_k.js +0 -1
  84. package/dist/assets/zh-CN-32UqCzRy.js +0 -1
@@ -0,0 +1,157 @@
1
+ import type { MaybeRef, MaybeRefOrGetter, Ref } from "vue";
2
+ import type { RouteParamValueRaw, Router } from "vue-router";
3
+ import { tryOnScopeDispose } from "@vueuse/core";
4
+ import { customRef, nextTick, toValue, watch } from "vue";
5
+ import { useRoute, useRouter } from "vue-router";
6
+
7
+ const _queue = new WeakMap<Router, Map<string, any>>();
8
+
9
+ export type RouteQueryValueRaw = RouteParamValueRaw | string[];
10
+
11
+ export type RouteHashValueRaw = string | null | undefined;
12
+
13
+ export interface ReactiveRouteOptions {
14
+ /**
15
+ * Mode to update the router query, ref is also acceptable
16
+ *
17
+ * @default 'replace'
18
+ */
19
+ mode?: MaybeRef<"replace" | "push">;
20
+
21
+ /**
22
+ * Route instance, use `useRoute()` if not given
23
+ */
24
+ route?: ReturnType<typeof useRoute>;
25
+
26
+ /**
27
+ * Router instance, use `useRouter()` if not given
28
+ */
29
+ router?: ReturnType<typeof useRouter>;
30
+ }
31
+
32
+ export interface ReactiveRouteOptionsWithTransform<V, R> extends ReactiveRouteOptions {
33
+ /**
34
+ * Function to transform data before return, or an object with one or both functions:
35
+ * `get` to transform data before returning, and `set` to transform data before setting
36
+ */
37
+ transform?:
38
+ | ((val: V) => R)
39
+ | ({
40
+ get?: (value: V) => R;
41
+ set?: (value: R) => V;
42
+ });
43
+ }
44
+
45
+ export function useRouteQueryWithoutParam(
46
+ name: string
47
+ ): Ref<undefined | null | string | string[]>;
48
+
49
+ export function useRouteQueryWithoutParam<
50
+ T extends RouteQueryValueRaw = RouteQueryValueRaw,
51
+ K = T,
52
+ >(
53
+ name: string,
54
+ defaultValue?: MaybeRefOrGetter<T>,
55
+ options?: ReactiveRouteOptionsWithTransform<T, K>
56
+ ): Ref<K>;
57
+
58
+ export function useRouteQueryWithoutParam<
59
+ T extends RouteQueryValueRaw = RouteQueryValueRaw,
60
+ K = T,
61
+ >(
62
+ name: string,
63
+ defaultValue?: MaybeRefOrGetter<T>,
64
+ options: ReactiveRouteOptionsWithTransform<T, K> = {},
65
+ ): Ref<K> {
66
+ const {
67
+ mode = "replace",
68
+ route = useRoute(),
69
+ router = useRouter(),
70
+ transform,
71
+ } = options;
72
+
73
+ let transformGet = (value: T) => value as unknown as K;
74
+ let transformSet = (value: K) => value as unknown as T;
75
+
76
+ if (typeof transform === "function") {
77
+ transformGet = transform;
78
+ } else if (transform) {
79
+ if (transform.get) {
80
+ transformGet = transform.get;
81
+ }
82
+ if (transform.set) {
83
+ transformSet = transform.set;
84
+ }
85
+ }
86
+
87
+ if (!_queue.has(router)) {
88
+ _queue.set(router, new Map());
89
+ }
90
+
91
+ const _queriesQueue = _queue.get(router)!;
92
+
93
+ let query = route.query[name] as any;
94
+
95
+ tryOnScopeDispose(() => {
96
+ query = undefined;
97
+ });
98
+
99
+ let _trigger: () => void;
100
+
101
+ const proxy = customRef<any>((track, trigger) => {
102
+ _trigger = trigger;
103
+
104
+ return {
105
+ get() {
106
+ track();
107
+
108
+ return transformGet(query !== undefined ? query : toValue(defaultValue));
109
+ },
110
+ set(v) {
111
+ v = transformSet(v);
112
+
113
+ if (query === v) {
114
+ return;
115
+ }
116
+
117
+ query = (v === toValue(defaultValue)) ? undefined : v;
118
+ _queriesQueue.set(name, (v === toValue(defaultValue)) ? undefined : v);
119
+
120
+ trigger();
121
+
122
+ nextTick(() => {
123
+ if (_queriesQueue.size === 0) {
124
+ return;
125
+ }
126
+
127
+ const newQueries = Object.fromEntries(_queriesQueue.entries());
128
+ _queriesQueue.clear();
129
+
130
+ const { path, query, hash } = route;
131
+
132
+ router[toValue(mode)]({
133
+ path, // replace params with path could fix %2F
134
+ query: { ...query, ...newQueries },
135
+ hash,
136
+ });
137
+ });
138
+ },
139
+ };
140
+ });
141
+
142
+ watch(
143
+ () => route.query[name],
144
+ (v) => {
145
+ if (query === transformGet(v as T)) {
146
+ return;
147
+ }
148
+
149
+ query = v;
150
+
151
+ _trigger();
152
+ },
153
+ { flush: "sync" },
154
+ );
155
+
156
+ return proxy as Ref<K>;
157
+ }
@@ -1,6 +1,4 @@
1
1
  <script setup lang="ts">
2
- import { useRouteQuery } from "@vueuse/router";
3
-
4
2
  const { t } = useI18n();
5
3
  const route = useRoute();
6
4
 
@@ -12,11 +10,7 @@ const contestTypes = [
12
10
  ];
13
11
 
14
12
  const isNotFound = !contestTypes.some(c => route.fullPath.startsWith(`/${c}`));
15
- const component = useRouteQuery(
16
- "component",
17
- "board",
18
- { transform: String },
19
- );
13
+ const component = useQueryForComponent();
20
14
  const dataSource = window.DATA_SOURCE;
21
15
  </script>
22
16
 
@@ -7,7 +7,6 @@ import SearchInput from "@board/components/SearchInput.vue";
7
7
  import { TITLE_SUFFIX } from "@board/composables/constant";
8
8
 
9
9
  import { useFetch } from "@vueuse/core";
10
- import { useRouteQuery } from "@vueuse/router";
11
10
  import { createContestIndexList } from "@xcpcio/core";
12
11
 
13
12
  const { t, locale } = useI18n();
@@ -24,7 +23,7 @@ function genURL() {
24
23
  }
25
24
  const url = ref(genURL());
26
25
 
27
- const s = useRouteQuery<string | null>("s", "", { transform: String });
26
+ const s = useQueryForSearch();
28
27
  const searchText = ref<string | null>(s.value);
29
28
  const searchInputRef = ref<InstanceType<typeof SearchInput> | null>(null);
30
29
 
@@ -1 +0,0 @@
1
- import{d as w,f as _,m as i,p as D,c as n,o as s,q as g,h as e,n as E,b as o,K as h,k as d,A as L,u as N,C as F,F as V,E as z,G as I,s as R}from"./index-9_oqoLcR.js";import{B}from"./constant-BWnqIcmY.js";import{c as U,a as A,B as O,R as q}from"./rank-B4f6mi_k.js";import{c as G}from"./contest-CgNGJetR.js";import{u as K}from"./query-CDfDbkZE.js";const M={flex:"","flex-1":"","flex-col":"","justify-center":"","items-start":""},Q={class:"resolver-team-name",truncate:"","overflow-hidden":""},X={"w-32":"",flex:"","flex-shrink-0":"","flex-row":"","justify-start":"","items-center":""},H=w({__name:"BalloonBlock",props:{index:null,balloon:null},setup(x){const f=x,p=_(()=>f.index),l=_(()=>f.balloon),c=i(null),a=D(c);function v(t){return[t.location,t.organization,t.name].filter(b=>b).join(" - ")}const u=_(()=>l.value.problem.balloonColor);return(t,m)=>(s(),n("div",{ref_key:"el",ref:c,"h-24":""},[e(a)?(s(),n("div",{key:0,"h-24":"",flex:"","flex-row":"","gap-x-4":"","font-mono":"","text-4xl":"",class:E([e(p)%2===0?"bg-resolver-bg-0":"bg-resolver-bg-1"])},[o("div",{"w-20":"",flex:"","flex-shrink-0":"","justify-center":"","items-center":"",style:h({backgroundColor:e(u).background_color})},[o("div",{style:h({color:e(u).color})},d(e(l).problem.label),5)],4),o("div",M,[o("div",Q,d(v(e(l).team)),1),m[0]||(m[0]=o("div",{flex:"","flex-row":"","text-sm":"","items-start":"","gap-x-2":""},null,-1))]),o("div",X,d(e(l).submission.timestampToMinute),1)],2)):g("",!0)],512))}}),J={class:"bg-[#323443]","text-gray-200":"","w-screen":"","h-screen":""},P={key:0},W={flex:"","flex-col":"","justify-center":"","items-center":"","w-screen":"","h-screen":"","text-xl":"",italic:""},Y={key:0},Z={key:1},ee={flex:"","flex-col":"","justify-between":""},re=w({__name:"Balloon",props:{dataSourceUrl:null},setup(x){const f=x,p=L(B),{t:l}=N(),c=i(!1),a=i({}),v=i([]),u=i([]),t=i({}),m=R();function b(){const k=new q(a.value,v.value,u.value);k.buildBalloons(),t.value=k}const{data:r,isError:C,error:j}=K(f.dataSourceUrl,m);F(r,async()=>{r.value===null||r.value===void 0||(a.value=G(r.value?.contest),p.value=`${a.value.name} | ${B}`,v.value=U(r.value?.teams),u.value=A(r.value?.submissions,a.value),b(),c.value=!0)},{immediate:!0});const S=_(()=>t.value.balloons.sort(O.compare).reverse().slice(0,256));return(k,oe)=>{const T=H;return s(),n("div",J,[e(c)?(s(),n("div",Z,[o("div",ee,[(s(!0),n(V,null,z(e(S),(y,$)=>(s(),I(T,{key:y.key,index:$,balloon:y},null,8,["index","balloon"]))),128))])])):(s(),n("div",P,[o("div",W,[o("div",null,d(e(l)("common.loading"))+"... ",1),e(C)?(s(),n("div",Y,d(e(j)),1)):g("",!0)])]))])}}});export{re as _};
@@ -1 +0,0 @@
1
- import{a as u,u as V}from"./contest-CgNGJetR.js";import{d as C,f as P,m as r,V as A,D as G,c as v,o as g,b as c,K as N,n as D,h as x,q as E,F as X,k}from"./index-9_oqoLcR.js";import{c as j,g as q}from"./dayjs-Dk3pur30.js";import{_ as F}from"./_plugin-vue_export-helper-DlAUqK2U.js";function ae(s,e){return s?.url?!e||s.url.startsWith("http")?s.url:`${e}/${s.url}`:s?.base64?`data:image/${s.type??"png"};base64,${s.base64}`:""}const H=C({__name:"Progress",props:{width:null,state:null,needScroll:{type:Boolean},rank:null,rankOptions:null,elapsedTime:null},emits:["update:rank-options"],setup(s,{emit:e}){const t=s,I=e,h=P({get(){return t.rankOptions},set(l){I("update:rank-options",l)}}),M=P(()=>{switch(t.state){case u.PENDING:return"am-progress-bar-secondary";case u.RUNNING:return"am-progress-bar-success";case u.FROZEN:return"am-progress-bar-danger";case u.FINISHED:return"am-progress-bar-primary";case u.PAUSED:return"am-progress-bar-danger"}return""}),n=r(!1),S=r(!1),m=r(0),_=r(t.width),T=r(0),d=V("progress-ratio",-1,{transform:Number}),o=r(null),L=r(null),p=r(null),W=r(null),R=r(null);function U(l){S.value=!0;const f=l.clientX-p.value.offsetLeft,b=w=>{if(!S.value)return;n.value=!0;let a=w.clientX-f;a=Math.max(a,0),a=Math.min(a,o.value.offsetWidth-p.value.offsetWidth);const B=o.value.offsetWidth*Number.parseInt(L.value.style?.width)*.01;a>=B&&(a=B,n.value=!1);let i=0;a>0&&(i=Math.round((a+p.value.offsetWidth)/o.value.offsetWidth*1e4)),i>1e4&&(i=1e4),i===1e4&&(n.value=!1),window.getSelection()?.removeAllRanges(),m.value=i,T.value=a,_.value=i*.01},y=()=>{document.removeEventListener("mouseup",y),document.removeEventListener("mousemove",b),S.value=!1,n.value===!0?(d.value=m.value,h.value?.setWidth(m.value,t.rank.contest)):(d.value=void 0,h.value?.disableFilterSubmissionByTimestamp())};document.addEventListener("mousemove",b),document.addEventListener("mouseup",y)}function z(){const l=t.rank.contest.getStartTime(),f=t.rank.contest.getEndTime(),b=f.unix()-l.unix(),y=Math.floor(b*_.value*.01),w=j(),a=Math.max(0,Math.min(w.unix(),f.unix())-l.unix());return q(Math.min(y,a))}function O(){return n.value===!0?z():t.elapsedTime}function $(){return n.value===!0?`${Math.max(0,T.value)}px`:`max(calc(0%), min(calc(${t.width}%), calc(100% - 10px)))`}return A(()=>{t.needScroll===!0&&(o.value.onmouseenter=()=>{W.value.classList.add("in")},o.value.onmouseleave=()=>{W.value.classList.remove("in")}),d.value!==-1?(n.value=!0,m.value=Math.max(0,Math.min(1e4,d.value)),_.value=m.value*.01,T.value=_.value*.01*o.value.offsetWidth-p.value.offsetWidth,h.value?.setWidth(d.value,t.rank.contest)):h.value?.disableFilterSubmissionByTimestamp()}),G(()=>{}),(l,f)=>(g(),v("div",{ref_key:"scroll",ref:o,class:"am-progress am-progress-striped am-active","w-full":"",style:{position:"relative"}},[c("div",{ref_key:"mask",ref:L,class:D(["am-progress-bar",[x(M)]]),style:N({width:`${t.width}%`})},[t.needScroll?(g(),v(X,{key:0},[c("div",{ref_key:"tooltip",ref:W,class:"tooltip tooltip-top",style:N({marginLeft:"-32px",bottom:"22px",left:$()})},[c("div",{ref_key:"tooltipInner",ref:R,class:"tooltip-inner"},k(O()),513)],4),c("div",{ref_key:"bar",ref:p,class:D(["am-progress-bar am-progress-cursor am-progress-scroll-size z-99",[x(M)]]),style:N({left:$()}),onMousedown:U},null,38)],64)):E("",!0)],6)],512))}}),re=F(H,[["__scopeId","data-v-bb98868b"]]),J={flex:"","flex-row":"","items-center":"","justify-center":""},K={key:0,"ml-2":""},Q={key:1,"ml-2":""},Z=C({__name:"ContestStateBadge",props:{state:null,pendingTime:null,pausedTime:null},setup(s){const e=s;return(t,I)=>(g(),v("div",J,[c("div",{class:D(["label",e.state])},null,2),c("div",null,k(e.state),1),e.pendingTime&&e.state===x(u).PENDING?(g(),v("div",K,k(e.pendingTime),1)):E("",!0),e.pausedTime&&e.state===x(u).PAUSED?(g(),v("div",Q,k(e.pausedTime),1)):E("",!0)]))}}),ne=F(Z,[["__scopeId","data-v-68586c4d"]]);export{ne as _,re as a,ae as g};
@@ -1 +0,0 @@
1
- import{c as x,a as C}from"./contest-CgNGJetR.js";import{d as h,u as y,A as S,m as l,C as k,c as o,o as n,h as t,b as a,q as N,k as r,n as d,s as w}from"./index-9_oqoLcR.js";import{c as _}from"./constant-BWnqIcmY.js";import{u as T}from"./query-CDfDbkZE.js";import{_ as E}from"./_plugin-vue_export-helper-DlAUqK2U.js";const I={class:"bg-[#323443]","text-gray-200":"","w-screen":"","h-screen":""},B={key:0},D={flex:"","flex-col":"","justify-center":"","items-center":"","w-screen":"","h-screen":"","text-xl":"",italic:""},U={key:0},b={key:1},j={flex:"","flex-col":"","items-center":"","justify-center":"","font-mono":""},F={key:0},L={key:1},O=h({__name:"Countdown",props:{dataSourceUrl:null},setup(u){const m=u,{t:f}=y(),p=S(_),s=w(),e=l({}),i=l(!1),{data:c,isError:v,error:g}=T(m.dataSourceUrl,s);return k(c,async()=>{c.value===null||c.value===void 0||(e.value=x(c.value?.contest),p.value=`${e.value.name} | ${_}`,i.value=!0)},{immediate:!0}),(P,V)=>(n(),o("div",I,[t(i)?(n(),o("div",b,[a("div",j,[a("div",{"mt-20":"","text-6xl":"",class:d([t(e).getContestState(t(s)).toString()])},r(t(e).getContestState(t(s))),3),a("div",{"mt-20":"",class:d(["text-[320px]",[t(e).getContestState(t(s)).toString()]])},[t(e).getContestState(t(s))===t(C).PENDING?(n(),o("div",F,r(t(e).getContestPendingTime(t(s))),1)):(n(),o("div",L,r(t(e).getContestElapsedTime(t(s))),1))],2)])])):(n(),o("div",B,[a("div",D,[a("div",null,r(t(f)("common.loading"))+"... ",1),t(v)?(n(),o("div",U,r(t(g)),1)):N("",!0)])]))]))}}),Q=E(O,[["__scopeId","data-v-2d2a8baf"]]);export{Q as _};
@@ -1 +0,0 @@
1
- import{_ as p}from"./TheInput.vue_vue_type_script_setup_true_lang-C21qO8yZ.js";import{d as f,u as _,m as h,g,H as b,c as v,q as S,h as a,o as x,b as t,a as U,a2 as V,z as k,k as l}from"./index-9_oqoLcR.js";import{g as y}from"./query-CDfDbkZE.js";const w={key:0,class:"flex flex-col items-center"},D={"w-128":""},I=["disabled"],u="Data Source URL",K=f({__name:"DataSourceInput",setup(R){const{t:r}=_(),s=y(),e=h(s.value),c=g(),d=b();function n(){d.push(`${c.fullPath}/?data-source=${e.value.trim()}`)}return(B,o)=>{const i=p;return a(s).length===0?(x(),v("div",w,[t("div",D,[U(i,{modelValue:a(e),"onUpdate:modelValue":o[0]||(o[0]=m=>k(e)?e.value=m:null),"w-full":"",placeholder:u,autocomplete:"false",onKeydown:V(n,["enter"])},null,8,["modelValue"]),t("label",{class:"hidden",for:"input"},l(u))]),o[1]||(o[1]=t("div",{"py-2":""},null,-1)),t("div",null,[t("button",{"m-3":"","text-sm":"",btn:"",disabled:a(e).length===0,onClick:n},l(a(r)("button.go")),9,I)])])):S("",!0)}}});export{K as _};
@@ -1 +0,0 @@
1
- import{d as k,H as R,u as b,r as h,c,o as t,b as m,a as i,k as p,h as o,w as $,j as v,g as N,G as a,q as S}from"./index-9_oqoLcR.js";import{_ as T}from"./Countdown-Dhia-u0Y.js";import{_ as V}from"./Balloon.vue_vue_type_script_setup_true_lang-Cd-QNnDt.js";import{_ as G}from"./Resolver-Cu-OKY1L.js";import{_ as A}from"./Board-sX3HmCh3.js";import{u as D}from"./contest-CgNGJetR.js";import{b as f}from"./route-block-B_A1xBdJ.js";import"./constant-BWnqIcmY.js";import"./query-CDfDbkZE.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./rank-B4f6mi_k.js";import"./dayjs-Dk3pur30.js";import"./person-U3tcpMKk.js";import"./pagination-DnhQ5r1u.js";import"./Tooltip.vue_vue_type_script_setup_true_lang-D8Y2xuKM.js";import"./TheInput.vue_vue_type_script_setup_true_lang-C21qO8yZ.js";import"./use-vmodel-Bl_BJeQo.js";import"./ContestStateBadge-Cad99MQ4.js";const E=k({__name:"GoBack",setup(y){const u=R(),{t:s}=b();return(x,r)=>{const e=h("RouterLink");return t(),c("div",null,[m("div",{class:"m-3 text-sm btn",onClick:r[0]||(r[0]=n=>o(u).back())},p(o(s)("button.back")),1),i(e,{class:"m-3 text-sm btn",to:"/"},{default:$(()=>[v(p(o(s)("button.home")),1)]),_:1})])}}}),L={key:0},j={key:1,class:"flex flex-col items-center"},q={key:2},F=k({__name:"[...all]",setup(y){const{t:u}=b(),s=N(),r=!["camp","icpc","ccpc","provincial-contest"].some(_=>s.fullPath.startsWith(`/${_}`)),e=D("component","board",{transform:String}),n=window.DATA_SOURCE;return(_,l)=>{const d=A,B=G,g=V,w=T,C=E;return o(n)?(t(),c("div",L,[o(e)==="board"?(t(),a(d,{key:0,"data-source-url":o(n)},null,8,["data-source-url"])):o(e)==="resolver"?(t(),a(B,{key:1,"data-source-url":o(n)},null,8,["data-source-url"])):o(e)==="balloon"?(t(),a(g,{key:2,"data-source-url":o(n)},null,8,["data-source-url"])):o(e)==="countdown"?(t(),a(w,{key:3,"data-source-url":o(n)},null,8,["data-source-url"])):S("",!0)])):r?(t(),c("div",j,[l[0]||(l[0]=m("div",{"text-4xl":""},[m("div",{"i-carbon-warning":""})],-1)),v(" "+p(o(u)("not-found"))+" ",1),i(C)])):(t(),c("div",q,[i(d)]))}}});typeof f=="function"&&f(F);export{F as default};
@@ -1,6 +0,0 @@
1
- import{a as Y,h as W,P as V,_ as X,b as q}from"./pagination-DnhQ5r1u.js";import{_ as j}from"./Tooltip.vue_vue_type_script_setup_true_lang-D8Y2xuKM.js";import{d as I,f as p,c as _,o as f,a as x,w,b as o,n as D,h as r,k as v,u as L,G as $,z as O,m as T,q as y,C as K,j as Q,F as Z,E as tt,A as z,B as et,g as st}from"./index-9_oqoLcR.js";import{R as nt,d as C}from"./constant-BWnqIcmY.js";import{I as b,c as F}from"./dayjs-Dk3pur30.js";import{c as G,P as B}from"./person-U3tcpMKk.js";class E{constructor(){this.rank=0,this.rating=0,this.teamName=new b,this.organization="",this.members=[],this.coaches=[],this.contestID="",this.contestName=new b,this.contestLink="",this.contestTime=F()}toJSON(){return{rank:this.rank,rating:this.rating,teamName:this.teamName.toI18NStringSet(),organization:this.organization,members:this.members.map(t=>t.toIPerson()),coaches:this.coaches.map(t=>t.toIPerson()),contestID:this.contestID,contestName:this.contestName.toI18NStringSet(),contestLink:this.contestLink,contestTime:this.contestTime.toDate()}}static fromJSON(t){typeof t=="string"&&(t=JSON.parse(t));const s=new E;return s.rank=t.rank,s.rating=t.rating,s.teamName=b.fromIText(t.teamName),s.organization=t.organization,s.members=G(t.members),s.coaches=G(t.coaches),s.contestID=t.contestID,s.contestName=b.fromIText(t.contestName),s.contestLink=t.contestLink,s.contestTime=F(t.contestTime),s}}class k{constructor(){this.id="",this.name=new b,this.organization="",this.members=[],this.coaches=[],this.rating=0,this.minRating=1061109567,this.maxRating=-1061109567,this.rank=0,this.oldRating=0,this.seed=1,this.delta=0,this.ratingHistories=[]}UpdateRating(t){this.rating=t,this.minRating=Math.min(this.minRating,t),this.maxRating=Math.max(this.maxRating,t)}toJSON(){return{id:this.id,name:this.name.toI18NStringSet(),organization:this.organization,members:this.members.map(t=>t.toIPerson()),coaches:this.coaches.map(t=>t.toIPerson()),rating:this.rating,minRating:this.minRating,maxRating:this.maxRating,ratingHistories:this.ratingHistories.map(t=>t.toJSON())}}static fromJSON(t){typeof t=="string"&&(t=JSON.parse(t));const s=new k;s.id=t.id,s.name=b.fromIText(t.name),s.organization=t.organization,s.members=t.members.map(a=>B.fromIPerson(a)),s.coaches=t.coaches.map(a=>B.fromIPerson(a)),s.rating=t.rating,s.minRating=t.minRating,s.maxRating=t.maxRating;for(const a of t.ratingHistories)s.ratingHistories.push(E.fromJSON(a));return s}}class at{constructor(){this.users=[]}calculate(){this.calculateInternal()}calcP(t,s){return 1/(1+10**((s.oldRating-t.oldRating)/400))}getExSeed(t,s,a){const i=new k;i.oldRating=s;let e=0;return t.forEach(n=>{n.id!==a.id&&(e+=this.calcP(n,i))}),e}calcRating(t,s,a){let i=1,e=8e3;for(;e-i>1;){const n=Math.floor((i+e)/2);this.getExSeed(t,n,a)<s?e=n:i=n}return i}calculateInternal(){for(let e=0;e<this.users.length;e++){const n=this.users[e];n.seed=1;for(let l=0;l<this.users.length;l++)if(e!==l){const h=this.users[l];n.seed+=this.calcP(h,n)}}let t=0;for(let e=0;e<this.users.length;e++){const n=this.users[e];n.delta=Math.floor((this.calcRating(this.users,Math.sqrt(n.rank*n.seed),n)-n.oldRating)/2),t+=n.delta}let s=Math.floor(-t/this.users.length)-1;for(let e=0;e<this.users.length;e++){const n=this.users[e];n.delta+=s}this.users=this.users.sort((e,n)=>n.oldRating-e.oldRating);const a=Math.min(this.users.length,Math.floor(4*Math.round(Math.sqrt(this.users.length))));let i=0;for(let e=0;e<a;e++)i+=this.users[e].delta;s=Math.min(Math.max(Math.floor(-i/a),-10),0),this.users.forEach(e=>{e.delta+=s,e.UpdateRating(e.oldRating+e.delta)}),this.users=this.users.sort((e,n)=>e.rank-n.rank)}}class P{constructor(){this.id="",this.name=new b,this.baseRating=1500,this.contestIDs=[],this.users=[],this.ranks=[],this.userMap=new Map}buildRating(){for(const t of this.ranks){t.buildRank();const s=new at;for(const a of t.teams){const i=this.generateTeamId(a);let e=null;this.userMap.has(i)?(e=this.userMap.get(i),e.rank=a.rank,e.oldRating=e.rating,s.users.push(e)):(e=new k,e.id=i,e.name=a.name,e.organization=a.organization,e.members=a.members,e.coaches=a.coaches,e.rank=a.rank,e.oldRating=this.baseRating,e.UpdateRating(this.baseRating),this.userMap.set(i,e),this.users.push(e),s.users.push(e));{const n=new E;n.rank=a.rank,n.rating=e.rating,n.teamName=a.name,n.organization=a.organization,n.members=a.members,n.coaches=a.coaches,n.contestID=t.contest.id,n.contestLink=n.contestID,n.contestName=t.contest.name,n.contestTime=t.contest.startTime,e.ratingHistories.push(n)}}s.calculate();for(const a of s.users)a.ratingHistories.at(-1).rating=a.rating}}generateTeamId(t){const s=t.members;return s.length>0?s.map(a=>a.name.getOrDefault().trim()).sort().join("|"):`${t.organization}-${t.name}`}toJSON(){return{id:this.id,name:this.name.toI18NStringSet(),baseRating:this.baseRating,contestIDs:this.contestIDs,users:this.users.map(t=>t.toJSON())}}static fromJSON(t){typeof t=="string"&&(t=JSON.parse(t));const s=new P;s.id=t.id,s.name=b.fromIText(t.name),s.baseRating=t.baseRating,s.contestIDs=t.contestIDs;for(const a of t.users)s.users.push(k.fromJSON(a));return s}}const J={NEWBIE:"Newbie",PUPIL:"Pupil",SPECIALIST:"Specialist",EXPERT:"Expert",CANDIDATE_MASTER:"Candidate Master",MASTER:"Master",INTERNATIONAL_MASTER:"International Master",GRANDMASTER:"Grandmaster",INTERNATIONAL_GRANDMASTER:"International Grandmaster",LEGENDARY_GRANDMASTER:"Legendary Grandmaster"};class A{static getRatingLevel(t){return t>=3e3?"LEGENDARY_GRANDMASTER":t>=2600?"INTERNATIONAL_GRANDMASTER":t>=2400?"GRANDMASTER":t>=2300?"INTERNATIONAL_MASTER":t>=2100?"MASTER":t>=1900?"CANDIDATE_MASTER":t>=1600?"EXPERT":t>=1400?"SPECIALIST":t>=1200?"PUPIL":"NEWBIE"}static getRatingLevelClass(t){if(typeof t=="number")return this.getRatingLevelClass(this.getRatingLevel(t));switch(t){case"NEWBIE":return"user-gray";case"PUPIL":return"user-green";case"SPECIALIST":return"user-cyan";case"EXPERT":return"user-blue";case"CANDIDATE_MASTER":return"user-violet";case"MASTER":return"user-orange";case"INTERNATIONAL_MASTER":return"user-orange";case"GRANDMASTER":return"user-red";case"INTERNATIONAL_GRANDMASTER":return"user-red";case"LEGENDARY_GRANDMASTER":return"user-legendary"}}}const ot={"text-md":""},rt=I({__name:"RatingBadge",props:{rating:null},setup(m){const t=m,s=p(()=>t.rating);return(a,i)=>{const e=j;return f(),_("div",null,[x(e,null,{popper:w(()=>[o("div",ot,v(r(J)[r(A).getRatingLevel(r(s))]),1)]),default:w(()=>[o("div",{"font-mono":"","font-bold":"",class:D(r(A).getRatingLevelClass(r(s)))},v(r(s)),3)]),_:1})])}}});function it(m,t){const s=t-m;return t>m?`+${s.toString()}`:s.toString()}function lt(m){const t=[];{let i=0;for(const e of m.ratingHistories){const n={};n.x=e.contestTime.unix()*1e3,n.y=e.rating,n.diffRating=it(i,e.rating),n.rank=e.rank,n.contestName=e.contestName,n.link=`/board/${e.contestID}`,n.contestTime=e.contestTime.format("YYYY-MM-DD HH:mm:ss"),n.teamName=e.teamName,n.ratingTitle=J[A.getRatingLevel(e.rating)],t.push(n),i=e.rating}}let s=[1200,1400,1600,1900,2100,2300,2400,2600,3e3];{let e=Math.max(0,m.minRating-100),n=m.maxRating+100;for(let l=0;l<s.length;++l)if(s[l]>n){n=s[l];break}for(let l=s.length-1;l>=0;--l)if(s[l]<e){e=s[l];break}e<1200&&(s=[e,...s]),n>3e3&&s.push(n),s=s.filter(l=>l>=e&&l<=n)}return{chart:{type:"line",height:"408px"},title:{text:null},xAxis:{tickWidth:0,gridLineWidth:.4,minRange:720*60*60*1e3,type:"datetime",showFirstLabel:!0,showLastLabel:!0,dateTimeLabelFormats:{month:"%b %Y"}},yAxis:{showEmpty:!1,showFirstLabel:!1,showLastLabel:!1,tickPositions:s,tickWidth:0,gridLineWidth:.6,labels:{enabled:!0,format:"{value}"},title:{text:null},plotBands:[{from:0,to:1199,color:"#CCCCCC"},{from:1200,to:1399,color:"#98FA87"},{from:1400,to:1599,color:"#90DABD"},{from:1600,to:1899,color:"#A9ACF9"},{from:1900,to:2099,color:"#EF91F9"},{from:2100,to:2299,color:"#F7CD91"},{from:2300,to:2399,color:"#F5BD67"},{from:2400,to:2599,color:"#Ef7F7B"},{from:2600,to:2999,color:"#EB483F"},{from:3e3,to:1061109567,color:"#9C1E14"}]},credits:{enabled:!1},plotOptions:{line:{color:"#ffec3d",dataLabels:{enabled:!1},enableMouseTracking:!0,marker:{enabled:!0,fillColor:"#fffb8f"}}},tooltip:{enabled:!0,headerFormat:"",useHTML:!0,shared:!0,shadow:!0,followPointer:!1,followTouchMove:!1,pointFormat:`= {point.y} ({point.diffRating}), {point.ratingTitle}
2
- <br/>Rank: {point.rank}
3
- <br/>TeamName: {point.teamName}
4
- <br/>ContestTime: {point.contestTime}
5
- <br/><a href="{point.link}">{point.contestName}</a>
6
- <br/>`},series:[{showInLegend:!1,allowPointSelect:!0,data:t}]}}const ct={"w-full":"","max-w-screen-xl":"","mx-auto":"","px-4":"","lg:px-8":""},ut={relative:"","overflow-hidden":"","bg-white":"","dark:bg-gray-800":""},mt={flex:"","flex-col":"","items-center":"","justify-between":"","md:flex-row":"","space-y-3":"","md:space-y-0":""},dt={flex:"","flex-row":"","space-x-3":""},gt={"text-gray-900":"","dark:text-white":"","text-2xl":"","font-sans":"","font-semibold":"",italic:""},ht={flex:"","flex-col":"","justify-start":"","items-start":""},ft={"w-full":"","font-bold":"","font-mono":"",flex:"","items-center":"","justify-center":""},pt={"w-full":""},_t=I({__name:"RatingInfoModal",props:{isHidden:{type:Boolean},ratingUser:null},emits:["update:isHidden"],setup(m,{emit:t}){const s=m,a=t,i=p({get(){return s.isHidden},set(d){a("update:isHidden",d)}}),{locale:e}=L(),n=p(()=>e.value),l=p(()=>s.ratingUser),h=p(()=>{let d="";return l.value.organization.length>0&&(d+=`${l.value.organization} - `),d+=`${l.value.name.getOrDefault(n.value)}`,l.value.members.length>0&&(d+=` - ${l.value.members.map(c=>c.name.getOrDefault(n.value)).join(", ")}`),l.value.coaches.length>0&&(d+=` - ${l.value.coaches.map(c=>c.name.getOrDefault(n.value)).join(", ")}(coach)`),d});return(d,c)=>{const R=j,g=Y;return f(),$(g,{"is-hidden":r(i),"onUpdate:isHidden":c[0]||(c[0]=u=>O(i)?i.value=u:null),width:"w-278"},{header:w(()=>[o("div",ct,[o("div",ut,[o("div",mt,[o("div",dt,[x(R,null,{popper:w(()=>[o("div",ht,[o("div",null," TeamID: "+v(r(l).id),1)])]),default:w(()=>[o("h3",gt,v(r(h)),1)]),_:1})])])])])]),default:w(()=>[o("div",ft,[o("div",pt,[x(r(W.Chart),{options:("getRatingGraphOptions"in d?d.getRatingGraphOptions:r(lt))(r(l))},null,8,["options"])])])]),_:1},8,["is-hidden"])}}}),xt={class:"border-b dark:border-gray-600 hover:bg-gray-100 dark:hover:bg-gray-700"},vt={class:"whitespace-nowrap px-4 py-2 text-gray-900 dark:text-white"},Rt={class:"whitespace-nowrap px-4 py-2 text-gray-900 dark:text-white"},bt={class:"whitespace-nowrap px-4 py-2 text-gray-900 dark:text-white"},Tt={class:"whitespace-nowrap px-4 py-2 text-gray-900 dark:text-white"},Nt={class:"whitespace-nowrap px-4 py-2 text-gray-900 dark:text-white"},wt=I({__name:"RatingUserUI",props:{ix:null,ratingUser:null},setup(m){const t=m,s=p(()=>t.ratingUser),{locale:a}=L(),i=p(()=>a.value),e=T(!0);function n(){e.value=!1}return(l,h)=>{const d=_t,c=rt;return f(),_("tr",xt,[o("td",vt,v(r(s).organization),1),o("td",null,[o("div",{class:D(["whitespace-nowrap px-4 py-2 text-gray-900 dark:text-white",r(A).getRatingLevelClass(r(s).rating)]),"cursor-pointer":"",onClick:n},v(r(s).name.getOrDefault(r(i))),3),o("div",null,[r(e)?y("",!0):(f(),$(d,{key:0,"is-hidden":r(e),"onUpdate:isHidden":h[0]||(h[0]=R=>O(e)?e.value=R:null),"rating-user":r(s)},null,8,["is-hidden","rating-user"]))])]),o("td",Rt,v(r(s).members.map(R=>R.name.getOrDefault(r(i)).trim()).join(" ")),1),o("td",bt,[x(c,{rating:r(s).rating},null,8,["rating"])]),o("td",Tt,[x(c,{rating:r(s).maxRating},null,8,["rating"])]),o("td",Nt,[x(c,{rating:r(s).minRating},null,8,["rating"])])])}}}),It={"mx-auto":"","w-full":""},yt={"space-y-3":"",flex:"","flex-col":"","px-4":"","py-3":"","lg:flex-row":"","lg:items-center":"","lg:justify-between":"","lg:space-x-4":"","lg:space-y-0":""},kt={flex:"","flex-shrink-0":"","flex-col":"","md:flex-row":"","md:items-center":"","lg:justify-end":"","space-y-3":"","md:space-x-3":"","md:space-y-0":""},St={"w-108":""},At={class:"overflow-x-auto"},Et={class:"w-full text-left text-sm text-gray-500 dark:text-gray-400","font-medium":"","font-mono":""},Mt=I({__name:"RatingTable",props:{rating:null,pageSize:null,removeBorder:{type:Boolean}},setup(m){const t=m,s=p(()=>t.rating),a=T({organizations:[]}),i=p(()=>{let g=s.value.users.map(u=>u.organization);return g=Array.from(new Set(g)),g.map(u=>({value:u,text:u}))}),e=T([]),n=T({});function l(g,u){e.value=g,n.value=u}const h=p(()=>s.value.users.filter(u=>{const N=a.value;if(N.organizations.length===0)return!0;for(const M of N.organizations)if(M===u.organization)return!0;return!1}));function d(){const g={organizations:[]};g.organizations=e.value.map(u=>u.value),a.value=g}const c=T(new V);c.value.currentPage=0,c.value.pageSize=t.pageSize??20,c.value.totalSize=h.value.length,K(h,()=>{c.value.totalSize=h.value.length,c.value.currentPage>=c.value.totalPage&&(c.value.currentPage=c.value.totalPage-1)});const R=p(()=>h.value.slice(c.value.currentLeft,c.value.currentRight));return(g,u)=>{const N=X,M=wt,U=q;return f(),_("section",null,[o("div",It,[o("div",{relative:"","overflow-hidden":"","bg-white":"","dark:bg-gray-800":"",class:D({"shadow-md":t.removeBorder!==!0,"sm:rounded-sm":t.removeBorder!==!0})},[o("div",yt,[o("div",kt,[o("div",St,[x(N,{options:r(i),"selected-options":r(e),placeholder:"Organization",onSelect:l},null,8,["options","selected-options"])]),o("div",null,[o("button",{type:"button",class:"flex flex-shrink-0 items-center justify-center border border-gray-200 rounded-lg bg-white px-3 py-2 text-sm font-medium text-gray-900 focus:z-10 dark:border-gray-600 dark:bg-gray-800 hover:bg-gray-100 dark:text-gray-400 hover:text-primary-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700",onClick:d},[...u[1]||(u[1]=[o("div",{"i-material-symbols-search":"","mr-1":"","h-5":"","w-5":""},null,-1),Q(" Filter ",-1)])])])])]),o("div",At,[o("table",Et,[u[2]||(u[2]=o("thead",{"text-xs":"","bg-gray-50":"","text-gray-700":"","dark:bg-gray-700":"","dark:text-gray-400":""},[o("tr",null,[o("th",{scope:"col",class:"px-4 py-3","w-68":""}," Organization "),o("th",{scope:"col",class:"px-4 py-3","w-128":""}," TeamName "),o("th",{scope:"col",class:"px-4 py-3","w-68":""}," Members "),o("th",{scope:"col",class:"px-4 py-3"}," Rating "),o("th",{scope:"col",class:"px-4 py-3"}," MaxRating "),o("th",{scope:"col",class:"px-4 py-3"}," MinRating ")])],-1)),o("tbody",null,[(f(!0),_(Z,null,tt(r(R),(S,H)=>(f(),$(M,{key:S.id,ix:H,"rating-user":S},null,8,["ix","rating-user"]))),128))])])]),x(U,{pagination:r(c),"onUpdate:pagination":u[0]||(u[0]=S=>O(c)?c.value=S:null)},null,8,["pagination"])],2)])])}}}),Dt={class:"sm:w-[1024px] lg:w-screen","lg:of-x-hidden":"",flex:"","flex-col":"","justify-center":"","items-center":""},Lt={key:0,"mt-4":"","mb-4":"",class:"sm:w-[1000px] lg:w-screen",flex:"","justify-center":"","items-center":""},$t={key:0},Ot={key:1},Pt={key:1,flex:"","flex-col":"","justify-center":"","items-center":""},zt={"text-4xl":"","font-medium":"","font-serif":""},Ct={"mt-4":""},Ft=I({__name:"Rating",props:{id:null},setup(m){const t=m,s=p(()=>t.id);function a(){return`${nt.value}${s.value}/rating.json`}const i=T(a()),e=T({}),{t:n,locale:l}=L(),h=p(()=>l.value);z(C);const{error:d,isFetching:c,isFinished:R}=et(i,{refetch:!0,afterFetch:g=>(e.value=P.fromJSON(g.data),z(`${e.value.name} | ${C}`),g)}).get();return(g,u)=>{const N=Mt;return f(),_("div",Dt,[o("div",null,[r(c)||r(d)?(f(),_("div",Lt,[r(c)?(f(),_("div",$t,v(r(n)("common.loading"))+"... ",1)):y("",!0),r(d)?(f(),_("div",Ot,v(r(d)),1)):y("",!0)])):y("",!0),r(R)?(f(),_("div",Pt,[o("div",zt,v(r(e).name.getOrDefault(r(h))),1),o("div",Ct,[x(N,{rating:r(e),"remove-border":!0},null,8,["rating"])])])):y("",!0)])])}}}),Yt=I({__name:"[...all]",setup(m){const s=st().path.split("/").pop();return(a,i)=>{const e=Ft;return f(),_("div",null,[x(e,{id:r(s)},null,8,["id"])])}}});export{Yt as default};
@@ -1 +0,0 @@
1
- import{_ as i}from"./Board-sX3HmCh3.js";import{_ as u}from"./DataSourceInput.vue_vue_type_script_setup_true_lang-DVWnGqx-.js";import{g as f}from"./query-CDfDbkZE.js";import{d,c as e,o as t,a as n,q as l,h as a,F as B,G as g}from"./index-9_oqoLcR.js";import{b as c}from"./route-block-B_A1xBdJ.js";import{_ as h}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./pagination-DnhQ5r1u.js";import"./Tooltip.vue_vue_type_script_setup_true_lang-D8Y2xuKM.js";import"./TheInput.vue_vue_type_script_setup_true_lang-C21qO8yZ.js";import"./use-vmodel-Bl_BJeQo.js";import"./rank-B4f6mi_k.js";import"./contest-CgNGJetR.js";import"./dayjs-Dk3pur30.js";import"./person-U3tcpMKk.js";import"./ContestStateBadge-Cad99MQ4.js";import"./constant-BWnqIcmY.js";const k={key:0},x=d({__name:"CustomBoard",setup(s){const o=f();return(r,b)=>{const _=u,p=i;return t(),e(B,null,[n(_),a(o).length>0?(t(),e("div",k,[n(p,{"data-source-url":a(o)},null,8,["data-source-url"])])):l("",!0)],64)}}}),m={};function C(s,o){const r=x;return t(),g(r)}typeof c=="function"&&c(m);const A=h(m,[["render",C]]);export{A as default};