@four-leaf-studios/rl-overlay 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +79 -77
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +80 -78
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/Overlay.tsx +5 -1
- package/test-overlay/package-lock.json +2697 -0
- package/test-overlay/package.json +3 -0
- package/test-overlay/public/mock-css.css +243 -292
- package/test-overlay/src/App.jsx +52 -2
package/dist/index.cjs.js
CHANGED
|
@@ -14,6 +14,83 @@ function useBroadcast() {
|
|
|
14
14
|
return ctx;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
const p=s=>!Array.isArray(s)&&typeof s=="object",l=(s,t)=>{const e=[],r=[];for(const[o,i]of Object.entries(s))if(p(i))if(o.startsWith("&")){const n=[...t],c=n.pop().split(",").map(j=>`${j.trim()}${o.substring(1)}`).join(",");e.push(...l(i,[...n,c]));}else if(o.startsWith("@"))e.push(`${o}{${u(i,t.join(" "))}}`);else {const n=o.split(",").map(c=>c.trim()).join(",");e.push(...l(i,[...t,n]));}else r.push(`${o}:${i}`);return r.length&&e.push(`${t.join(" ")}{${r.join(";")}}`),e},u=(s,t)=>l(s,[t]).reverse().join("");
|
|
18
|
+
|
|
19
|
+
// src/hooks/useOverlayStyles.ts
|
|
20
|
+
/**
|
|
21
|
+
* Hook that injects both team-color variables (from Broadcast)
|
|
22
|
+
* and optional custom styles (string or JSON) into the document.
|
|
23
|
+
* Uses `@rysh/json-to-css` for JSON → CSS conversion.
|
|
24
|
+
*/
|
|
25
|
+
function useOverlayStyles(broadcast, styles) {
|
|
26
|
+
React.useEffect(() => {
|
|
27
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
28
|
+
if (!(broadcast === null || broadcast === void 0 ? void 0 : broadcast.teams))
|
|
29
|
+
return;
|
|
30
|
+
const shade = (c, pct) => {
|
|
31
|
+
const hex = c.replace("#", "");
|
|
32
|
+
const num = parseInt(hex, 16);
|
|
33
|
+
const amt = Math.round(2.55 * pct);
|
|
34
|
+
let R = (num >> 16) + amt;
|
|
35
|
+
let G = ((num >> 8) & 0xff) + amt;
|
|
36
|
+
let B = (num & 0xff) + amt;
|
|
37
|
+
R = Math.min(255, Math.max(0, R));
|
|
38
|
+
G = Math.min(255, Math.max(0, G));
|
|
39
|
+
B = Math.min(255, Math.max(0, B));
|
|
40
|
+
return ("#" +
|
|
41
|
+
((1 << 24) + (R << 16) + (G << 8) + B)
|
|
42
|
+
.toString(16)
|
|
43
|
+
.slice(1)
|
|
44
|
+
.toUpperCase());
|
|
45
|
+
};
|
|
46
|
+
const defaultBlue = {
|
|
47
|
+
primary_color: "#0052cc",
|
|
48
|
+
secondary_color: "#ffffff",
|
|
49
|
+
mutual_color: "#00a8ff"};
|
|
50
|
+
const defaultOrange = {
|
|
51
|
+
primary_color: "#ff6600",
|
|
52
|
+
secondary_color: "#ffffff",
|
|
53
|
+
mutual_color: "#ffaa00"};
|
|
54
|
+
const blueColor = (_b = (_a = broadcast.teams.find((t) => t.side === "blue")) === null || _a === void 0 ? void 0 : _a.color) !== null && _b !== void 0 ? _b : defaultBlue;
|
|
55
|
+
const orangeColor = (_d = (_c = broadcast.teams.find((t) => t.side === "orange")) === null || _c === void 0 ? void 0 : _c.color) !== null && _d !== void 0 ? _d : defaultOrange;
|
|
56
|
+
const teamJSON = {
|
|
57
|
+
":root": {
|
|
58
|
+
"--team-left-primary": blueColor.primary_color,
|
|
59
|
+
"--team-left-primary-light": shade(blueColor.primary_color, 20),
|
|
60
|
+
"--team-left-primary-dark": shade(blueColor.primary_color, -20),
|
|
61
|
+
"--team-left-secondary": blueColor.secondary_color,
|
|
62
|
+
"--team-left-mutual": (_e = blueColor.mutual_color) !== null && _e !== void 0 ? _e : defaultBlue.mutual_color,
|
|
63
|
+
"--team-right-primary": orangeColor.primary_color,
|
|
64
|
+
"--team-right-primary-light": shade(orangeColor.primary_color, 20),
|
|
65
|
+
"--team-right-primary-dark": shade(orangeColor.primary_color, -20),
|
|
66
|
+
"--team-right-secondary": orangeColor.secondary_color,
|
|
67
|
+
"--team-right-mutual": (_f = orangeColor.mutual_color) !== null && _f !== void 0 ? _f : defaultOrange.mutual_color,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
// ==== CHANGE HERE: pass a second arg (root selector) ====
|
|
71
|
+
let cssText;
|
|
72
|
+
if (styles && typeof styles === "object") {
|
|
73
|
+
const merged = Object.assign(Object.assign({}, teamJSON), styles);
|
|
74
|
+
cssText = u(merged, ""); // <- empty string scopes at top
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
cssText = u(teamJSON, ""); // <- ditto
|
|
78
|
+
if (typeof styles === "string") {
|
|
79
|
+
cssText += "\n\n" + styles;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const styleEl = document.createElement("style");
|
|
83
|
+
styleEl.id = "overlay-styles";
|
|
84
|
+
styleEl.textContent = cssText;
|
|
85
|
+
(_g = document.getElementById("overlay-styles")) === null || _g === void 0 ? void 0 : _g.remove();
|
|
86
|
+
document.head.appendChild(styleEl);
|
|
87
|
+
return () => {
|
|
88
|
+
var _a;
|
|
89
|
+
(_a = document.getElementById("overlay-styles")) === null || _a === void 0 ? void 0 : _a.remove();
|
|
90
|
+
};
|
|
91
|
+
}, [broadcast, styles]);
|
|
92
|
+
}
|
|
93
|
+
|
|
17
94
|
const useShowGameComponents = () => {
|
|
18
95
|
const gameInitialized = rlSocketHook.useEvent("game:initialized");
|
|
19
96
|
const matchDestroyed = rlSocketHook.useEvent("game:match_destroyed");
|
|
@@ -343,6 +420,8 @@ var OverlaySlot$1 = React.memo(OverlaySlot);
|
|
|
343
420
|
|
|
344
421
|
const Overlay = ({ broadcast, overlay, preview, renderSlot, }) => {
|
|
345
422
|
const { components } = overlay;
|
|
423
|
+
// Inject team color CSS variables (--team-left-primary, etc.)
|
|
424
|
+
useOverlayStyles(broadcast);
|
|
346
425
|
// Collect CSS into one block
|
|
347
426
|
const cssString = components.map((c) => c.css).join("\n");
|
|
348
427
|
return (React.createElement(BroadcastProvider, { broadcast: broadcast },
|
|
@@ -382,83 +461,6 @@ Overlay.TargetPlayer = TargetPlayer$1;
|
|
|
382
461
|
Overlay.TargetBoost = TargetBoost$1;
|
|
383
462
|
Overlay.Replay = Replay;
|
|
384
463
|
|
|
385
|
-
const p=s=>!Array.isArray(s)&&typeof s=="object",l=(s,t)=>{const e=[],r=[];for(const[o,i]of Object.entries(s))if(p(i))if(o.startsWith("&")){const n=[...t],c=n.pop().split(",").map(j=>`${j.trim()}${o.substring(1)}`).join(",");e.push(...l(i,[...n,c]));}else if(o.startsWith("@"))e.push(`${o}{${u(i,t.join(" "))}}`);else {const n=o.split(",").map(c=>c.trim()).join(",");e.push(...l(i,[...t,n]));}else r.push(`${o}:${i}`);return r.length&&e.push(`${t.join(" ")}{${r.join(";")}}`),e},u=(s,t)=>l(s,[t]).reverse().join("");
|
|
386
|
-
|
|
387
|
-
// src/hooks/useOverlayStyles.ts
|
|
388
|
-
/**
|
|
389
|
-
* Hook that injects both team-color variables (from Broadcast)
|
|
390
|
-
* and optional custom styles (string or JSON) into the document.
|
|
391
|
-
* Uses `@rysh/json-to-css` for JSON → CSS conversion.
|
|
392
|
-
*/
|
|
393
|
-
function useOverlayStyles(broadcast, styles) {
|
|
394
|
-
React.useEffect(() => {
|
|
395
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
396
|
-
if (!(broadcast === null || broadcast === void 0 ? void 0 : broadcast.teams))
|
|
397
|
-
return;
|
|
398
|
-
const shade = (c, pct) => {
|
|
399
|
-
const hex = c.replace("#", "");
|
|
400
|
-
const num = parseInt(hex, 16);
|
|
401
|
-
const amt = Math.round(2.55 * pct);
|
|
402
|
-
let R = (num >> 16) + amt;
|
|
403
|
-
let G = ((num >> 8) & 0xff) + amt;
|
|
404
|
-
let B = (num & 0xff) + amt;
|
|
405
|
-
R = Math.min(255, Math.max(0, R));
|
|
406
|
-
G = Math.min(255, Math.max(0, G));
|
|
407
|
-
B = Math.min(255, Math.max(0, B));
|
|
408
|
-
return ("#" +
|
|
409
|
-
((1 << 24) + (R << 16) + (G << 8) + B)
|
|
410
|
-
.toString(16)
|
|
411
|
-
.slice(1)
|
|
412
|
-
.toUpperCase());
|
|
413
|
-
};
|
|
414
|
-
const defaultBlue = {
|
|
415
|
-
primary_color: "#0052cc",
|
|
416
|
-
secondary_color: "#ffffff",
|
|
417
|
-
mutual_color: "#00a8ff"};
|
|
418
|
-
const defaultOrange = {
|
|
419
|
-
primary_color: "#ff6600",
|
|
420
|
-
secondary_color: "#ffffff",
|
|
421
|
-
mutual_color: "#ffaa00"};
|
|
422
|
-
const blueColor = (_b = (_a = broadcast.teams.find((t) => t.side === "blue")) === null || _a === void 0 ? void 0 : _a.color) !== null && _b !== void 0 ? _b : defaultBlue;
|
|
423
|
-
const orangeColor = (_d = (_c = broadcast.teams.find((t) => t.side === "orange")) === null || _c === void 0 ? void 0 : _c.color) !== null && _d !== void 0 ? _d : defaultOrange;
|
|
424
|
-
const teamJSON = {
|
|
425
|
-
":root": {
|
|
426
|
-
"--team-left-primary": blueColor.primary_color,
|
|
427
|
-
"--team-left-primary-light": shade(blueColor.primary_color, 20),
|
|
428
|
-
"--team-left-primary-dark": shade(blueColor.primary_color, -20),
|
|
429
|
-
"--team-left-secondary": blueColor.secondary_color,
|
|
430
|
-
"--team-left-mutual": (_e = blueColor.mutual_color) !== null && _e !== void 0 ? _e : defaultBlue.mutual_color,
|
|
431
|
-
"--team-right-primary": orangeColor.primary_color,
|
|
432
|
-
"--team-right-primary-light": shade(orangeColor.primary_color, 20),
|
|
433
|
-
"--team-right-primary-dark": shade(orangeColor.primary_color, -20),
|
|
434
|
-
"--team-right-secondary": orangeColor.secondary_color,
|
|
435
|
-
"--team-right-mutual": (_f = orangeColor.mutual_color) !== null && _f !== void 0 ? _f : defaultOrange.mutual_color,
|
|
436
|
-
},
|
|
437
|
-
};
|
|
438
|
-
// ==== CHANGE HERE: pass a second arg (root selector) ====
|
|
439
|
-
let cssText;
|
|
440
|
-
if (styles && typeof styles === "object") {
|
|
441
|
-
const merged = Object.assign(Object.assign({}, teamJSON), styles);
|
|
442
|
-
cssText = u(merged, ""); // <- empty string scopes at top
|
|
443
|
-
}
|
|
444
|
-
else {
|
|
445
|
-
cssText = u(teamJSON, ""); // <- ditto
|
|
446
|
-
if (typeof styles === "string") {
|
|
447
|
-
cssText += "\n\n" + styles;
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
const styleEl = document.createElement("style");
|
|
451
|
-
styleEl.id = "overlay-styles";
|
|
452
|
-
styleEl.textContent = cssText;
|
|
453
|
-
(_g = document.getElementById("overlay-styles")) === null || _g === void 0 ? void 0 : _g.remove();
|
|
454
|
-
document.head.appendChild(styleEl);
|
|
455
|
-
return () => {
|
|
456
|
-
var _a;
|
|
457
|
-
(_a = document.getElementById("overlay-styles")) === null || _a === void 0 ? void 0 : _a.remove();
|
|
458
|
-
};
|
|
459
|
-
}, [broadcast, styles]);
|
|
460
|
-
}
|
|
461
|
-
|
|
462
464
|
exports.Overlay = Overlay;
|
|
463
465
|
exports.OverlaySlot = OverlaySlot;
|
|
464
466
|
exports.Player = Player;
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/context/BroadcastContext.tsx","../src/hooks/useShowGameComponents.ts","../src/ScoreboardTeam.tsx","../src/Timer.tsx","../src/ScoreboardSeriesBox.tsx","../src/ScoreboardGameBox.tsx","../src/hooks/useReplay.ts","../src/Scoreboard.tsx","../src/PlayerBoost.tsx","../src/Player.tsx","../src/Team.tsx","../src/Teams.tsx","../src/StatItem.tsx","../src/TargetPlayerLocation.tsx","../src/TargetPlayerStats.tsx","../src/hooks/useTargetPlayer.ts","../src/TargetPlayer.tsx","../src/TargetBoost.tsx","../src/Replay.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/registry.ts","../node_modules/tslib/tslib.es6.js","../src/OverlaySlot.tsx","../src/Overlay.tsx","../node_modules/@rysh/json-to-css/dist/json-to-css.esm.js","../src/hooks/useOverlayStyles.ts"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from \"react\";\r\nimport { Broadcast } from \"../types\";\r\n\r\nconst BroadcastContext = createContext<Broadcast | undefined>(undefined);\r\n\r\nexport const BroadcastProvider: React.FC<{\r\n broadcast: Broadcast;\r\n children: ReactNode;\r\n}> = ({ broadcast, children }) => (\r\n <BroadcastContext.Provider value={broadcast}>\r\n {children}\r\n </BroadcastContext.Provider>\r\n);\r\n\r\nexport function useBroadcast(): Broadcast {\r\n const ctx = useContext(BroadcastContext);\r\n if (ctx === undefined) {\r\n throw new Error(\"useBroadcast must be used within a BroadcastProvider\");\r\n }\r\n return ctx;\r\n}\r\n","import { useEvent, useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\nconst useShowGameComponents = () => {\r\n const gameInitialized = useEvent(\"game:initialized\");\r\n const matchDestroyed = useEvent(\"game:match_destroyed\");\r\n const hasGame = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.hasGame\r\n );\r\n\r\n return !!gameInitialized && !!hasGame && !matchDestroyed;\r\n};\r\n\r\nexport default useShowGameComponents;\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport React from \"react\";\r\nimport { Team } from \"./types\";\r\n\r\ninterface ScoreboardTeamProps {\r\n team: Team;\r\n}\r\n\r\nexport const ScoreboardTeam: React.FC<ScoreboardTeamProps> = ({ team }) => {\r\n const score = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.game.teams?.[team.id]?.score\r\n );\r\n\r\n const isLeftTeam = team.id === \"0\";\r\n const modifier = isLeftTeam ? \"left\" : \"right\";\r\n const teamColor = team?.color?.primary_color;\r\n\r\n return (\r\n <div\r\n data-component-id=\"ScoreboardTeam\"\r\n className={`scoreboard_team_box ${modifier}_scoreboard_team_box`}\r\n style={{ \"--team-color\": teamColor } as React.CSSProperties}\r\n >\r\n <div className={`name_box ${modifier}_name_box`}>\r\n {team?.name || (isLeftTeam ? \"Blue Team\" : \"Orange Team\")}\r\n </div>\r\n {team?.logo && (\r\n <img\r\n className={`logo_box ${modifier}_logo_box`}\r\n src={team.logo || \"/placeholder.svg\"}\r\n alt={team.name}\r\n />\r\n )}\r\n <div className={`score_box ${modifier}_score_box`}>{score}</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ScoreboardTeam;\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport React, { memo } from \"react\";\r\n\r\nconst TimerComponent: React.FC = () => {\r\n // Add proper null checks to prevent \"Cannot read properties of undefined\" error\r\n const time_seconds = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.game?.time_seconds,\r\n );\r\n\r\n // Return null if time_seconds is not available\r\n if (typeof time_seconds !== \"number\") return null;\r\n\r\n const minutes = Math.floor(time_seconds / 60);\r\n const seconds = time_seconds % 60;\r\n const formattedTime = `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\r\n\r\n return (\r\n <span data-component-id=\"Timer\" className=\"time_box\">\r\n {formattedTime}\r\n </span>\r\n );\r\n};\r\n\r\nexport const Timer = memo(TimerComponent);\r\nTimer.displayName = \"Timer\";\r\nexport default Timer;\r\n","import React, { memo } from \"react\";\r\nimport { Team } from \"./types\";\r\n\r\ninterface ScoreboardSeriesBoxProps {\r\n team: Team;\r\n seriesNumber: number;\r\n}\r\n\r\nexport const ScoreboardSeriesBoxComponent: React.FC<\r\n ScoreboardSeriesBoxProps\r\n> = ({ team, seriesNumber }) => {\r\n if (!seriesNumber) return null;\r\n\r\n const bestOf = Number(seriesNumber);\r\n const teamSeriesScore = Number(team.series_score) || 0;\r\n const pointsCount = Math.ceil(bestOf / 2);\r\n const points = Array.from({ length: pointsCount }, (_, index) => index);\r\n\r\n const isLeftTeam = team.id === \"0\";\r\n const modifier = isLeftTeam ? \"left\" : \"right\";\r\n const teamColor =\r\n team.color?.primary_color || (isLeftTeam ? \"#0052cc\" : \"#ff6600\");\r\n\r\n return (\r\n <div\r\n data-component-id=\"ScoreboardSeriesBox\"\r\n className={`series_box ${modifier}_series_box`}\r\n style={{ \"--team-color\": teamColor } as React.CSSProperties}\r\n >\r\n {points.map((index) => {\r\n const pointClass =\r\n index < teamSeriesScore\r\n ? `series_score_box_point ${modifier}_series_score_box_point`\r\n : `series_score_box_empty ${modifier}_series_score_box_empty`;\r\n return <div key={index} className={`series_score_box ${pointClass}`} />;\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nconst ScoreboardSeriesBox = memo(ScoreboardSeriesBoxComponent);\r\nScoreboardSeriesBox.displayName = \"ScoreboardSeriesBox\";\r\nexport default ScoreboardSeriesBox;\r\n","import React, { useMemo } from \"react\";\r\nimport { Broadcast } from \"./types\";\r\n\r\ninterface ScoreboardGameBoxProps {\r\n broadcast: Broadcast;\r\n}\r\n\r\nexport const ScoreboardGameBox: React.FC<ScoreboardGameBoxProps> = ({\r\n broadcast,\r\n}) => {\r\n const gameNumber = useMemo(() => {\r\n if (!broadcast.teams || broadcast.teams.length < 2) return 1;\r\n const team0Score = broadcast.teams[0].series_score || 0;\r\n const team1Score = broadcast.teams[1].series_score || 0;\r\n return team0Score + team1Score + 1;\r\n }, [broadcast.teams]);\r\n\r\n return (\r\n <div data-component-id=\"ScoreboardGameBox\" className=\"game_box\">\r\n Game {gameNumber} - BO {broadcast.series_number}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ScoreboardGameBox;\r\n","import { useEvent, useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\nconst useReplay = () => {\r\n const replayEndEvent = useEvent(\"game:replay_end\");\r\n const replayStartEvent = useEvent(\"game:replay_start\");\r\n const isReplay = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.game?.isReplay\r\n );\r\n\r\n const disabled = (!replayStartEvent && !isReplay) || replayEndEvent;\r\n\r\n return {\r\n active: !disabled,\r\n replayEndEvent,\r\n replayStartEvent,\r\n isReplay,\r\n };\r\n};\r\n\r\nexport default useReplay;\r\n","import { motion, AnimatePresence } from \"framer-motion\";\r\nimport React from \"react\";\r\nimport useShowGameComponents from \"./hooks/useShowGameComponents\";\r\nimport { useBroadcast } from \"./context/BroadcastContext\";\r\nimport ScoreboardTeam from \"./ScoreboardTeam\";\r\nimport Timer from \"./Timer\";\r\nimport ScoreboardSeriesBox from \"./ScoreboardSeriesBox\";\r\nimport ScoreboardGameBox from \"./ScoreboardGameBox\";\r\nimport useReplay from \"./hooks/useReplay\";\r\nimport { Team } from \"./types\";\r\n\r\nexport const Scoreboard = () => {\r\n const broadcast = useBroadcast();\r\n const showGameComponents = useShowGameComponents();\r\n const { active: replayActive } = useReplay();\r\n\r\n if (!broadcast || !broadcast.teams || broadcast.teams.length < 2) {\r\n return null;\r\n }\r\n\r\n if (!showGameComponents && replayActive) return null;\r\n\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n key={broadcast.id} // Ensures animation runs when broadcast updates\r\n data-component-id=\"Scoreboard\"\r\n className=\"scoreboard_box\"\r\n initial={{ y: -100, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -100, opacity: 0 }}\r\n transition={{ duration: 0.8, ease: [0.68, -0.55, 0.27, 1.55] }} // Mimics Svelte backInOut\r\n >\r\n {broadcast?.top_info_text && (\r\n <div className=\"top_bar\">{broadcast.top_info_text}</div>\r\n )}\r\n\r\n <div className=\"main_bar\">\r\n {broadcast.teams.map((team: any, idx: number) => (\r\n <ScoreboardTeam key={team.id || idx} team={team} />\r\n ))}\r\n <Timer />\r\n </div>\r\n\r\n <div className=\"bottom_bar\">\r\n {broadcast.teams.map((team: Team, idx: number) => (\r\n <ScoreboardSeriesBox\r\n key={team.id || idx}\r\n team={team}\r\n seriesNumber={broadcast.series_number}\r\n />\r\n ))}\r\n <ScoreboardGameBox broadcast={broadcast} />\r\n </div>\r\n </motion.div>\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport default Scoreboard;\r\n","import { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport React, { memo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\ntype Props = {\r\n team: PlayerState[\"team\"];\r\n boost: PlayerState[\"boost\"];\r\n};\r\n\r\nexport const PlayerBoost = ({ team, boost }: Props) => {\r\n const boostPercent = Math.min(Math.max(boost, 0), 100);\r\n const modifier = team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <div\r\n data-component-id=\"PlayerBoost\"\r\n className={`boost_meter ${modifier}_boost_meter`}\r\n >\r\n <motion.div\r\n className={`boost_meter_bar ${modifier}_boost_meter_bar`}\r\n initial={{ width: \"0%\" }}\r\n animate={{ width: `${boostPercent}%` }}\r\n transition={{ duration: 0.5, ease: \"easeInOut\" }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(PlayerBoost);\r\n","import React, { memo, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport PlayerBoost from \"./PlayerBoost\";\r\n\r\ntype Props = {\r\n player: PlayerState;\r\n};\r\n\r\nexport const Player = ({ player }: Props) => {\r\n const modifier = player.team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <motion.div\r\n key={player.id}\r\n data-component-id=\"Player\"\r\n className={`player_box ${modifier}_player_box`}\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 20 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n <div className={`player_boost ${modifier}_player_boost`}>\r\n {player.boost}\r\n </div>\r\n <div className={`player_name ${modifier}_player_name`}>{player.name}</div>\r\n <PlayerBoost key={player.id} boost={player.boost} team={player.team} />\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport default memo(Player);\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport React, { memo } from \"react\";\r\nimport { Team as TeamType } from \"./types\";\r\nimport Player from \"./Player\";\r\n\r\ntype Props = {\r\n id: TeamType[\"id\"];\r\n};\r\n\r\nexport const Team = ({ id }: Props) => {\r\n const players = useEventSelector(\"game:update_state\", (state) => {\r\n return (\r\n state?.players &&\r\n Object.values(state?.players).filter(\r\n (player) => player.team.toString() === id\r\n )\r\n );\r\n });\r\n\r\n const isLeft = id === \"0\";\r\n const modifier = isLeft ? \"left\" : \"right\";\r\n\r\n if (!players) return null;\r\n\r\n return (\r\n <motion.div\r\n data-component-id=\"Team\"\r\n className={`team_box ${modifier}_team_box`}\r\n initial={{ x: isLeft ? -300 : 300, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n exit={{ x: isLeft ? -300 : 300, opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.77, 0, 0.175, 1] }}\r\n >\r\n <AnimatePresence>\r\n {players.map((player) => (\r\n <Player player={player} key={player.id} />\r\n ))}\r\n </AnimatePresence>\r\n </motion.div>\r\n );\r\n};\r\n\r\nconst MemoizedTeam = memo(Team);\r\nMemoizedTeam.displayName = \"Team\";\r\nexport default MemoizedTeam;\r\n","import React from \"react\";\r\nimport Team from \"./Team\";\r\n\r\nexport const Teams = () => {\r\n return (\r\n <>\r\n <Team id={\"0\"} />\r\n <Team id={\"1\"} />\r\n </>\r\n );\r\n};\r\n\r\nexport default Teams;\r\n","// StatItem.tsx\r\nimport React from \"react\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\n// 1. Define what “primitive” means for us:\r\ntype Primitive = string | number | boolean;\r\n\r\n// 2. Extract just the keys whose values are Primitive:\r\ntype PrimitiveKeys<T> = {\r\n [K in keyof T]: T[K] extends Primitive ? K : never;\r\n}[keyof T];\r\n\r\n// 3. Now K can only be one of those “safe” keys:\r\ntype StatItemProps<K extends PrimitiveKeys<PlayerState>> = {\r\n id: K;\r\n label: string;\r\n value: PlayerState[K]; // guaranteed to be string|number|boolean\r\n};\r\n\r\nexport const StatItem = <K extends PrimitiveKeys<PlayerState>>({\r\n id,\r\n label,\r\n value,\r\n}: StatItemProps<K>) => (\r\n <li\r\n data-component-id=\"StatItem\"\r\n className={`stat_box_statistic stat_box_statistic_player_${id}`}\r\n >\r\n <span className=\"stat_box_statistic_name\">{label}</span>\r\n <span className=\"stat_box_statistic_value\">{value}</span>\r\n </li>\r\n);\r\n\r\nexport default StatItem;\r\n","import React, { memo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\ntype Props = {\r\n location: PlayerState[\"location\"];\r\n};\r\n\r\nexport const TargetPlayerLocation = ({ location }: Props) => {\r\n return (\r\n <motion.div\r\n data-component-id=\"TargetPlayerLocation\"\r\n className=\"stat_box_statistic stat_box_statistic_player_location\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 10 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <span className=\"stat_box_statistic_name\">Location</span>{\" \"}\r\n <span className=\"stat_box_statistic_value\">\r\n X {location.X?.toFixed(2) || 0}, Y {location.Y?.toFixed(2) || 0}, Z{\" \"}\r\n {location.Z?.toFixed(2) || 0}\r\n </span>\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport default memo(TargetPlayerLocation);\r\n","// TargetPlayerStats.tsx\r\nimport React, { memo } from \"react\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport StatItem from \"./StatItem\";\r\nimport TargetPlayerLocation from \"./TargetPlayerLocation\";\r\n\r\ntype Props = {\r\n targetPlayer: PlayerState;\r\n};\r\n\r\nexport const TargetPlayerStats = ({ targetPlayer }: Props) => (\r\n <ul data-component-id=\"TargetPlayerStats\" className=\"stat_box_statistics\">\r\n <StatItem id=\"id\" label=\"ID\" value={targetPlayer.id} />\r\n <StatItem id=\"team\" label=\"Team\" value={targetPlayer.team} />\r\n <StatItem id=\"score\" label=\"Score\" value={targetPlayer.score} />\r\n <StatItem id=\"goals\" label=\"Goals\" value={targetPlayer.goals} />\r\n <StatItem id=\"assists\" label=\"Assists\" value={targetPlayer.assists} />\r\n <StatItem id=\"shots\" label=\"Shots\" value={targetPlayer.shots} />\r\n <StatItem id=\"saves\" label=\"Saves\" value={targetPlayer.saves} />\r\n <StatItem id=\"touches\" label=\"Touches\" value={targetPlayer.touches} />\r\n <TargetPlayerLocation location={targetPlayer.location} />\r\n </ul>\r\n);\r\n\r\nexport default memo(TargetPlayerStats);\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\nconst useTargetPlayer = () => {\r\n const targetPlayer = useEventSelector(\"game:update_state\", (state) => {\r\n if (!state?.game.hasTarget) return null;\r\n\r\n const target = state?.game?.target;\r\n\r\n if (!state?.players || !target) return null;\r\n\r\n const player = Object.values(state?.players)?.find(\r\n (player) => player.id === target\r\n );\r\n\r\n return player;\r\n });\r\n\r\n return targetPlayer;\r\n};\r\n\r\nexport default useTargetPlayer;\r\n","// src/components/TargetPlayer.tsx\r\n\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport React, { memo } from \"react\";\r\nimport { useBroadcast } from \"./context/BroadcastContext\";\r\nimport PlayerBoost from \"./PlayerBoost\";\r\nimport TargetPlayerStats from \"./TargetPlayerStats\";\r\nimport useTargetPlayer from \"./hooks/useTargetPlayer\";\r\n\r\nexport const TargetPlayer = () => {\r\n const broadcast = useBroadcast();\r\n const targetPlayer = useTargetPlayer();\r\n\r\n // Safeguard conditions\r\n if (\r\n !targetPlayer ||\r\n !broadcast ||\r\n !broadcast.teams ||\r\n !broadcast.teams[targetPlayer.team]\r\n ) {\r\n return null;\r\n }\r\n\r\n const teamData = broadcast.teams[targetPlayer.team];\r\n const teamColor = teamData?.color?.primary_color ?? \"#ffffff\";\r\n const modifier = targetPlayer.team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n data-component-id=\"TargetPlayer\"\r\n key={targetPlayer.id}\r\n className={`stat_box ${modifier}_stat_box`}\r\n style={{ \"--team-color\": teamColor } as React.CSSProperties}\r\n initial={{ x: modifier === \"left\" ? -300 : 300, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n exit={{ x: modifier === \"left\" ? -300 : 300, opacity: 0 }}\r\n transition={{ duration: 0.8, ease: [0.77, 0, 0.175, 1] }}\r\n >\r\n <motion.div\r\n className={`stat_box_player ${modifier}_stat_box_player`}\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n {targetPlayer.name}\r\n </motion.div>\r\n\r\n {/* Player Stats */}\r\n <TargetPlayerStats targetPlayer={targetPlayer} />\r\n\r\n {/* Player Boost */}\r\n <motion.div\r\n className={`stat_box_player_boost ${modifier}_stat_box_player_boost`}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 10 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n <PlayerBoost boost={targetPlayer.boost} team={targetPlayer.team} />\r\n </motion.div>\r\n </motion.div>\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport default memo(TargetPlayer);\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport React, { memo } from \"react\";\r\nimport useTargetPlayer from \"./hooks/useTargetPlayer\";\r\n\r\nexport const TargetBoost = () => {\r\n const initialized = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.hasGame\r\n );\r\n const targetPlayer = useTargetPlayer();\r\n\r\n if (!targetPlayer || !initialized) return null;\r\n\r\n const modifier = targetPlayer.team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n data-component-id=\"TargetBoost\"\r\n key={targetPlayer.id}\r\n className={`target_boost ${modifier}_target_boost`}\r\n initial={{ x: 400, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n exit={{ x: 400, opacity: 0, scale: 0.9 }}\r\n transition={{ duration: 1, ease: [0.77, 0, 0.175, 1] }} // Quartic easing equivalent\r\n >\r\n <div\r\n className={`target_boost_container ${modifier}_target_boost_container`}\r\n >\r\n <div\r\n className={`target_boost_meter ${modifier}_target_boost_meter`}\r\n style={\r\n { \"--target_boost\": targetPlayer.boost } as React.CSSProperties\r\n }\r\n >\r\n <div\r\n className={`target_boost_meter_inner ${modifier}_target_boost_meter_inner`}\r\n ></div>\r\n </div>\r\n <svg className=\"target_boost_svg\">\r\n <circle\r\n className={`target_boost_svg_circle ${modifier}_target_boost_svg_circle`}\r\n cx=\"50%\"\r\n cy=\"50%\"\r\n r=\"50%\"\r\n />\r\n </svg>\r\n </div>\r\n <motion.div\r\n className={`target_boost_value ${modifier}_target_boost_value`}\r\n initial={{ scale: 0 }}\r\n animate={{ scale: 1 }}\r\n exit={{ scale: 0 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n {targetPlayer.boost}\r\n </motion.div>\r\n </motion.div>\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport default memo(TargetBoost);\r\n","import React from \"react\";\r\nimport useReplay from \"./hooks/useReplay\";\r\n\r\nexport const Replay = () => {\r\n const { active: replayActive } = useReplay();\r\n\r\n if (!replayActive) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"replay_box\">\r\n <div className=\"replay_text\">Replay</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Replay;\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from \"react\";\r\nimport PlayerBoost from \"./PlayerBoost\";\r\nimport Replay from \"./Replay\";\r\nimport Scoreboard from \"./Scoreboard\";\r\nimport TargetBoost from \"./TargetBoost\";\r\nimport TargetPlayer from \"./TargetPlayer\";\r\nimport Teams from \"./Teams\";\r\nimport Timer from \"./Timer\";\r\n\r\n// Component registry mapping code_id -> React component\r\nexport const componentRegistry: Record<string, React.ComponentType<any>> = {\r\n Scoreboard,\r\n Teams,\r\n TargetPlayer,\r\n TargetBoost,\r\n Replay,\r\n Timer,\r\n PlayerBoost,\r\n};\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React, { memo, type ReactNode } from \"react\";\r\nimport type { OverlayComponentData } from \"./types\";\r\n\r\ntype OverlaySlotProps = {\r\n component: OverlayComponentData;\r\n children: ReactNode;\r\n} & React.HTMLAttributes<HTMLDivElement>; // ✅ allow div props\r\n\r\nexport const OverlaySlot = ({\r\n component,\r\n children,\r\n ...rest\r\n}: OverlaySlotProps) => {\r\n const { id, name, position } = component;\r\n\r\n return (\r\n <div\r\n className=\"overlay-slot\"\r\n data-component-id={id}\r\n data-component-name={name}\r\n style={{\r\n position: \"absolute\",\r\n top: position?.top ?? 0,\r\n left: position?.left ?? 0,\r\n width: position?.width ?? \"auto\",\r\n height: position?.height ?? \"auto\",\r\n }}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(OverlaySlot);\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { RLProvider, WebsocketData } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport { BroadcastProvider } from \"./context/BroadcastContext\";\r\nimport type { Broadcast, OverlayObject } from \"./types\";\r\n\r\nimport Scoreboard from \"./Scoreboard\";\r\nimport Teams from \"./Teams\";\r\nimport TargetPlayer from \"./TargetPlayer\";\r\nimport TargetBoost from \"./TargetBoost\";\r\nimport Replay from \"./Replay\";\r\n\r\nimport \"./css/reset.css\";\r\nimport { componentRegistry } from \"./registry\";\r\nimport OverlaySlot from \"./OverlaySlot\";\r\n\r\nexport type OverlayProps = {\r\n broadcast: Broadcast;\r\n overlay: OverlayObject;\r\n preview?: boolean;\r\n renderSlot?: (\r\n comp: OverlayObject[\"components\"][number],\r\n Comp: any\r\n ) => React.ReactNode;\r\n};\r\n\r\nexport const Overlay = ({\r\n broadcast,\r\n overlay,\r\n preview,\r\n renderSlot,\r\n}: OverlayProps) => {\r\n const { components } = overlay;\r\n\r\n // Collect CSS into one block\r\n const cssString = components.map((c) => c.css).join(\"\\n\");\r\n\r\n return (\r\n <BroadcastProvider broadcast={broadcast}>\r\n <RLProvider>\r\n <div className=\"overlay-wrapper\">\r\n {/* Inject all component CSS */}\r\n <style>{cssString}</style>\r\n\r\n {/* The overlay itself */}\r\n <div\r\n className={`overlay ${preview ? \"testing\" : \"\"}`}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n aspectRatio: \"16/9\",\r\n maxWidth: \"1920px\",\r\n maxHeight: \"1080px\",\r\n display: \"block\",\r\n }}\r\n >\r\n {components.map((comp) => {\r\n const Comp = componentRegistry[comp.code_id];\r\n if (!Comp) {\r\n return (\r\n <div key={comp.id} style={{ color: \"red\", fontSize: \"14px\" }}>\r\n Missing component: {comp.code_id}\r\n </div>\r\n );\r\n }\r\n\r\n if (renderSlot) {\r\n // delegate to editor if provided\r\n return renderSlot(comp, Comp);\r\n }\r\n\r\n // default (non-edit mode)\r\n return (\r\n <OverlaySlot key={comp.id} component={comp}>\r\n <Comp {...comp} />\r\n </OverlaySlot>\r\n );\r\n })}\r\n </div>\r\n\r\n {/* Preview data panel on the right */}\r\n {preview && (\r\n <div className=\"testing-data\">\r\n <WebsocketData />\r\n </div>\r\n )}\r\n </div>\r\n </RLProvider>\r\n </BroadcastProvider>\r\n );\r\n};\r\n\r\n// expose slots (optional if you want named exports)\r\nOverlay.Scoreboard = Scoreboard;\r\nOverlay.Teams = Teams;\r\nOverlay.TargetPlayer = TargetPlayer;\r\nOverlay.TargetBoost = TargetBoost;\r\nOverlay.Replay = Replay;\r\n\r\nexport default Overlay;\r\n","const p=s=>!Array.isArray(s)&&typeof s==\"object\",l=(s,t)=>{const e=[],r=[];for(const[o,i]of Object.entries(s))if(p(i))if(o.startsWith(\"&\")){const n=[...t],c=n.pop().split(\",\").map(j=>`${j.trim()}${o.substring(1)}`).join(\",\");e.push(...l(i,[...n,c]))}else if(o.startsWith(\"@\"))e.push(`${o}{${u(i,t.join(\" \"))}}`);else{const n=o.split(\",\").map(c=>c.trim()).join(\",\");e.push(...l(i,[...t,n]))}else r.push(`${o}:${i}`);return r.length&&e.push(`${t.join(\" \")}{${r.join(\";\")}}`),e},u=(s,t)=>l(s,[t]).reverse().join(\"\");export{u as default};\n","// src/hooks/useOverlayStyles.ts\r\nimport { useEffect } from \"react\";\r\nimport jsonToCss from \"@rysh/json-to-css\";\r\nimport type { Broadcast, Color } from \"../types\";\r\n\r\nexport type CSSJSON = {\r\n [selector: string]: {\r\n [prop: string]: string | number;\r\n };\r\n};\r\n\r\n/**\r\n * Hook that injects both team-color variables (from Broadcast)\r\n * and optional custom styles (string or JSON) into the document.\r\n * Uses `@rysh/json-to-css` for JSON → CSS conversion.\r\n */\r\nexport function useOverlayStyles(\r\n broadcast: Broadcast,\r\n styles?: string | CSSJSON\r\n) {\r\n useEffect(() => {\r\n if (!broadcast?.teams) return;\r\n\r\n const shade = (c: string, pct: number): string => {\r\n const hex = c.replace(\"#\", \"\");\r\n const num = parseInt(hex, 16);\r\n const amt = Math.round(2.55 * pct);\r\n let R = (num >> 16) + amt;\r\n let G = ((num >> 8) & 0xff) + amt;\r\n let B = (num & 0xff) + amt;\r\n R = Math.min(255, Math.max(0, R));\r\n G = Math.min(255, Math.max(0, G));\r\n B = Math.min(255, Math.max(0, B));\r\n return (\r\n \"#\" +\r\n ((1 << 24) + (R << 16) + (G << 8) + B)\r\n .toString(16)\r\n .slice(1)\r\n .toUpperCase()\r\n );\r\n };\r\n\r\n const defaultBlue: Color = {\r\n id: \"\",\r\n name: \"\",\r\n primary_color: \"#0052cc\",\r\n secondary_color: \"#ffffff\",\r\n mutual_color: \"#00a8ff\",\r\n created_at: \"\",\r\n created_by: null,\r\n };\r\n const defaultOrange: Color = {\r\n id: \"\",\r\n name: \"\",\r\n primary_color: \"#ff6600\",\r\n secondary_color: \"#ffffff\",\r\n mutual_color: \"#ffaa00\",\r\n created_at: \"\",\r\n created_by: null,\r\n };\r\n\r\n const blueColor =\r\n broadcast.teams.find((t) => t.side === \"blue\")?.color ?? defaultBlue;\r\n const orangeColor =\r\n broadcast.teams.find((t) => t.side === \"orange\")?.color ?? defaultOrange;\r\n\r\n const teamJSON: CSSJSON = {\r\n \":root\": {\r\n \"--team-left-primary\": blueColor.primary_color,\r\n \"--team-left-primary-light\": shade(blueColor.primary_color, 20),\r\n \"--team-left-primary-dark\": shade(blueColor.primary_color, -20),\r\n \"--team-left-secondary\": blueColor.secondary_color,\r\n \"--team-left-mutual\":\r\n blueColor.mutual_color ?? defaultBlue.mutual_color!,\r\n\r\n \"--team-right-primary\": orangeColor.primary_color,\r\n \"--team-right-primary-light\": shade(orangeColor.primary_color, 20),\r\n \"--team-right-primary-dark\": shade(orangeColor.primary_color, -20),\r\n \"--team-right-secondary\": orangeColor.secondary_color,\r\n \"--team-right-mutual\":\r\n orangeColor.mutual_color ?? defaultOrange.mutual_color!,\r\n },\r\n };\r\n\r\n // ==== CHANGE HERE: pass a second arg (root selector) ====\r\n let cssText: string;\r\n if (styles && typeof styles === \"object\") {\r\n const merged: CSSJSON = { ...teamJSON, ...styles };\r\n cssText = jsonToCss(merged, \"\"); // <- empty string scopes at top\r\n } else {\r\n cssText = jsonToCss(teamJSON, \"\"); // <- ditto\r\n if (typeof styles === \"string\") {\r\n cssText += \"\\n\\n\" + styles;\r\n }\r\n }\r\n\r\n const styleEl = document.createElement(\"style\");\r\n styleEl.id = \"overlay-styles\";\r\n styleEl.textContent = cssText;\r\n document.getElementById(\"overlay-styles\")?.remove();\r\n document.head.appendChild(styleEl);\r\n\r\n return () => {\r\n document.getElementById(\"overlay-styles\")?.remove();\r\n };\r\n }, [broadcast, styles]);\r\n}\r\n"],"names":["createContext","useContext","useEvent","useEventSelector","memo","useMemo","AnimatePresence","motion","PlayerBoost","Player","Team","TargetPlayerLocation","TargetPlayerStats","TargetPlayer","TargetBoost","RLProvider","OverlaySlot","WebsocketData","useEffect","jsonToCss"],"mappings":"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","x_google_ignoreList":[19,21,24]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/context/BroadcastContext.tsx","../node_modules/@rysh/json-to-css/dist/json-to-css.esm.js","../src/hooks/useOverlayStyles.ts","../src/hooks/useShowGameComponents.ts","../src/ScoreboardTeam.tsx","../src/Timer.tsx","../src/ScoreboardSeriesBox.tsx","../src/ScoreboardGameBox.tsx","../src/hooks/useReplay.ts","../src/Scoreboard.tsx","../src/PlayerBoost.tsx","../src/Player.tsx","../src/Team.tsx","../src/Teams.tsx","../src/StatItem.tsx","../src/TargetPlayerLocation.tsx","../src/TargetPlayerStats.tsx","../src/hooks/useTargetPlayer.ts","../src/TargetPlayer.tsx","../src/TargetBoost.tsx","../src/Replay.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/registry.ts","../node_modules/tslib/tslib.es6.js","../src/OverlaySlot.tsx","../src/Overlay.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from \"react\";\r\nimport { Broadcast } from \"../types\";\r\n\r\nconst BroadcastContext = createContext<Broadcast | undefined>(undefined);\r\n\r\nexport const BroadcastProvider: React.FC<{\r\n broadcast: Broadcast;\r\n children: ReactNode;\r\n}> = ({ broadcast, children }) => (\r\n <BroadcastContext.Provider value={broadcast}>\r\n {children}\r\n </BroadcastContext.Provider>\r\n);\r\n\r\nexport function useBroadcast(): Broadcast {\r\n const ctx = useContext(BroadcastContext);\r\n if (ctx === undefined) {\r\n throw new Error(\"useBroadcast must be used within a BroadcastProvider\");\r\n }\r\n return ctx;\r\n}\r\n","const p=s=>!Array.isArray(s)&&typeof s==\"object\",l=(s,t)=>{const e=[],r=[];for(const[o,i]of Object.entries(s))if(p(i))if(o.startsWith(\"&\")){const n=[...t],c=n.pop().split(\",\").map(j=>`${j.trim()}${o.substring(1)}`).join(\",\");e.push(...l(i,[...n,c]))}else if(o.startsWith(\"@\"))e.push(`${o}{${u(i,t.join(\" \"))}}`);else{const n=o.split(\",\").map(c=>c.trim()).join(\",\");e.push(...l(i,[...t,n]))}else r.push(`${o}:${i}`);return r.length&&e.push(`${t.join(\" \")}{${r.join(\";\")}}`),e},u=(s,t)=>l(s,[t]).reverse().join(\"\");export{u as default};\n","// src/hooks/useOverlayStyles.ts\r\nimport { useEffect } from \"react\";\r\nimport jsonToCss from \"@rysh/json-to-css\";\r\nimport type { Broadcast, Color } from \"../types\";\r\n\r\nexport type CSSJSON = {\r\n [selector: string]: {\r\n [prop: string]: string | number;\r\n };\r\n};\r\n\r\n/**\r\n * Hook that injects both team-color variables (from Broadcast)\r\n * and optional custom styles (string or JSON) into the document.\r\n * Uses `@rysh/json-to-css` for JSON → CSS conversion.\r\n */\r\nexport function useOverlayStyles(\r\n broadcast: Broadcast,\r\n styles?: string | CSSJSON\r\n) {\r\n useEffect(() => {\r\n if (!broadcast?.teams) return;\r\n\r\n const shade = (c: string, pct: number): string => {\r\n const hex = c.replace(\"#\", \"\");\r\n const num = parseInt(hex, 16);\r\n const amt = Math.round(2.55 * pct);\r\n let R = (num >> 16) + amt;\r\n let G = ((num >> 8) & 0xff) + amt;\r\n let B = (num & 0xff) + amt;\r\n R = Math.min(255, Math.max(0, R));\r\n G = Math.min(255, Math.max(0, G));\r\n B = Math.min(255, Math.max(0, B));\r\n return (\r\n \"#\" +\r\n ((1 << 24) + (R << 16) + (G << 8) + B)\r\n .toString(16)\r\n .slice(1)\r\n .toUpperCase()\r\n );\r\n };\r\n\r\n const defaultBlue: Color = {\r\n id: \"\",\r\n name: \"\",\r\n primary_color: \"#0052cc\",\r\n secondary_color: \"#ffffff\",\r\n mutual_color: \"#00a8ff\",\r\n created_at: \"\",\r\n created_by: null,\r\n };\r\n const defaultOrange: Color = {\r\n id: \"\",\r\n name: \"\",\r\n primary_color: \"#ff6600\",\r\n secondary_color: \"#ffffff\",\r\n mutual_color: \"#ffaa00\",\r\n created_at: \"\",\r\n created_by: null,\r\n };\r\n\r\n const blueColor =\r\n broadcast.teams.find((t) => t.side === \"blue\")?.color ?? defaultBlue;\r\n const orangeColor =\r\n broadcast.teams.find((t) => t.side === \"orange\")?.color ?? defaultOrange;\r\n\r\n const teamJSON: CSSJSON = {\r\n \":root\": {\r\n \"--team-left-primary\": blueColor.primary_color,\r\n \"--team-left-primary-light\": shade(blueColor.primary_color, 20),\r\n \"--team-left-primary-dark\": shade(blueColor.primary_color, -20),\r\n \"--team-left-secondary\": blueColor.secondary_color,\r\n \"--team-left-mutual\":\r\n blueColor.mutual_color ?? defaultBlue.mutual_color!,\r\n\r\n \"--team-right-primary\": orangeColor.primary_color,\r\n \"--team-right-primary-light\": shade(orangeColor.primary_color, 20),\r\n \"--team-right-primary-dark\": shade(orangeColor.primary_color, -20),\r\n \"--team-right-secondary\": orangeColor.secondary_color,\r\n \"--team-right-mutual\":\r\n orangeColor.mutual_color ?? defaultOrange.mutual_color!,\r\n },\r\n };\r\n\r\n // ==== CHANGE HERE: pass a second arg (root selector) ====\r\n let cssText: string;\r\n if (styles && typeof styles === \"object\") {\r\n const merged: CSSJSON = { ...teamJSON, ...styles };\r\n cssText = jsonToCss(merged, \"\"); // <- empty string scopes at top\r\n } else {\r\n cssText = jsonToCss(teamJSON, \"\"); // <- ditto\r\n if (typeof styles === \"string\") {\r\n cssText += \"\\n\\n\" + styles;\r\n }\r\n }\r\n\r\n const styleEl = document.createElement(\"style\");\r\n styleEl.id = \"overlay-styles\";\r\n styleEl.textContent = cssText;\r\n document.getElementById(\"overlay-styles\")?.remove();\r\n document.head.appendChild(styleEl);\r\n\r\n return () => {\r\n document.getElementById(\"overlay-styles\")?.remove();\r\n };\r\n }, [broadcast, styles]);\r\n}\r\n","import { useEvent, useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\nconst useShowGameComponents = () => {\r\n const gameInitialized = useEvent(\"game:initialized\");\r\n const matchDestroyed = useEvent(\"game:match_destroyed\");\r\n const hasGame = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.hasGame\r\n );\r\n\r\n return !!gameInitialized && !!hasGame && !matchDestroyed;\r\n};\r\n\r\nexport default useShowGameComponents;\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport React from \"react\";\r\nimport { Team } from \"./types\";\r\n\r\ninterface ScoreboardTeamProps {\r\n team: Team;\r\n}\r\n\r\nexport const ScoreboardTeam: React.FC<ScoreboardTeamProps> = ({ team }) => {\r\n const score = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.game.teams?.[team.id]?.score\r\n );\r\n\r\n const isLeftTeam = team.id === \"0\";\r\n const modifier = isLeftTeam ? \"left\" : \"right\";\r\n const teamColor = team?.color?.primary_color;\r\n\r\n return (\r\n <div\r\n data-component-id=\"ScoreboardTeam\"\r\n className={`scoreboard_team_box ${modifier}_scoreboard_team_box`}\r\n style={{ \"--team-color\": teamColor } as React.CSSProperties}\r\n >\r\n <div className={`name_box ${modifier}_name_box`}>\r\n {team?.name || (isLeftTeam ? \"Blue Team\" : \"Orange Team\")}\r\n </div>\r\n {team?.logo && (\r\n <img\r\n className={`logo_box ${modifier}_logo_box`}\r\n src={team.logo || \"/placeholder.svg\"}\r\n alt={team.name}\r\n />\r\n )}\r\n <div className={`score_box ${modifier}_score_box`}>{score}</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ScoreboardTeam;\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport React, { memo } from \"react\";\r\n\r\nconst TimerComponent: React.FC = () => {\r\n // Add proper null checks to prevent \"Cannot read properties of undefined\" error\r\n const time_seconds = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.game?.time_seconds,\r\n );\r\n\r\n // Return null if time_seconds is not available\r\n if (typeof time_seconds !== \"number\") return null;\r\n\r\n const minutes = Math.floor(time_seconds / 60);\r\n const seconds = time_seconds % 60;\r\n const formattedTime = `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\r\n\r\n return (\r\n <span data-component-id=\"Timer\" className=\"time_box\">\r\n {formattedTime}\r\n </span>\r\n );\r\n};\r\n\r\nexport const Timer = memo(TimerComponent);\r\nTimer.displayName = \"Timer\";\r\nexport default Timer;\r\n","import React, { memo } from \"react\";\r\nimport { Team } from \"./types\";\r\n\r\ninterface ScoreboardSeriesBoxProps {\r\n team: Team;\r\n seriesNumber: number;\r\n}\r\n\r\nexport const ScoreboardSeriesBoxComponent: React.FC<\r\n ScoreboardSeriesBoxProps\r\n> = ({ team, seriesNumber }) => {\r\n if (!seriesNumber) return null;\r\n\r\n const bestOf = Number(seriesNumber);\r\n const teamSeriesScore = Number(team.series_score) || 0;\r\n const pointsCount = Math.ceil(bestOf / 2);\r\n const points = Array.from({ length: pointsCount }, (_, index) => index);\r\n\r\n const isLeftTeam = team.id === \"0\";\r\n const modifier = isLeftTeam ? \"left\" : \"right\";\r\n const teamColor =\r\n team.color?.primary_color || (isLeftTeam ? \"#0052cc\" : \"#ff6600\");\r\n\r\n return (\r\n <div\r\n data-component-id=\"ScoreboardSeriesBox\"\r\n className={`series_box ${modifier}_series_box`}\r\n style={{ \"--team-color\": teamColor } as React.CSSProperties}\r\n >\r\n {points.map((index) => {\r\n const pointClass =\r\n index < teamSeriesScore\r\n ? `series_score_box_point ${modifier}_series_score_box_point`\r\n : `series_score_box_empty ${modifier}_series_score_box_empty`;\r\n return <div key={index} className={`series_score_box ${pointClass}`} />;\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nconst ScoreboardSeriesBox = memo(ScoreboardSeriesBoxComponent);\r\nScoreboardSeriesBox.displayName = \"ScoreboardSeriesBox\";\r\nexport default ScoreboardSeriesBox;\r\n","import React, { useMemo } from \"react\";\r\nimport { Broadcast } from \"./types\";\r\n\r\ninterface ScoreboardGameBoxProps {\r\n broadcast: Broadcast;\r\n}\r\n\r\nexport const ScoreboardGameBox: React.FC<ScoreboardGameBoxProps> = ({\r\n broadcast,\r\n}) => {\r\n const gameNumber = useMemo(() => {\r\n if (!broadcast.teams || broadcast.teams.length < 2) return 1;\r\n const team0Score = broadcast.teams[0].series_score || 0;\r\n const team1Score = broadcast.teams[1].series_score || 0;\r\n return team0Score + team1Score + 1;\r\n }, [broadcast.teams]);\r\n\r\n return (\r\n <div data-component-id=\"ScoreboardGameBox\" className=\"game_box\">\r\n Game {gameNumber} - BO {broadcast.series_number}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ScoreboardGameBox;\r\n","import { useEvent, useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\nconst useReplay = () => {\r\n const replayEndEvent = useEvent(\"game:replay_end\");\r\n const replayStartEvent = useEvent(\"game:replay_start\");\r\n const isReplay = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.game?.isReplay\r\n );\r\n\r\n const disabled = (!replayStartEvent && !isReplay) || replayEndEvent;\r\n\r\n return {\r\n active: !disabled,\r\n replayEndEvent,\r\n replayStartEvent,\r\n isReplay,\r\n };\r\n};\r\n\r\nexport default useReplay;\r\n","import { motion, AnimatePresence } from \"framer-motion\";\r\nimport React from \"react\";\r\nimport useShowGameComponents from \"./hooks/useShowGameComponents\";\r\nimport { useBroadcast } from \"./context/BroadcastContext\";\r\nimport ScoreboardTeam from \"./ScoreboardTeam\";\r\nimport Timer from \"./Timer\";\r\nimport ScoreboardSeriesBox from \"./ScoreboardSeriesBox\";\r\nimport ScoreboardGameBox from \"./ScoreboardGameBox\";\r\nimport useReplay from \"./hooks/useReplay\";\r\nimport { Team } from \"./types\";\r\n\r\nexport const Scoreboard = () => {\r\n const broadcast = useBroadcast();\r\n const showGameComponents = useShowGameComponents();\r\n const { active: replayActive } = useReplay();\r\n\r\n if (!broadcast || !broadcast.teams || broadcast.teams.length < 2) {\r\n return null;\r\n }\r\n\r\n if (!showGameComponents && replayActive) return null;\r\n\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n key={broadcast.id} // Ensures animation runs when broadcast updates\r\n data-component-id=\"Scoreboard\"\r\n className=\"scoreboard_box\"\r\n initial={{ y: -100, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -100, opacity: 0 }}\r\n transition={{ duration: 0.8, ease: [0.68, -0.55, 0.27, 1.55] }} // Mimics Svelte backInOut\r\n >\r\n {broadcast?.top_info_text && (\r\n <div className=\"top_bar\">{broadcast.top_info_text}</div>\r\n )}\r\n\r\n <div className=\"main_bar\">\r\n {broadcast.teams.map((team: any, idx: number) => (\r\n <ScoreboardTeam key={team.id || idx} team={team} />\r\n ))}\r\n <Timer />\r\n </div>\r\n\r\n <div className=\"bottom_bar\">\r\n {broadcast.teams.map((team: Team, idx: number) => (\r\n <ScoreboardSeriesBox\r\n key={team.id || idx}\r\n team={team}\r\n seriesNumber={broadcast.series_number}\r\n />\r\n ))}\r\n <ScoreboardGameBox broadcast={broadcast} />\r\n </div>\r\n </motion.div>\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport default Scoreboard;\r\n","import { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport React, { memo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\ntype Props = {\r\n team: PlayerState[\"team\"];\r\n boost: PlayerState[\"boost\"];\r\n};\r\n\r\nexport const PlayerBoost = ({ team, boost }: Props) => {\r\n const boostPercent = Math.min(Math.max(boost, 0), 100);\r\n const modifier = team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <div\r\n data-component-id=\"PlayerBoost\"\r\n className={`boost_meter ${modifier}_boost_meter`}\r\n >\r\n <motion.div\r\n className={`boost_meter_bar ${modifier}_boost_meter_bar`}\r\n initial={{ width: \"0%\" }}\r\n animate={{ width: `${boostPercent}%` }}\r\n transition={{ duration: 0.5, ease: \"easeInOut\" }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(PlayerBoost);\r\n","import React, { memo, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport PlayerBoost from \"./PlayerBoost\";\r\n\r\ntype Props = {\r\n player: PlayerState;\r\n};\r\n\r\nexport const Player = ({ player }: Props) => {\r\n const modifier = player.team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <motion.div\r\n key={player.id}\r\n data-component-id=\"Player\"\r\n className={`player_box ${modifier}_player_box`}\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 20 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n <div className={`player_boost ${modifier}_player_boost`}>\r\n {player.boost}\r\n </div>\r\n <div className={`player_name ${modifier}_player_name`}>{player.name}</div>\r\n <PlayerBoost key={player.id} boost={player.boost} team={player.team} />\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport default memo(Player);\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport React, { memo } from \"react\";\r\nimport { Team as TeamType } from \"./types\";\r\nimport Player from \"./Player\";\r\n\r\ntype Props = {\r\n id: TeamType[\"id\"];\r\n};\r\n\r\nexport const Team = ({ id }: Props) => {\r\n const players = useEventSelector(\"game:update_state\", (state) => {\r\n return (\r\n state?.players &&\r\n Object.values(state?.players).filter(\r\n (player) => player.team.toString() === id\r\n )\r\n );\r\n });\r\n\r\n const isLeft = id === \"0\";\r\n const modifier = isLeft ? \"left\" : \"right\";\r\n\r\n if (!players) return null;\r\n\r\n return (\r\n <motion.div\r\n data-component-id=\"Team\"\r\n className={`team_box ${modifier}_team_box`}\r\n initial={{ x: isLeft ? -300 : 300, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n exit={{ x: isLeft ? -300 : 300, opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.77, 0, 0.175, 1] }}\r\n >\r\n <AnimatePresence>\r\n {players.map((player) => (\r\n <Player player={player} key={player.id} />\r\n ))}\r\n </AnimatePresence>\r\n </motion.div>\r\n );\r\n};\r\n\r\nconst MemoizedTeam = memo(Team);\r\nMemoizedTeam.displayName = \"Team\";\r\nexport default MemoizedTeam;\r\n","import React from \"react\";\r\nimport Team from \"./Team\";\r\n\r\nexport const Teams = () => {\r\n return (\r\n <>\r\n <Team id={\"0\"} />\r\n <Team id={\"1\"} />\r\n </>\r\n );\r\n};\r\n\r\nexport default Teams;\r\n","// StatItem.tsx\r\nimport React from \"react\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\n// 1. Define what “primitive” means for us:\r\ntype Primitive = string | number | boolean;\r\n\r\n// 2. Extract just the keys whose values are Primitive:\r\ntype PrimitiveKeys<T> = {\r\n [K in keyof T]: T[K] extends Primitive ? K : never;\r\n}[keyof T];\r\n\r\n// 3. Now K can only be one of those “safe” keys:\r\ntype StatItemProps<K extends PrimitiveKeys<PlayerState>> = {\r\n id: K;\r\n label: string;\r\n value: PlayerState[K]; // guaranteed to be string|number|boolean\r\n};\r\n\r\nexport const StatItem = <K extends PrimitiveKeys<PlayerState>>({\r\n id,\r\n label,\r\n value,\r\n}: StatItemProps<K>) => (\r\n <li\r\n data-component-id=\"StatItem\"\r\n className={`stat_box_statistic stat_box_statistic_player_${id}`}\r\n >\r\n <span className=\"stat_box_statistic_name\">{label}</span>\r\n <span className=\"stat_box_statistic_value\">{value}</span>\r\n </li>\r\n);\r\n\r\nexport default StatItem;\r\n","import React, { memo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\ntype Props = {\r\n location: PlayerState[\"location\"];\r\n};\r\n\r\nexport const TargetPlayerLocation = ({ location }: Props) => {\r\n return (\r\n <motion.div\r\n data-component-id=\"TargetPlayerLocation\"\r\n className=\"stat_box_statistic stat_box_statistic_player_location\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 10 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <span className=\"stat_box_statistic_name\">Location</span>{\" \"}\r\n <span className=\"stat_box_statistic_value\">\r\n X {location.X?.toFixed(2) || 0}, Y {location.Y?.toFixed(2) || 0}, Z{\" \"}\r\n {location.Z?.toFixed(2) || 0}\r\n </span>\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport default memo(TargetPlayerLocation);\r\n","// TargetPlayerStats.tsx\r\nimport React, { memo } from \"react\";\r\nimport { PlayerState } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport StatItem from \"./StatItem\";\r\nimport TargetPlayerLocation from \"./TargetPlayerLocation\";\r\n\r\ntype Props = {\r\n targetPlayer: PlayerState;\r\n};\r\n\r\nexport const TargetPlayerStats = ({ targetPlayer }: Props) => (\r\n <ul data-component-id=\"TargetPlayerStats\" className=\"stat_box_statistics\">\r\n <StatItem id=\"id\" label=\"ID\" value={targetPlayer.id} />\r\n <StatItem id=\"team\" label=\"Team\" value={targetPlayer.team} />\r\n <StatItem id=\"score\" label=\"Score\" value={targetPlayer.score} />\r\n <StatItem id=\"goals\" label=\"Goals\" value={targetPlayer.goals} />\r\n <StatItem id=\"assists\" label=\"Assists\" value={targetPlayer.assists} />\r\n <StatItem id=\"shots\" label=\"Shots\" value={targetPlayer.shots} />\r\n <StatItem id=\"saves\" label=\"Saves\" value={targetPlayer.saves} />\r\n <StatItem id=\"touches\" label=\"Touches\" value={targetPlayer.touches} />\r\n <TargetPlayerLocation location={targetPlayer.location} />\r\n </ul>\r\n);\r\n\r\nexport default memo(TargetPlayerStats);\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\n\r\nconst useTargetPlayer = () => {\r\n const targetPlayer = useEventSelector(\"game:update_state\", (state) => {\r\n if (!state?.game.hasTarget) return null;\r\n\r\n const target = state?.game?.target;\r\n\r\n if (!state?.players || !target) return null;\r\n\r\n const player = Object.values(state?.players)?.find(\r\n (player) => player.id === target\r\n );\r\n\r\n return player;\r\n });\r\n\r\n return targetPlayer;\r\n};\r\n\r\nexport default useTargetPlayer;\r\n","// src/components/TargetPlayer.tsx\r\n\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport React, { memo } from \"react\";\r\nimport { useBroadcast } from \"./context/BroadcastContext\";\r\nimport PlayerBoost from \"./PlayerBoost\";\r\nimport TargetPlayerStats from \"./TargetPlayerStats\";\r\nimport useTargetPlayer from \"./hooks/useTargetPlayer\";\r\n\r\nexport const TargetPlayer = () => {\r\n const broadcast = useBroadcast();\r\n const targetPlayer = useTargetPlayer();\r\n\r\n // Safeguard conditions\r\n if (\r\n !targetPlayer ||\r\n !broadcast ||\r\n !broadcast.teams ||\r\n !broadcast.teams[targetPlayer.team]\r\n ) {\r\n return null;\r\n }\r\n\r\n const teamData = broadcast.teams[targetPlayer.team];\r\n const teamColor = teamData?.color?.primary_color ?? \"#ffffff\";\r\n const modifier = targetPlayer.team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n data-component-id=\"TargetPlayer\"\r\n key={targetPlayer.id}\r\n className={`stat_box ${modifier}_stat_box`}\r\n style={{ \"--team-color\": teamColor } as React.CSSProperties}\r\n initial={{ x: modifier === \"left\" ? -300 : 300, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n exit={{ x: modifier === \"left\" ? -300 : 300, opacity: 0 }}\r\n transition={{ duration: 0.8, ease: [0.77, 0, 0.175, 1] }}\r\n >\r\n <motion.div\r\n className={`stat_box_player ${modifier}_stat_box_player`}\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n {targetPlayer.name}\r\n </motion.div>\r\n\r\n {/* Player Stats */}\r\n <TargetPlayerStats targetPlayer={targetPlayer} />\r\n\r\n {/* Player Boost */}\r\n <motion.div\r\n className={`stat_box_player_boost ${modifier}_stat_box_player_boost`}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 10 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n <PlayerBoost boost={targetPlayer.boost} team={targetPlayer.team} />\r\n </motion.div>\r\n </motion.div>\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport default memo(TargetPlayer);\r\n","import { useEventSelector } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport React, { memo } from \"react\";\r\nimport useTargetPlayer from \"./hooks/useTargetPlayer\";\r\n\r\nexport const TargetBoost = () => {\r\n const initialized = useEventSelector(\r\n \"game:update_state\",\r\n (state) => state?.hasGame\r\n );\r\n const targetPlayer = useTargetPlayer();\r\n\r\n if (!targetPlayer || !initialized) return null;\r\n\r\n const modifier = targetPlayer.team === 0 ? \"left\" : \"right\";\r\n\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n data-component-id=\"TargetBoost\"\r\n key={targetPlayer.id}\r\n className={`target_boost ${modifier}_target_boost`}\r\n initial={{ x: 400, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n exit={{ x: 400, opacity: 0, scale: 0.9 }}\r\n transition={{ duration: 1, ease: [0.77, 0, 0.175, 1] }} // Quartic easing equivalent\r\n >\r\n <div\r\n className={`target_boost_container ${modifier}_target_boost_container`}\r\n >\r\n <div\r\n className={`target_boost_meter ${modifier}_target_boost_meter`}\r\n style={\r\n { \"--target_boost\": targetPlayer.boost } as React.CSSProperties\r\n }\r\n >\r\n <div\r\n className={`target_boost_meter_inner ${modifier}_target_boost_meter_inner`}\r\n ></div>\r\n </div>\r\n <svg className=\"target_boost_svg\">\r\n <circle\r\n className={`target_boost_svg_circle ${modifier}_target_boost_svg_circle`}\r\n cx=\"50%\"\r\n cy=\"50%\"\r\n r=\"50%\"\r\n />\r\n </svg>\r\n </div>\r\n <motion.div\r\n className={`target_boost_value ${modifier}_target_boost_value`}\r\n initial={{ scale: 0 }}\r\n animate={{ scale: 1 }}\r\n exit={{ scale: 0 }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n >\r\n {targetPlayer.boost}\r\n </motion.div>\r\n </motion.div>\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport default memo(TargetBoost);\r\n","import React from \"react\";\r\nimport useReplay from \"./hooks/useReplay\";\r\n\r\nexport const Replay = () => {\r\n const { active: replayActive } = useReplay();\r\n\r\n if (!replayActive) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"replay_box\">\r\n <div className=\"replay_text\">Replay</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Replay;\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from \"react\";\r\nimport PlayerBoost from \"./PlayerBoost\";\r\nimport Replay from \"./Replay\";\r\nimport Scoreboard from \"./Scoreboard\";\r\nimport TargetBoost from \"./TargetBoost\";\r\nimport TargetPlayer from \"./TargetPlayer\";\r\nimport Teams from \"./Teams\";\r\nimport Timer from \"./Timer\";\r\n\r\n// Component registry mapping code_id -> React component\r\nexport const componentRegistry: Record<string, React.ComponentType<any>> = {\r\n Scoreboard,\r\n Teams,\r\n TargetPlayer,\r\n TargetBoost,\r\n Replay,\r\n Timer,\r\n PlayerBoost,\r\n};\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React, { memo, type ReactNode } from \"react\";\r\nimport type { OverlayComponentData } from \"./types\";\r\n\r\ntype OverlaySlotProps = {\r\n component: OverlayComponentData;\r\n children: ReactNode;\r\n} & React.HTMLAttributes<HTMLDivElement>; // ✅ allow div props\r\n\r\nexport const OverlaySlot = ({\r\n component,\r\n children,\r\n ...rest\r\n}: OverlaySlotProps) => {\r\n const { id, name, position } = component;\r\n\r\n return (\r\n <div\r\n className=\"overlay-slot\"\r\n data-component-id={id}\r\n data-component-name={name}\r\n style={{\r\n position: \"absolute\",\r\n top: position?.top ?? 0,\r\n left: position?.left ?? 0,\r\n width: position?.width ?? \"auto\",\r\n height: position?.height ?? \"auto\",\r\n }}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(OverlaySlot);\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { RLProvider, WebsocketData } from \"@four-leaf-studios/rl-socket-hook\";\r\nimport { BroadcastProvider } from \"./context/BroadcastContext\";\r\nimport type { Broadcast, OverlayObject } from \"./types\";\r\nimport { useOverlayStyles } from \"./hooks/useOverlayStyles\";\r\n\r\nimport Scoreboard from \"./Scoreboard\";\r\nimport Teams from \"./Teams\";\r\nimport TargetPlayer from \"./TargetPlayer\";\r\nimport TargetBoost from \"./TargetBoost\";\r\nimport Replay from \"./Replay\";\r\n\r\nimport \"./css/reset.css\";\r\nimport { componentRegistry } from \"./registry\";\r\nimport OverlaySlot from \"./OverlaySlot\";\r\n\r\nexport type OverlayProps = {\r\n broadcast: Broadcast;\r\n overlay: OverlayObject;\r\n preview?: boolean;\r\n renderSlot?: (\r\n comp: OverlayObject[\"components\"][number],\r\n Comp: any,\r\n ) => React.ReactNode;\r\n};\r\n\r\nexport const Overlay = ({\r\n broadcast,\r\n overlay,\r\n preview,\r\n renderSlot,\r\n}: OverlayProps) => {\r\n const { components } = overlay;\r\n\r\n // Inject team color CSS variables (--team-left-primary, etc.)\r\n useOverlayStyles(broadcast);\r\n\r\n // Collect CSS into one block\r\n const cssString = components.map((c) => c.css).join(\"\\n\");\r\n\r\n return (\r\n <BroadcastProvider broadcast={broadcast}>\r\n <RLProvider>\r\n <div className=\"overlay-wrapper\">\r\n {/* Inject all component CSS */}\r\n <style>{cssString}</style>\r\n\r\n {/* The overlay itself */}\r\n <div\r\n className={`overlay ${preview ? \"testing\" : \"\"}`}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n aspectRatio: \"16/9\",\r\n maxWidth: \"1920px\",\r\n maxHeight: \"1080px\",\r\n display: \"block\",\r\n }}\r\n >\r\n {components.map((comp) => {\r\n const Comp = componentRegistry[comp.code_id];\r\n if (!Comp) {\r\n return (\r\n <div key={comp.id} style={{ color: \"red\", fontSize: \"14px\" }}>\r\n Missing component: {comp.code_id}\r\n </div>\r\n );\r\n }\r\n\r\n if (renderSlot) {\r\n // delegate to editor if provided\r\n return renderSlot(comp, Comp);\r\n }\r\n\r\n // default (non-edit mode)\r\n return (\r\n <OverlaySlot key={comp.id} component={comp}>\r\n <Comp {...comp} />\r\n </OverlaySlot>\r\n );\r\n })}\r\n </div>\r\n\r\n {/* Preview data panel on the right */}\r\n {preview && (\r\n <div className=\"testing-data\">\r\n <WebsocketData />\r\n </div>\r\n )}\r\n </div>\r\n </RLProvider>\r\n </BroadcastProvider>\r\n );\r\n};\r\n\r\n// expose slots (optional if you want named exports)\r\nOverlay.Scoreboard = Scoreboard;\r\nOverlay.Teams = Teams;\r\nOverlay.TargetPlayer = TargetPlayer;\r\nOverlay.TargetBoost = TargetBoost;\r\nOverlay.Replay = Replay;\r\n\r\nexport default Overlay;\r\n"],"names":["createContext","useContext","useEffect","jsonToCss","useEvent","useEventSelector","memo","useMemo","AnimatePresence","motion","PlayerBoost","Player","Team","TargetPlayerLocation","TargetPlayerStats","TargetPlayer","TargetBoost","RLProvider","OverlaySlot","WebsocketData"],"mappings":"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","x_google_ignoreList":[1,21,23]}
|