@hadoku/watchparty-ui 0.44.20 → 0.45.2
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/chunks/{AdminPanel-CYbxabgY.js → AdminPanel-BGVD6Qlb.js} +4 -4
- package/dist/chunks/{AdminPanel-CYbxabgY.js.map → AdminPanel-BGVD6Qlb.js.map} +1 -1
- package/dist/chunks/{GameModule-Df1rYrJo.js → GameModule-Dx3GHtRk.js} +244 -247
- package/dist/chunks/GameModule-Dx3GHtRk.js.map +1 -0
- package/dist/chunks/{MapEditor-DgbOaCT2.js → MapEditor-yvJbXXgw.js} +319 -325
- package/dist/chunks/MapEditor-yvJbXXgw.js.map +1 -0
- package/dist/chunks/{MediaDrawer-Da6-fLeV.js → MediaDrawer-DLFj0-te.js} +293 -297
- package/dist/chunks/MediaDrawer-DLFj0-te.js.map +1 -0
- package/dist/chunks/{PlaylistPanel-fy0YV4nH.js → PlaylistPanel-B0SWGlFy.js} +124 -126
- package/dist/chunks/PlaylistPanel-B0SWGlFy.js.map +1 -0
- package/dist/chunks/Room-BVyJK3zM.js +6165 -0
- package/dist/chunks/Room-BVyJK3zM.js.map +1 -0
- package/dist/chunks/{index-B92W398r.js → index-DOLbMWw6.js} +1626 -1618
- package/dist/chunks/index-DOLbMWw6.js.map +1 -0
- package/dist/chunks/{submissionsApi-CHcpF-It.js → submissionsApi-CXZf_xlm.js} +2 -2
- package/dist/chunks/{submissionsApi-CHcpF-It.js.map → submissionsApi-CXZf_xlm.js.map} +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.js +1 -1
- package/dist/room-chrome.js +3 -2
- package/dist/room-chrome.js.map +1 -1
- package/dist/watchparty-ui.css +1 -1
- package/package.json +2 -2
- package/dist/chunks/GameModule-Df1rYrJo.js.map +0 -1
- package/dist/chunks/MapEditor-DgbOaCT2.js.map +0 -1
- package/dist/chunks/MediaDrawer-Da6-fLeV.js.map +0 -1
- package/dist/chunks/PlaylistPanel-fy0YV4nH.js.map +0 -1
- package/dist/chunks/Room-Ci6DN1Oi.js +0 -6137
- package/dist/chunks/Room-Ci6DN1Oi.js.map +0 -1
- package/dist/chunks/index-B92W398r.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as A, jsxs as o } from "react/jsx-runtime";
|
|
2
|
-
import { useState as
|
|
3
|
-
import { d as
|
|
2
|
+
import { useState as b, useEffect as v, useMemo as G, useRef as F } from "react";
|
|
3
|
+
import { d as h, w as j, j as W, O as Oe, s as ce, h as R, aC as Ze, aD as Ge, Z as De, aE as N, _ as Ce, aF as xe, G as se, aG as ye, aH as Ne, aI as Le, aJ as Me, aK as Ke, g as Re, aL as Je } from "./index-DOLbMWw6.js";
|
|
4
4
|
import { b as He } from "./cover-AUIrlUMF.js";
|
|
5
5
|
import { createPortal as We } from "react-dom";
|
|
6
|
-
import { S as Xe } from "./Room-
|
|
6
|
+
import { S as Xe } from "./Room-BVyJK3zM.js";
|
|
7
7
|
import { Icon as Ye } from "@wolffm/themes";
|
|
8
8
|
const Ve = "data:image/png;base64,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", Fe = 700, je = -1, _e = -2, $e = { endMatch: !1, rejectedStale: !1 };
|
|
9
9
|
function eA(e, n, r) {
|
|
@@ -26,19 +26,19 @@ function lA(e) {
|
|
|
26
26
|
}
|
|
27
27
|
const r = [];
|
|
28
28
|
for (const [a, s] of n) {
|
|
29
|
-
s.sort((
|
|
30
|
-
const
|
|
31
|
-
if (!
|
|
32
|
-
const
|
|
29
|
+
s.sort((u, C) => u.round_no - C.round_no);
|
|
30
|
+
const p = s.some((u) => u.session_over);
|
|
31
|
+
if (!p) continue;
|
|
32
|
+
const S = s[s.length - 1], E = s.find((u) => u.session_over) ?? S;
|
|
33
33
|
r.push({
|
|
34
34
|
session_id: a,
|
|
35
35
|
rounds: s,
|
|
36
|
-
final:
|
|
37
|
-
ended:
|
|
38
|
-
i_won_game:
|
|
39
|
-
my_final_score: s.reduce((
|
|
40
|
-
my_total_kills: s.reduce((
|
|
41
|
-
my_total_first_bloods: s.reduce((
|
|
36
|
+
final: S,
|
|
37
|
+
ended: p,
|
|
38
|
+
i_won_game: E.i_won,
|
|
39
|
+
my_final_score: s.reduce((u, C) => u + (C.my_round_score ?? 0), 0),
|
|
40
|
+
my_total_kills: s.reduce((u, C) => u + (C.my_kills ?? 0), 0),
|
|
41
|
+
my_total_first_bloods: s.reduce((u, C) => u + (C.my_first_bloods ?? 0), 0)
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
return r.sort((a, s) => s.final.ts - a.final.ts), r;
|
|
@@ -47,9 +47,9 @@ const ne = "/watchparty/stats/api";
|
|
|
47
47
|
async function re(e) {
|
|
48
48
|
try {
|
|
49
49
|
const n = await fetch(e, { credentials: "include" });
|
|
50
|
-
return n.ok ? await n.json() : (
|
|
50
|
+
return n.ok ? await n.json() : (j("stats", "leaderboard fetch non-ok", { url: e, status: n.status }), null);
|
|
51
51
|
} catch (n) {
|
|
52
|
-
return
|
|
52
|
+
return j("stats", "leaderboard fetch threw", { url: e, err: String(n) }), null;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
function ae({
|
|
@@ -57,7 +57,7 @@ function ae({
|
|
|
57
57
|
fallbackInitial: n,
|
|
58
58
|
size: r = 36
|
|
59
59
|
}) {
|
|
60
|
-
const a =
|
|
60
|
+
const a = W(e);
|
|
61
61
|
return /* @__PURE__ */ A(
|
|
62
62
|
"div",
|
|
63
63
|
{
|
|
@@ -88,34 +88,33 @@ function ae({
|
|
|
88
88
|
);
|
|
89
89
|
}
|
|
90
90
|
function sA({ open: e, onClose: n }) {
|
|
91
|
-
const [r, a] =
|
|
92
|
-
return
|
|
91
|
+
const [r, a] = b("lifetime"), [s, p] = b(null), [S, E] = b(null), [u, C] = b(null), [k, T] = b(!1), z = e ? r : null, [X, L] = b(null);
|
|
92
|
+
return z !== X && (L(z), z && T(!0)), v(() => {
|
|
93
93
|
if (!e) return;
|
|
94
|
-
|
|
95
|
-
let S = !1;
|
|
94
|
+
let Q = !1;
|
|
96
95
|
return (async () => {
|
|
97
96
|
if (r === "personal") {
|
|
98
|
-
const
|
|
99
|
-
|
|
97
|
+
const q = await re(`${ne}/me`);
|
|
98
|
+
Q || p(q);
|
|
100
99
|
} else if (r === "lifetime") {
|
|
101
|
-
const
|
|
100
|
+
const q = await re(
|
|
102
101
|
`${ne}/leaderboard?dim=elo&limit=20`
|
|
103
102
|
);
|
|
104
|
-
|
|
103
|
+
Q || E(q);
|
|
105
104
|
} else {
|
|
106
|
-
const
|
|
107
|
-
|
|
105
|
+
const q = await re(`${ne}/matches?limit=50`);
|
|
106
|
+
Q || C(q);
|
|
108
107
|
}
|
|
109
|
-
|
|
108
|
+
Q || (T(!1), h("stats", "modal.fetched", { tab: r }));
|
|
110
109
|
})(), () => {
|
|
111
|
-
|
|
110
|
+
Q = !0;
|
|
112
111
|
};
|
|
113
|
-
}, [e, r]),
|
|
112
|
+
}, [e, r]), v(() => {
|
|
114
113
|
if (!e) return;
|
|
115
|
-
const
|
|
116
|
-
|
|
114
|
+
const Q = (q) => {
|
|
115
|
+
q.key === "Escape" && (q.stopPropagation(), q.preventDefault(), n());
|
|
117
116
|
};
|
|
118
|
-
return window.addEventListener("keydown",
|
|
117
|
+
return window.addEventListener("keydown", Q, !0), () => window.removeEventListener("keydown", Q, !0);
|
|
119
118
|
}, [e, n]), e ? We(
|
|
120
119
|
/* @__PURE__ */ A(
|
|
121
120
|
"div",
|
|
@@ -127,7 +126,7 @@ function sA({ open: e, onClose: n }) {
|
|
|
127
126
|
"div",
|
|
128
127
|
{
|
|
129
128
|
className: "relative w-full max-w-3xl max-h-[85vh] overflow-hidden flex flex-col",
|
|
130
|
-
onClick: (
|
|
129
|
+
onClick: (Q) => Q.stopPropagation(),
|
|
131
130
|
style: {
|
|
132
131
|
background: "linear-gradient(180deg, #1a1d24 0%, #0f1116 100%)",
|
|
133
132
|
border: "2px solid #4b5159",
|
|
@@ -184,10 +183,10 @@ function sA({ open: e, onClose: n }) {
|
|
|
184
183
|
}
|
|
185
184
|
),
|
|
186
185
|
/* @__PURE__ */ o("div", { className: "flex-1 overflow-y-auto p-5", children: [
|
|
187
|
-
|
|
188
|
-
!
|
|
189
|
-
!
|
|
190
|
-
!
|
|
186
|
+
k && /* @__PURE__ */ A("p", { className: "text-sm", style: { color: "#9ca3af" }, children: "Loading..." }),
|
|
187
|
+
!k && r === "personal" && /* @__PURE__ */ A(dA, { data: s }),
|
|
188
|
+
!k && r === "lifetime" && /* @__PURE__ */ A(iA, { data: S }),
|
|
189
|
+
!k && r === "games" && /* @__PURE__ */ A(fA, { data: u })
|
|
191
190
|
] })
|
|
192
191
|
]
|
|
193
192
|
}
|
|
@@ -319,18 +318,18 @@ function iA({ data: e }) {
|
|
|
319
318
|
] });
|
|
320
319
|
}
|
|
321
320
|
function cA({ row: e, rank: n }) {
|
|
322
|
-
const r = e.display_name ?? "(unnamed)", a =
|
|
321
|
+
const r = e.display_name ?? "(unnamed)", a = W(e.last_sprite), s = n === 1;
|
|
323
322
|
return /* @__PURE__ */ o(
|
|
324
323
|
"tr",
|
|
325
324
|
{
|
|
326
325
|
style: {
|
|
327
326
|
background: s ? "linear-gradient(90deg, rgba(240,208,88,0.08) 0%, rgba(0,0,0,0.0) 100%)" : "transparent"
|
|
328
327
|
},
|
|
329
|
-
onMouseEnter: (
|
|
330
|
-
|
|
328
|
+
onMouseEnter: (p) => {
|
|
329
|
+
p.currentTarget.style.background = "linear-gradient(90deg, rgba(255,255,255,0.06) 0%, rgba(0,0,0,0.0) 100%)";
|
|
331
330
|
},
|
|
332
|
-
onMouseLeave: (
|
|
333
|
-
|
|
331
|
+
onMouseLeave: (p) => {
|
|
332
|
+
p.currentTarget.style.background = s ? "linear-gradient(90deg, rgba(240,208,88,0.08) 0%, rgba(0,0,0,0.0) 100%)" : "transparent";
|
|
334
333
|
},
|
|
335
334
|
children: [
|
|
336
335
|
/* @__PURE__ */ A(
|
|
@@ -368,20 +367,20 @@ function cA({ row: e, rank: n }) {
|
|
|
368
367
|
] })
|
|
369
368
|
}
|
|
370
369
|
),
|
|
371
|
-
Ee.map((
|
|
372
|
-
const
|
|
370
|
+
Ee.map((p) => {
|
|
371
|
+
const S = p.value(e), E = p.format ? p.format(S) : String(S);
|
|
373
372
|
return /* @__PURE__ */ A(
|
|
374
373
|
"td",
|
|
375
374
|
{
|
|
376
375
|
className: "px-2 py-2 text-right tabular-nums align-middle",
|
|
377
376
|
style: {
|
|
378
|
-
color: s &&
|
|
379
|
-
fontWeight:
|
|
377
|
+
color: s && p.accent ? "#f0d058" : "#f5f5f5",
|
|
378
|
+
fontWeight: p.accent ? 700 : 400,
|
|
380
379
|
borderBottom: "1px solid #2a2d33"
|
|
381
380
|
},
|
|
382
|
-
children:
|
|
381
|
+
children: E
|
|
383
382
|
},
|
|
384
|
-
|
|
383
|
+
p.label
|
|
385
384
|
);
|
|
386
385
|
})
|
|
387
386
|
]
|
|
@@ -472,7 +471,7 @@ function ke({
|
|
|
472
471
|
);
|
|
473
472
|
}
|
|
474
473
|
function fA({ data: e }) {
|
|
475
|
-
const [n, r] =
|
|
474
|
+
const [n, r] = b(null), a = G(
|
|
476
475
|
() => e ? lA(e.matches) : [],
|
|
477
476
|
[e]
|
|
478
477
|
);
|
|
@@ -503,33 +502,27 @@ function pA({
|
|
|
503
502
|
expanded: n,
|
|
504
503
|
onToggle: r
|
|
505
504
|
}) {
|
|
506
|
-
const [a, s] =
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
if (!n || !f) {
|
|
513
|
-
Q(null);
|
|
514
|
-
return;
|
|
515
|
-
}
|
|
516
|
-
C(!0);
|
|
517
|
-
let E = !1;
|
|
505
|
+
const [a, s] = b(e.rounds.length - 1);
|
|
506
|
+
!n && a !== e.rounds.length - 1 && s(e.rounds.length - 1);
|
|
507
|
+
const p = e.rounds[a], [S, E] = b(null), [u, C] = b(!1), k = n ? p ?? null : null, [T, z] = b(void 0);
|
|
508
|
+
k !== T && (z(k), k ? C(!0) : E(null)), v(() => {
|
|
509
|
+
if (!k) return;
|
|
510
|
+
let x = !1;
|
|
518
511
|
return (async () => {
|
|
519
|
-
const
|
|
520
|
-
`${ne}/matches/${
|
|
512
|
+
const i = await re(
|
|
513
|
+
`${ne}/matches/${k.match_id}`
|
|
521
514
|
);
|
|
522
|
-
|
|
515
|
+
x || (E(i), C(!1));
|
|
523
516
|
})(), () => {
|
|
524
|
-
|
|
517
|
+
x = !0;
|
|
525
518
|
};
|
|
526
|
-
}, [
|
|
527
|
-
const
|
|
519
|
+
}, [k]);
|
|
520
|
+
const X = W(e.final.my_sprite), L = e.i_won_game ? "WIN" : "LOSS", Q = e.i_won_game ? "#7ee787" : "#f87171", Y = new Date(e.final.ts * 1e3).toLocaleString(void 0, {
|
|
528
521
|
month: "short",
|
|
529
522
|
day: "numeric",
|
|
530
523
|
hour: "numeric",
|
|
531
524
|
minute: "2-digit"
|
|
532
|
-
}),
|
|
525
|
+
}), w = e.rounds.length;
|
|
533
526
|
return /* @__PURE__ */ o(
|
|
534
527
|
"div",
|
|
535
528
|
{
|
|
@@ -545,12 +538,12 @@ function pA({
|
|
|
545
538
|
type: "button",
|
|
546
539
|
onClick: r,
|
|
547
540
|
className: "w-full text-left px-3 py-2 flex items-center gap-3 cursor-pointer",
|
|
548
|
-
style: { borderLeft: `3px solid ${
|
|
549
|
-
onMouseEnter: (
|
|
550
|
-
|
|
541
|
+
style: { borderLeft: `3px solid ${X}` },
|
|
542
|
+
onMouseEnter: (x) => {
|
|
543
|
+
x.currentTarget.style.background = "rgba(255,255,255,0.04)";
|
|
551
544
|
},
|
|
552
|
-
onMouseLeave: (
|
|
553
|
-
|
|
545
|
+
onMouseLeave: (x) => {
|
|
546
|
+
x.currentTarget.style.background = "transparent";
|
|
554
547
|
},
|
|
555
548
|
children: [
|
|
556
549
|
/* @__PURE__ */ A(ae, { sprite: e.final.my_sprite, fallbackInitial: "?", size: 32 }),
|
|
@@ -560,11 +553,11 @@ function pA({
|
|
|
560
553
|
"span",
|
|
561
554
|
{
|
|
562
555
|
className: "text-xs font-black uppercase tracking-wider",
|
|
563
|
-
style: { color:
|
|
564
|
-
children:
|
|
556
|
+
style: { color: Q },
|
|
557
|
+
children: L
|
|
565
558
|
}
|
|
566
559
|
),
|
|
567
|
-
/* @__PURE__ */ A("span", { className: "text-xs", style: { color: "#9ca3af" }, children:
|
|
560
|
+
/* @__PURE__ */ A("span", { className: "text-xs", style: { color: "#9ca3af" }, children: Y })
|
|
568
561
|
] }),
|
|
569
562
|
/* @__PURE__ */ o(
|
|
570
563
|
"div",
|
|
@@ -572,9 +565,9 @@ function pA({
|
|
|
572
565
|
className: "text-[0.65rem] uppercase tracking-wider mt-0.5",
|
|
573
566
|
style: { color: "#9ca3af" },
|
|
574
567
|
children: [
|
|
575
|
-
|
|
568
|
+
w,
|
|
576
569
|
" round",
|
|
577
|
-
|
|
570
|
+
w === 1 ? "" : "s",
|
|
578
571
|
" ·",
|
|
579
572
|
" ",
|
|
580
573
|
e.final.player_count,
|
|
@@ -614,8 +607,8 @@ function pA({
|
|
|
614
607
|
"button",
|
|
615
608
|
{
|
|
616
609
|
type: "button",
|
|
617
|
-
onClick: (
|
|
618
|
-
|
|
610
|
+
onClick: (x) => {
|
|
611
|
+
x.stopPropagation(), s((i) => Math.max(0, i - 1));
|
|
619
612
|
},
|
|
620
613
|
disabled: a === 0,
|
|
621
614
|
"aria-label": "Previous round",
|
|
@@ -626,18 +619,18 @@ function pA({
|
|
|
626
619
|
),
|
|
627
620
|
/* @__PURE__ */ o("span", { children: [
|
|
628
621
|
"Round ",
|
|
629
|
-
|
|
622
|
+
p ? p.round_no + 1 : 1,
|
|
630
623
|
" of",
|
|
631
624
|
" ",
|
|
632
625
|
e.rounds.length,
|
|
633
|
-
|
|
626
|
+
p?.session_over ? " · final" : ""
|
|
634
627
|
] }),
|
|
635
628
|
/* @__PURE__ */ A(
|
|
636
629
|
"button",
|
|
637
630
|
{
|
|
638
631
|
type: "button",
|
|
639
|
-
onClick: (
|
|
640
|
-
|
|
632
|
+
onClick: (x) => {
|
|
633
|
+
x.stopPropagation(), s((i) => Math.min(e.rounds.length - 1, i + 1));
|
|
641
634
|
},
|
|
642
635
|
disabled: a === e.rounds.length - 1,
|
|
643
636
|
"aria-label": "Next round",
|
|
@@ -649,9 +642,9 @@ function pA({
|
|
|
649
642
|
]
|
|
650
643
|
}
|
|
651
644
|
),
|
|
652
|
-
|
|
653
|
-
!
|
|
654
|
-
!
|
|
645
|
+
u && /* @__PURE__ */ A("p", { className: "text-xs px-3 py-2", style: { color: "#9ca3af" }, children: "Loading..." }),
|
|
646
|
+
!u && S && /* @__PURE__ */ A(mA, { detail: S }),
|
|
647
|
+
!u && !S && /* @__PURE__ */ A("p", { className: "text-xs px-3 py-2", style: { color: "#9ca3af" }, children: "Couldn’t load this round." })
|
|
655
648
|
] })
|
|
656
649
|
]
|
|
657
650
|
}
|
|
@@ -716,7 +709,7 @@ function mA({ detail: e }) {
|
|
|
716
709
|
)
|
|
717
710
|
] }) }),
|
|
718
711
|
/* @__PURE__ */ A("tbody", { children: n.map((r) => {
|
|
719
|
-
const a = r.display_name ?? (r.is_bot ? `Bot ${r.player_id + 1}` : "(unnamed)"), s =
|
|
712
|
+
const a = r.display_name ?? (r.is_bot ? `Bot ${r.player_id + 1}` : "(unnamed)"), s = W(r.sprite);
|
|
720
713
|
return /* @__PURE__ */ o(
|
|
721
714
|
"tr",
|
|
722
715
|
{
|
|
@@ -795,60 +788,64 @@ function Qe() {
|
|
|
795
788
|
}
|
|
796
789
|
function gA() {
|
|
797
790
|
const e = `${Re()}/game/`, n = e.includes("?") ? "&" : "?";
|
|
798
|
-
return `${e}${n}net=1&v=${encodeURIComponent("0.
|
|
791
|
+
return `${e}${n}net=1&v=${encodeURIComponent("0.45.2")}`;
|
|
792
|
+
}
|
|
793
|
+
function hA() {
|
|
794
|
+
const { snapshot: e, me: n } = R.getState();
|
|
795
|
+
return !!e.leaderId && e.leaderId === n.clientId;
|
|
799
796
|
}
|
|
800
|
-
function
|
|
801
|
-
const e =
|
|
802
|
-
const t = Ze(
|
|
803
|
-
return Array.from({ length: Math.max(0,
|
|
804
|
-
}, [
|
|
805
|
-
width: `min(96vmin, ${
|
|
806
|
-
height: `min(96vmin, ${
|
|
807
|
-
}), [
|
|
808
|
-
let t = null, l = 0,
|
|
809
|
-
for (const [
|
|
810
|
-
|
|
811
|
-
return
|
|
812
|
-
}, [
|
|
797
|
+
function kA() {
|
|
798
|
+
const e = F(null), n = F(null), r = R((t) => t.snapshot.leaderId), a = R((t) => t.me.clientId), s = !!r && r === a, p = R((t) => t.roster), S = G(() => Object.values(p), [p]), E = R((t) => t.gameSessionWins), u = R((t) => t.gameBotCount), C = G(() => {
|
|
799
|
+
const t = Ze(S.flatMap((l) => l.sprite ? [l.sprite] : []));
|
|
800
|
+
return Array.from({ length: Math.max(0, u) }, (l, f) => ({ clientId: `ai:${f}`, sprite: t(), name: `Bot ${f + 1}` }));
|
|
801
|
+
}, [u, S]), k = S.length, T = u + k < ye, z = u > 0, X = Math.max(2, Math.min(ye, k + u)), L = Math.round(820 + (X - 2) * 52.5), Q = G(() => ({
|
|
802
|
+
width: `min(96vmin, ${L}px)`,
|
|
803
|
+
height: `min(96vmin, ${L}px)`
|
|
804
|
+
}), [L]), q = G(() => {
|
|
805
|
+
let t = null, l = 0, f = !1;
|
|
806
|
+
for (const [g, y] of Object.entries(E))
|
|
807
|
+
y <= 0 || (y > l ? (t = g, l = y, f = !1) : y === l && (f = !0));
|
|
808
|
+
return f ? null : t;
|
|
809
|
+
}, [E]), Y = G(() => gA(), []), [w, x] = b(Qe), [i, J] = b("pre-start"), [M, _] = b(te), [$, ee] = b(!1), [Ue, Ae] = b(!1), [D, ze] = b(!1), [K, fe] = b("loading"), Ie = K === "ready", m = G(() => {
|
|
813
810
|
try {
|
|
814
|
-
return new URL(
|
|
811
|
+
return new URL(Y, window.location.href).origin;
|
|
815
812
|
} catch {
|
|
816
813
|
return "*";
|
|
817
814
|
}
|
|
818
|
-
}, [
|
|
815
|
+
}, [Y]);
|
|
819
816
|
function Te() {
|
|
820
|
-
Ne(), _(te),
|
|
817
|
+
Ne(), _(te), J("countdown");
|
|
821
818
|
}
|
|
822
|
-
|
|
823
|
-
if (
|
|
824
|
-
if (
|
|
819
|
+
v(() => {
|
|
820
|
+
if (i !== "countdown") return;
|
|
821
|
+
if (M <= 0) {
|
|
825
822
|
s && Le("bomberman");
|
|
826
823
|
return;
|
|
827
824
|
}
|
|
828
825
|
const t = setTimeout(() => _((l) => l - 1), 1e3);
|
|
829
826
|
return () => clearTimeout(t);
|
|
830
|
-
}, [
|
|
831
|
-
const oe =
|
|
832
|
-
|
|
833
|
-
if (
|
|
827
|
+
}, [i, M, s]);
|
|
828
|
+
const oe = F(null);
|
|
829
|
+
v(() => {
|
|
830
|
+
if (i === "countdown" && !(w <= 0))
|
|
834
831
|
try {
|
|
835
832
|
if (!oe.current) {
|
|
836
|
-
const
|
|
837
|
-
oe.current = new
|
|
833
|
+
const H = window.AudioContext || window.webkitAudioContext;
|
|
834
|
+
oe.current = new H();
|
|
838
835
|
}
|
|
839
|
-
const t = oe.current, l =
|
|
840
|
-
P.type = "sine", P.frequency.value =
|
|
841
|
-
const
|
|
842
|
-
|
|
836
|
+
const t = oe.current, l = M <= 0, f = l ? 660 : 880, g = l ? 0.35 : 0.15, y = ie(w) * 0.35, P = t.createOscillator(), I = t.createGain();
|
|
837
|
+
P.type = "sine", P.frequency.value = f;
|
|
838
|
+
const B = t.currentTime;
|
|
839
|
+
I.gain.setValueAtTime(0, B), I.gain.linearRampToValueAtTime(y, B + 0.01), I.gain.exponentialRampToValueAtTime(1e-4, B + g), P.connect(I).connect(t.destination), P.start(B), P.stop(B + g + 0.01);
|
|
843
840
|
} catch {
|
|
844
841
|
}
|
|
845
|
-
}, [
|
|
842
|
+
}, [i, M, w]), v(() => {
|
|
846
843
|
let t = !1;
|
|
847
844
|
const l = () => {
|
|
848
845
|
if (t) return;
|
|
849
846
|
t = !0;
|
|
850
|
-
const
|
|
851
|
-
|
|
847
|
+
const f = e.current?.contentWindow;
|
|
848
|
+
f && f.postMessage(
|
|
852
849
|
{ __wpgame: "down", type: "unlock_audio" },
|
|
853
850
|
m === "null" ? "*" : m
|
|
854
851
|
), window.removeEventListener("pointerdown", l, !0), window.removeEventListener("keydown", l, !0);
|
|
@@ -857,80 +854,80 @@ function NA() {
|
|
|
857
854
|
window.removeEventListener("pointerdown", l, !0), window.removeEventListener("keydown", l, !0);
|
|
858
855
|
};
|
|
859
856
|
}, [m]);
|
|
860
|
-
const [Pe, pe] =
|
|
861
|
-
|
|
857
|
+
const [Pe, pe] = b(!1), me = F(!1);
|
|
858
|
+
v(() => {
|
|
862
859
|
me.current = $;
|
|
863
860
|
}, [$]);
|
|
864
|
-
const le =
|
|
865
|
-
return
|
|
866
|
-
if (
|
|
861
|
+
const le = F(0);
|
|
862
|
+
return v(() => {
|
|
863
|
+
if (i !== "ended" || !s || $) return;
|
|
867
864
|
const t = setTimeout(() => {
|
|
868
865
|
if (me.current) {
|
|
869
|
-
|
|
866
|
+
h("game", "auto-loop suppressed at fire time (sessionOver became true)");
|
|
870
867
|
return;
|
|
871
868
|
}
|
|
872
|
-
Ne(), _(te),
|
|
869
|
+
Ne(), _(te), J("countdown");
|
|
873
870
|
}, bA);
|
|
874
871
|
return () => clearTimeout(t);
|
|
875
|
-
}, [
|
|
872
|
+
}, [i, s, $]), v(() => {
|
|
876
873
|
Me();
|
|
877
|
-
}, []),
|
|
878
|
-
if (
|
|
874
|
+
}, []), v(() => {
|
|
875
|
+
if (K !== "loading") return;
|
|
879
876
|
const t = setTimeout(() => {
|
|
880
|
-
|
|
877
|
+
j("game", "world_built never arrived (30s) — escalating to error"), fe("error");
|
|
881
878
|
}, 3e4);
|
|
882
879
|
return () => clearTimeout(t);
|
|
883
|
-
}, [
|
|
880
|
+
}, [K]), v(() => {
|
|
884
881
|
if (!D) return;
|
|
885
882
|
const t = n.current;
|
|
886
|
-
t && (
|
|
883
|
+
t && (h("game", "replaying game_active preview after iframeReady"), e.current?.contentWindow?.postMessage(
|
|
887
884
|
{ __wpgame: "down", type: "preview", payload: t },
|
|
888
885
|
m === "null" ? "*" : m
|
|
889
886
|
));
|
|
890
|
-
}, [D, m]),
|
|
891
|
-
Ge(qe, String(
|
|
887
|
+
}, [D, m]), v(() => {
|
|
888
|
+
Ge(qe, String(w));
|
|
892
889
|
const t = e.current?.contentWindow;
|
|
893
890
|
if (!t) return;
|
|
894
|
-
const l = m === "null" ? "*" : m,
|
|
895
|
-
if (
|
|
896
|
-
const
|
|
897
|
-
for (let
|
|
898
|
-
|
|
899
|
-
const
|
|
900
|
-
|
|
901
|
-
}, 1500 / 30 *
|
|
902
|
-
return () =>
|
|
891
|
+
const l = m === "null" ? "*" : m, f = ie(w), g = (y) => t.postMessage({ __wpgame: "down", type: "volume", value: y }, l);
|
|
892
|
+
if (i === "countdown") {
|
|
893
|
+
const I = [];
|
|
894
|
+
for (let B = 1; B <= 30; B++)
|
|
895
|
+
I.push(window.setTimeout(() => {
|
|
896
|
+
const H = B / 30;
|
|
897
|
+
g(f * (1 - H));
|
|
898
|
+
}, 1500 / 30 * B));
|
|
899
|
+
return () => I.forEach(clearTimeout);
|
|
903
900
|
}
|
|
904
|
-
|
|
905
|
-
}, [
|
|
906
|
-
const t = De(), l = (
|
|
901
|
+
g(f);
|
|
902
|
+
}, [w, i, m]), v(() => {
|
|
903
|
+
const t = De(), l = (c) => {
|
|
907
904
|
e.current?.contentWindow?.postMessage(
|
|
908
|
-
{ __wpgame: "down", ...
|
|
905
|
+
{ __wpgame: "down", ...c },
|
|
909
906
|
m === "null" ? "*" : m
|
|
910
907
|
);
|
|
911
908
|
};
|
|
912
|
-
let
|
|
913
|
-
const
|
|
914
|
-
const d =
|
|
909
|
+
let f = 0, g = 0;
|
|
910
|
+
const y = (c) => {
|
|
911
|
+
const d = c.data;
|
|
915
912
|
if (!(!d || d.__wpgame !== "up"))
|
|
916
913
|
switch (d.type) {
|
|
917
914
|
case "ready":
|
|
918
|
-
|
|
915
|
+
h("game", "bridge.up.ready"), ze(!0), l({ type: "init", selfClientId: R.getState().me.clientId }), l({ type: "volume", value: ie(Qe()) });
|
|
919
916
|
break;
|
|
920
917
|
case "world_built":
|
|
921
|
-
|
|
918
|
+
j("game", "bridge.up.world_built"), fe("ready");
|
|
922
919
|
break;
|
|
923
920
|
case "focuschat":
|
|
924
|
-
|
|
921
|
+
h("game", "bridge.up.focuschat"), window.dispatchEvent(new CustomEvent("watchparty:focus-chat-input"));
|
|
925
922
|
break;
|
|
926
923
|
case "diag":
|
|
927
|
-
|
|
924
|
+
j("game", `host.diag.${d.event ?? "unknown"}`, d);
|
|
928
925
|
break;
|
|
929
926
|
case "start_request":
|
|
930
|
-
|
|
927
|
+
h("game", "bridge.up.start_request", { gameId: d.gameId }), t.emit(N.START_REQUEST, { gameId: d.gameId });
|
|
931
928
|
break;
|
|
932
929
|
case "game_result":
|
|
933
|
-
|
|
930
|
+
h("game", "bridge.up.game_result", { winnerPlayerId: d.winnerPlayerId, draw: d.draw, players: d.players?.length, sessionOver: d.sessionOver }), typeof d.sessionOver == "boolean" && ee(d.sessionOver), t.emit(N.RESULT, {
|
|
934
931
|
winnerPlayerId: d.winnerPlayerId ?? null,
|
|
935
932
|
draw: !!d.draw,
|
|
936
933
|
players: d.players ?? [],
|
|
@@ -942,85 +939,85 @@ function NA() {
|
|
|
942
939
|
});
|
|
943
940
|
break;
|
|
944
941
|
case "lobby_request":
|
|
945
|
-
|
|
942
|
+
h("game", "bridge.up.lobby_request"), hA() && Ke();
|
|
946
943
|
break;
|
|
947
944
|
case "restart_request":
|
|
948
|
-
|
|
945
|
+
h("game", "bridge.up.restart_request"), t.emit(N.COUNTDOWN_REQUEST);
|
|
949
946
|
break;
|
|
950
947
|
case "input":
|
|
951
|
-
++
|
|
948
|
+
++f % 30 === 0 && h("game", "bridge.up.input.sampled", { total: f }), t.emit(N.INPUT, { d: d.d });
|
|
952
949
|
break;
|
|
953
950
|
case "state":
|
|
954
|
-
++
|
|
951
|
+
++g % 30 === 0 && h("game", "bridge.up.state.sampled", { total: g, ph: d.d?.ph }), t.emit(N.STATE, { d: d.d });
|
|
955
952
|
break;
|
|
956
953
|
}
|
|
957
954
|
};
|
|
958
|
-
window.addEventListener("message",
|
|
959
|
-
const P = (
|
|
960
|
-
|
|
955
|
+
window.addEventListener("message", y);
|
|
956
|
+
const P = (c) => {
|
|
957
|
+
h("game", "socket.game_start", { hostClientId: c?.hostClientId, seed: c?.seed }), l({ type: "start", payload: c }), le.current = Date.now(), J("playing");
|
|
961
958
|
};
|
|
962
|
-
let
|
|
963
|
-
const
|
|
964
|
-
l({ type: "state", d:
|
|
965
|
-
const d =
|
|
966
|
-
++
|
|
967
|
-
const
|
|
968
|
-
if (
|
|
969
|
-
|
|
959
|
+
let I = 0;
|
|
960
|
+
const B = (c) => {
|
|
961
|
+
l({ type: "state", d: c?.d });
|
|
962
|
+
const d = c?.d?.ph, U = c?.d?.se;
|
|
963
|
+
++I % 30 === 0 && h("game", "socket.game_state.sampled", { total: I, ph: d });
|
|
964
|
+
const V = eA(d, U, Date.now() - le.current);
|
|
965
|
+
if (V.rejectedStale) {
|
|
966
|
+
h("game", "match.ended-rejected-stale", { sincePlaying: Date.now() - le.current, ph: d });
|
|
970
967
|
return;
|
|
971
968
|
}
|
|
972
|
-
|
|
969
|
+
V.endMatch && (h("game", "match.ended", { phase: V.outcome }), V.sessionOver !== void 0 && ee(V.sessionOver), J((ve) => ve === "playing" ? "ended" : ve));
|
|
973
970
|
};
|
|
974
|
-
let
|
|
975
|
-
const be = (
|
|
976
|
-
++
|
|
977
|
-
}, ge = (
|
|
978
|
-
!
|
|
979
|
-
}, he = (
|
|
980
|
-
|
|
981
|
-
}, Se = (
|
|
982
|
-
const d =
|
|
983
|
-
!d || typeof
|
|
984
|
-
}, we = (
|
|
985
|
-
const d =
|
|
971
|
+
let H = 0;
|
|
972
|
+
const be = (c) => {
|
|
973
|
+
++H % 30 === 0 && h("game", "socket.game_input.sampled", { total: H, fromClientId: c?.fromClientId }), l({ type: "input", fromClientId: c?.fromClientId, d: c?.d });
|
|
974
|
+
}, ge = (c) => {
|
|
975
|
+
!c?.gameId || !c?.seed || (h("game", "socket.game_active.preview", { gameId: c.gameId, players: c.players?.length }), n.current = c, l({ type: "preview", payload: c }), J((d) => d === "ended" ? "pre-start" : d), ee(!1));
|
|
976
|
+
}, he = (c) => {
|
|
977
|
+
h("game", "socket.game_countdown"), _(te), J("countdown"), ee(!1);
|
|
978
|
+
}, Se = (c) => {
|
|
979
|
+
const d = c?.client_id, U = c?.text;
|
|
980
|
+
!d || typeof U != "string" || !U || l({ type: "chat", clientId: d, text: U });
|
|
981
|
+
}, we = (c) => {
|
|
982
|
+
const d = c?.users;
|
|
986
983
|
if (Array.isArray(d))
|
|
987
|
-
for (const
|
|
988
|
-
|
|
984
|
+
for (const U of d)
|
|
985
|
+
U?.client_id && l({
|
|
989
986
|
type: "identity",
|
|
990
|
-
clientId:
|
|
991
|
-
name:
|
|
992
|
-
sprite:
|
|
987
|
+
clientId: U.client_id,
|
|
988
|
+
name: U.name ?? "",
|
|
989
|
+
sprite: U.sprite_id ?? U.sprite ?? null
|
|
993
990
|
});
|
|
994
991
|
};
|
|
995
|
-
return t.on(
|
|
996
|
-
window.removeEventListener("message",
|
|
992
|
+
return t.on(N.COUNTDOWN, he), t.on(N.ACTIVE, ge), t.on(N.START, P), t.on(N.STATE, B), t.on(N.INPUT, be), t.on(Ce.CHAT_BROADCAST, Se), t.on("presence", we), () => {
|
|
993
|
+
window.removeEventListener("message", y), t.off(N.COUNTDOWN, he), t.off(N.ACTIVE, ge), t.off(N.START, P), t.off(N.STATE, B), t.off(N.INPUT, be), t.off(Ce.CHAT_BROADCAST, Se), t.off("presence", we);
|
|
997
994
|
};
|
|
998
|
-
}, [m]),
|
|
995
|
+
}, [m]), v(() => {
|
|
999
996
|
if (!D) return;
|
|
1000
997
|
const t = (l) => {
|
|
1001
998
|
if (typeof document > "u" || document.hidden || !document.hasFocus()) return;
|
|
1002
|
-
const
|
|
1003
|
-
if (!
|
|
1004
|
-
const
|
|
1005
|
-
|
|
999
|
+
const f = l.target;
|
|
1000
|
+
if (!f || f.closest('input, textarea, [contenteditable="true"]')) return;
|
|
1001
|
+
const g = e.current?.contentWindow;
|
|
1002
|
+
g && g.postMessage(
|
|
1006
1003
|
{ __wpgame: "down", type: "focusgame" },
|
|
1007
1004
|
m === "null" ? "*" : m
|
|
1008
1005
|
);
|
|
1009
1006
|
};
|
|
1010
1007
|
return document.addEventListener("click", t), () => document.removeEventListener("click", t);
|
|
1011
|
-
}, [D, m]),
|
|
1012
|
-
if (!D ||
|
|
1008
|
+
}, [D, m]), v(() => {
|
|
1009
|
+
if (!D || i !== "playing" || typeof document > "u" || document.hidden || !document.hasFocus() || document.activeElement?.matches('input, textarea, [contenteditable="true"]')) return;
|
|
1013
1010
|
const l = e.current?.contentWindow;
|
|
1014
1011
|
l && l.postMessage(
|
|
1015
1012
|
{ __wpgame: "down", type: "focusgame" },
|
|
1016
1013
|
m === "null" ? "*" : m
|
|
1017
1014
|
);
|
|
1018
|
-
}, [D,
|
|
1015
|
+
}, [D, i, m]), v(() => {
|
|
1019
1016
|
if (!D) return;
|
|
1020
1017
|
const t = (l) => {
|
|
1021
1018
|
if (typeof document > "u" || document.hidden || !document.hasFocus() || !l.target?.matches('input, textarea, [contenteditable="true"]') || l.relatedTarget?.matches('input, textarea, [contenteditable="true"]')) return;
|
|
1022
|
-
const
|
|
1023
|
-
|
|
1019
|
+
const y = e.current?.contentWindow;
|
|
1020
|
+
y && y.postMessage(
|
|
1024
1021
|
{ __wpgame: "down", type: "focusgame" },
|
|
1025
1022
|
m === "null" ? "*" : m
|
|
1026
1023
|
);
|
|
@@ -1033,13 +1030,13 @@ function NA() {
|
|
|
1033
1030
|
"div",
|
|
1034
1031
|
{
|
|
1035
1032
|
className: "relative pointer-events-auto bg-black",
|
|
1036
|
-
style:
|
|
1033
|
+
style: Q,
|
|
1037
1034
|
children: [
|
|
1038
1035
|
/* @__PURE__ */ A(
|
|
1039
1036
|
"iframe",
|
|
1040
1037
|
{
|
|
1041
1038
|
ref: e,
|
|
1042
|
-
src:
|
|
1039
|
+
src: Y,
|
|
1043
1040
|
title: "Waiting room game",
|
|
1044
1041
|
className: "absolute inset-0 block w-full h-full border-0",
|
|
1045
1042
|
allow: "autoplay; fullscreen; gamepad"
|
|
@@ -1052,12 +1049,12 @@ function NA() {
|
|
|
1052
1049
|
alt: "",
|
|
1053
1050
|
"aria-hidden": !0,
|
|
1054
1051
|
"data-testid": "bomberman-cover",
|
|
1055
|
-
className: `absolute pointer-events-none select-none object-contain transition-opacity duration-1000 animate-cover-in ${
|
|
1052
|
+
className: `absolute pointer-events-none select-none object-contain transition-opacity duration-1000 animate-cover-in ${i === "pre-start" || !Ie ? "opacity-100" : "opacity-0"}`,
|
|
1056
1053
|
style: { top: "5.5%", left: "5.5%", right: "5.5%", bottom: "5.5%", width: "89%", height: "89%" },
|
|
1057
1054
|
draggable: !1
|
|
1058
1055
|
}
|
|
1059
1056
|
),
|
|
1060
|
-
(
|
|
1057
|
+
(i === "pre-start" || i === "countdown") && (S.length > 0 || C.length > 0) && /* @__PURE__ */ o(
|
|
1061
1058
|
"div",
|
|
1062
1059
|
{
|
|
1063
1060
|
className: "absolute z-10 pointer-events-none select-none flex flex-col items-center gap-1",
|
|
@@ -1065,10 +1062,10 @@ function NA() {
|
|
|
1065
1062
|
children: [
|
|
1066
1063
|
/* @__PURE__ */ A("span", { className: "text-[10px] font-black uppercase tracking-wider", style: Z, children: "Players" }),
|
|
1067
1064
|
/* @__PURE__ */ o("div", { className: "flex items-start gap-3 flex-wrap justify-center", style: { maxWidth: "70%" }, children: [
|
|
1068
|
-
|
|
1069
|
-
const l =
|
|
1065
|
+
S.map((t) => {
|
|
1066
|
+
const l = W(t.sprite), f = E[t.clientId] ?? 0, g = t.clientId === q;
|
|
1070
1067
|
return /* @__PURE__ */ o("div", { className: "relative flex flex-col items-center gap-0.5", style: { minWidth: 40 }, children: [
|
|
1071
|
-
|
|
1068
|
+
g && /* @__PURE__ */ A(
|
|
1072
1069
|
"span",
|
|
1073
1070
|
{
|
|
1074
1071
|
"aria-label": "top player crown",
|
|
@@ -1107,7 +1104,7 @@ function NA() {
|
|
|
1107
1104
|
}
|
|
1108
1105
|
),
|
|
1109
1106
|
/* @__PURE__ */ A("span", { className: "text-[11px] font-bold max-w-[60px] truncate", style: Z, children: t.name || "Anon" }),
|
|
1110
|
-
|
|
1107
|
+
f > 0 && /* @__PURE__ */ o(
|
|
1111
1108
|
"span",
|
|
1112
1109
|
{
|
|
1113
1110
|
className: "text-[10px] font-black",
|
|
@@ -1117,7 +1114,7 @@ function NA() {
|
|
|
1117
1114
|
/* yellow-300 */
|
|
1118
1115
|
},
|
|
1119
1116
|
children: [
|
|
1120
|
-
|
|
1117
|
+
f,
|
|
1121
1118
|
" W"
|
|
1122
1119
|
]
|
|
1123
1120
|
}
|
|
@@ -1125,7 +1122,7 @@ function NA() {
|
|
|
1125
1122
|
] }, t.clientId);
|
|
1126
1123
|
}),
|
|
1127
1124
|
C.map((t) => {
|
|
1128
|
-
const l =
|
|
1125
|
+
const l = W(t.sprite);
|
|
1129
1126
|
return /* @__PURE__ */ o("div", { className: "relative flex flex-col items-center gap-0.5", style: { minWidth: 40 }, children: [
|
|
1130
1127
|
/* @__PURE__ */ A(
|
|
1131
1128
|
"img",
|
|
@@ -1159,7 +1156,7 @@ function NA() {
|
|
|
1159
1156
|
] }, t.clientId);
|
|
1160
1157
|
})
|
|
1161
1158
|
] }),
|
|
1162
|
-
s &&
|
|
1159
|
+
s && i === "pre-start" && /* @__PURE__ */ o(
|
|
1163
1160
|
"div",
|
|
1164
1161
|
{
|
|
1165
1162
|
className: "pointer-events-auto flex items-center gap-2 mt-1",
|
|
@@ -1169,8 +1166,8 @@ function NA() {
|
|
|
1169
1166
|
"button",
|
|
1170
1167
|
{
|
|
1171
1168
|
type: "button",
|
|
1172
|
-
onClick: () => xe(Math.max(0,
|
|
1173
|
-
disabled: !
|
|
1169
|
+
onClick: () => xe(Math.max(0, u - 1)),
|
|
1170
|
+
disabled: !z,
|
|
1174
1171
|
"aria-label": "Remove a bot",
|
|
1175
1172
|
className: "font-black",
|
|
1176
1173
|
style: {
|
|
@@ -1178,12 +1175,12 @@ function NA() {
|
|
|
1178
1175
|
height: 28,
|
|
1179
1176
|
borderRadius: 6,
|
|
1180
1177
|
border: "1px solid #5b6473",
|
|
1181
|
-
background:
|
|
1182
|
-
color:
|
|
1178
|
+
background: z ? "linear-gradient(180deg, #fafafa 0%, #d1d5db 100%)" : "linear-gradient(180deg, #6b7280 0%, #4b5563 100%)",
|
|
1179
|
+
color: z ? "#111" : "#9ca3af",
|
|
1183
1180
|
boxShadow: "inset 0 -2px 0 #6b7280, inset 0 1px 0 #ffffff, 0 2px 4px rgba(0,0,0,0.45)",
|
|
1184
1181
|
fontSize: 16,
|
|
1185
1182
|
lineHeight: 1,
|
|
1186
|
-
cursor:
|
|
1183
|
+
cursor: z ? "pointer" : "not-allowed",
|
|
1187
1184
|
textShadow: "none"
|
|
1188
1185
|
},
|
|
1189
1186
|
children: "−"
|
|
@@ -1195,9 +1192,9 @@ function NA() {
|
|
|
1195
1192
|
className: "text-[10px] font-black uppercase tracking-wider",
|
|
1196
1193
|
style: Z,
|
|
1197
1194
|
children: [
|
|
1198
|
-
|
|
1195
|
+
u,
|
|
1199
1196
|
" Bot",
|
|
1200
|
-
|
|
1197
|
+
u === 1 ? "" : "s"
|
|
1201
1198
|
]
|
|
1202
1199
|
}
|
|
1203
1200
|
),
|
|
@@ -1205,8 +1202,8 @@ function NA() {
|
|
|
1205
1202
|
"button",
|
|
1206
1203
|
{
|
|
1207
1204
|
type: "button",
|
|
1208
|
-
onClick: () => xe(
|
|
1209
|
-
disabled: !
|
|
1205
|
+
onClick: () => xe(u + 1),
|
|
1206
|
+
disabled: !T,
|
|
1210
1207
|
"aria-label": "Add a bot",
|
|
1211
1208
|
className: "font-black",
|
|
1212
1209
|
style: {
|
|
@@ -1214,12 +1211,12 @@ function NA() {
|
|
|
1214
1211
|
height: 28,
|
|
1215
1212
|
borderRadius: 6,
|
|
1216
1213
|
border: "1px solid #5b6473",
|
|
1217
|
-
background:
|
|
1218
|
-
color:
|
|
1214
|
+
background: T ? "linear-gradient(180deg, #fafafa 0%, #d1d5db 100%)" : "linear-gradient(180deg, #6b7280 0%, #4b5563 100%)",
|
|
1215
|
+
color: T ? "#111" : "#9ca3af",
|
|
1219
1216
|
boxShadow: "inset 0 -2px 0 #6b7280, inset 0 1px 0 #ffffff, 0 2px 4px rgba(0,0,0,0.45)",
|
|
1220
1217
|
fontSize: 16,
|
|
1221
1218
|
lineHeight: 1,
|
|
1222
|
-
cursor:
|
|
1219
|
+
cursor: T ? "pointer" : "not-allowed",
|
|
1223
1220
|
textShadow: "none"
|
|
1224
1221
|
},
|
|
1225
1222
|
children: "+"
|
|
@@ -1231,7 +1228,7 @@ function NA() {
|
|
|
1231
1228
|
]
|
|
1232
1229
|
}
|
|
1233
1230
|
),
|
|
1234
|
-
|
|
1231
|
+
i === "pre-start" && /* @__PURE__ */ o(
|
|
1235
1232
|
"div",
|
|
1236
1233
|
{
|
|
1237
1234
|
className: "absolute z-20 pointer-events-none select-none flex items-end gap-6",
|
|
@@ -1288,7 +1285,7 @@ function NA() {
|
|
|
1288
1285
|
className: "flex items-center gap-2",
|
|
1289
1286
|
onMouseEnter: () => Ae(!0),
|
|
1290
1287
|
onMouseLeave: () => Ae(!1),
|
|
1291
|
-
title: `Game volume: ${Math.round(
|
|
1288
|
+
title: `Game volume: ${Math.round(w * 100)}%`,
|
|
1292
1289
|
children: [
|
|
1293
1290
|
/* @__PURE__ */ A(
|
|
1294
1291
|
"div",
|
|
@@ -1297,34 +1294,34 @@ function NA() {
|
|
|
1297
1294
|
"aria-label": "Game volume",
|
|
1298
1295
|
"aria-valuemin": 0,
|
|
1299
1296
|
"aria-valuemax": 100,
|
|
1300
|
-
"aria-valuenow": Math.round(
|
|
1297
|
+
"aria-valuenow": Math.round(w * 100),
|
|
1301
1298
|
tabIndex: 0,
|
|
1302
1299
|
onKeyDown: (t) => {
|
|
1303
|
-
t.key === "ArrowLeft" || t.key === "ArrowDown" ? (t.preventDefault(),
|
|
1300
|
+
t.key === "ArrowLeft" || t.key === "ArrowDown" ? (t.preventDefault(), x(Math.max(0, Math.round(w * 10 - 1) / 10))) : (t.key === "ArrowRight" || t.key === "ArrowUp") && (t.preventDefault(), x(Math.min(1, Math.round(w * 10 + 1) / 10)));
|
|
1304
1301
|
},
|
|
1305
1302
|
onFocus: () => Ae(!0),
|
|
1306
1303
|
onBlur: () => Ae(!1),
|
|
1307
1304
|
className: `flex items-center bg-black/40 backdrop-blur px-1.5 py-1 rounded transition-all duration-200 origin-right ${Ue ? "opacity-100 scale-x-100" : "opacity-0 scale-x-0 pointer-events-none"}`,
|
|
1308
1305
|
children: Array.from({ length: 10 }, (t, l) => {
|
|
1309
|
-
const
|
|
1306
|
+
const f = l + 1 <= Math.round(w * 10), g = l === 9;
|
|
1310
1307
|
return /* @__PURE__ */ A(
|
|
1311
1308
|
"button",
|
|
1312
1309
|
{
|
|
1313
1310
|
type: "button",
|
|
1314
1311
|
"aria-label": `Set volume to ${(l + 1) * 10}%`,
|
|
1315
|
-
onClick: () =>
|
|
1312
|
+
onClick: () => x((l + 1) / 10),
|
|
1316
1313
|
className: "flex-shrink-0 cursor-pointer hover:scale-110 transition-transform",
|
|
1317
1314
|
style: { width: 14, height: 22, padding: 0, background: "none", border: "none" },
|
|
1318
1315
|
children: /* @__PURE__ */ A(
|
|
1319
1316
|
"img",
|
|
1320
1317
|
{
|
|
1321
|
-
src:
|
|
1318
|
+
src: g ? oA : aA,
|
|
1322
1319
|
alt: "",
|
|
1323
1320
|
draggable: !1,
|
|
1324
1321
|
className: "w-full h-full pointer-events-none select-none",
|
|
1325
1322
|
style: {
|
|
1326
|
-
opacity:
|
|
1327
|
-
filter:
|
|
1323
|
+
opacity: f ? 1 : 0.25,
|
|
1324
|
+
filter: f ? "drop-shadow(0 0 3px rgba(255,140,0,0.7))" : "grayscale(1)"
|
|
1328
1325
|
}
|
|
1329
1326
|
}
|
|
1330
1327
|
)
|
|
@@ -1338,8 +1335,8 @@ function NA() {
|
|
|
1338
1335
|
"button",
|
|
1339
1336
|
{
|
|
1340
1337
|
type: "button",
|
|
1341
|
-
onClick: () =>
|
|
1342
|
-
"aria-label":
|
|
1338
|
+
onClick: () => x(w === 0 ? ue : 0),
|
|
1339
|
+
"aria-label": w === 0 ? "Unmute game" : "Mute game",
|
|
1343
1340
|
className: "w-14 h-14 flex-shrink-0 flex items-center justify-center cursor-pointer hover:scale-110 transition-transform rounded-full",
|
|
1344
1341
|
style: {
|
|
1345
1342
|
// Backdrop ring + drop-shadow so the gray-on-gray bezel is
|
|
@@ -1353,7 +1350,7 @@ function NA() {
|
|
|
1353
1350
|
{
|
|
1354
1351
|
src: AA,
|
|
1355
1352
|
alt: "",
|
|
1356
|
-
className: `w-full h-full select-none pointer-events-none transition-opacity ${
|
|
1353
|
+
className: `w-full h-full select-none pointer-events-none transition-opacity ${w === 0 ? "opacity-50 grayscale" : "opacity-100"}`,
|
|
1357
1354
|
draggable: !1
|
|
1358
1355
|
}
|
|
1359
1356
|
)
|
|
@@ -1434,7 +1431,7 @@ function NA() {
|
|
|
1434
1431
|
]
|
|
1435
1432
|
}
|
|
1436
1433
|
),
|
|
1437
|
-
|
|
1434
|
+
i === "countdown" && /* @__PURE__ */ A("div", { className: "absolute inset-0 z-20 flex items-center justify-center pointer-events-none select-none", children: /* @__PURE__ */ A(
|
|
1438
1435
|
"div",
|
|
1439
1436
|
{
|
|
1440
1437
|
className: "text-[10rem] font-black animate-[ping_0.5s_ease-out]",
|
|
@@ -1447,11 +1444,11 @@ function NA() {
|
|
|
1447
1444
|
WebkitTextStroke: "6px #000",
|
|
1448
1445
|
textShadow: "-3px -3px 0 #000, 3px -3px 0 #000, -3px 3px 0 #000, 3px 3px 0 #000, 0 8px 32px rgba(0,0,0,0.7)"
|
|
1449
1446
|
},
|
|
1450
|
-
children:
|
|
1447
|
+
children: M > 0 ? M : "GO!"
|
|
1451
1448
|
},
|
|
1452
|
-
|
|
1449
|
+
M
|
|
1453
1450
|
) }),
|
|
1454
|
-
|
|
1451
|
+
K === "loading" && (i === "pre-start" || i === "countdown") && /* @__PURE__ */ o(
|
|
1455
1452
|
"div",
|
|
1456
1453
|
{
|
|
1457
1454
|
className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20 px-6 py-3 rounded bg-black/60 backdrop-blur text-text-secondary text-sm pointer-events-none flex items-center gap-2",
|
|
@@ -1461,7 +1458,7 @@ function NA() {
|
|
|
1461
1458
|
]
|
|
1462
1459
|
}
|
|
1463
1460
|
),
|
|
1464
|
-
|
|
1461
|
+
K === "error" && (i === "pre-start" || i === "countdown") && /* @__PURE__ */ o("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20 px-6 py-4 rounded bg-black/80 backdrop-blur text-text text-sm flex flex-col items-center gap-3 pointer-events-auto", children: [
|
|
1465
1462
|
/* @__PURE__ */ A("span", { className: "bg-danger-bg text-on-danger-bg px-2 py-0.5 rounded font-semibold", children: "Game failed to load" }),
|
|
1466
1463
|
/* @__PURE__ */ A("span", { className: "text-text-secondary text-xs", children: "Bevy didn't report ready within 30s." }),
|
|
1467
1464
|
/* @__PURE__ */ A(
|
|
@@ -1474,7 +1471,7 @@ function NA() {
|
|
|
1474
1471
|
}
|
|
1475
1472
|
)
|
|
1476
1473
|
] }),
|
|
1477
|
-
s &&
|
|
1474
|
+
s && i === "pre-start" && K === "ready" && /* @__PURE__ */ A(
|
|
1478
1475
|
"button",
|
|
1479
1476
|
{
|
|
1480
1477
|
type: "button",
|
|
@@ -1496,7 +1493,7 @@ function NA() {
|
|
|
1496
1493
|
children: "Start Game"
|
|
1497
1494
|
}
|
|
1498
1495
|
),
|
|
1499
|
-
!s &&
|
|
1496
|
+
!s && i === "pre-start" && K === "ready" && /* @__PURE__ */ A("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20 px-6 py-3 rounded bg-black/60 backdrop-blur text-text-secondary text-sm pointer-events-none", children: "Waiting for the host to start the game…" })
|
|
1500
1497
|
]
|
|
1501
1498
|
}
|
|
1502
1499
|
),
|
|
@@ -1510,6 +1507,6 @@ function NA() {
|
|
|
1510
1507
|
] });
|
|
1511
1508
|
}
|
|
1512
1509
|
export {
|
|
1513
|
-
|
|
1510
|
+
kA as default
|
|
1514
1511
|
};
|
|
1515
|
-
//# sourceMappingURL=GameModule-
|
|
1512
|
+
//# sourceMappingURL=GameModule-Dx3GHtRk.js.map
|