@xcpcio/board-app 0.78.2 → 0.78.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/404.html +1 -1
- package/dist/assets/{Balloon.vue_vue_type_script_setup_true_lang-27AcG_TV.js → Balloon.vue_vue_type_script_setup_true_lang-A6BI3pHN.js} +1 -1
- package/dist/assets/{Board-DDliK7fC.js → Board-Bi3FufkZ.js} +53 -53
- package/dist/assets/{ContestStateBadge-DlqaOjhy.js → ContestStateBadge-CtxVS3bY.js} +1 -1
- package/dist/assets/{Countdown-DhwaDnBq.js → Countdown-_-sYM2AT.js} +1 -1
- package/dist/assets/{DataSourceInput.vue_vue_type_script_setup_true_lang-DE4jHYLG.js → DataSourceInput.vue_vue_type_script_setup_true_lang-DPVg9mnK.js} +1 -1
- package/dist/assets/{NavBar-D7Ws8ePI.js → NavBar-C0UK0ASe.js} +1 -1
- package/dist/assets/{Resolver-DVrWZP6x.js → Resolver-B5E6dK-v.js} +1 -1
- package/dist/assets/{RightArrowIcon-CBf-BObx.js → RightArrowIcon-D2RdIgYG.js} +1 -1
- package/dist/assets/{TheInput.vue_vue_type_script_setup_true_lang-DrpFacxq.js → TheInput.vue_vue_type_script_setup_true_lang-D3XyLzkY.js} +1 -1
- package/dist/assets/{Tooltip.vue_vue_type_script_setup_true_lang-DVShQdNz.js → Tooltip.vue_vue_type_script_setup_true_lang-CF1jFUtT.js} +1 -1
- package/dist/assets/{_...all_-B524bJZB.js → _...all_-CaEo-me1.js} +1 -1
- package/dist/assets/{_...all_-Cj1BP7Bi.js → _...all_-CcQCVbDh.js} +1 -1
- package/dist/assets/{board-layout-CPrL80rB.js → board-layout-BTyAm0EK.js} +1 -1
- package/dist/assets/constant-DG_KQNiP.js +1 -0
- package/dist/assets/{dayjs-sKjsZKv5.js → dayjs-0zK7RC9-.js} +1 -1
- package/dist/assets/default-B_PJM0WU.js +1 -0
- package/dist/assets/en-hjY7qlkM.js +1 -0
- package/dist/assets/{headless-C7w7Lh_D.js → headless-EwThSwYS.js} +1 -1
- package/dist/assets/{index-BK3vjQva.js → index-BYmkAxcR.js} +12 -12
- package/dist/assets/{index-Crr714Fz.css → index-BnD-3E1r.css} +1 -1
- package/dist/assets/index-CjEdj2Ed.js +1 -0
- package/dist/assets/{index-HsrgWYT6.js → index-DSkVoRW9.js} +1 -1
- package/dist/assets/{index--svZ0O-t.js → index-DipXEus9.js} +1 -1
- package/dist/assets/index-DuRY2Pyw.js +1 -0
- package/dist/assets/{index-6ZR0t6ve.js → index-IxWcz_Rv.js} +1 -1
- package/dist/assets/{index-dg0hvCKZ.js → index-hLh2Wrgb.js} +1 -1
- package/dist/assets/{index-layout-PeSRcS1A.js → index-layout-Besvla3G.js} +1 -1
- package/dist/assets/{pagination-BkDeG1vq.js → pagination-DzXRdgbS.js} +1 -1
- package/dist/assets/{person-CITgECKA.js → person-C5I912Er.js} +1 -1
- package/dist/assets/{rank-BsQbvMFp.js → rank-CxQNFFKW.js} +1 -1
- package/dist/assets/{use-vmodel-C-KfQ0NC.js → use-vmodel-Do0kp3Sr.js} +1 -1
- package/dist/assets/{zh-CN-BeAOkdvv.js → zh-CN-C9a78y95.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +3 -3
- package/src/App.vue +0 -7
- package/src/components/board/TeamModal.vue +3 -1
- package/src/components/board/TeamStreams.vue +298 -66
- package/dist/assets/constant-DwAKIVXi.js +0 -1
- package/dist/assets/default-CxXqQtzW.js +0 -1
- package/dist/assets/en-DI7hknTx.js +0 -1
- package/dist/assets/index-D3WwNYgO.js +0 -1
- package/dist/assets/index-cVfSQJhC.js +0 -1
- package/dist/favicon-dark.svg +0 -4
- package/public/favicon-dark.svg +0 -4
|
@@ -24,6 +24,28 @@ let screenHls: Hls | null = null;
|
|
|
24
24
|
const webcamError = ref(false);
|
|
25
25
|
const screenError = ref(false);
|
|
26
26
|
|
|
27
|
+
// Layout mode types and state
|
|
28
|
+
type LayoutMode = "side-by-side" | "pip";
|
|
29
|
+
type PipPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
30
|
+
type PipMain = "webcam" | "screen";
|
|
31
|
+
|
|
32
|
+
const layoutMode = ref<LayoutMode>("side-by-side");
|
|
33
|
+
const pipPosition = ref<PipPosition>("top-right");
|
|
34
|
+
const pipMain = ref<PipMain>("screen");
|
|
35
|
+
|
|
36
|
+
const pipPositionOptions: PipPosition[] = ["top-left", "top-right", "bottom-left", "bottom-right"];
|
|
37
|
+
|
|
38
|
+
// PiP position class mapping
|
|
39
|
+
const pipPositionClass = computed(() => {
|
|
40
|
+
const positionMap: Record<PipPosition, string> = {
|
|
41
|
+
"top-left": "top-3 left-3",
|
|
42
|
+
"top-right": "top-3 right-3",
|
|
43
|
+
"bottom-left": "bottom-3 left-3",
|
|
44
|
+
"bottom-right": "bottom-3 right-3",
|
|
45
|
+
};
|
|
46
|
+
return positionMap[pipPosition.value];
|
|
47
|
+
});
|
|
48
|
+
|
|
27
49
|
// Computed stream URLs with template replacement
|
|
28
50
|
const webcamStreamUrl = computed(() => {
|
|
29
51
|
const template = rank.value.contest.options.teamWebcamStreamUrlTemplate;
|
|
@@ -41,6 +63,9 @@ const screenStreamUrl = computed(() => {
|
|
|
41
63
|
return template.replace(/\$\{team_id\}/, team.value.id);
|
|
42
64
|
});
|
|
43
65
|
|
|
66
|
+
// Computed values for PiP mode
|
|
67
|
+
const showPipMode = computed(() => layoutMode.value === "pip" && webcamStreamUrl.value && screenStreamUrl.value);
|
|
68
|
+
|
|
44
69
|
// Initialize HLS player
|
|
45
70
|
function initHlsPlayer(
|
|
46
71
|
videoElement: HTMLVideoElement,
|
|
@@ -135,99 +160,306 @@ watch(() => team.value.id, () => {
|
|
|
135
160
|
initPlayers();
|
|
136
161
|
});
|
|
137
162
|
});
|
|
163
|
+
|
|
164
|
+
// Watch for layout mode changes to reinitialize players
|
|
165
|
+
watch([layoutMode, pipMain], () => {
|
|
166
|
+
destroyHlsPlayers();
|
|
167
|
+
|
|
168
|
+
nextTick(() => {
|
|
169
|
+
initPlayers();
|
|
170
|
+
});
|
|
171
|
+
});
|
|
138
172
|
</script>
|
|
139
173
|
|
|
140
174
|
<template>
|
|
141
175
|
<div
|
|
142
|
-
flex flex-col
|
|
143
|
-
gap-
|
|
144
|
-
p-4
|
|
176
|
+
flex flex-col
|
|
177
|
+
gap-2 w-full
|
|
145
178
|
>
|
|
146
|
-
<!--
|
|
179
|
+
<!-- Control Bar -->
|
|
147
180
|
<div
|
|
148
|
-
v-if="webcamStreamUrl"
|
|
149
|
-
flex-
|
|
150
|
-
|
|
151
|
-
|
|
181
|
+
v-if="webcamStreamUrl && screenStreamUrl"
|
|
182
|
+
flex flex-wrap items-center gap-4
|
|
183
|
+
px-2 py-1
|
|
184
|
+
bg-gray-100 dark:bg-gray-800
|
|
185
|
+
rounded-lg
|
|
152
186
|
>
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
text-gray-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
187
|
+
<!-- Layout Mode Toggle -->
|
|
188
|
+
<div flex items-center gap-2>
|
|
189
|
+
<span text-sm text-gray-600 dark:text-gray-300>
|
|
190
|
+
{{ t("streams.layout.side_by_side") }}
|
|
191
|
+
</span>
|
|
192
|
+
<button
|
|
193
|
+
class="relative inline-flex h-6 w-11 items-center rounded-full transition-colors" :class="[
|
|
194
|
+
layoutMode === 'pip' ? 'bg-blue-600' : 'bg-gray-300 dark:bg-gray-600',
|
|
195
|
+
]"
|
|
196
|
+
@click="layoutMode = layoutMode === 'side-by-side' ? 'pip' : 'side-by-side'"
|
|
197
|
+
>
|
|
198
|
+
<span
|
|
199
|
+
class="inline-block h-4 w-4 transform rounded-full bg-white transition-transform" :class="[
|
|
200
|
+
layoutMode === 'pip' ? 'translate-x-6' : 'translate-x-1',
|
|
201
|
+
]"
|
|
202
|
+
/>
|
|
203
|
+
</button>
|
|
204
|
+
<span text-sm text-gray-600 dark:text-gray-300>
|
|
205
|
+
{{ t("streams.layout.pip") }}
|
|
206
|
+
</span>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
<!-- PiP Controls (only shown in PiP mode) -->
|
|
210
|
+
<template v-if="layoutMode === 'pip'">
|
|
211
|
+
<!-- Main Video Toggle -->
|
|
212
|
+
<div flex items-center gap-2>
|
|
213
|
+
<span text-sm text-gray-600 dark:text-gray-300>
|
|
214
|
+
{{ t("streams.pip.main") }}:
|
|
215
|
+
</span>
|
|
216
|
+
<button
|
|
217
|
+
class="px-3 py-1 text-sm rounded-l-md transition-colors" :class="[
|
|
218
|
+
pipMain === 'screen'
|
|
219
|
+
? 'bg-blue-600 text-white'
|
|
220
|
+
: 'bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-600',
|
|
221
|
+
]"
|
|
222
|
+
@click="pipMain = 'screen'"
|
|
223
|
+
>
|
|
224
|
+
{{ t("streams.screen") }}
|
|
225
|
+
</button>
|
|
226
|
+
<button
|
|
227
|
+
class="px-3 py-1 text-sm rounded-r-md transition-colors" :class="[
|
|
228
|
+
pipMain === 'webcam'
|
|
229
|
+
? 'bg-blue-600 text-white'
|
|
230
|
+
: 'bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-600',
|
|
231
|
+
]"
|
|
232
|
+
@click="pipMain = 'webcam'"
|
|
233
|
+
>
|
|
234
|
+
{{ t("streams.webcam") }}
|
|
235
|
+
</button>
|
|
236
|
+
</div>
|
|
237
|
+
|
|
238
|
+
<!-- PiP Position Selector -->
|
|
239
|
+
<div flex items-center gap-2>
|
|
240
|
+
<span text-sm text-gray-600 dark:text-gray-300>
|
|
241
|
+
{{ t("streams.pip.position") }}:
|
|
242
|
+
</span>
|
|
243
|
+
<div flex items-center gap-1>
|
|
244
|
+
<button
|
|
245
|
+
v-for="pos in pipPositionOptions"
|
|
246
|
+
:key="pos"
|
|
247
|
+
class="relative w-6 h-6 rounded transition-colors text-xs" :class="[
|
|
248
|
+
pipPosition === pos
|
|
249
|
+
? 'bg-blue-600 text-white'
|
|
250
|
+
: 'bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-600',
|
|
251
|
+
]"
|
|
252
|
+
:title="t(`streams.pip.${pos.replace(/-/g, '_')}`)"
|
|
253
|
+
@click="pipPosition = pos"
|
|
254
|
+
>
|
|
255
|
+
<span
|
|
256
|
+
class="absolute w-2 h-2 bg-current rounded-sm" :class="[
|
|
257
|
+
pos.includes('top') ? 'top-0.5' : 'bottom-0.5',
|
|
258
|
+
pos.includes('left') ? 'left-0.5' : 'right-0.5',
|
|
259
|
+
]"
|
|
260
|
+
/>
|
|
261
|
+
</button>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
</template>
|
|
265
|
+
</div>
|
|
266
|
+
|
|
267
|
+
<!-- Side by Side Layout -->
|
|
268
|
+
<div
|
|
269
|
+
v-if="!showPipMode"
|
|
270
|
+
flex flex-col md:flex-row
|
|
271
|
+
gap-4 w-full
|
|
272
|
+
>
|
|
273
|
+
<!-- Webcam Stream -->
|
|
160
274
|
<div
|
|
161
|
-
v-if="
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
rounded-lg
|
|
166
|
-
overflow-hidden
|
|
275
|
+
v-if="webcamStreamUrl"
|
|
276
|
+
flex-1
|
|
277
|
+
flex flex-col
|
|
278
|
+
items-center
|
|
167
279
|
>
|
|
168
|
-
<
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
280
|
+
<h4
|
|
281
|
+
text-lg font-semibold
|
|
282
|
+
text-gray-900 dark:text-white
|
|
283
|
+
mb-2
|
|
284
|
+
>
|
|
285
|
+
{{ t("streams.webcam") }}
|
|
286
|
+
</h4>
|
|
287
|
+
<div
|
|
288
|
+
v-if="!webcamError"
|
|
289
|
+
w-full
|
|
290
|
+
aspect-video
|
|
291
|
+
bg-black
|
|
292
|
+
rounded-lg
|
|
293
|
+
overflow-hidden
|
|
294
|
+
>
|
|
295
|
+
<video
|
|
296
|
+
ref="webcamVideoRef"
|
|
297
|
+
controls
|
|
298
|
+
muted
|
|
299
|
+
playsinline
|
|
300
|
+
class="w-full h-full object-contain"
|
|
301
|
+
/>
|
|
302
|
+
</div>
|
|
303
|
+
<div
|
|
304
|
+
v-else
|
|
305
|
+
w-full
|
|
306
|
+
aspect-video
|
|
307
|
+
bg-gray-200 dark:bg-gray-700
|
|
308
|
+
rounded-lg
|
|
309
|
+
flex items-center justify-center
|
|
310
|
+
>
|
|
311
|
+
<span text-gray-500 dark:text-gray-400>
|
|
312
|
+
{{ t("streams.unavailable") }}
|
|
313
|
+
</span>
|
|
314
|
+
</div>
|
|
175
315
|
</div>
|
|
316
|
+
|
|
317
|
+
<!-- Screen Stream -->
|
|
176
318
|
<div
|
|
177
|
-
v-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
rounded-lg
|
|
182
|
-
flex items-center justify-center
|
|
319
|
+
v-if="screenStreamUrl"
|
|
320
|
+
flex-1
|
|
321
|
+
flex flex-col
|
|
322
|
+
items-center
|
|
183
323
|
>
|
|
184
|
-
<
|
|
185
|
-
|
|
186
|
-
|
|
324
|
+
<h4
|
|
325
|
+
text-lg font-semibold
|
|
326
|
+
text-gray-900 dark:text-white
|
|
327
|
+
mb-2
|
|
328
|
+
>
|
|
329
|
+
{{ t("streams.screen") }}
|
|
330
|
+
</h4>
|
|
331
|
+
<div
|
|
332
|
+
v-if="!screenError"
|
|
333
|
+
w-full
|
|
334
|
+
aspect-video
|
|
335
|
+
bg-black
|
|
336
|
+
rounded-lg
|
|
337
|
+
overflow-hidden
|
|
338
|
+
>
|
|
339
|
+
<video
|
|
340
|
+
ref="screenVideoRef"
|
|
341
|
+
controls
|
|
342
|
+
muted
|
|
343
|
+
playsinline
|
|
344
|
+
class="w-full h-full object-contain"
|
|
345
|
+
/>
|
|
346
|
+
</div>
|
|
347
|
+
<div
|
|
348
|
+
v-else
|
|
349
|
+
w-full
|
|
350
|
+
aspect-video
|
|
351
|
+
bg-gray-200 dark:bg-gray-700
|
|
352
|
+
rounded-lg
|
|
353
|
+
flex items-center justify-center
|
|
354
|
+
>
|
|
355
|
+
<span text-gray-500 dark:text-gray-400>
|
|
356
|
+
{{ t("streams.unavailable") }}
|
|
357
|
+
</span>
|
|
358
|
+
</div>
|
|
187
359
|
</div>
|
|
188
360
|
</div>
|
|
189
361
|
|
|
190
|
-
<!--
|
|
362
|
+
<!-- Picture in Picture Layout -->
|
|
191
363
|
<div
|
|
192
|
-
v-
|
|
193
|
-
|
|
194
|
-
flex flex-col
|
|
195
|
-
items-center
|
|
364
|
+
v-else
|
|
365
|
+
class="relative w-full"
|
|
196
366
|
>
|
|
197
|
-
|
|
198
|
-
text-lg font-semibold
|
|
199
|
-
text-gray-900 dark:text-white
|
|
200
|
-
mb-2
|
|
201
|
-
>
|
|
202
|
-
{{ t("streams.screen") }}
|
|
203
|
-
</h4>
|
|
367
|
+
<!-- Main Video -->
|
|
204
368
|
<div
|
|
205
|
-
v-if="!screenError"
|
|
206
369
|
w-full
|
|
207
370
|
aspect-video
|
|
208
371
|
bg-black
|
|
209
372
|
rounded-lg
|
|
210
373
|
overflow-hidden
|
|
211
374
|
>
|
|
212
|
-
<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
375
|
+
<template v-if="pipMain === 'screen'">
|
|
376
|
+
<video
|
|
377
|
+
v-if="!screenError"
|
|
378
|
+
ref="screenVideoRef"
|
|
379
|
+
controls
|
|
380
|
+
muted
|
|
381
|
+
playsinline
|
|
382
|
+
class="w-full h-full object-contain"
|
|
383
|
+
/>
|
|
384
|
+
<div
|
|
385
|
+
v-else
|
|
386
|
+
w-full h-full
|
|
387
|
+
bg-gray-200 dark:bg-gray-700
|
|
388
|
+
flex items-center justify-center
|
|
389
|
+
>
|
|
390
|
+
<span text-gray-500 dark:text-gray-400>
|
|
391
|
+
{{ t("streams.unavailable") }}
|
|
392
|
+
</span>
|
|
393
|
+
</div>
|
|
394
|
+
</template>
|
|
395
|
+
<template v-else>
|
|
396
|
+
<video
|
|
397
|
+
v-if="!webcamError"
|
|
398
|
+
ref="webcamVideoRef"
|
|
399
|
+
controls
|
|
400
|
+
muted
|
|
401
|
+
playsinline
|
|
402
|
+
class="w-full h-full object-contain"
|
|
403
|
+
/>
|
|
404
|
+
<div
|
|
405
|
+
v-else
|
|
406
|
+
w-full h-full
|
|
407
|
+
bg-gray-200 dark:bg-gray-700
|
|
408
|
+
flex items-center justify-center
|
|
409
|
+
>
|
|
410
|
+
<span text-gray-500 dark:text-gray-400>
|
|
411
|
+
{{ t("streams.unavailable") }}
|
|
412
|
+
</span>
|
|
413
|
+
</div>
|
|
414
|
+
</template>
|
|
219
415
|
</div>
|
|
416
|
+
|
|
417
|
+
<!-- PiP Overlay Video -->
|
|
220
418
|
<div
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
bg-gray-200 dark:bg-gray-700
|
|
225
|
-
rounded-lg
|
|
226
|
-
flex items-center justify-center
|
|
419
|
+
class="absolute w-1/4 aspect-video rounded-lg overflow-hidden shadow-lg border-2 border-white dark:border-gray-800" :class="[
|
|
420
|
+
pipPositionClass,
|
|
421
|
+
]"
|
|
227
422
|
>
|
|
228
|
-
<
|
|
229
|
-
|
|
230
|
-
|
|
423
|
+
<template v-if="pipMain === 'screen'">
|
|
424
|
+
<video
|
|
425
|
+
v-if="!webcamError"
|
|
426
|
+
ref="webcamVideoRef"
|
|
427
|
+
controls
|
|
428
|
+
muted
|
|
429
|
+
playsinline
|
|
430
|
+
class="w-full h-full object-contain bg-black"
|
|
431
|
+
/>
|
|
432
|
+
<div
|
|
433
|
+
v-else
|
|
434
|
+
w-full h-full
|
|
435
|
+
bg-gray-200 dark:bg-gray-700
|
|
436
|
+
flex items-center justify-center
|
|
437
|
+
>
|
|
438
|
+
<span text-xs text-gray-500 dark:text-gray-400>
|
|
439
|
+
{{ t("streams.unavailable") }}
|
|
440
|
+
</span>
|
|
441
|
+
</div>
|
|
442
|
+
</template>
|
|
443
|
+
<template v-else>
|
|
444
|
+
<video
|
|
445
|
+
v-if="!screenError"
|
|
446
|
+
ref="screenVideoRef"
|
|
447
|
+
controls
|
|
448
|
+
muted
|
|
449
|
+
playsinline
|
|
450
|
+
class="w-full h-full object-contain bg-black"
|
|
451
|
+
/>
|
|
452
|
+
<div
|
|
453
|
+
v-else
|
|
454
|
+
w-full h-full
|
|
455
|
+
bg-gray-200 dark:bg-gray-700
|
|
456
|
+
flex items-center justify-center
|
|
457
|
+
>
|
|
458
|
+
<span text-xs text-gray-500 dark:text-gray-400>
|
|
459
|
+
{{ t("streams.unavailable") }}
|
|
460
|
+
</span>
|
|
461
|
+
</div>
|
|
462
|
+
</template>
|
|
231
463
|
</div>
|
|
232
464
|
</div>
|
|
233
465
|
</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as t}from"./index-BK3vjQva.js";const a="0.78.2",c="https://github.com/xcpcio/xcpcio",T="d6f6c78af9",I="https://xcpcio.com",r="Board - XCPCIO",_="Rating - XCPCIO",O="Balloon - XCPCIO",C="Resolver - XCPCIO",i="Countdown - XCPCIO",A=t(()=>window?window.CDN_HOST:""),o=t(()=>window?window.DATA_HOST:""),d=t(()=>o.value.replace("/data/","/rating-data/")),e=t(()=>window?window.DATA_REGION:"");export{a as A,O as B,A as C,o as D,c as G,d as R,r as T,I as X,T as a,e as b,i as c,_ as d,C as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as r,a}from"./NavBar-D7Ws8ePI.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c,o as s,a as o,b as m,r as p,F as i}from"./index-BK3vjQva.js";import"./Tooltip.vue_vue_type_script_setup_true_lang-DVShQdNz.js";import"./constant-DwAKIVXi.js";const u={},l={"py-10":"","text-gray-700":"","dark:text-gray-200":""};function f(d,g){const e=r,t=p("RouterView"),n=a;return s(),c(i,null,[o(e),m("main",l,[o(t),o(n)])],64)}const F=_(u,[["render",f]]);export{F as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const t={button:{about:{t:0,b:{t:2,i:[{t:3}],s:"About"}},back:{t:0,b:{t:2,i:[{t:3}],s:"Back"}},go:{t:0,b:{t:2,i:[{t:3}],s:"GO"}},home:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},confirm:{t:0,b:{t:2,i:[{t:3}],s:"Confirm"}},cancel:{t:0,b:{t:2,i:[{t:3}],s:"Cancel"}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:"Toggle dark mode"}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:"Change languages"}}},intro:{desc:{t:0,b:{t:2,i:[{t:3}],s:"Opinionated Vite Starter Template"}},"dynamic-route":{t:0,b:{t:2,i:[{t:3}],s:"Demo of dynamic route"}},hi:{t:0,b:{t:2,i:[{t:3,v:"Hi, "},{t:4,k:"name"},{t:3,v:"!"}]}},aka:{t:0,b:{t:2,i:[{t:3}],s:"Also known as"}},"whats-your-name":{t:0,b:{t:2,i:[{t:3}],s:"What's your name?"}}},"not-found":{t:0,b:{t:2,i:[{t:3}],s:"Not found"}},common:{loading:{t:0,b:{t:2,i:[{t:3}],s:"Loading"}},colon:{t:0,b:{t:2,i:[{t:3}],s:":"}}},index:{start:{t:0,b:{t:2,i:[{t:3}],s:"StartTime"}},duration:{t:0,b:{t:2,i:[{t:3}],s:"Duration"}}},type_menu:{rank:{t:0,b:{t:2,i:[{t:3}],s:"Rank"}},overview:{t:0,b:{t:2,i:[{t:3}],s:"Overview"}},submissions:{t:0,b:{t:2,i:[{t:3}],s:"Submissions"}},statistics:{t:0,b:{t:2,i:[{t:3}],s:"Statistics"}},streams:{t:0,b:{t:2,i:[{t:3}],s:"Streams"}},balloon:{t:0,b:{t:2,i:[{t:3}],s:"Balloon"}},resolver:{t:0,b:{t:2,i:[{t:3}],s:"Resolver"}},filter:{t:0,b:{t:2,i:[{t:3}],s:"Filter"}},options:{t:0,b:{t:2,i:[{t:3}],s:"Options"}},utility:{t:0,b:{t:2,i:[{t:3}],s:"Utility"}},countdown:{t:0,b:{t:2,i:[{t:3}],s:"Countdown"}}},streams:{webcam:{t:0,b:{t:2,i:[{t:3}],s:"Webcam"}},screen:{t:0,b:{t:2,i:[{t:3}],s:"Screen"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Stream unavailable"}}},utility:{tools:{t:0,b:{t:2,i:[{t:3}],s:"Tools"}},export:{t:0,b:{t:2,i:[{t:3}],s:"Export"}}},standings:{start_time:{t:0,b:{t:2,i:[{t:3}],s:"Start"}},end_time:{t:0,b:{t:2,i:[{t:3}],s:"End"}},elapsed:{t:0,b:{t:2,i:[{t:3}],s:"Elapsed"}},remaining:{t:0,b:{t:2,i:[{t:3}],s:"Remaining"}},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:"Problems"}},organizations:{t:0,b:{t:2,i:[{t:3}],s:"Organizations"}},teams:{t:0,b:{t:2,i:[{t:3}],s:"Teams"}},submissions:{t:0,b:{t:2,i:[{t:3}],s:"Submissions"}}},submit_heatmap:{t:0,b:{t:2,i:[{t:3}],s:"Submit Heatmap"}}},options:{calculation_of_penalty:{t:0,b:{t:2,i:[{t:3}],s:"Calculation Of Penalty"}},in_minutes:{t:0,b:{t:2,i:[{t:3}],s:"in minutes"}},in_seconds:{t:0,b:{t:2,i:[{t:3}],s:"in seconds"}},accumulate_in_seconds_and_finally_to_the_minute:{t:0,b:{t:2,i:[{t:3}],s:"Accumulate in seconds and finally to the minute"}}}},submissions:{total_submissions:{t:0,b:{t:2,i:[{t:3}],s:"Total Submissions"}}},team_info:{rank:{t:0,b:{t:2,i:[{t:3}],s:"Rank"}},team_name:{t:0,b:{t:2,i:[{t:3}],s:"Team Name"}},organization:{t:0,b:{t:2,i:[{t:3}],s:"Organization"}},group:{t:0,b:{t:2,i:[{t:3}],s:"Group"}},members:{t:0,b:{t:2,i:[{t:3}],s:"Members"}},coaches:{t:0,b:{t:2,i:[{t:3}],s:"Coaches"}},location:{t:0,b:{t:2,i:[{t:3}],s:"Location"}},award:{t:0,b:{t:2,i:[{t:3}],s:"Award"}}},medal:{gold:{t:0,b:{t:2,i:[{t:3}],s:"Gold Medal"}},silver:{t:0,b:{t:2,i:[{t:3}],s:"Silver Medal"}},bronze:{t:0,b:{t:2,i:[{t:3}],s:"Bronze Medal"}},honorable:{t:0,b:{t:2,i:[{t:3}],s:"Honorable Mention"}}}};export{t as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as p}from"./Resolver-DVrWZP6x.js";import{_ as l}from"./DataSourceInput.vue_vue_type_script_setup_true_lang-DE4jHYLG.js";import{b as d}from"./use-vmodel-C-KfQ0NC.js";import{e as f,c as e,o as t,F as h,q as c,u as r,b as v,a as n}from"./index-BK3vjQva.js";import{b as a}from"./route-block-B_A1xBdJ.js";import{_ as k}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./rank-BsQbvMFp.js";import"./dayjs-sKjsZKv5.js";import"./person-CITgECKA.js";import"./constant-DwAKIVXi.js";import"./TheInput.vue_vue_type_script_setup_true_lang-DrpFacxq.js";const x={key:0},b={"mt-20":""},g={key:1},y=f({__name:"CustomResolver",setup(m){const o=d();return(s,B)=>{const u=l,i=p;return t(),e(h,null,[r(o).length===0?(t(),e("div",x,[v("div",b,[n(u)])])):c("",!0),r(o).length>0?(t(),e("div",g,[n(i,{"data-source-url":r(o)},null,8,["data-source-url"])])):c("",!0)],64)}}}),_={};function C(m,o){const s=y;return t(),e("div",null,[n(s)])}typeof a=="function"&&a(_);const Q=k(_,[["render",C]]);export{Q as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as u}from"./Board-DDliK7fC.js";import{_ as i}from"./DataSourceInput.vue_vue_type_script_setup_true_lang-DE4jHYLG.js";import{b as f}from"./use-vmodel-C-KfQ0NC.js";import{e as l,c as e,o as t,a as n,q as d,u as a,F as B,G as k}from"./index-BK3vjQva.js";import{b as c}from"./route-block-B_A1xBdJ.js";import{_ as x}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./pagination-BkDeG1vq.js";import"./Tooltip.vue_vue_type_script_setup_true_lang-DVShQdNz.js";import"./TheInput.vue_vue_type_script_setup_true_lang-DrpFacxq.js";import"./rank-BsQbvMFp.js";import"./dayjs-sKjsZKv5.js";import"./person-CITgECKA.js";import"./ContestStateBadge-DlqaOjhy.js";import"./constant-DwAKIVXi.js";const h={key:0},C=l({__name:"CustomBoard",setup(m){const o=f();return(r,g)=>{const _=i,p=u;return t(),e(B,null,[n(_),a(o).length>0?(t(),e("div",h,[n(p,{"data-source-url":a(o)},null,8,["data-source-url"])])):d("",!0)],64)}}}),s={};function b(m,o){const r=C;return t(),k(r)}typeof c=="function"&&c(s);const j=x(s,[["render",b]]);export{j as default};
|
package/dist/favicon-dark.svg
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 512 512">
|
|
2
|
-
<path fill="#888888"
|
|
3
|
-
d="M391 307.27c32.75-46.35 46.59-101.63 39-155.68C416.47 55.59 327.38-11.54 231.38 2S68.24 104.53 81.73 200.53c7.57 53.89 36.12 103.16 80.37 138.74c26.91 21.64 57.59 36.1 86.05 41.33l-8.36 45.23a8 8 0 0 0 9 9.38L279 431c15.9 35.87 41.65 60.48 78.41 75l14.88 5.88l11.77-29.75l-14.88-5.89c-26.35-10.42-44.48-26.16-57-49.92l21.84-3.07a8 8 0 0 0 6.05-11.49l-20.49-41.16c25.98-12.87 51.49-35.18 71.42-63.33Zm-160.82 15.66c-41.26-16.32-76.3-52.7-91.45-94.94l-5.4-15.06l30.12-10.8l5.4 15.06c14.5 40.44 47.27 65.77 73.1 76l14.88 5.88l-11.77 29.76Z" />
|
|
4
|
-
</svg>
|
package/public/favicon-dark.svg
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 512 512">
|
|
2
|
-
<path fill="#888888"
|
|
3
|
-
d="M391 307.27c32.75-46.35 46.59-101.63 39-155.68C416.47 55.59 327.38-11.54 231.38 2S68.24 104.53 81.73 200.53c7.57 53.89 36.12 103.16 80.37 138.74c26.91 21.64 57.59 36.1 86.05 41.33l-8.36 45.23a8 8 0 0 0 9 9.38L279 431c15.9 35.87 41.65 60.48 78.41 75l14.88 5.88l11.77-29.75l-14.88-5.89c-26.35-10.42-44.48-26.16-57-49.92l21.84-3.07a8 8 0 0 0 6.05-11.49l-20.49-41.16c25.98-12.87 51.49-35.18 71.42-63.33Zm-160.82 15.66c-41.26-16.32-76.3-52.7-91.45-94.94l-5.4-15.06l30.12-10.8l5.4 15.06c14.5 40.44 47.27 65.77 73.1 76l14.88 5.88l-11.77 29.76Z" />
|
|
4
|
-
</svg>
|