@pitvox/partner-react 0.6.8 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { jsx as e, jsxs as c, Fragment as E } from "react/jsx-runtime";
2
- import { createContext as Re, useMemo as C, useContext as Te, useState as M, useCallback as K, useRef as Se, useEffect as $e } from "react";
3
- import { useQueryClient as F, QueryClient as Me, QueryClientProvider as Ie, useQuery as R, useMutation as H, useQueries as se } from "@tanstack/react-query";
4
- const Y = Re(null), De = "https://cdn.pitvox.com", Be = "https://pitvox.com";
5
- let G = null;
6
- function _r({
7
- partnerSlug: r = null,
8
- cdnUrl: n = De,
9
- pitvoxUrl: s = Be,
10
- getSteamId: t,
1
+ import { jsx as n, jsxs as c, Fragment as F } from "react/jsx-runtime";
2
+ import { createContext as $e, useMemo as L, useContext as Me, useState as D, useCallback as H, useRef as De, useEffect as Ie } from "react";
3
+ import { useQueryClient as _, QueryClient as Be, QueryClientProvider as Pe, useQuery as R, useMutation as O, useQueries as ie } from "@tanstack/react-query";
4
+ const J = $e(null), Ae = "https://cdn.pitvox.com", Ue = "https://pitvox.com";
5
+ let Q = null;
6
+ function zn({
7
+ partnerSlug: e = null,
8
+ cdnUrl: t = Ae,
9
+ pitvoxUrl: s = Ue,
10
+ getSteamId: r,
11
11
  onRegister: a,
12
12
  onWithdraw: i,
13
13
  onFetchNotifications: o,
@@ -16,78 +16,82 @@ function _r({
16
16
  onFetchServerPassword: l,
17
17
  children: m
18
18
  }) {
19
- const g = C(() => ({
20
- partnerSlug: r,
21
- cdnUrl: n.replace(/\/$/, ""),
19
+ const f = L(() => ({
20
+ partnerSlug: e,
21
+ cdnUrl: t.replace(/\/$/, ""),
22
22
  pitvoxUrl: s.replace(/\/$/, ""),
23
- getSteamId: t || (() => null),
23
+ getSteamId: r || (() => null),
24
24
  onRegister: a || null,
25
25
  onWithdraw: i || null,
26
26
  onFetchNotifications: o || null,
27
27
  onMarkNotificationRead: d || null,
28
28
  onMarkAllNotificationsRead: v || null,
29
29
  onFetchServerPassword: l || null
30
- }), [r, n, s, t, a, i, o, d, v, l]);
31
- let f = !1;
30
+ }), [e, t, s, r, a, i, o, d, v, l]);
31
+ let g = !1;
32
32
  try {
33
- F(), f = !0;
33
+ _(), g = !0;
34
34
  } catch {
35
- f = !1;
35
+ g = !1;
36
36
  }
37
- return f ? /* @__PURE__ */ e(Y.Provider, { value: g, children: m }) : (G || (G = new Me({
37
+ return g ? /* @__PURE__ */ n(J.Provider, { value: f, children: m }) : (Q || (Q = new Be({
38
38
  defaultOptions: {
39
39
  queries: { staleTime: 6e4 }
40
40
  }
41
- })), /* @__PURE__ */ e(Ie, { client: G, children: /* @__PURE__ */ e(Y.Provider, { value: g, children: m }) }));
41
+ })), /* @__PURE__ */ n(Pe, { client: Q, children: /* @__PURE__ */ n(J.Provider, { value: f, children: m }) }));
42
42
  }
43
43
  function k() {
44
- const r = Te(Y);
45
- if (!r)
44
+ const e = Me(J);
45
+ if (!e)
46
46
  throw new Error("usePitVox must be used within a <PitVoxPartnerProvider>");
47
- return r;
47
+ return e;
48
48
  }
49
- async function T(r, n) {
50
- const s = await fetch(`${r}/${n}`);
49
+ async function S(e, t) {
50
+ const s = await fetch(`${e}/${t}`);
51
51
  if (!s.ok) {
52
52
  if (s.status === 404 || s.status === 403) return null;
53
53
  throw new Error(`CDN fetch failed: ${s.status}`);
54
54
  }
55
55
  return s.json();
56
56
  }
57
- function J(r, n, s, ...t) {
57
+ function Z(e, t, s, ...r) {
58
58
  const a = ["leaderboards"];
59
- return r && a.push(`partners/${r}`), n && a.push(n), s && a.push(`v/${s}`), [...a, ...t].join("/");
59
+ return e && a.push(`partners/${e}`), t && a.push(t), s && a.push(`v/${s}`), [...a, ...r].join("/");
60
+ }
61
+ function Ee(e, t, s, r) {
62
+ const a = r || "default";
63
+ return e ? `laps/partners/${e}/${t}/${s}/${a}.json` : `laps/${t}/${s}/${a}.json`;
60
64
  }
61
- function Pe(r, n) {
62
- return r ? `laps/partners/${r}/${n}.json` : `laps/${n}.json`;
65
+ function Fe(e, t) {
66
+ return e ? `laps/partners/${e}/${t}/index.json` : `laps/${t}/index.json`;
63
67
  }
64
- function Ae(r) {
65
- return r ? `recent-laps/partners/${r}.json` : "recent-laps.json";
68
+ function _e(e) {
69
+ return e ? `recent-laps/partners/${e}.json` : "recent-laps.json";
66
70
  }
67
- function P(r) {
68
- if (!r && r !== 0) return "-";
69
- const n = Math.floor(r / 1e3), s = Math.floor(n / 60), t = n % 60, a = r % 1e3;
70
- return `${s}:${String(t).padStart(2, "0")}.${String(a).padStart(3, "0")}`;
71
+ function A(e) {
72
+ if (!e && e !== 0) return "-";
73
+ const t = Math.floor(e / 1e3), s = Math.floor(t / 60), r = t % 60, a = e % 1e3;
74
+ return `${s}:${String(r).padStart(2, "0")}.${String(a).padStart(3, "0")}`;
71
75
  }
72
- function D(r) {
73
- return !r && r !== 0 ? "-" : r >= 6e4 ? P(r) : (r / 1e3).toFixed(3);
76
+ function B(e) {
77
+ return !e && e !== 0 ? "-" : e >= 6e4 ? A(e) : (e / 1e3).toFixed(3);
74
78
  }
75
- function I(r) {
76
- if (!r) return "";
77
- let n = r;
78
- return n.startsWith("ks_") && (n = n.slice(3)), n.split("_").map((s) => s.charAt(0).toUpperCase() + s.slice(1)).join(" ");
79
+ function I(e) {
80
+ if (!e) return "";
81
+ let t = e;
82
+ return t.startsWith("ks_") && (t = t.slice(3)), t.split("_").map((s) => s.charAt(0).toUpperCase() + s.slice(1)).join(" ");
79
83
  }
80
- function _(r, n, s) {
81
- if (!r) return "";
82
- const t = r.split("_").map((o) => o.charAt(0).toUpperCase() + o.slice(1)).join(" "), a = s === "acc" || !s && (n == null ? void 0 : n.toLowerCase()) === "track config";
83
- if (!n || n === "default" || a) return t;
84
- const i = n.split("_").map((o) => o.charAt(0).toUpperCase() + o.slice(1)).join(" ");
85
- return `${t} ${i}`;
84
+ function q(e, t, s) {
85
+ if (!e) return "";
86
+ const r = e.split("_").map((o) => o.charAt(0).toUpperCase() + o.slice(1)).join(" "), a = s === "acc" || !s && (t == null ? void 0 : t.toLowerCase()) === "track config";
87
+ if (!t || t === "default" || a) return r;
88
+ const i = t.split("_").map((o) => o.charAt(0).toUpperCase() + o.slice(1)).join(" ");
89
+ return `${r} ${i}`;
86
90
  }
87
- function q(r) {
88
- if (!r) return "-";
91
+ function j(e) {
92
+ if (!e) return "-";
89
93
  try {
90
- return new Date(r).toLocaleDateString("en-GB", {
94
+ return new Date(e).toLocaleDateString("en-GB", {
91
95
  day: "numeric",
92
96
  month: "short",
93
97
  year: "numeric"
@@ -96,26 +100,26 @@ function q(r) {
96
100
  return "-";
97
101
  }
98
102
  }
99
- function oe(r) {
100
- if (!r) return "";
101
- const n = Date.now() - new Date(r).getTime(), s = Math.floor(n / 1e3);
103
+ function le(e) {
104
+ if (!e) return "";
105
+ const t = Date.now() - new Date(e).getTime(), s = Math.floor(t / 1e3);
102
106
  if (s < 60) return "Just now";
103
- const t = Math.floor(s / 60);
104
- if (t < 60) return `${t}m ago`;
105
- const a = Math.floor(t / 60);
107
+ const r = Math.floor(s / 60);
108
+ if (r < 60) return `${r}m ago`;
109
+ const a = Math.floor(r / 60);
106
110
  if (a < 24) return `${a}h ago`;
107
111
  const i = Math.floor(a / 24);
108
- return i < 30 ? `${i}d ago` : q(r);
112
+ return i < 30 ? `${i}d ago` : j(e);
109
113
  }
110
- function qr(r) {
111
- return r == null ? "" : `${r >= 0 ? "+" : "-"}${(Math.abs(r) / 1e3).toFixed(3)}`;
114
+ function Gn(e) {
115
+ return e == null ? "" : `${e >= 0 ? "+" : "-"}${(Math.abs(e) / 1e3).toFixed(3)}`;
112
116
  }
113
- function Ue(r, n) {
114
- const { type: s, title: t, trackId: a, trackLayout: i, carId: o, game: d, data: v } = r, l = typeof v == "string" ? JSON.parse(v) : v, m = a ? _(a, i, d) : null, g = o ? I(o) : null, f = [m, g].filter(Boolean).join(" — ");
115
- return s === "RECORD_BEATEN" && f ? `${l != null && l.beatenBySteamId && n ? n(l.beatenBySteamId).displayName : "Someone"} beat your record on ${f}` : s === "RECORD_SET" && f ? `You set a new record on ${f}` : t || "New notification";
117
+ function qe(e, t) {
118
+ const { type: s, title: r, trackId: a, trackLayout: i, carId: o, game: d, data: v } = e, l = typeof v == "string" ? JSON.parse(v) : v, m = a ? q(a, i, d) : null, f = o ? I(o) : null, g = [m, f].filter(Boolean).join(" — ");
119
+ return s === "RECORD_BEATEN" && g ? `${l != null && l.beatenBySteamId && t ? t(l.beatenBySteamId).displayName : "Someone"} beat your record on ${g}` : s === "RECORD_SET" && g ? `You set a new record on ${g}` : r || "New notification";
116
120
  }
117
- function ce(r) {
118
- return r ? {
121
+ function de(e) {
122
+ return e ? {
119
123
  E: "Eco",
120
124
  RD: "Road",
121
125
  SC: "SuperCar",
@@ -126,237 +130,231 @@ function ce(r) {
126
130
  MR: "Medium Race",
127
131
  SR: "Soft Race",
128
132
  S: "Soft"
129
- }[r] || r : "Unknown";
133
+ }[e] || e : "Unknown";
130
134
  }
131
- function jr(r = {}) {
132
- var v, l, m, g, f, u;
133
- const { cdnUrl: n, partnerSlug: s } = k(), { game: t, gameVersion: a } = r, i = J(s, null, null, "index.json"), o = R({
135
+ function Qn(e = {}) {
136
+ var v, l, m, f, g, p;
137
+ const { cdnUrl: t, partnerSlug: s } = k(), { game: r, gameVersion: a } = e, i = Z(s, null, null, "index.json"), o = R({
134
138
  queryKey: ["pitvox", "leaderboards", s, "index"],
135
- queryFn: () => T(n, i),
139
+ queryFn: () => S(t, i),
136
140
  staleTime: 3e4,
137
141
  refetchInterval: 3e4
138
- }), d = C(() => {
142
+ }), d = L(() => {
139
143
  var x;
140
144
  if (!((x = o.data) != null && x.tracks)) return [];
141
145
  let b = o.data.tracks;
142
- return t && (b = b.filter((p) => p.game === t)), a && (b = b.filter((p) => p.gameVersion === a)), b.map((p) => ({
143
- id: p.trackId,
144
- layout: p.layout,
145
- game: p.game,
146
- gameVersion: p.gameVersion,
147
- displayName: _(p.trackId, p.layout, p.game),
148
- driverCount: p.driverCount || 0,
149
- carCount: p.carCount || 0,
150
- record: p.recordHolder ? {
151
- visibleId: p.recordHolder.steamId || p.recordHolder.userId,
152
- carId: p.recordHolder.carId,
153
- carDisplayName: I(p.recordHolder.carId),
154
- lapTimeMs: p.recordHolder.lapTimeMs,
155
- timestamp: p.recordHolder.recordedAt
146
+ return r && (b = b.filter((u) => u.game === r)), a && (b = b.filter((u) => u.gameVersion === a)), b.map((u) => ({
147
+ id: u.trackId,
148
+ layout: u.layout,
149
+ game: u.game,
150
+ gameVersion: u.gameVersion,
151
+ displayName: q(u.trackId, u.layout, u.game),
152
+ driverCount: u.driverCount || 0,
153
+ carCount: u.carCount || 0,
154
+ record: u.recordHolder ? {
155
+ visibleId: u.recordHolder.steamId || u.recordHolder.userId,
156
+ carId: u.recordHolder.carId,
157
+ carDisplayName: I(u.recordHolder.carId),
158
+ lapTimeMs: u.recordHolder.lapTimeMs,
159
+ timestamp: u.recordHolder.recordedAt
156
160
  } : null,
157
- recordByTag: p.recordByTag || null
161
+ recordByTag: u.recordByTag || null
158
162
  }));
159
- }, [(v = o.data) == null ? void 0 : v.tracks, t, a]);
163
+ }, [(v = o.data) == null ? void 0 : v.tracks, r, a]);
160
164
  return {
161
165
  ...o,
162
166
  data: d,
163
167
  partner: ((l = o.data) == null ? void 0 : l.partner) || null,
164
168
  generatedAt: (m = o.data) == null ? void 0 : m.generatedAt,
165
- totalLaps: ((g = o.data) == null ? void 0 : g.totalLaps) || 0,
166
- totalUsers: ((f = o.data) == null ? void 0 : f.totalUsers) || 0,
167
- versions: ((u = o.data) == null ? void 0 : u.versions) || {}
169
+ totalLaps: ((f = o.data) == null ? void 0 : f.totalLaps) || 0,
170
+ totalUsers: ((g = o.data) == null ? void 0 : g.totalUsers) || 0,
171
+ versions: ((p = o.data) == null ? void 0 : p.versions) || {}
168
172
  };
169
173
  }
170
- function Ee(r, n, s = {}) {
171
- const { cdnUrl: t, partnerSlug: a } = k(), { carId: i, game: o, gameVersion: d } = s, v = n || "default", l = J(a, o, d, `tracks/${r}/${v}.json`), { data: m, isLoading: g, error: f } = R({
172
- queryKey: ["pitvox", "leaderboards", a, "track", r, v, o, d],
173
- queryFn: () => T(t, l),
174
- enabled: !!r,
174
+ function je(e, t, s = {}) {
175
+ const { cdnUrl: r, partnerSlug: a } = k(), { carId: i, game: o, gameVersion: d } = s, v = t || "default", l = Z(a, o, d, `tracks/${e}/${v}.json`), { data: m, isLoading: f, error: g } = R({
176
+ queryKey: ["pitvox", "leaderboards", a, "track", e, v, o, d],
177
+ queryFn: () => S(r, l),
178
+ enabled: !!e,
175
179
  staleTime: 3e4,
176
180
  refetchInterval: 3e4
177
181
  });
178
- return { data: C(() => {
182
+ return { data: L(() => {
179
183
  if (!(m != null && m.entries)) return [];
180
184
  let b = m.entries;
181
185
  if (o && (b = b.filter((x) => x.game === o)), !i) {
182
- const x = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map();
186
+ const x = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map();
183
187
  for (const N of b) {
184
188
  const h = N.steamId || N.userId;
185
- p.has(N.carId) || p.set(N.carId, /* @__PURE__ */ new Set()), p.get(N.carId).add(h), (!x.has(N.carId) || N.lapTimeMs < x.get(N.carId).lapTimeMs) && x.set(N.carId, N);
189
+ u.has(N.carId) || u.set(N.carId, /* @__PURE__ */ new Set()), u.get(N.carId).add(h), (!x.has(N.carId) || N.lapTimeMs < x.get(N.carId).lapTimeMs) && x.set(N.carId, N);
186
190
  }
187
191
  return Array.from(x.values()).map((N) => {
188
192
  var h;
189
- return { ...N, driverCount: ((h = p.get(N.carId)) == null ? void 0 : h.size) || 0 };
193
+ return { ...N, driverCount: ((h = u.get(N.carId)) == null ? void 0 : h.size) || 0 };
190
194
  }).sort((N, h) => N.lapTimeMs - h.lapTimeMs);
191
195
  }
192
- return b.filter((x) => x.carId === i).sort((x, p) => x.lapTimeMs - p.lapTimeMs);
193
- }, [m == null ? void 0 : m.entries, i, o]), isLoading: g, error: f };
194
- }
195
- function Fe(r, n, s, t, a = {}) {
196
- var b, x;
197
- const { cdnUrl: i, partnerSlug: o } = k(), { showInvalid: d = !1, game: v, gameVersion: l } = a, m = Pe(o, r), g = R({
198
- queryKey: ["pitvox", "laps", o, r],
199
- queryFn: () => T(i, m),
200
- enabled: !!r,
196
+ return b.filter((x) => x.carId === i).sort((x, u) => x.lapTimeMs - u.lapTimeMs);
197
+ }, [m == null ? void 0 : m.entries, i, o]), isLoading: f, error: g };
198
+ }
199
+ function Ve(e, t, s, r, a = {}) {
200
+ var x, u;
201
+ const { cdnUrl: i, partnerSlug: o } = k(), { showInvalid: d = !1, game: v, gameVersion: l } = a, m = e && t ? Ee(o, e, t, s) : null, g = R({
202
+ queryKey: ["pitvox", "laps", o, e, t, s || "default"],
203
+ queryFn: () => S(i, m),
204
+ enabled: !!e && !!t,
201
205
  staleTime: 3e4,
202
206
  refetchInterval: 3e4
203
- }), f = C(() => {
204
- var p;
205
- return (p = g.data) != null && p.laps ? g.data.laps.filter((N) => {
206
- if (N.trackId !== n) return !1;
207
- if (s) {
208
- if (N.trackLayout !== s) return !1;
209
- } else if (N.trackLayout && N.trackLayout !== "default") return !1;
210
- return !(N.carId !== t || v && N.game !== v || l && N.gameVersion !== l || !d && !N.isValid);
211
- }).sort((N, h) => N.lapTimeMs - h.lapTimeMs) : [];
212
- }, [(b = g.data) == null ? void 0 : b.laps, n, s, t, v, l, d]), u = C(() => {
213
- const p = f.filter((w) => w.isValid && w.sector1Ms && w.sector2Ms && w.sector3Ms);
214
- if (p.length < 2) return null;
215
- const N = Math.min(...p.map((w) => w.sector1Ms)), h = Math.min(...p.map((w) => w.sector2Ms)), y = Math.min(...p.map((w) => w.sector3Ms)), L = N + h + y, $ = Math.min(...p.map((w) => w.lapTimeMs));
216
- return L >= $ ? null : { lapTimeMs: L, sector1Ms: N, sector2Ms: h, sector3Ms: y };
217
- }, [f]);
207
+ }), p = L(() => {
208
+ var N;
209
+ return (N = g.data) != null && N.laps ? g.data.laps.filter((h) => !(h.carId !== r || v && h.game !== v || l && h.gameVersion !== l || !d && !h.isValid)).sort((h, y) => h.lapTimeMs - y.lapTimeMs) : [];
210
+ }, [(x = g.data) == null ? void 0 : x.laps, r, v, l, d]), b = L(() => {
211
+ const N = p.filter(($) => $.isValid && $.sector1Ms && $.sector2Ms && $.sector3Ms);
212
+ if (N.length < 2) return null;
213
+ const h = Math.min(...N.map(($) => $.sector1Ms)), y = Math.min(...N.map(($) => $.sector2Ms)), C = Math.min(...N.map(($) => $.sector3Ms)), w = h + y + C, T = Math.min(...N.map(($) => $.lapTimeMs));
214
+ return w >= T ? null : { lapTimeMs: w, sector1Ms: h, sector2Ms: y, sector3Ms: C };
215
+ }, [p]);
218
216
  return {
219
217
  ...g,
220
- data: f,
221
- driverName: ((x = g.data) == null ? void 0 : x.driverName) || "Driver",
222
- theoreticalBest: u
218
+ data: p,
219
+ driverName: ((u = g.data) == null ? void 0 : u.driverName) || "Driver",
220
+ theoreticalBest: b
223
221
  };
224
222
  }
225
- function le() {
226
- const { cdnUrl: r } = k(), { data: n } = R({
223
+ function pe() {
224
+ const { cdnUrl: e } = k(), { data: t } = R({
227
225
  queryKey: ["pitvox", "users", "index"],
228
- queryFn: () => T(r, "users/index.json"),
226
+ queryFn: () => S(e, "users/index.json"),
229
227
  staleTime: 5 * 6e4,
230
228
  gcTime: 30 * 6e4
231
- }), s = (n == null ? void 0 : n.users) || {};
232
- return (t, a) => {
233
- const i = s[t];
229
+ }), s = (t == null ? void 0 : t.users) || {};
230
+ return (r, a) => {
231
+ const i = s[r];
234
232
  return {
235
- displayName: (i == null ? void 0 : i.displayName) || a || t || "Unknown",
233
+ displayName: (i == null ? void 0 : i.displayName) || a || r || "Unknown",
236
234
  avatarUrl: (i == null ? void 0 : i.avatarUrl) || null,
237
235
  affiliations: (i == null ? void 0 : i.affiliations) || []
238
236
  };
239
237
  };
240
238
  }
241
- function Vr() {
242
- const { cdnUrl: r } = k(), { data: n } = R({
239
+ function Yn() {
240
+ const { cdnUrl: e } = k(), { data: t } = R({
243
241
  queryKey: ["pitvox", "cars", "evo"],
244
- queryFn: () => T(r, "cars/evo.json"),
242
+ queryFn: () => S(e, "cars/evo.json"),
245
243
  staleTime: 5 * 6e4,
246
244
  gcTime: 30 * 6e4
247
245
  });
248
246
  return {
249
- tags: (n == null ? void 0 : n.tags) || [],
250
- cars: (n == null ? void 0 : n.cars) || {}
247
+ tags: (t == null ? void 0 : t.tags) || [],
248
+ cars: (t == null ? void 0 : t.cars) || {}
251
249
  };
252
250
  }
253
- function Kr() {
251
+ function Jn() {
254
252
  var a, i;
255
- const { cdnUrl: r, partnerSlug: n } = k(), s = Ae(n), t = R({
256
- queryKey: ["pitvox", "recentLaps", n],
257
- queryFn: () => T(r, s),
253
+ const { cdnUrl: e, partnerSlug: t } = k(), s = _e(t), r = R({
254
+ queryKey: ["pitvox", "recentLaps", t],
255
+ queryFn: () => S(e, s),
258
256
  staleTime: 3e4,
259
257
  refetchInterval: 3e4,
260
258
  gcTime: 10 * 6e4
261
259
  });
262
260
  return {
263
- groups: ((a = t.data) == null ? void 0 : a.groups) || [],
264
- generatedAt: ((i = t.data) == null ? void 0 : i.generatedAt) || null,
265
- isLoading: t.isLoading
261
+ groups: ((a = r.data) == null ? void 0 : a.groups) || [],
262
+ generatedAt: ((i = r.data) == null ? void 0 : i.generatedAt) || null,
263
+ isLoading: r.isLoading
266
264
  };
267
265
  }
268
- function Hr(r, n) {
269
- return Ee(r, null, { carId: n });
266
+ function Zn(e, t) {
267
+ return je(e, null, { carId: t });
270
268
  }
271
- function Wr() {
272
- const { cdnUrl: r, partnerSlug: n } = k();
269
+ function Xn() {
270
+ const { cdnUrl: e, partnerSlug: t } = k();
273
271
  return R({
274
- queryKey: ["pitvox", "competitions", n],
272
+ queryKey: ["pitvox", "competitions", t],
275
273
  queryFn: async () => {
276
- const s = await T(r, "competitions/index.json");
277
- return s != null && s.competitions ? n ? s.competitions.filter((t) => t.partnerSlug === n) : s.competitions : [];
274
+ const s = await S(e, "competitions/index.json");
275
+ return s != null && s.competitions ? t ? s.competitions.filter((r) => r.partnerSlug === t) : s.competitions : [];
278
276
  },
279
277
  staleTime: 6e4
280
278
  });
281
279
  }
282
- function de(r, n = {}) {
283
- const s = k(), t = n.partnerSlug || s.partnerSlug;
280
+ function ue(e, t = {}) {
281
+ const s = k(), r = t.partnerSlug || s.partnerSlug;
284
282
  return R({
285
- queryKey: ["pitvox", "competition", t, r, "config"],
286
- queryFn: () => T(s.cdnUrl, `competitions/${t}/${r}/config.json`),
287
- enabled: !!t && !!r,
283
+ queryKey: ["pitvox", "competition", r, e, "config"],
284
+ queryFn: () => S(s.cdnUrl, `competitions/${r}/${e}/config.json`),
285
+ enabled: !!r && !!e,
288
286
  staleTime: 6e4
289
287
  });
290
288
  }
291
- function _e(r, n = {}) {
292
- const s = k(), t = n.partnerSlug || s.partnerSlug;
289
+ function me(e, t = {}) {
290
+ const s = k(), r = t.partnerSlug || s.partnerSlug;
293
291
  return R({
294
- queryKey: ["pitvox", "competition", t, r, "standings"],
295
- queryFn: () => T(s.cdnUrl, `competitions/${t}/${r}/standings.json`),
296
- enabled: !!t && !!r,
292
+ queryKey: ["pitvox", "competition", r, e, "standings"],
293
+ queryFn: () => S(s.cdnUrl, `competitions/${r}/${e}/standings.json`),
294
+ enabled: !!r && !!e,
297
295
  staleTime: 6e4
298
296
  });
299
297
  }
300
- function qe(r, n, s = {}) {
301
- const t = k(), a = s.partnerSlug || t.partnerSlug;
298
+ function Ke(e, t, s = {}) {
299
+ const r = k(), a = s.partnerSlug || r.partnerSlug;
302
300
  return R({
303
- queryKey: ["pitvox", "competition", a, r, "round", n],
304
- queryFn: () => T(t.cdnUrl, `competitions/${a}/${r}/rounds/${n}.json`),
305
- enabled: !!a && !!r && n != null,
301
+ queryKey: ["pitvox", "competition", a, e, "round", t],
302
+ queryFn: () => S(r.cdnUrl, `competitions/${a}/${e}/rounds/${t}.json`),
303
+ enabled: !!a && !!e && t != null,
306
304
  staleTime: 6e4
307
305
  });
308
306
  }
309
- function je(r, n = [], s = {}) {
310
- const t = k(), a = s.partnerSlug || t.partnerSlug;
307
+ function He(e, t = [], s = {}) {
308
+ const r = k(), a = s.partnerSlug || r.partnerSlug;
311
309
  return R({
312
- queryKey: ["pitvox", "competition", a, r, "allRounds", n],
310
+ queryKey: ["pitvox", "competition", a, e, "allRounds", t],
313
311
  queryFn: async () => (await Promise.all(
314
- n.map(
315
- (o) => T(t.cdnUrl, `competitions/${a}/${r}/rounds/${o}.json`).catch(() => null)
312
+ t.map(
313
+ (o) => S(r.cdnUrl, `competitions/${a}/${e}/rounds/${o}.json`).catch(() => null)
316
314
  )
317
315
  )).filter(Boolean),
318
- enabled: !!a && !!r && n.length > 0,
316
+ enabled: !!a && !!e && t.length > 0,
319
317
  staleTime: 6e4
320
318
  });
321
319
  }
322
- function pe(r, n = {}) {
323
- const s = k(), t = n.partnerSlug || s.partnerSlug;
320
+ function ve(e, t = {}) {
321
+ const s = k(), r = t.partnerSlug || s.partnerSlug;
324
322
  return R({
325
- queryKey: ["pitvox", "competition", t, r, "entrylist"],
326
- queryFn: () => T(s.cdnUrl, `competitions/${t}/${r}/entrylist.json`),
327
- enabled: !!t && !!r,
323
+ queryKey: ["pitvox", "competition", r, e, "entrylist"],
324
+ queryFn: () => S(s.cdnUrl, `competitions/${r}/${e}/entrylist.json`),
325
+ enabled: !!r && !!e,
328
326
  staleTime: 6e4
329
327
  });
330
328
  }
331
- function Z(r) {
332
- const { cdnUrl: n, partnerSlug: s, getSteamId: t } = k(), a = t();
329
+ function X(e) {
330
+ const { cdnUrl: t, partnerSlug: s, getSteamId: r } = k(), a = r();
333
331
  return R({
334
- queryKey: ["pitvox", "registration", s, r, a],
332
+ queryKey: ["pitvox", "registration", s, e, a],
335
333
  queryFn: async () => {
336
334
  var v;
337
- const i = await fetch(`${n}/competitions/${s}/${r}/entrylist.json`);
335
+ const i = await fetch(`${t}/competitions/${s}/${e}/entrylist.json`);
338
336
  if (!i.ok) return { isRegistered: !1, entryList: null };
339
337
  const o = await i.json();
340
338
  return { isRegistered: !!a && ((v = o.drivers) == null ? void 0 : v.some((l) => l.steamId === a)), entryList: o };
341
339
  },
342
- enabled: !!r,
340
+ enabled: !!e,
343
341
  staleTime: 6e4
344
342
  });
345
343
  }
346
- function ue(r) {
347
- const { onRegister: n, partnerSlug: s, getSteamId: t } = k(), a = F(), i = le();
348
- return H({
344
+ function he(e) {
345
+ const { onRegister: t, partnerSlug: s, getSteamId: r } = k(), a = _(), i = pe();
346
+ return O({
349
347
  mutationFn: (o) => {
350
- if (!n)
348
+ if (!t)
351
349
  throw new Error(
352
350
  "No onRegister callback provided to PitVoxPartnerProvider. Provide onRegister for in-app registration, or use useRegistrationUrl() to link to pitvox.com."
353
351
  );
354
- return n(r, o);
352
+ return t(e, o);
355
353
  },
356
354
  onSuccess: () => {
357
- const o = t();
355
+ const o = r();
358
356
  if (a.setQueriesData(
359
- { queryKey: ["pitvox", "registration", s, r] },
357
+ { queryKey: ["pitvox", "registration", s, e] },
360
358
  (d) => d ? { ...d, isRegistered: !0 } : { isRegistered: !0, entryList: null }
361
359
  ), o) {
362
360
  const d = i(o), v = {
@@ -365,49 +363,49 @@ function ue(r) {
365
363
  avatarUrl: d.avatarUrl
366
364
  };
367
365
  a.setQueriesData(
368
- { queryKey: ["pitvox", "competition", s, r, "entrylist"] },
366
+ { queryKey: ["pitvox", "competition", s, e, "entrylist"] },
369
367
  (l) => {
370
- var g;
371
- return l ? ((g = l.drivers) == null ? void 0 : g.some((f) => f.steamId === o)) ? l : { ...l, drivers: [...l.drivers || [], v] } : { drivers: [v] };
368
+ var f;
369
+ return l ? ((f = l.drivers) == null ? void 0 : f.some((g) => g.steamId === o)) ? l : { ...l, drivers: [...l.drivers || [], v] } : { drivers: [v] };
372
370
  }
373
371
  );
374
372
  }
375
373
  }
376
374
  });
377
375
  }
378
- function me(r) {
379
- const { onWithdraw: n, partnerSlug: s, getSteamId: t } = k(), a = F();
380
- return H({
376
+ function xe(e) {
377
+ const { onWithdraw: t, partnerSlug: s, getSteamId: r } = k(), a = _();
378
+ return O({
381
379
  mutationFn: (i) => {
382
- if (!n)
380
+ if (!t)
383
381
  throw new Error(
384
382
  "No onWithdraw callback provided to PitVoxPartnerProvider. Provide onWithdraw for in-app withdrawal, or use useRegistrationUrl() to link to pitvox.com."
385
383
  );
386
- const o = i || t();
384
+ const o = i || r();
387
385
  if (!o) throw new Error("No Steam ID available");
388
- return n(r, o);
386
+ return t(e, o);
389
387
  },
390
388
  onSuccess: () => {
391
- const i = t();
389
+ const i = r();
392
390
  a.setQueriesData(
393
- { queryKey: ["pitvox", "registration", s, r] },
391
+ { queryKey: ["pitvox", "registration", s, e] },
394
392
  (o) => o ? { ...o, isRegistered: !1 } : { isRegistered: !1, entryList: null }
395
393
  ), i && a.setQueriesData(
396
- { queryKey: ["pitvox", "competition", s, r, "entrylist"] },
394
+ { queryKey: ["pitvox", "competition", s, e, "entrylist"] },
397
395
  (o) => o != null && o.drivers ? { ...o, drivers: o.drivers.filter((d) => d.steamId !== i) } : o
398
396
  );
399
397
  }
400
398
  });
401
399
  }
402
- function X() {
403
- const { onRegister: r, onWithdraw: n } = k(), s = !!(r && n);
400
+ function ee() {
401
+ const { onRegister: e, onWithdraw: t } = k(), s = !!(e && t);
404
402
  return { isPowerMode: s, isBasicMode: !s };
405
403
  }
406
- function ee(r) {
407
- const { pitvoxUrl: n, partnerSlug: s } = k();
408
- return `${n}/p/${s}/competitions/${r}/register`;
404
+ function ne(e) {
405
+ const { pitvoxUrl: t, partnerSlug: s } = k();
406
+ return `${t}/p/${s}/competitions/${e}/register`;
409
407
  }
410
- const Ve = {
408
+ const Oe = {
411
409
  formula: "Formula",
412
410
  gt3: "GT3",
413
411
  gt2: "GT2",
@@ -427,170 +425,170 @@ const Ve = {
427
425
  "2000s": "2000s",
428
426
  "2010s": "2010s",
429
427
  "2020s": "2020s"
430
- }, ve = [
428
+ }, ge = [
431
429
  { id: "class", tags: ["formula", "gt3", "gt2", "gt4", "cup", "prototype", "rally"] },
432
430
  { id: "tier", tags: ["hypercar", "supercar", "sports_car", "hot_hatch", "lightweight"] },
433
431
  { id: "era", tags: ["1960s", "1970s", "1980s", "1990s", "2000s", "2010s", "2020s"] }
434
432
  ];
435
- function Ke(r) {
436
- for (const n of ve)
437
- if (n.tags.includes(r)) return n.id;
433
+ function We(e) {
434
+ for (const t of ge)
435
+ if (t.tags.includes(e)) return t.id;
438
436
  return "other";
439
437
  }
440
- function he(r, n) {
441
- if (n.size === 0) return !0;
438
+ function fe(e, t) {
439
+ if (t.size === 0) return !0;
442
440
  const s = {};
443
- for (const t of n) {
444
- const a = Ke(t);
445
- s[a] || (s[a] = []), s[a].push(t);
441
+ for (const r of t) {
442
+ const a = We(r);
443
+ s[a] || (s[a] = []), s[a].push(r);
446
444
  }
447
- for (const t of Object.values(s))
448
- if (!t.some((a) => r.includes(a))) return !1;
445
+ for (const r of Object.values(s))
446
+ if (!r.some((a) => e.includes(a))) return !1;
449
447
  return !0;
450
448
  }
451
- function xe(r, n) {
452
- const [s, t] = M(/* @__PURE__ */ new Set()), a = r !== void 0, i = a ? r : s, o = K((v) => {
449
+ function Ne(e, t) {
450
+ const [s, r] = D(/* @__PURE__ */ new Set()), a = e !== void 0, i = a ? e : s, o = H((v) => {
453
451
  const l = new Set(i);
454
- l.has(v) ? l.delete(v) : l.add(v), a && n ? n(l) : t(l);
455
- }, [i, a, n]), d = K(() => {
456
- a && n ? n(/* @__PURE__ */ new Set()) : t(/* @__PURE__ */ new Set());
457
- }, [a, n]);
452
+ l.has(v) ? l.delete(v) : l.add(v), a && t ? t(l) : r(l);
453
+ }, [i, a, t]), d = H(() => {
454
+ a && t ? t(/* @__PURE__ */ new Set()) : r(/* @__PURE__ */ new Set());
455
+ }, [a, t]);
458
456
  return { activeTags: i, toggle: o, clear: d };
459
457
  }
460
- function W(r) {
461
- const [n, s] = M(r), t = K((a) => {
458
+ function W(e) {
459
+ const [t, s] = D(e), r = H((a) => {
462
460
  s(
463
461
  (i) => i.key === a ? { key: a, dir: i.dir === "asc" ? "desc" : "asc" } : { key: a, dir: a.includes("timestamp") || a.includes("Date") ? "desc" : "asc" }
464
462
  );
465
463
  }, []);
466
- return [n, t];
464
+ return [t, r];
467
465
  }
468
- function O(r, n, s) {
469
- return [...r].sort((t, a) => {
470
- const i = s(t, n.key), o = s(a, n.key);
466
+ function z(e, t, s) {
467
+ return [...e].sort((r, a) => {
468
+ const i = s(r, t.key), o = s(a, t.key);
471
469
  if (i == null && o == null) return 0;
472
470
  if (i == null) return 1;
473
471
  if (o == null) return -1;
474
472
  const d = typeof i == "string" ? i.localeCompare(o) : i - o;
475
- return n.dir === "desc" ? -d : d;
473
+ return t.dir === "desc" ? -d : d;
476
474
  });
477
475
  }
478
- function ge(r, n = !1) {
479
- const s = n ? r == null ? void 0 : r.filter((t) => t.isValid) : r;
476
+ function be(e, t = !1) {
477
+ const s = t ? e == null ? void 0 : e.filter((r) => r.isValid) : e;
480
478
  return s != null && s.length ? {
481
- s1: Math.min(...s.map((t) => t.sector1Ms).filter(Boolean)),
482
- s2: Math.min(...s.map((t) => t.sector2Ms).filter(Boolean)),
483
- s3: Math.min(...s.map((t) => t.sector3Ms).filter(Boolean))
479
+ s1: Math.min(...s.map((r) => r.sector1Ms).filter(Boolean)),
480
+ s2: Math.min(...s.map((r) => r.sector2Ms).filter(Boolean)),
481
+ s3: Math.min(...s.map((r) => r.sector3Ms).filter(Boolean))
484
482
  } : null;
485
483
  }
486
- function He({ active: r, dir: n }) {
487
- return r ? n === "asc" ? /* @__PURE__ */ e("svg", { className: "pvx-sort-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4.5 15.75l7.5-7.5 7.5 7.5" }) }) : /* @__PURE__ */ e("svg", { className: "pvx-sort-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.5 8.25l-7.5 7.5-7.5-7.5" }) }) : /* @__PURE__ */ e("svg", { className: "pvx-sort-icon pvx-sort-icon--inactive", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8 9l4-4 4 4M16 15l-4 4-4-4" }) });
484
+ function ze({ active: e, dir: t }) {
485
+ return e ? t === "asc" ? /* @__PURE__ */ n("svg", { className: "pvx-sort-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4.5 15.75l7.5-7.5 7.5 7.5" }) }) : /* @__PURE__ */ n("svg", { className: "pvx-sort-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.5 8.25l-7.5 7.5-7.5-7.5" }) }) : /* @__PURE__ */ n("svg", { className: "pvx-sort-icon pvx-sort-icon--inactive", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8 9l4-4 4 4M16 15l-4 4-4-4" }) });
488
486
  }
489
- function S({ label: r, sortKey: n, config: s, onSort: t, className: a = "" }) {
490
- return /* @__PURE__ */ e(
487
+ function M({ label: e, sortKey: t, config: s, onSort: r, className: a = "" }) {
488
+ return /* @__PURE__ */ n(
491
489
  "th",
492
490
  {
493
491
  className: `pvx-th pvx-th--sortable ${a}`,
494
- onClick: () => t(n),
492
+ onClick: () => r(t),
495
493
  children: /* @__PURE__ */ c("span", { className: "pvx-th-inner", children: [
496
- r,
497
- /* @__PURE__ */ e(He, { active: s.key === n, dir: s.dir })
494
+ e,
495
+ /* @__PURE__ */ n(ze, { active: s.key === t, dir: s.dir })
498
496
  ] })
499
497
  }
500
498
  );
501
499
  }
502
- function z({ userId: r, getUserDisplay: n }) {
503
- const { displayName: s, avatarUrl: t } = n(r);
500
+ function G({ userId: e, getUserDisplay: t }) {
501
+ const { displayName: s, avatarUrl: r } = t(e);
504
502
  return /* @__PURE__ */ c("span", { className: "pvx-driver", children: [
505
- t ? /* @__PURE__ */ e("img", { src: t, alt: "", className: "pvx-driver-avatar" }) : /* @__PURE__ */ e("span", { className: "pvx-driver-avatar pvx-driver-avatar--placeholder" }),
506
- /* @__PURE__ */ e("span", { className: "pvx-driver-name", children: s })
503
+ r ? /* @__PURE__ */ n("img", { src: r, alt: "", className: "pvx-driver-avatar" }) : /* @__PURE__ */ n("span", { className: "pvx-driver-avatar pvx-driver-avatar--placeholder" }),
504
+ /* @__PURE__ */ n("span", { className: "pvx-driver-name", children: s })
507
505
  ] });
508
506
  }
509
- function re({ rank: r, podium: n = !1 }) {
510
- return /* @__PURE__ */ e("span", { className: n ? r === 1 ? "pvx-rank pvx-rank--gold" : r === 2 ? "pvx-rank pvx-rank--silver" : r === 3 ? "pvx-rank pvx-rank--bronze" : "pvx-rank" : "pvx-rank", children: r });
507
+ function te({ rank: e, podium: t = !1 }) {
508
+ return /* @__PURE__ */ n("span", { className: t ? e === 1 ? "pvx-rank pvx-rank--gold" : e === 2 ? "pvx-rank pvx-rank--silver" : e === 3 ? "pvx-rank pvx-rank--bronze" : "pvx-rank" : "pvx-rank", children: e });
511
509
  }
512
- function fe({ availableTags: r, activeTags: n, onToggle: s, onClear: t }) {
513
- if (!r || r.length < 2) return null;
514
- const a = ve.map((i) => ({ id: i.id, tags: i.tags.filter((o) => r.includes(o)) })).filter((i) => i.tags.length > 0);
510
+ function ye({ availableTags: e, activeTags: t, onToggle: s, onClear: r }) {
511
+ if (!e || e.length < 2) return null;
512
+ const a = ge.map((i) => ({ id: i.id, tags: i.tags.filter((o) => e.includes(o)) })).filter((i) => i.tags.length > 0);
515
513
  return /* @__PURE__ */ c("div", { className: "pvx-tag-bar", children: [
516
- /* @__PURE__ */ e(
514
+ /* @__PURE__ */ n(
517
515
  "button",
518
516
  {
519
- onClick: t,
520
- className: `pvx-tag ${n.size === 0 ? "pvx-tag--active" : ""}`,
517
+ onClick: r,
518
+ className: `pvx-tag ${t.size === 0 ? "pvx-tag--active" : ""}`,
521
519
  children: "All"
522
520
  }
523
521
  ),
524
522
  a.map((i, o) => /* @__PURE__ */ c("span", { className: "contents", children: [
525
- o > 0 && /* @__PURE__ */ e("span", { className: "pvx-tag-separator" }),
526
- i.tags.map((d) => /* @__PURE__ */ e(
523
+ o > 0 && /* @__PURE__ */ n("span", { className: "pvx-tag-separator" }),
524
+ i.tags.map((d) => /* @__PURE__ */ n(
527
525
  "button",
528
526
  {
529
527
  onClick: () => s(d),
530
- className: `pvx-tag ${n.has(d) ? "pvx-tag--active" : ""}`,
531
- children: Ve[d] || d
528
+ className: `pvx-tag ${t.has(d) ? "pvx-tag--active" : ""}`,
529
+ children: Oe[d] || d
532
530
  },
533
531
  d
534
532
  ))
535
533
  ] }, i.id))
536
534
  ] });
537
535
  }
538
- function ne({ segments: r }) {
539
- return /* @__PURE__ */ e("nav", { className: "pvx-breadcrumb", "aria-label": "Breadcrumb", children: /* @__PURE__ */ e("ol", { className: "pvx-breadcrumb-list", children: r.map((n, s) => {
540
- const t = s === r.length - 1;
536
+ function re({ segments: e }) {
537
+ return /* @__PURE__ */ n("nav", { className: "pvx-breadcrumb", "aria-label": "Breadcrumb", children: /* @__PURE__ */ n("ol", { className: "pvx-breadcrumb-list", children: e.map((t, s) => {
538
+ const r = s === e.length - 1;
541
539
  return /* @__PURE__ */ c("li", { className: "pvx-breadcrumb-item", children: [
542
- s > 0 && /* @__PURE__ */ e("svg", { className: "pvx-breadcrumb-chevron", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 4.5l7.5 7.5-7.5 7.5" }) }),
543
- !t && n.onClick ? /* @__PURE__ */ e("button", { onClick: n.onClick, className: "pvx-breadcrumb-link", children: n.label }) : /* @__PURE__ */ e("span", { className: "pvx-breadcrumb-current", children: n.label })
544
- ] }, n.key);
540
+ s > 0 && /* @__PURE__ */ n("svg", { className: "pvx-breadcrumb-chevron", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 4.5l7.5 7.5-7.5 7.5" }) }),
541
+ !r && t.onClick ? /* @__PURE__ */ n("button", { onClick: t.onClick, className: "pvx-breadcrumb-link", children: t.label }) : /* @__PURE__ */ n("span", { className: "pvx-breadcrumb-current", children: t.label })
542
+ ] }, t.key);
545
543
  }) }) });
546
544
  }
547
- function j({ message: r }) {
545
+ function V({ message: e }) {
548
546
  return /* @__PURE__ */ c("div", { className: "pvx-empty", children: [
549
- /* @__PURE__ */ e("svg", { className: "pvx-empty-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M16.5 18.75h-9m9 0a3 3 0 013 3h-15a3 3 0 013-3m9 0v-4.5A3.375 3.375 0 0013.125 10.875h-2.25A3.375 3.375 0 007.5 14.25v4.5" }) }),
550
- /* @__PURE__ */ e("p", { children: r })
547
+ /* @__PURE__ */ n("svg", { className: "pvx-empty-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M16.5 18.75h-9m9 0a3 3 0 013 3h-15a3 3 0 013-3m9 0v-4.5A3.375 3.375 0 0013.125 10.875h-2.25A3.375 3.375 0 007.5 14.25v4.5" }) }),
548
+ /* @__PURE__ */ n("p", { children: e })
551
549
  ] });
552
550
  }
553
- function V() {
554
- return /* @__PURE__ */ e("div", { className: "pvx-loading", children: "Loading..." });
551
+ function K() {
552
+ return /* @__PURE__ */ n("div", { className: "pvx-loading", children: "Loading..." });
555
553
  }
556
- function We() {
557
- return /* @__PURE__ */ e("svg", { className: "pvx-icon pvx-icon--valid", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4.5 12.75l6 6 9-13.5" }) });
554
+ function Ge() {
555
+ return /* @__PURE__ */ n("svg", { className: "pvx-icon pvx-icon--valid", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4.5 12.75l6 6 9-13.5" }) });
558
556
  }
559
- function Oe() {
560
- return /* @__PURE__ */ e("svg", { className: "pvx-icon pvx-icon--invalid", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) });
557
+ function Qe() {
558
+ return /* @__PURE__ */ n("svg", { className: "pvx-icon pvx-icon--invalid", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) });
561
559
  }
562
- function Or({ tracks: r, isLoading: n, carMetadata: s, getUserDisplay: t, onTrackSelect: a, tags: i, onTagChange: o }) {
563
- const [d, v] = W({ key: "record.timestamp", dir: "desc" }), { activeTags: l, toggle: m, clear: g } = xe(i, o), f = C(() => {
564
- var p;
565
- if (!((p = s == null ? void 0 : s.tags) != null && p.length)) return [];
560
+ function et({ tracks: e, isLoading: t, carMetadata: s, getUserDisplay: r, onTrackSelect: a, tags: i, onTagChange: o }) {
561
+ const [d, v] = W({ key: "record.timestamp", dir: "desc" }), { activeTags: l, toggle: m, clear: f } = Ne(i, o), g = L(() => {
562
+ var u;
563
+ if (!((u = s == null ? void 0 : s.tags) != null && u.length)) return [];
566
564
  const x = /* @__PURE__ */ new Set();
567
- for (const N of r || [])
565
+ for (const N of e || [])
568
566
  N.recordByTag && Object.keys(N.recordByTag).forEach((h) => x.add(h));
569
567
  return s.tags.filter((N) => x.has(N));
570
- }, [r, s]), u = C(() => r ? l.size === 0 ? r : r.map((x) => {
568
+ }, [e, s]), p = L(() => e ? l.size === 0 ? e : e.map((x) => {
571
569
  var h, y;
572
570
  if (!x.recordByTag) return null;
573
- let p = null;
571
+ let u = null;
574
572
  const N = /* @__PURE__ */ new Set();
575
- for (const L of Object.values(x.recordByTag)) {
576
- if (N.has(L.carId)) continue;
577
- N.add(L.carId);
578
- const $ = ((y = (h = s == null ? void 0 : s.cars) == null ? void 0 : h[L.carId]) == null ? void 0 : y.tags) || ["sports_car"];
579
- he($, l) && (!p || L.lapTimeMs < p.lapTimeMs) && (p = L);
573
+ for (const C of Object.values(x.recordByTag)) {
574
+ if (N.has(C.carId)) continue;
575
+ N.add(C.carId);
576
+ const w = ((y = (h = s == null ? void 0 : s.cars) == null ? void 0 : h[C.carId]) == null ? void 0 : y.tags) || ["sports_car"];
577
+ fe(w, l) && (!u || C.lapTimeMs < u.lapTimeMs) && (u = C);
580
578
  }
581
- return p ? {
579
+ return u ? {
582
580
  ...x,
583
581
  record: {
584
- visibleId: p.steamId || p.identifier,
585
- carId: p.carId,
586
- carDisplayName: I(p.carId),
587
- lapTimeMs: p.lapTimeMs,
588
- timestamp: p.recordedAt
582
+ visibleId: u.steamId || u.identifier,
583
+ carId: u.carId,
584
+ carDisplayName: I(u.carId),
585
+ lapTimeMs: u.lapTimeMs,
586
+ timestamp: u.recordedAt
589
587
  }
590
588
  } : null;
591
- }).filter(Boolean) : [], [r, l, s]), b = C(() => O(u, d, (x, p) => {
589
+ }).filter(Boolean) : [], [e, l, s]), b = L(() => z(p, d, (x, u) => {
592
590
  var N, h;
593
- switch (p) {
591
+ switch (u) {
594
592
  case "displayName":
595
593
  return x.displayName;
596
594
  case "record.lapTimeMs":
@@ -603,56 +601,56 @@ function Or({ tracks: r, isLoading: n, carMetadata: s, getUserDisplay: t, onTrac
603
601
  default:
604
602
  return (h = x.record) != null && h.timestamp ? new Date(x.record.timestamp).getTime() : 0;
605
603
  }
606
- }), [u, d]);
607
- return n ? /* @__PURE__ */ e(V, {}) : r != null && r.length ? /* @__PURE__ */ c("div", { className: "pvx-card", children: [
608
- /* @__PURE__ */ e("div", { className: "pvx-card-header", children: /* @__PURE__ */ e("h2", { className: "pvx-card-title", children: "Track Records" }) }),
609
- /* @__PURE__ */ e(fe, { availableTags: f, activeTags: l, onToggle: m, onClear: g }),
610
- /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
611
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
612
- /* @__PURE__ */ e(S, { label: "Track", sortKey: "displayName", config: d, onSort: v }),
613
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Record Holder" }),
614
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-lg", children: "Car" }),
615
- /* @__PURE__ */ e(S, { label: "Lap Time", sortKey: "record.lapTimeMs", config: d, onSort: v }),
616
- /* @__PURE__ */ e(S, { label: "Drivers", sortKey: "driverCount", config: d, onSort: v, className: "pvx-hidden-below-md" }),
617
- /* @__PURE__ */ e(S, { label: "Cars", sortKey: "carCount", config: d, onSort: v, className: "pvx-hidden-below-lg" }),
618
- /* @__PURE__ */ e(S, { label: "Date", sortKey: "record.timestamp", config: d, onSort: v, className: "pvx-hidden-below-xl" })
604
+ }), [p, d]);
605
+ return t ? /* @__PURE__ */ n(K, {}) : e != null && e.length ? /* @__PURE__ */ c("div", { className: "pvx-card", children: [
606
+ /* @__PURE__ */ n("div", { className: "pvx-card-header", children: /* @__PURE__ */ n("h2", { className: "pvx-card-title", children: "Track Records" }) }),
607
+ /* @__PURE__ */ n(ye, { availableTags: g, activeTags: l, onToggle: m, onClear: f }),
608
+ /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
609
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
610
+ /* @__PURE__ */ n(M, { label: "Track", sortKey: "displayName", config: d, onSort: v }),
611
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Record Holder" }),
612
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-lg", children: "Car" }),
613
+ /* @__PURE__ */ n(M, { label: "Lap Time", sortKey: "record.lapTimeMs", config: d, onSort: v }),
614
+ /* @__PURE__ */ n(M, { label: "Drivers", sortKey: "driverCount", config: d, onSort: v, className: "pvx-hidden-below-md" }),
615
+ /* @__PURE__ */ n(M, { label: "Cars", sortKey: "carCount", config: d, onSort: v, className: "pvx-hidden-below-lg" }),
616
+ /* @__PURE__ */ n(M, { label: "Date", sortKey: "record.timestamp", config: d, onSort: v, className: "pvx-hidden-below-xl" })
619
617
  ] }) }),
620
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: b.map((x) => {
621
- var p, N, h;
618
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: b.map((x) => {
619
+ var u, N, h;
622
620
  return /* @__PURE__ */ c(
623
621
  "tr",
624
622
  {
625
623
  className: "pvx-row pvx-row--clickable",
626
624
  onClick: () => a(x.id, x.layout),
627
625
  children: [
628
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary", children: x.displayName }),
629
- /* @__PURE__ */ e("td", { className: "pvx-td", children: (p = x.record) != null && p.visibleId ? /* @__PURE__ */ e(z, { userId: x.record.visibleId, getUserDisplay: t }) : "-" }),
630
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-hidden-below-lg", children: ((N = x.record) == null ? void 0 : N.carDisplayName) || "-" }),
631
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: x.record ? P(x.record.lapTimeMs) : "-" }),
632
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-md", children: x.driverCount || "-" }),
633
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", children: x.carCount || "-" }),
634
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-xl", children: (h = x.record) != null && h.timestamp ? q(x.record.timestamp) : "-" })
626
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary", children: x.displayName }),
627
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: (u = x.record) != null && u.visibleId ? /* @__PURE__ */ n(G, { userId: x.record.visibleId, getUserDisplay: r }) : "-" }),
628
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-hidden-below-lg", children: ((N = x.record) == null ? void 0 : N.carDisplayName) || "-" }),
629
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: x.record ? A(x.record.lapTimeMs) : "-" }),
630
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-md", children: x.driverCount || "-" }),
631
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", children: x.carCount || "-" }),
632
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-xl", children: (h = x.record) != null && h.timestamp ? j(x.record.timestamp) : "-" })
635
633
  ]
636
634
  },
637
635
  `${x.id}|${x.layout || ""}`
638
636
  );
639
637
  }) })
640
638
  ] }) })
641
- ] }) : /* @__PURE__ */ e(j, { message: "No lap times recorded yet." });
639
+ ] }) : /* @__PURE__ */ n(V, { message: "No lap times recorded yet." });
642
640
  }
643
- function zr({ entries: r, isLoading: n, track: s, carMetadata: t, getUserDisplay: a, onCarSelect: i, onNavigate: o, tags: d, onTagChange: v }) {
644
- const [l, m] = W({ key: "lapTimeMs", dir: "asc" }), { activeTags: g, toggle: f, clear: u } = xe(d, v), b = C(() => {
645
- var y, L, $;
646
- if (!r || !((y = t == null ? void 0 : t.tags) != null && y.length)) return [];
641
+ function nt({ entries: e, isLoading: t, track: s, carMetadata: r, getUserDisplay: a, onCarSelect: i, onNavigate: o, tags: d, onTagChange: v }) {
642
+ const [l, m] = W({ key: "lapTimeMs", dir: "asc" }), { activeTags: f, toggle: g, clear: p } = Ne(d, v), b = L(() => {
643
+ var y, C, w;
644
+ if (!e || !((y = r == null ? void 0 : r.tags) != null && y.length)) return [];
647
645
  const h = /* @__PURE__ */ new Set();
648
- for (const w of r)
649
- ((($ = (L = t.cars) == null ? void 0 : L[w.carId]) == null ? void 0 : $.tags) || ["sports_car"]).forEach((U) => h.add(U));
650
- return t.tags.filter((w) => h.has(w));
651
- }, [r, t]), x = C(() => r ? g.size === 0 ? r : r.filter((h) => {
652
- var L, $;
653
- const y = (($ = (L = t == null ? void 0 : t.cars) == null ? void 0 : L[h.carId]) == null ? void 0 : $.tags) || ["sports_car"];
654
- return he(y, g);
655
- }) : [], [r, g, t]), p = C(() => O(x, l, (h, y) => {
646
+ for (const T of e)
647
+ (((w = (C = r.cars) == null ? void 0 : C[T.carId]) == null ? void 0 : w.tags) || ["sports_car"]).forEach((E) => h.add(E));
648
+ return r.tags.filter((T) => h.has(T));
649
+ }, [e, r]), x = L(() => e ? f.size === 0 ? e : e.filter((h) => {
650
+ var C, w;
651
+ const y = ((w = (C = r == null ? void 0 : r.cars) == null ? void 0 : C[h.carId]) == null ? void 0 : w.tags) || ["sports_car"];
652
+ return fe(y, f);
653
+ }) : [], [e, f, r]), u = L(() => z(x, l, (h, y) => {
656
654
  switch (y) {
657
655
  case "carId":
658
656
  return I(h.carId);
@@ -666,112 +664,112 @@ function zr({ entries: r, isLoading: n, track: s, carMetadata: t, getUserDisplay
666
664
  { key: "tracks", label: "Tracks", onClick: () => o("tracks") },
667
665
  { key: "track", label: s.displayName }
668
666
  ];
669
- return n ? /* @__PURE__ */ e(V, {}) : /* @__PURE__ */ c("div", { className: "pvx-card", children: [
670
- /* @__PURE__ */ e("div", { className: "pvx-card-header", children: /* @__PURE__ */ e(ne, { segments: N }) }),
671
- /* @__PURE__ */ e(fe, { availableTags: b, activeTags: g, onToggle: f, onClear: u }),
672
- r != null && r.length ? /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
673
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
674
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--narrow", children: "#" }),
675
- /* @__PURE__ */ e(S, { label: "Car", sortKey: "carId", config: l, onSort: m }),
676
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Record Holder" }),
677
- /* @__PURE__ */ e(S, { label: "Lap Time", sortKey: "lapTimeMs", config: l, onSort: m }),
678
- /* @__PURE__ */ e(S, { label: "Drivers", sortKey: "driverCount", config: l, onSort: m, className: "pvx-hidden-below-md" }),
679
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-lg", children: "Date" })
667
+ return t ? /* @__PURE__ */ n(K, {}) : /* @__PURE__ */ c("div", { className: "pvx-card", children: [
668
+ /* @__PURE__ */ n("div", { className: "pvx-card-header", children: /* @__PURE__ */ n(re, { segments: N }) }),
669
+ /* @__PURE__ */ n(ye, { availableTags: b, activeTags: f, onToggle: g, onClear: p }),
670
+ e != null && e.length ? /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
671
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
672
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--narrow", children: "#" }),
673
+ /* @__PURE__ */ n(M, { label: "Car", sortKey: "carId", config: l, onSort: m }),
674
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Record Holder" }),
675
+ /* @__PURE__ */ n(M, { label: "Lap Time", sortKey: "lapTimeMs", config: l, onSort: m }),
676
+ /* @__PURE__ */ n(M, { label: "Drivers", sortKey: "driverCount", config: l, onSort: m, className: "pvx-hidden-below-md" }),
677
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-lg", children: "Date" })
680
678
  ] }) }),
681
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: p.map((h, y) => /* @__PURE__ */ c(
679
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: u.map((h, y) => /* @__PURE__ */ c(
682
680
  "tr",
683
681
  {
684
682
  className: "pvx-row pvx-row--clickable",
685
683
  onClick: () => i(h.carId),
686
684
  children: [
687
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e(re, { rank: y + 1, podium: !0 }) }),
688
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary", children: I(h.carId) }),
689
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e(z, { userId: h.steamId || h.userId, getUserDisplay: a }) }),
690
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: P(h.lapTimeMs) }),
691
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-md", children: h.driverCount || "-" }),
692
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-lg", children: h.recordedAt ? q(h.recordedAt) : "-" })
685
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n(te, { rank: y + 1, podium: !0 }) }),
686
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary", children: I(h.carId) }),
687
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n(G, { userId: h.steamId || h.userId, getUserDisplay: a }) }),
688
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: A(h.lapTimeMs) }),
689
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-md", children: h.driverCount || "-" }),
690
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-lg", children: h.recordedAt ? j(h.recordedAt) : "-" })
693
691
  ]
694
692
  },
695
693
  h.carId
696
694
  )) })
697
- ] }) }) : /* @__PURE__ */ e(j, { message: "No lap times for this track yet." })
695
+ ] }) }) : /* @__PURE__ */ n(V, { message: "No lap times for this track yet." })
698
696
  ] });
699
697
  }
700
- function Gr({ entries: r, isLoading: n, track: s, carId: t, getUserDisplay: a, onDriverSelect: i, onNavigate: o, highlightId: d }) {
701
- const [v, l] = W({ key: "lapTimeMs", dir: "asc" }), m = C(() => ge(r), [r]), g = C(() => O(r || [], v, (u, b) => {
698
+ function tt({ entries: e, isLoading: t, track: s, carId: r, getUserDisplay: a, onDriverSelect: i, onNavigate: o, highlightId: d }) {
699
+ const [v, l] = W({ key: "lapTimeMs", dir: "asc" }), m = L(() => be(e), [e]), f = L(() => z(e || [], v, (p, b) => {
702
700
  switch (b) {
703
701
  case "userId":
704
- return a(u.steamId || u.userId).displayName;
702
+ return a(p.steamId || p.userId).displayName;
705
703
  case "lapCount":
706
- return u.lapCount || 0;
704
+ return p.lapCount || 0;
707
705
  case "lapTimeMs":
708
706
  default:
709
- return u.lapTimeMs;
707
+ return p.lapTimeMs;
710
708
  }
711
- }), [r, v, a]), f = [
709
+ }), [e, v, a]), g = [
712
710
  { key: "tracks", label: "Tracks", onClick: () => o("tracks") },
713
711
  { key: "track", label: s.displayName, onClick: () => o("track") },
714
- { key: "car", label: I(t) }
712
+ { key: "car", label: I(r) }
715
713
  ];
716
- return n ? /* @__PURE__ */ e(V, {}) : /* @__PURE__ */ c("div", { className: "pvx-card", children: [
717
- /* @__PURE__ */ e("div", { className: "pvx-card-header", children: /* @__PURE__ */ e(ne, { segments: f }) }),
718
- r != null && r.length ? /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
719
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
720
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--narrow", children: "#" }),
721
- /* @__PURE__ */ e(S, { label: "Driver", sortKey: "userId", config: v, onSort: l }),
722
- /* @__PURE__ */ e(S, { label: "Lap Time", sortKey: "lapTimeMs", config: v, onSort: l }),
723
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "S1" }),
724
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "S2" }),
725
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "S3" }),
726
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-lg", children: "Tyre" }),
727
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-xl", children: "Fuel" }),
728
- /* @__PURE__ */ e(S, { label: "Laps", sortKey: "lapCount", config: v, onSort: l, className: "pvx-hidden-below-lg" }),
729
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-xl", children: "Date" })
714
+ return t ? /* @__PURE__ */ n(K, {}) : /* @__PURE__ */ c("div", { className: "pvx-card", children: [
715
+ /* @__PURE__ */ n("div", { className: "pvx-card-header", children: /* @__PURE__ */ n(re, { segments: g }) }),
716
+ e != null && e.length ? /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
717
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
718
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--narrow", children: "#" }),
719
+ /* @__PURE__ */ n(M, { label: "Driver", sortKey: "userId", config: v, onSort: l }),
720
+ /* @__PURE__ */ n(M, { label: "Lap Time", sortKey: "lapTimeMs", config: v, onSort: l }),
721
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "S1" }),
722
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "S2" }),
723
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "S3" }),
724
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-lg", children: "Tyre" }),
725
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-xl", children: "Fuel" }),
726
+ /* @__PURE__ */ n(M, { label: "Laps", sortKey: "lapCount", config: v, onSort: l, className: "pvx-hidden-below-lg" }),
727
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-xl", children: "Date" })
730
728
  ] }) }),
731
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: g.map((u, b) => {
732
- const x = b + 1, p = u.steamId || u.userId, N = m && u.sector1Ms === m.s1, h = m && u.sector2Ms === m.s2, y = m && u.sector3Ms === m.s3;
729
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: f.map((p, b) => {
730
+ const x = b + 1, u = p.steamId || p.userId, N = m && p.sector1Ms === m.s1, h = m && p.sector2Ms === m.s2, y = m && p.sector3Ms === m.s3;
733
731
  return /* @__PURE__ */ c(
734
732
  "tr",
735
733
  {
736
- className: `pvx-row pvx-row--clickable ${d && p === d ? "pvx-row--highlight" : x <= 3 ? "pvx-row--podium" : ""}`,
737
- onClick: () => i(p),
734
+ className: `pvx-row pvx-row--clickable ${d && u === d ? "pvx-row--highlight" : x <= 3 ? "pvx-row--podium" : ""}`,
735
+ onClick: () => i(u),
738
736
  children: [
739
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e(re, { rank: x, podium: !0 }) }),
740
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary", children: /* @__PURE__ */ e(z, { userId: p, getUserDisplay: a }) }),
741
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: P(u.lapTimeMs) }),
742
- /* @__PURE__ */ e("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${N ? "pvx-td--best-sector" : ""}`, children: D(u.sector1Ms) }),
743
- /* @__PURE__ */ e("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${h ? "pvx-td--best-sector" : ""}`, children: D(u.sector2Ms) }),
744
- /* @__PURE__ */ e("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${y ? "pvx-td--best-sector" : ""}`, children: D(u.sector3Ms) }),
745
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", title: ce(u.tyreCompound), children: u.tyreCompound || "-" }),
746
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-xl", children: u.startingFuelL ? `${u.startingFuelL}L` : "-" }),
747
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", children: u.lapCount || "-" }),
748
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-xl", children: u.recordedAt ? q(u.recordedAt) : "-" })
737
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n(te, { rank: x, podium: !0 }) }),
738
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary", children: /* @__PURE__ */ n(G, { userId: u, getUserDisplay: a }) }),
739
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: A(p.lapTimeMs) }),
740
+ /* @__PURE__ */ n("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${N ? "pvx-td--best-sector" : ""}`, children: B(p.sector1Ms) }),
741
+ /* @__PURE__ */ n("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${h ? "pvx-td--best-sector" : ""}`, children: B(p.sector2Ms) }),
742
+ /* @__PURE__ */ n("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${y ? "pvx-td--best-sector" : ""}`, children: B(p.sector3Ms) }),
743
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", title: de(p.tyreCompound), children: p.tyreCompound || "-" }),
744
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-xl", children: p.startingFuelL ? `${p.startingFuelL}L` : "-" }),
745
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", children: p.lapCount || "-" }),
746
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-xl", children: p.recordedAt ? j(p.recordedAt) : "-" })
749
747
  ]
750
748
  },
751
- p
749
+ u
752
750
  );
753
751
  }) })
754
- ] }) }) : /* @__PURE__ */ e(j, { message: "No lap times for this car yet." })
752
+ ] }) }) : /* @__PURE__ */ n(V, { message: "No lap times for this car yet." })
755
753
  ] });
756
754
  }
757
- function Qr({ userId: r, track: n, carId: s, game: t, gameVersion: a, showInvalid: i, getUserDisplay: o, onToggleInvalid: d, onNavigate: v }) {
758
- const { data: l, driverName: m, theoreticalBest: g, isLoading: f } = Fe(r, n.id, n.layout, s, { showInvalid: i, game: t, gameVersion: a }), { displayName: u, avatarUrl: b } = o(r, m), x = C(() => ge(l, !0), [l]), p = C(() => {
755
+ function rt({ userId: e, track: t, carId: s, game: r, gameVersion: a, showInvalid: i, getUserDisplay: o, onToggleInvalid: d, onNavigate: v }) {
756
+ const { data: l, driverName: m, theoreticalBest: f, isLoading: g } = Ve(e, t.id, t.layout, s, { showInvalid: i, game: r, gameVersion: a }), { displayName: p, avatarUrl: b } = o(e, m), x = L(() => be(l, !0), [l]), u = L(() => {
759
757
  const h = (l == null ? void 0 : l.filter((y) => y.isValid)) || [];
760
758
  return h.length ? Math.min(...h.map((y) => y.lapTimeMs)) : null;
761
759
  }, [l]), N = [
762
760
  { key: "tracks", label: "Tracks", onClick: () => v("tracks") },
763
- { key: "track", label: n.displayName, onClick: () => v("track") },
761
+ { key: "track", label: t.displayName, onClick: () => v("track") },
764
762
  { key: "car", label: I(s), onClick: () => v("car") },
765
- { key: "driver", label: u }
763
+ { key: "driver", label: p }
766
764
  ];
767
- return f ? /* @__PURE__ */ e(V, {}) : /* @__PURE__ */ c("div", { className: "pvx-card", children: [
765
+ return g ? /* @__PURE__ */ n(K, {}) : /* @__PURE__ */ c("div", { className: "pvx-card", children: [
768
766
  /* @__PURE__ */ c("div", { className: "pvx-card-header pvx-card-header--split", children: [
769
767
  /* @__PURE__ */ c("div", { className: "pvx-card-header-left", children: [
770
- /* @__PURE__ */ e(ne, { segments: N }),
771
- b ? /* @__PURE__ */ e("img", { src: b, alt: "", className: "pvx-driver-avatar pvx-driver-avatar--lg" }) : /* @__PURE__ */ e("span", { className: "pvx-driver-avatar pvx-driver-avatar--lg pvx-driver-avatar--placeholder" })
768
+ /* @__PURE__ */ n(re, { segments: N }),
769
+ b ? /* @__PURE__ */ n("img", { src: b, alt: "", className: "pvx-driver-avatar pvx-driver-avatar--lg" }) : /* @__PURE__ */ n("span", { className: "pvx-driver-avatar pvx-driver-avatar--lg pvx-driver-avatar--placeholder" })
772
770
  ] }),
773
771
  /* @__PURE__ */ c("label", { className: "pvx-checkbox-label", children: [
774
- /* @__PURE__ */ e(
772
+ /* @__PURE__ */ n(
775
773
  "input",
776
774
  {
777
775
  type: "checkbox",
@@ -780,151 +778,151 @@ function Qr({ userId: r, track: n, carId: s, game: t, gameVersion: a, showInvali
780
778
  className: "pvx-checkbox"
781
779
  }
782
780
  ),
783
- /* @__PURE__ */ e("span", { children: "Show invalid laps" })
781
+ /* @__PURE__ */ n("span", { children: "Show invalid laps" })
784
782
  ] })
785
783
  ] }),
786
- g && /* @__PURE__ */ c("div", { className: "pvx-theoretical-best", children: [
787
- /* @__PURE__ */ e("span", { className: "pvx-theoretical-best-label", children: "Theoretical Best:" }),
788
- /* @__PURE__ */ e("span", { className: "pvx-theoretical-best-time", children: P(g.lapTimeMs) }),
784
+ f && /* @__PURE__ */ c("div", { className: "pvx-theoretical-best", children: [
785
+ /* @__PURE__ */ n("span", { className: "pvx-theoretical-best-label", children: "Theoretical Best:" }),
786
+ /* @__PURE__ */ n("span", { className: "pvx-theoretical-best-time", children: A(f.lapTimeMs) }),
789
787
  /* @__PURE__ */ c("span", { className: "pvx-theoretical-best-sectors", children: [
790
788
  "(",
791
- D(g.sector1Ms),
789
+ B(f.sector1Ms),
792
790
  " + ",
793
- D(g.sector2Ms),
791
+ B(f.sector2Ms),
794
792
  " + ",
795
- D(g.sector3Ms),
793
+ B(f.sector3Ms),
796
794
  ")"
797
795
  ] })
798
796
  ] }),
799
- l != null && l.length ? /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
800
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
801
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--narrow", children: "#" }),
802
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-md", children: "Lap" }),
803
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Lap Time" }),
804
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "S1" }),
805
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "S2" }),
806
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "S3" }),
807
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--narrow", children: "Valid" }),
808
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-lg", children: "Tyre" }),
809
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-lg", children: "Fuel" }),
810
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-xl", children: "Date" })
797
+ l != null && l.length ? /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
798
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
799
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--narrow", children: "#" }),
800
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-md", children: "Lap" }),
801
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Lap Time" }),
802
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "S1" }),
803
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "S2" }),
804
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "S3" }),
805
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--narrow", children: "Valid" }),
806
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-lg", children: "Tyre" }),
807
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-lg", children: "Fuel" }),
808
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-xl", children: "Date" })
811
809
  ] }) }),
812
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: l.map((h, y) => {
813
- const L = h.isValid && h.lapTimeMs === p, $ = x && h.isValid && h.sector1Ms === x.s1, w = x && h.isValid && h.sector2Ms === x.s2, te = x && h.isValid && h.sector3Ms === x.s3;
814
- let U = "pvx-row";
815
- return h.isValid || (U += " pvx-row--invalid"), L && (U += " pvx-row--personal-best"), /* @__PURE__ */ c("tr", { className: U, children: [
816
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e("span", { className: `pvx-rank ${L ? "pvx-rank--gold" : ""}`, children: y + 1 }) }),
817
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-md", children: h.lapNumber || "-" }),
818
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: P(h.lapTimeMs) }),
819
- /* @__PURE__ */ e("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${$ ? "pvx-td--best-sector" : ""}`, children: D(h.sector1Ms) }),
820
- /* @__PURE__ */ e("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${w ? "pvx-td--best-sector" : ""}`, children: D(h.sector2Ms) }),
821
- /* @__PURE__ */ e("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${te ? "pvx-td--best-sector" : ""}`, children: D(h.sector3Ms) }),
822
- /* @__PURE__ */ e("td", { className: "pvx-td", title: h.isValid ? void 0 : h.invalidReason || "Invalid", children: h.isValid ? /* @__PURE__ */ e(We, {}) : /* @__PURE__ */ e(Oe, {}) }),
823
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", title: ce(h.tyreCompound), children: h.tyreCompound || "-" }),
824
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", children: h.startingFuelL ? `${h.startingFuelL}L` : "-" }),
825
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-xl", children: q(h.timestamp) })
810
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: l.map((h, y) => {
811
+ const C = h.isValid && h.lapTimeMs === u, w = x && h.isValid && h.sector1Ms === x.s1, T = x && h.isValid && h.sector2Ms === x.s2, $ = x && h.isValid && h.sector3Ms === x.s3;
812
+ let E = "pvx-row";
813
+ return h.isValid || (E += " pvx-row--invalid"), C && (E += " pvx-row--personal-best"), /* @__PURE__ */ c("tr", { className: E, children: [
814
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n("span", { className: `pvx-rank ${C ? "pvx-rank--gold" : ""}`, children: y + 1 }) }),
815
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-md", children: h.lapNumber || "-" }),
816
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: A(h.lapTimeMs) }),
817
+ /* @__PURE__ */ n("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${w ? "pvx-td--best-sector" : ""}`, children: B(h.sector1Ms) }),
818
+ /* @__PURE__ */ n("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${T ? "pvx-td--best-sector" : ""}`, children: B(h.sector2Ms) }),
819
+ /* @__PURE__ */ n("td", { className: `pvx-td pvx-td--mono pvx-td--sector pvx-hidden-below-sm ${$ ? "pvx-td--best-sector" : ""}`, children: B(h.sector3Ms) }),
820
+ /* @__PURE__ */ n("td", { className: "pvx-td", title: h.isValid ? void 0 : h.invalidReason || "Invalid", children: h.isValid ? /* @__PURE__ */ n(Ge, {}) : /* @__PURE__ */ n(Qe, {}) }),
821
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", title: de(h.tyreCompound), children: h.tyreCompound || "-" }),
822
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-lg", children: h.startingFuelL ? `${h.startingFuelL}L` : "-" }),
823
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--muted pvx-hidden-below-xl", children: j(h.timestamp) })
826
824
  ] }, h.id);
827
825
  }) })
828
- ] }) }) : /* @__PURE__ */ e(j, { message: i ? "No laps recorded for this combination." : 'No valid laps. Try enabling "Show invalid laps".' })
826
+ ] }) }) : /* @__PURE__ */ n(V, { message: i ? "No laps recorded for this combination." : 'No valid laps. Try enabling "Show invalid laps".' })
829
827
  ] });
830
828
  }
831
- function Yr({ drivers: r, isLoading: n, getUserDisplay: s, game: t, gameVersion: a, onComboSelect: i }) {
832
- const [o, d] = W({ key: "rank", dir: "asc" }), [v, l] = M(null), m = C(() => r ? O(r, o, (f, u) => {
833
- switch (u) {
829
+ function st({ drivers: e, isLoading: t, getUserDisplay: s, game: r, gameVersion: a, onComboSelect: i }) {
830
+ const [o, d] = W({ key: "rank", dir: "asc" }), [v, l] = D(null), m = L(() => e ? z(e, o, (g, p) => {
831
+ switch (p) {
834
832
  case "rating":
835
- return f.rating;
833
+ return g.rating;
836
834
  case "comboCount":
837
- return f.comboCount || 0;
835
+ return g.comboCount || 0;
838
836
  case "distinctCars":
839
- return f.distinctCars || 0;
837
+ return g.distinctCars || 0;
840
838
  case "rank":
841
839
  default:
842
- return f.rank;
840
+ return g.rank;
843
841
  }
844
- }) : [], [r, o]);
845
- if (n) return /* @__PURE__ */ e(V, {});
846
- if (!(r != null && r.length))
847
- return /* @__PURE__ */ e("div", { className: "pvx-card", children: /* @__PURE__ */ e(j, { message: "Not enough data for rankings yet." }) });
848
- const g = 5;
842
+ }) : [], [e, o]);
843
+ if (t) return /* @__PURE__ */ n(K, {});
844
+ if (!(e != null && e.length))
845
+ return /* @__PURE__ */ n("div", { className: "pvx-card", children: /* @__PURE__ */ n(V, { message: "Not enough data for rankings yet." }) });
846
+ const f = 5;
849
847
  return /* @__PURE__ */ c("div", { className: "pvx-card", children: [
850
848
  /* @__PURE__ */ c("div", { className: "pvx-card-header pvx-rankings-header", children: [
851
- /* @__PURE__ */ e("h2", { className: "pvx-card-title", children: "Driver Rankings" }),
849
+ /* @__PURE__ */ n("h2", { className: "pvx-card-title", children: "Driver Rankings" }),
852
850
  /* @__PURE__ */ c("div", { className: "pvx-rankings-info-trigger", children: [
853
- /* @__PURE__ */ e("svg", { className: "pvx-rankings-info-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" }) }),
851
+ /* @__PURE__ */ n("svg", { className: "pvx-rankings-info-icon", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" }) }),
854
852
  /* @__PURE__ */ c("div", { className: "pvx-rankings-info-tooltip", children: [
855
- /* @__PURE__ */ e("p", { className: "pvx-rankings-info-title", children: "How ratings work" }),
853
+ /* @__PURE__ */ n("p", { className: "pvx-rankings-info-title", children: "How ratings work" }),
856
854
  /* @__PURE__ */ c("ul", { className: "pvx-rankings-info-list", children: [
857
- /* @__PURE__ */ e("li", { children: "For each car/track combo with 3+ drivers, you're ranked by lap time and given a percentile (100 = fastest, 0 = slowest)" }),
858
- /* @__PURE__ */ e("li", { children: "Your rating is a weighted average across all your combos — bigger fields count more" }),
859
- /* @__PURE__ */ e("li", { children: "A confidence adjustment rewards car diversity: the more different cars you drive competitively, the closer your rating reflects your true score" }),
860
- /* @__PURE__ */ e("li", { children: "Minimum 2 qualifying combos required" })
855
+ /* @__PURE__ */ n("li", { children: "For each car/track combo with 3+ drivers, you're ranked by lap time and given a percentile (100 = fastest, 0 = slowest)" }),
856
+ /* @__PURE__ */ n("li", { children: "Your rating is a weighted average across all your combos — bigger fields count more" }),
857
+ /* @__PURE__ */ n("li", { children: "A confidence adjustment rewards car diversity: the more different cars you drive competitively, the closer your rating reflects your true score" }),
858
+ /* @__PURE__ */ n("li", { children: "Minimum 2 qualifying combos required" })
861
859
  ] })
862
860
  ] })
863
861
  ] })
864
862
  ] }),
865
- /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
866
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
867
- /* @__PURE__ */ e(S, { label: "#", sortKey: "rank", config: o, onSort: d, className: "pvx-th--narrow" }),
868
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Driver" }),
869
- /* @__PURE__ */ e(S, { label: "Rating", sortKey: "rating", config: o, onSort: d }),
870
- /* @__PURE__ */ e(S, { label: "Cars", sortKey: "distinctCars", config: o, onSort: d, className: "pvx-hidden-below-sm" }),
871
- /* @__PURE__ */ e(S, { label: "Combos", sortKey: "comboCount", config: o, onSort: d, className: "pvx-hidden-below-sm" })
863
+ /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
864
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
865
+ /* @__PURE__ */ n(M, { label: "#", sortKey: "rank", config: o, onSort: d, className: "pvx-th--narrow" }),
866
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Driver" }),
867
+ /* @__PURE__ */ n(M, { label: "Rating", sortKey: "rating", config: o, onSort: d }),
868
+ /* @__PURE__ */ n(M, { label: "Cars", sortKey: "distinctCars", config: o, onSort: d, className: "pvx-hidden-below-sm" }),
869
+ /* @__PURE__ */ n(M, { label: "Combos", sortKey: "comboCount", config: o, onSort: d, className: "pvx-hidden-below-sm" })
872
870
  ] }) }),
873
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: m.map((f) => {
874
- const u = v === f.identifier;
875
- return /* @__PURE__ */ e(
876
- ze,
871
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: m.map((g) => {
872
+ const p = v === g.identifier;
873
+ return /* @__PURE__ */ n(
874
+ Ye,
877
875
  {
878
- driver: f,
876
+ driver: g,
879
877
  getUserDisplay: s,
880
- isExpanded: u,
881
- onToggle: () => l(u ? null : f.identifier),
882
- colCount: g,
883
- game: t,
878
+ isExpanded: p,
879
+ onToggle: () => l(p ? null : g.identifier),
880
+ colCount: f,
881
+ game: r,
884
882
  gameVersion: a,
885
883
  onComboSelect: i
886
884
  },
887
- f.identifier
885
+ g.identifier
888
886
  );
889
887
  }) })
890
888
  ] }) })
891
889
  ] });
892
890
  }
893
- function ze({ driver: r, getUserDisplay: n, isExpanded: s, onToggle: t, colCount: a, game: i, gameVersion: o, onComboSelect: d }) {
894
- const v = r.identifier;
895
- return /* @__PURE__ */ c(E, { children: [
891
+ function Ye({ driver: e, getUserDisplay: t, isExpanded: s, onToggle: r, colCount: a, game: i, gameVersion: o, onComboSelect: d }) {
892
+ const v = e.identifier;
893
+ return /* @__PURE__ */ c(F, { children: [
896
894
  /* @__PURE__ */ c(
897
895
  "tr",
898
896
  {
899
- className: `pvx-row pvx-row--clickable ${r.rank <= 3 ? "pvx-row--podium" : ""}`,
900
- onClick: t,
897
+ className: `pvx-row pvx-row--clickable ${e.rank <= 3 ? "pvx-row--podium" : ""}`,
898
+ onClick: r,
901
899
  children: [
902
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e(re, { rank: r.rank, podium: !0 }) }),
903
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary", children: /* @__PURE__ */ e(z, { userId: v, getUserDisplay: n }) }),
904
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: r.rating.toFixed(1) }),
905
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: r.distinctCars || "-" }),
906
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: /* @__PURE__ */ c("span", { className: "pvx-rankings-combo-count", children: [
907
- r.comboCount,
908
- /* @__PURE__ */ e("svg", { className: `pvx-rankings-chevron ${s ? "pvx-rankings-chevron--open" : ""}`, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ e("path", { d: "m6 9 6 6 6-6" }) })
900
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n(te, { rank: e.rank, podium: !0 }) }),
901
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary", children: /* @__PURE__ */ n(G, { userId: v, getUserDisplay: t }) }),
902
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--primary pvx-td--mono", children: e.rating.toFixed(1) }),
903
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: e.distinctCars || "-" }),
904
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: /* @__PURE__ */ c("span", { className: "pvx-rankings-combo-count", children: [
905
+ e.comboCount,
906
+ /* @__PURE__ */ n("svg", { className: `pvx-rankings-chevron ${s ? "pvx-rankings-chevron--open" : ""}`, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ n("path", { d: "m6 9 6 6 6-6" }) })
909
907
  ] }) })
910
908
  ]
911
909
  }
912
910
  ),
913
- s && r.combos && /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e("td", { colSpan: a, className: "pvx-rankings-combos-cell", children: /* @__PURE__ */ e("div", { className: "pvx-rankings-combos", children: r.combos.map((l, m) => {
914
- const g = l.layout ? `${l.trackId}|${l.layout}` : l.trackId, f = d ? () => d({ track: g, car: l.carId, highlight: v, game: i, gameVersion: o }) : void 0;
911
+ s && e.combos && /* @__PURE__ */ n("tr", { children: /* @__PURE__ */ n("td", { colSpan: a, className: "pvx-rankings-combos-cell", children: /* @__PURE__ */ n("div", { className: "pvx-rankings-combos", children: e.combos.map((l, m) => {
912
+ const f = l.layout ? `${l.trackId}|${l.layout}` : l.trackId, g = d ? () => d({ track: f, car: l.carId, highlight: v, game: i, gameVersion: o }) : void 0;
915
913
  return /* @__PURE__ */ c(
916
914
  "div",
917
915
  {
918
- className: `pvx-rankings-combo ${f ? "pvx-rankings-combo--clickable" : ""}`,
919
- onClick: f,
920
- role: f ? "button" : void 0,
916
+ className: `pvx-rankings-combo ${g ? "pvx-rankings-combo--clickable" : ""}`,
917
+ onClick: g,
918
+ role: g ? "button" : void 0,
921
919
  children: [
922
920
  /* @__PURE__ */ c("div", { className: "pvx-rankings-combo-info", children: [
923
- /* @__PURE__ */ e("p", { className: "pvx-rankings-combo-track", children: _(l.trackId, l.layout, i) }),
924
- /* @__PURE__ */ e("p", { className: "pvx-rankings-combo-car", children: I(l.carId) })
921
+ /* @__PURE__ */ n("p", { className: "pvx-rankings-combo-track", children: q(l.trackId, l.layout, i) }),
922
+ /* @__PURE__ */ n("p", { className: "pvx-rankings-combo-car", children: I(l.carId) })
925
923
  ] }),
926
924
  /* @__PURE__ */ c("div", { className: "pvx-rankings-combo-stats", children: [
927
- /* @__PURE__ */ e("p", { className: "pvx-rankings-combo-time", children: P(l.lapTimeMs) }),
925
+ /* @__PURE__ */ n("p", { className: "pvx-rankings-combo-time", children: A(l.lapTimeMs) }),
928
926
  /* @__PURE__ */ c("p", { className: `pvx-rankings-combo-pct ${l.percentile >= 75 ? "pvx-rankings-combo-pct--high" : l.percentile >= 50 ? "pvx-rankings-combo-pct--mid" : l.percentile >= 25 ? "pvx-rankings-combo-pct--low" : "pvx-rankings-combo-pct--bottom"}`, children: [
929
927
  l.percentile.toFixed(0),
930
928
  "%",
@@ -944,7 +942,7 @@ function ze({ driver: r, getUserDisplay: n, isExpanded: s, onToggle: t, colCount
944
942
  }) }) }) })
945
943
  ] });
946
944
  }
947
- const Ge = {
945
+ const Je = {
948
946
  GBR: "🇬🇧",
949
947
  DEU: "🇩🇪",
950
948
  NLD: "🇳🇱",
@@ -975,114 +973,158 @@ const Ge = {
975
973
  RUS: "🇷🇺",
976
974
  TUR: "🇹🇷",
977
975
  KOR: "🇰🇷"
978
- }, Ne = ["🥇", "🥈", "🥉"], Qe = {
976
+ }, se = ["🥇", "🥈", "🥉"], Ze = {
979
977
  championship: "Championship",
980
978
  series: "Series",
981
979
  event: "Event"
982
- }, ae = ["PRACTICE", "QUALIFYING", "RACE"];
983
- function be({ position: r }) {
984
- return /* @__PURE__ */ e("span", { className: r === 1 ? "pvx-rank pvx-rank--gold" : r === 2 ? "pvx-rank pvx-rank--silver" : r === 3 ? "pvx-rank pvx-rank--bronze" : "pvx-rank", children: r });
985
- }
986
- function ye({ nation: r }) {
987
- const n = r && Ge[r];
988
- return n ? /* @__PURE__ */ e("span", { className: "pvx-nation-flag", title: r, children: n }) : null;
989
- }
990
- function Ye({ sessions: r, activeSession: n, onSelect: s }) {
991
- if (!r || r.length <= 1) return null;
992
- const t = [...r].sort(
993
- (a, i) => ae.indexOf(a.type) - ae.indexOf(i.type)
980
+ }, oe = ["PRACTICE", "QUALIFYING", "RACE"];
981
+ function ke({ position: e }) {
982
+ return /* @__PURE__ */ n("span", { className: e === 1 ? "pvx-rank pvx-rank--gold" : e === 2 ? "pvx-rank pvx-rank--silver" : e === 3 ? "pvx-rank pvx-rank--bronze" : "pvx-rank", children: e });
983
+ }
984
+ function ae({ nation: e }) {
985
+ const t = e && Je[e];
986
+ return t ? /* @__PURE__ */ n("span", { className: "pvx-nation-flag", title: e, children: t }) : null;
987
+ }
988
+ function Xe({ sessions: e, activeSession: t, onSelect: s }) {
989
+ if (!e || e.length <= 1) return null;
990
+ const r = [...e].sort(
991
+ (a, i) => oe.indexOf(a.type) - oe.indexOf(i.type)
994
992
  );
995
- return /* @__PURE__ */ e("div", { className: "pvx-session-tabs", children: t.map((a) => /* @__PURE__ */ e(
993
+ return /* @__PURE__ */ n("div", { className: "pvx-session-tabs", children: r.map((a) => /* @__PURE__ */ n(
996
994
  "button",
997
995
  {
998
996
  onClick: () => s(a.type),
999
- className: `pvx-session-tab ${n === a.type ? "pvx-session-tab--active" : ""}`,
997
+ className: `pvx-session-tab ${t === a.type ? "pvx-session-tab--active" : ""}`,
1000
998
  children: a.type
1001
999
  },
1002
1000
  a.type
1003
1001
  )) });
1004
1002
  }
1005
- function Je({ type: r }) {
1006
- return /* @__PURE__ */ e("span", { className: `pvx-comp-badge pvx-comp-badge--${r}`, children: Qe[r] || r });
1003
+ function en({ type: e }) {
1004
+ return /* @__PURE__ */ n("span", { className: `pvx-comp-badge pvx-comp-badge--${e}`, children: Ze[e] || e });
1007
1005
  }
1008
- function Q({ children: r, variant: n = "default" }) {
1009
- return /* @__PURE__ */ e("span", { className: `pvx-info-pill ${n !== "default" ? `pvx-info-pill--${n}` : ""}`, children: r });
1006
+ function Y({ children: e, variant: t = "default" }) {
1007
+ return /* @__PURE__ */ n("span", { className: `pvx-info-pill ${t !== "default" ? `pvx-info-pill--${t}` : ""}`, children: e });
1010
1008
  }
1011
- function Ze(r) {
1012
- if (!r) return "TBD";
1013
- const n = new Date(r);
1014
- if (isNaN(n)) return "TBD";
1015
- const s = n.toLocaleDateString("en-GB", { weekday: "short", day: "numeric", month: "short" }), t = n.toLocaleTimeString("en-GB", { hour: "2-digit", minute: "2-digit" });
1016
- return `${s} • ${t}`;
1009
+ function nn(e) {
1010
+ if (!e) return "TBD";
1011
+ const t = new Date(e);
1012
+ if (isNaN(t)) return "TBD";
1013
+ const s = t.toLocaleDateString("en-GB", { weekday: "short", day: "numeric", month: "short" }), r = t.toLocaleTimeString("en-GB", { hour: "2-digit", minute: "2-digit" });
1014
+ return `${s} • ${r}`;
1017
1015
  }
1018
- function Xe(r) {
1019
- return r.reduce((n, s) => {
1020
- var t;
1021
- return (t = s.splits) != null && t.length ? n ? n.map((a, i) => {
1016
+ function tn(e) {
1017
+ return e.reduce((t, s) => {
1018
+ var r;
1019
+ return (r = s.splits) != null && r.length ? t ? t.map((a, i) => {
1022
1020
  const o = s.splits[i];
1023
1021
  return o && o < a ? o : a;
1024
- }) : [...s.splits] : n;
1022
+ }) : [...s.splits] : t;
1025
1023
  }, null);
1026
1024
  }
1027
- function A({ message: r = "Loading..." }) {
1028
- return /* @__PURE__ */ e("div", { className: "pvx-loading", children: r });
1029
- }
1030
- function B({ message: r = "No data available." }) {
1031
- return /* @__PURE__ */ e("div", { className: "pvx-empty", children: /* @__PURE__ */ e("p", { children: r }) });
1025
+ function U({ message: e = "Loading..." }) {
1026
+ return /* @__PURE__ */ n("div", { className: "pvx-loading", children: e });
1027
+ }
1028
+ function P({ message: e = "No data available." }) {
1029
+ return /* @__PURE__ */ n("div", { className: "pvx-empty", children: /* @__PURE__ */ n("p", { children: e }) });
1030
+ }
1031
+ const we = 3;
1032
+ function rn(e) {
1033
+ const t = e == null ? void 0 : e.rounds;
1034
+ return t != null && t.length ? t.every((s) => s.isFinalized) : !1;
1035
+ }
1036
+ function sn(e) {
1037
+ const t = e == null ? void 0 : e.rounds;
1038
+ if (!(t != null && t.length)) return null;
1039
+ let s = null;
1040
+ for (const r of t) {
1041
+ if (!r.startTime) continue;
1042
+ const a = new Date(r.startTime);
1043
+ isNaN(a) || (!s || a > s) && (s = a);
1044
+ }
1045
+ return s;
1046
+ }
1047
+ function Ce(e, t = we) {
1048
+ if (!rn(e)) return "active";
1049
+ const s = sn(e);
1050
+ if (!s) return "recently-completed";
1051
+ const r = t * 24 * 60 * 60 * 1e3;
1052
+ return Date.now() - s.getTime() <= r ? "recently-completed" : "archived";
1053
+ }
1054
+ function at(e, t, s = we) {
1055
+ if (!(e != null && e.length)) return [];
1056
+ const r = new Set(Array.isArray(t) ? t : [t]);
1057
+ return e.filter((a) => r.has(Ce(a, s)));
1058
+ }
1059
+ function an(e, t = 3) {
1060
+ const s = e == null ? void 0 : e.standings;
1061
+ return Array.isArray(s) ? [...s].sort((r, a) => (r.position ?? 999) - (a.position ?? 999)).slice(0, t) : [];
1062
+ }
1063
+ function on({ competitionId: e, topN: t = 3, label: s = "Completed", className: r }) {
1064
+ const { data: a } = me(e), i = an(a, t);
1065
+ return /* @__PURE__ */ c("div", { className: `pvx-comp-completed-badge ${r || ""}`, children: [
1066
+ /* @__PURE__ */ n("span", { className: "pvx-comp-completed-badge-label", children: s }),
1067
+ i.length > 0 && /* @__PURE__ */ n("ol", { className: "pvx-comp-completed-badge-podium", children: i.map((o, d) => /* @__PURE__ */ c("li", { className: "pvx-comp-completed-badge-driver", children: [
1068
+ /* @__PURE__ */ n("span", { className: "pvx-comp-completed-badge-medal", "aria-hidden": "true", children: se[d] || "" }),
1069
+ /* @__PURE__ */ n(ae, { nation: o.nation }),
1070
+ /* @__PURE__ */ n("span", { className: "pvx-comp-completed-badge-name", children: o.driverName })
1071
+ ] }, o.driverId || d)) })
1072
+ ] });
1032
1073
  }
1033
- function Jr({ competitions: r, isLoading: n, onSelect: s, onRegister: t, className: a }) {
1034
- return n ? /* @__PURE__ */ e(A, { message: "Loading competitions..." }) : r != null && r.length ? /* @__PURE__ */ e("div", { className: `pvx-comp-grid ${a || ""}`, children: r.map((i) => /* @__PURE__ */ e(er, { comp: i, onSelect: s, onRegister: t || s }, i.id)) }) : /* @__PURE__ */ e(B, { message: "No competitions available." });
1074
+ function it({ competitions: e, isLoading: t, onSelect: s, onRegister: r, className: a }) {
1075
+ return t ? /* @__PURE__ */ n(U, { message: "Loading competitions..." }) : e != null && e.length ? /* @__PURE__ */ n("div", { className: `pvx-comp-grid ${a || ""}`, children: e.map((i) => /* @__PURE__ */ n(cn, { comp: i, onSelect: s, onRegister: r || s }, i.id)) }) : /* @__PURE__ */ n(P, { message: "No competitions available." });
1035
1076
  }
1036
- function er({ comp: r, onSelect: n, onRegister: s }) {
1037
- var x, p, N;
1038
- const { cdnUrl: t } = k(), a = r.posterCdnPath ? `${t}/${r.posterCdnPath}` : null, i = r.registration, o = (i == null ? void 0 : i.currentCount) || 0, d = i == null ? void 0 : i.maxParticipants, v = d && o >= d, l = (i == null ? void 0 : i.deadline) && new Date(i.deadline) < /* @__PURE__ */ new Date(), m = (i == null ? void 0 : i.isOpen) && !l && !v, g = /* @__PURE__ */ new Date(), f = (x = r.rounds) == null ? void 0 : x.find((h) => h.startTime && new Date(h.startTime) >= g), u = ((p = r.rounds) == null ? void 0 : p.length) || 0, b = ((N = r.rounds) == null ? void 0 : N.filter((h) => h.isFinalized).length) || 0;
1077
+ function cn({ comp: e, onSelect: t, onRegister: s }) {
1078
+ var h, y, C;
1079
+ const { cdnUrl: r } = k(), a = e.posterCdnPath ? `${r}/${e.posterCdnPath}` : null, i = e.registration, o = (i == null ? void 0 : i.currentCount) || 0, d = i == null ? void 0 : i.maxParticipants, v = d && o >= d, l = (i == null ? void 0 : i.deadline) && new Date(i.deadline) < /* @__PURE__ */ new Date(), m = (i == null ? void 0 : i.isOpen) && !l && !v, f = /* @__PURE__ */ new Date(), g = (h = e.rounds) == null ? void 0 : h.find((w) => w.startTime && new Date(w.startTime) >= f), p = ((y = e.rounds) == null ? void 0 : y.length) || 0, b = ((C = e.rounds) == null ? void 0 : C.filter((w) => w.isFinalized).length) || 0, x = Ce(e), u = x === "recently-completed" || x === "archived", N = e.type === "championship";
1039
1080
  return /* @__PURE__ */ c(
1040
1081
  "div",
1041
1082
  {
1042
1083
  className: "pvx-comp-card",
1043
- onClick: () => n(r.id),
1084
+ onClick: () => t(e.id),
1044
1085
  role: "button",
1045
1086
  tabIndex: 0,
1046
- onKeyDown: (h) => {
1047
- (h.key === "Enter" || h.key === " ") && (h.preventDefault(), n(r.id));
1087
+ onKeyDown: (w) => {
1088
+ (w.key === "Enter" || w.key === " ") && (w.preventDefault(), t(e.id));
1048
1089
  },
1049
1090
  children: [
1050
- /* @__PURE__ */ e("div", { className: "pvx-comp-card-poster", children: a ? /* @__PURE__ */ e("img", { src: a, alt: r.name, className: "pvx-comp-card-poster-img" }) : /* @__PURE__ */ e("div", { className: "pvx-comp-card-poster-placeholder", children: /* @__PURE__ */ e(nr, {}) }) }),
1091
+ /* @__PURE__ */ n("div", { className: "pvx-comp-card-poster", children: a ? /* @__PURE__ */ n("img", { src: a, alt: e.name, className: "pvx-comp-card-poster-img" }) : /* @__PURE__ */ n("div", { className: "pvx-comp-card-poster-placeholder", children: /* @__PURE__ */ n(dn, {}) }) }),
1051
1092
  /* @__PURE__ */ c("div", { className: "pvx-comp-card-body", children: [
1052
- /* @__PURE__ */ e("h3", { className: "pvx-comp-card-title", children: r.name }),
1053
- r.description && /* @__PURE__ */ e("p", { className: "pvx-comp-card-desc", children: r.description }),
1093
+ /* @__PURE__ */ n("h3", { className: "pvx-comp-card-title", children: e.name }),
1094
+ e.description && /* @__PURE__ */ n("p", { className: "pvx-comp-card-desc", children: e.description }),
1054
1095
  /* @__PURE__ */ c("div", { className: "pvx-comp-card-pills", children: [
1055
- /* @__PURE__ */ e(Je, { type: r.type }),
1056
- r.game && /* @__PURE__ */ e(Q, { children: r.game.toUpperCase() }),
1057
- r.formatDescription && r.formatDescription.split(", ").map((h, y) => /* @__PURE__ */ e(Q, { variant: "format", children: h }, y))
1096
+ /* @__PURE__ */ n(en, { type: e.type }),
1097
+ e.game && /* @__PURE__ */ n(Y, { children: e.game.toUpperCase() }),
1098
+ e.formatDescription && e.formatDescription.split(", ").map((w, T) => /* @__PURE__ */ n(Y, { variant: "format", children: w }, T))
1058
1099
  ] }),
1059
- r.carsDescription && /* @__PURE__ */ e("div", { className: "pvx-comp-card-pills", children: r.carsDescription.split(", ").map((h, y) => /* @__PURE__ */ e(Q, { children: h }, y)) }),
1100
+ e.carsDescription && /* @__PURE__ */ n("div", { className: "pvx-comp-card-pills", children: e.carsDescription.split(", ").map((w, T) => /* @__PURE__ */ n(Y, { children: w }, T)) }),
1060
1101
  /* @__PURE__ */ c("div", { className: "pvx-comp-card-schedule", children: [
1061
- f ? /* @__PURE__ */ c("span", { className: "pvx-comp-card-schedule-next", children: [
1062
- /* @__PURE__ */ e("span", { className: "pvx-comp-card-schedule-label", children: "Next:" }),
1102
+ g ? /* @__PURE__ */ c("span", { className: "pvx-comp-card-schedule-next", children: [
1103
+ /* @__PURE__ */ n("span", { className: "pvx-comp-card-schedule-label", children: "Next:" }),
1063
1104
  " ",
1064
1105
  "R",
1065
- f.roundNumber,
1106
+ g.roundNumber,
1066
1107
  " ",
1067
- f.track || "TBD",
1108
+ g.track || "TBD",
1068
1109
  " — ",
1069
- Ze(f.startTime)
1070
- ] }) : u > 0 ? /* @__PURE__ */ c("span", { className: "pvx-comp-card-schedule-next", children: [
1110
+ nn(g.startTime)
1111
+ ] }) : p > 0 ? /* @__PURE__ */ c("span", { className: "pvx-comp-card-schedule-next", children: [
1071
1112
  b,
1072
1113
  "/",
1073
- u,
1114
+ p,
1074
1115
  " rounds completed"
1075
1116
  ] }) : null,
1076
- u > 0 && /* @__PURE__ */ c("span", { className: "pvx-comp-card-round-count", children: [
1077
- u,
1117
+ p > 0 && /* @__PURE__ */ c("span", { className: "pvx-comp-card-round-count", children: [
1118
+ p,
1078
1119
  " round",
1079
- u !== 1 ? "s" : ""
1120
+ p !== 1 ? "s" : ""
1080
1121
  ] })
1081
1122
  ] }),
1082
- i && /* @__PURE__ */ e(
1083
- rr,
1123
+ u && N && /* @__PURE__ */ n(on, { competitionId: e.id }),
1124
+ i && !u && /* @__PURE__ */ n(
1125
+ ln,
1084
1126
  {
1085
- competitionId: r.id,
1127
+ competitionId: e.id,
1086
1128
  regOpen: m,
1087
1129
  isFull: v,
1088
1130
  deadlinePassed: l,
@@ -1096,67 +1138,67 @@ function er({ comp: r, onSelect: n, onRegister: s }) {
1096
1138
  }
1097
1139
  );
1098
1140
  }
1099
- function rr({ competitionId: r, regOpen: n, isFull: s, deadlinePassed: t, regCount: a, regMax: i, onRegister: o }) {
1100
- const { isPowerMode: d } = X(), v = ee(r), { data: l } = Z(r), m = (l == null ? void 0 : l.isRegistered) || !1, g = i ? a / i * 100 : 0, f = g >= 100 ? "full" : g >= 75 ? "warning" : "ok";
1141
+ function ln({ competitionId: e, regOpen: t, isFull: s, deadlinePassed: r, regCount: a, regMax: i, onRegister: o }) {
1142
+ const { isPowerMode: d } = ee(), v = ne(e), { data: l } = X(e), m = (l == null ? void 0 : l.isRegistered) || !1, f = i ? a / i * 100 : 0, g = f >= 100 ? "full" : f >= 75 ? "warning" : "ok";
1101
1143
  return /* @__PURE__ */ c("div", { className: "pvx-comp-card-reg", children: [
1102
- /* @__PURE__ */ e("div", { className: "pvx-comp-card-reg-info", children: /* @__PURE__ */ c("span", { className: `pvx-reg-capacity pvx-reg-capacity--${f}`, children: [
1144
+ /* @__PURE__ */ n("div", { className: "pvx-comp-card-reg-info", children: /* @__PURE__ */ c("span", { className: `pvx-reg-capacity pvx-reg-capacity--${g}`, children: [
1103
1145
  a,
1104
1146
  "/",
1105
1147
  i || "∞",
1106
1148
  " drivers"
1107
1149
  ] }) }),
1108
- /* @__PURE__ */ e("div", { className: "pvx-comp-card-reg-action", children: m ? /* @__PURE__ */ e(
1150
+ /* @__PURE__ */ n("div", { className: "pvx-comp-card-reg-action", children: m ? /* @__PURE__ */ n(
1109
1151
  "button",
1110
1152
  {
1111
1153
  className: "pvx-comp-card-reg-btn pvx-comp-card-reg-btn--registered",
1112
- onClick: (u) => {
1113
- u.stopPropagation(), o(r);
1154
+ onClick: (p) => {
1155
+ p.stopPropagation(), o(e);
1114
1156
  },
1115
1157
  children: "✓ Registered"
1116
1158
  }
1117
- ) : n ? d ? /* @__PURE__ */ e(
1159
+ ) : t ? d ? /* @__PURE__ */ n(
1118
1160
  "button",
1119
1161
  {
1120
1162
  className: "pvx-comp-card-reg-btn pvx-comp-card-reg-btn--open",
1121
- onClick: (u) => {
1122
- u.stopPropagation(), o(r);
1163
+ onClick: (p) => {
1164
+ p.stopPropagation(), o(e);
1123
1165
  },
1124
1166
  children: "Register"
1125
1167
  }
1126
- ) : /* @__PURE__ */ e(
1168
+ ) : /* @__PURE__ */ n(
1127
1169
  "a",
1128
1170
  {
1129
1171
  href: v,
1130
1172
  target: "_blank",
1131
1173
  rel: "noopener noreferrer",
1132
1174
  className: "pvx-comp-card-reg-btn pvx-comp-card-reg-btn--open",
1133
- onClick: (u) => u.stopPropagation(),
1175
+ onClick: (p) => p.stopPropagation(),
1134
1176
  children: "Register"
1135
1177
  }
1136
- ) : /* @__PURE__ */ e("span", { className: "pvx-comp-card-reg-btn pvx-comp-card-reg-btn--closed", children: s ? "Full" : "Closed" }) })
1178
+ ) : /* @__PURE__ */ n("span", { className: "pvx-comp-card-reg-btn pvx-comp-card-reg-btn--closed", children: s ? "Full" : "Closed" }) })
1137
1179
  ] });
1138
1180
  }
1139
- function nr() {
1181
+ function dn() {
1140
1182
  return /* @__PURE__ */ c("svg", { className: "pvx-comp-trophy-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
1141
- /* @__PURE__ */ e("path", { d: "M6 9H4.5a2.5 2.5 0 0 1 0-5H6" }),
1142
- /* @__PURE__ */ e("path", { d: "M18 9h1.5a2.5 2.5 0 0 0 0-5H18" }),
1143
- /* @__PURE__ */ e("path", { d: "M4 22h16" }),
1144
- /* @__PURE__ */ e("path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22" }),
1145
- /* @__PURE__ */ e("path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22" }),
1146
- /* @__PURE__ */ e("path", { d: "M18 2H6v7a6 6 0 0 0 12 0V2Z" })
1183
+ /* @__PURE__ */ n("path", { d: "M6 9H4.5a2.5 2.5 0 0 1 0-5H6" }),
1184
+ /* @__PURE__ */ n("path", { d: "M18 9h1.5a2.5 2.5 0 0 0 0-5H18" }),
1185
+ /* @__PURE__ */ n("path", { d: "M4 22h16" }),
1186
+ /* @__PURE__ */ n("path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22" }),
1187
+ /* @__PURE__ */ n("path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22" }),
1188
+ /* @__PURE__ */ n("path", { d: "M18 2H6v7a6 6 0 0 0 12 0V2Z" })
1147
1189
  ] });
1148
1190
  }
1149
- function tr({ competitionId: r, className: n }) {
1191
+ function pn({ competitionId: e, className: t }) {
1150
1192
  var d, v;
1151
- const { data: s, isLoading: t } = _e(r), { data: a, isLoading: i } = de(r);
1152
- if (t || i)
1153
- return /* @__PURE__ */ e(A, { message: "Loading standings..." });
1193
+ const { data: s, isLoading: r } = me(e), { data: a, isLoading: i } = ue(e);
1194
+ if (r || i)
1195
+ return /* @__PURE__ */ n(U, { message: "Loading standings..." });
1154
1196
  if (!((d = s == null ? void 0 : s.standings) != null && d.length))
1155
- return /* @__PURE__ */ e(B, { message: "No standings data yet. Results will appear once rounds are finalised." });
1197
+ return /* @__PURE__ */ n(P, { message: "No standings data yet. Results will appear once rounds are finalised." });
1156
1198
  const o = ((v = a == null ? void 0 : a.rounds) == null ? void 0 : v.filter((l) => l.isFinalized)) || [];
1157
- return /* @__PURE__ */ c("div", { className: `pvx-card ${n || ""}`, children: [
1158
- /* @__PURE__ */ e("div", { className: "pvx-card-header--split", children: /* @__PURE__ */ c("div", { className: "pvx-card-header-left", children: [
1159
- /* @__PURE__ */ e("h3", { className: "pvx-card-title", children: "Championship Standings" }),
1199
+ return /* @__PURE__ */ c("div", { className: `pvx-card ${t || ""}`, children: [
1200
+ /* @__PURE__ */ n("div", { className: "pvx-card-header--split", children: /* @__PURE__ */ c("div", { className: "pvx-card-header-left", children: [
1201
+ /* @__PURE__ */ n("h3", { className: "pvx-card-title", children: "Championship Standings" }),
1160
1202
  /* @__PURE__ */ c("span", { className: "pvx-standings-subtitle", children: [
1161
1203
  "After ",
1162
1204
  s.roundsCompleted,
@@ -1165,13 +1207,13 @@ function tr({ competitionId: r, className: n }) {
1165
1207
  s.countingRounds > 0 && ` (best ${s.countingRounds} count)`
1166
1208
  ] })
1167
1209
  ] }) }),
1168
- /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
1169
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
1170
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--narrow", children: "Pos" }),
1171
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Driver" }),
1172
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--center pvx-hidden-below-sm", children: "W" }),
1173
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--center pvx-hidden-below-sm", children: "Pod" }),
1174
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--center", children: "Points" }),
1210
+ /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
1211
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
1212
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--narrow", children: "Pos" }),
1213
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Driver" }),
1214
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--center pvx-hidden-below-sm", children: "W" }),
1215
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--center pvx-hidden-below-sm", children: "Pod" }),
1216
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--center", children: "Points" }),
1175
1217
  o.map((l) => /* @__PURE__ */ c(
1176
1218
  "th",
1177
1219
  {
@@ -1185,8 +1227,8 @@ function tr({ competitionId: r, className: n }) {
1185
1227
  l.roundNumber
1186
1228
  ))
1187
1229
  ] }) }),
1188
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: s.standings.map((l) => /* @__PURE__ */ e(
1189
- sr,
1230
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: s.standings.map((l) => /* @__PURE__ */ n(
1231
+ un,
1190
1232
  {
1191
1233
  driver: l,
1192
1234
  finalizedRounds: o
@@ -1196,110 +1238,110 @@ function tr({ competitionId: r, className: n }) {
1196
1238
  ] }) })
1197
1239
  ] });
1198
1240
  }
1199
- function sr({ driver: r, finalizedRounds: n }) {
1241
+ function un({ driver: e, finalizedRounds: t }) {
1200
1242
  var o, d, v;
1201
- const s = r.position <= 3, t = new Map(
1202
- ((o = r.roundResults) == null ? void 0 : o.map((l) => [l.roundNumber, l])) || []
1203
- ), a = ((d = r.roundResults) == null ? void 0 : d.filter((l) => l.position === 1).length) || 0, i = ((v = r.roundResults) == null ? void 0 : v.filter((l) => l.position <= 3).length) || 0;
1243
+ const s = e.position <= 3, r = new Map(
1244
+ ((o = e.roundResults) == null ? void 0 : o.map((l) => [l.roundNumber, l])) || []
1245
+ ), a = ((d = e.roundResults) == null ? void 0 : d.filter((l) => l.position === 1).length) || 0, i = ((v = e.roundResults) == null ? void 0 : v.filter((l) => l.position <= 3).length) || 0;
1204
1246
  return /* @__PURE__ */ c("tr", { className: `pvx-row ${s ? "pvx-row--podium" : ""}`, children: [
1205
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e(be, { position: r.position }) }),
1247
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n(ke, { position: e.position }) }),
1206
1248
  /* @__PURE__ */ c("td", { className: "pvx-td pvx-td--primary", children: [
1207
- /* @__PURE__ */ e(ye, { nation: r.nation }),
1208
- r.driverName
1249
+ /* @__PURE__ */ n(ae, { nation: e.nation }),
1250
+ e.driverName
1209
1251
  ] }),
1210
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: a || "-" }),
1211
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: i || "-" }),
1212
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--center pvx-standings-total", children: r.totalPoints }),
1213
- n.map((l) => {
1214
- const m = t.get(l.roundNumber), g = m == null ? void 0 : m.dropped;
1215
- return /* @__PURE__ */ e(
1252
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: a || "-" }),
1253
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-hidden-below-sm", children: i || "-" }),
1254
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--center pvx-standings-total", children: e.totalPoints }),
1255
+ t.map((l) => {
1256
+ const m = r.get(l.roundNumber), f = m == null ? void 0 : m.dropped;
1257
+ return /* @__PURE__ */ n(
1216
1258
  "td",
1217
1259
  {
1218
- className: `pvx-td pvx-td--center pvx-hidden-below-md ${!g && (m == null ? void 0 : m.position) === 1 ? "pvx-standings-cell--p1" : !g && (m == null ? void 0 : m.position) === 2 ? "pvx-standings-cell--p2" : !g && (m == null ? void 0 : m.position) === 3 ? "pvx-standings-cell--p3" : ""}`,
1219
- children: m ? /* @__PURE__ */ c("div", { className: `pvx-standings-round-cell ${g ? "pvx-standings-round-cell--dropped" : ""}`, children: [
1260
+ className: `pvx-td pvx-td--center pvx-hidden-below-md ${!f && (m == null ? void 0 : m.position) === 1 ? "pvx-standings-cell--p1" : !f && (m == null ? void 0 : m.position) === 2 ? "pvx-standings-cell--p2" : !f && (m == null ? void 0 : m.position) === 3 ? "pvx-standings-cell--p3" : ""}`,
1261
+ children: m ? /* @__PURE__ */ c("div", { className: `pvx-standings-round-cell ${f ? "pvx-standings-round-cell--dropped" : ""}`, children: [
1220
1262
  /* @__PURE__ */ c("span", { className: "pvx-standings-round-pos", children: [
1221
1263
  "P",
1222
1264
  m.position
1223
1265
  ] }),
1224
- /* @__PURE__ */ e("span", { className: "pvx-standings-round-pts", children: m.points })
1225
- ] }) : /* @__PURE__ */ e("span", { className: "pvx-td--muted", children: "-" })
1266
+ /* @__PURE__ */ n("span", { className: "pvx-standings-round-pts", children: m.points })
1267
+ ] }) : /* @__PURE__ */ n("span", { className: "pvx-td--muted", children: "-" })
1226
1268
  },
1227
1269
  l.roundNumber
1228
1270
  );
1229
1271
  })
1230
1272
  ] });
1231
1273
  }
1232
- function Zr({ competitionId: r, roundNumber: n, className: s }) {
1274
+ function ot({ competitionId: e, roundNumber: t, className: s }) {
1233
1275
  var v;
1234
- const { data: t, isLoading: a } = qe(r, n);
1276
+ const { data: r, isLoading: a } = Ke(e, t);
1235
1277
  if (a)
1236
- return /* @__PURE__ */ e(A, { message: "Loading results..." });
1237
- if (!t)
1238
- return /* @__PURE__ */ e(B, { message: "No results for this round." });
1239
- const o = (t.sessions || []).find((l) => l.type === "RACE"), d = (v = o == null ? void 0 : o.results) == null ? void 0 : v.filter((l) => l.position <= 3).sort((l, m) => l.position - m.position);
1278
+ return /* @__PURE__ */ n(U, { message: "Loading results..." });
1279
+ if (!r)
1280
+ return /* @__PURE__ */ n(P, { message: "No results for this round." });
1281
+ const o = (r.sessions || []).find((l) => l.type === "RACE"), d = (v = o == null ? void 0 : o.results) == null ? void 0 : v.filter((l) => l.position <= 3).sort((l, m) => l.position - m.position);
1240
1282
  return /* @__PURE__ */ c("div", { className: `pvx-round-results ${s || ""}`, children: [
1241
1283
  /* @__PURE__ */ c("div", { className: "pvx-round-results-header", children: [
1242
1284
  /* @__PURE__ */ c("div", { children: [
1243
1285
  /* @__PURE__ */ c("h4", { className: "pvx-round-results-title", children: [
1244
1286
  "Round ",
1245
- t.roundNumber,
1246
- t.track ? `: ${t.track}` : ""
1287
+ r.roundNumber,
1288
+ r.track ? `: ${r.track}` : ""
1247
1289
  ] }),
1248
- t.startTime && /* @__PURE__ */ e("p", { className: "pvx-round-results-date", children: new Date(t.startTime).toLocaleDateString("en-GB", {
1290
+ r.startTime && /* @__PURE__ */ n("p", { className: "pvx-round-results-date", children: new Date(r.startTime).toLocaleDateString("en-GB", {
1249
1291
  day: "numeric",
1250
1292
  month: "long",
1251
1293
  year: "numeric"
1252
1294
  }) })
1253
1295
  ] }),
1254
- (d == null ? void 0 : d.length) > 0 && /* @__PURE__ */ e("div", { className: "pvx-round-podium-summary", children: d.map((l) => /* @__PURE__ */ c("span", { className: "pvx-round-podium-item", children: [
1255
- /* @__PURE__ */ e("span", { children: Ne[l.position - 1] }),
1256
- /* @__PURE__ */ e("span", { children: l.driverName })
1296
+ (d == null ? void 0 : d.length) > 0 && /* @__PURE__ */ n("div", { className: "pvx-round-podium-summary", children: d.map((l) => /* @__PURE__ */ c("span", { className: "pvx-round-podium-item", children: [
1297
+ /* @__PURE__ */ n("span", { children: se[l.position - 1] }),
1298
+ /* @__PURE__ */ n("span", { children: l.driverName })
1257
1299
  ] }, l.driverId)) })
1258
1300
  ] }),
1259
- /* @__PURE__ */ e(ke, { round: t })
1301
+ /* @__PURE__ */ n(Le, { round: r })
1260
1302
  ] });
1261
1303
  }
1262
- function ke({ round: r, className: n }) {
1304
+ function Le({ round: e, className: t }) {
1263
1305
  var d, v;
1264
- const [s, t] = M(null), a = (r == null ? void 0 : r.sessions) || [];
1306
+ const [s, r] = D(null), a = (e == null ? void 0 : e.sessions) || [];
1265
1307
  if (!a.length)
1266
- return /* @__PURE__ */ e(B, { message: "No session data for this round." });
1308
+ return /* @__PURE__ */ n(P, { message: "No session data for this round." });
1267
1309
  const i = s || ((d = a.find((l) => l.type === "RACE")) == null ? void 0 : d.type) || ((v = a[0]) == null ? void 0 : v.type), o = a.find((l) => l.type === i) || a[0];
1268
- return /* @__PURE__ */ c("div", { className: n || "", children: [
1269
- /* @__PURE__ */ e(
1270
- Ye,
1310
+ return /* @__PURE__ */ c("div", { className: t || "", children: [
1311
+ /* @__PURE__ */ n(
1312
+ Xe,
1271
1313
  {
1272
1314
  sessions: a,
1273
1315
  activeSession: i,
1274
- onSelect: t
1316
+ onSelect: r
1275
1317
  }
1276
1318
  ),
1277
- /* @__PURE__ */ e(ar, { session: o })
1319
+ /* @__PURE__ */ n(mn, { session: o })
1278
1320
  ] });
1279
1321
  }
1280
- function ar({ session: r }) {
1281
- var t;
1282
- const n = r.type === "RACE";
1283
- if (!((t = r.results) != null && t.length))
1284
- return /* @__PURE__ */ e(B, { message: `No results for ${r.type}.` });
1285
- const s = Xe(r.results);
1286
- return /* @__PURE__ */ e("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
1287
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
1288
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--narrow", children: "Pos" }),
1289
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Driver" }),
1290
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "Car" }),
1291
- /* @__PURE__ */ e("th", { className: "pvx-th", children: "Best Lap" }),
1292
- n && /* @__PURE__ */ c(E, { children: [
1293
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "Laps" }),
1294
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-hidden-below-sm", children: "Time / Gap" }),
1295
- /* @__PURE__ */ e("th", { className: "pvx-th pvx-th--center", children: "Points" })
1322
+ function mn({ session: e }) {
1323
+ var r;
1324
+ const t = e.type === "RACE";
1325
+ if (!((r = e.results) != null && r.length))
1326
+ return /* @__PURE__ */ n(P, { message: `No results for ${e.type}.` });
1327
+ const s = tn(e.results);
1328
+ return /* @__PURE__ */ n("div", { className: "pvx-table-scroll", children: /* @__PURE__ */ c("table", { className: "pvx-table", children: [
1329
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { className: "pvx-thead-row", children: [
1330
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--narrow", children: "Pos" }),
1331
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Driver" }),
1332
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "Car" }),
1333
+ /* @__PURE__ */ n("th", { className: "pvx-th", children: "Best Lap" }),
1334
+ t && /* @__PURE__ */ c(F, { children: [
1335
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "Laps" }),
1336
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-hidden-below-sm", children: "Time / Gap" }),
1337
+ /* @__PURE__ */ n("th", { className: "pvx-th pvx-th--center", children: "Points" })
1296
1338
  ] })
1297
1339
  ] }) }),
1298
- /* @__PURE__ */ e("tbody", { className: "pvx-tbody", children: r.results.map((a, i) => /* @__PURE__ */ e(
1299
- ir,
1340
+ /* @__PURE__ */ n("tbody", { className: "pvx-tbody", children: e.results.map((a, i) => /* @__PURE__ */ n(
1341
+ vn,
1300
1342
  {
1301
1343
  result: a,
1302
- isRace: n,
1344
+ isRace: t,
1303
1345
  fastestSplits: s,
1304
1346
  rowIndex: i
1305
1347
  },
@@ -1307,104 +1349,104 @@ function ar({ session: r }) {
1307
1349
  )) })
1308
1350
  ] }) });
1309
1351
  }
1310
- function ir({ result: r, isRace: n, fastestSplits: s, rowIndex: t }) {
1311
- const a = r.position <= 3;
1352
+ function vn({ result: e, isRace: t, fastestSplits: s, rowIndex: r }) {
1353
+ const a = e.position <= 3;
1312
1354
  return /* @__PURE__ */ c("tr", { className: `pvx-row ${a ? "pvx-row--podium" : ""}`, children: [
1313
- /* @__PURE__ */ e("td", { className: "pvx-td", children: /* @__PURE__ */ e(be, { position: r.position }) }),
1355
+ /* @__PURE__ */ n("td", { className: "pvx-td", children: /* @__PURE__ */ n(ke, { position: e.position }) }),
1314
1356
  /* @__PURE__ */ c("td", { className: "pvx-td pvx-td--primary", children: [
1315
- /* @__PURE__ */ e(ye, { nation: r.nation }),
1316
- r.driverName,
1317
- r.carNumber != null && /* @__PURE__ */ c("span", { className: "pvx-car-number", children: [
1357
+ /* @__PURE__ */ n(ae, { nation: e.nation }),
1358
+ e.driverName,
1359
+ e.carNumber != null && /* @__PURE__ */ c("span", { className: "pvx-car-number", children: [
1318
1360
  "#",
1319
- r.carNumber
1361
+ e.carNumber
1320
1362
  ] }),
1321
- r.penalty && /* @__PURE__ */ e("span", { className: "pvx-penalty", children: r.penalty })
1363
+ e.penalty && /* @__PURE__ */ n("span", { className: "pvx-penalty", children: e.penalty })
1322
1364
  ] }),
1323
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-hidden-below-sm", children: I(r.carId) }),
1324
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--mono", children: /* @__PURE__ */ e(
1325
- or,
1365
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-hidden-below-sm", children: I(e.carId) }),
1366
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--mono", children: /* @__PURE__ */ n(
1367
+ hn,
1326
1368
  {
1327
- bestLap: r.bestLapFormatted,
1328
- hasBestLap: r.hasBestLap,
1329
- splits: r.splits,
1369
+ bestLap: e.bestLapFormatted,
1370
+ hasBestLap: e.hasBestLap,
1371
+ splits: e.splits,
1330
1372
  fastestSplits: s,
1331
- showAbove: t <= 1
1373
+ showAbove: r <= 1
1332
1374
  }
1333
1375
  ) }),
1334
- n && /* @__PURE__ */ c(E, { children: [
1335
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-hidden-below-sm", children: r.lapsCompleted }),
1336
- /* @__PURE__ */ e("td", { className: "pvx-td pvx-td--mono pvx-td--muted pvx-hidden-below-sm", children: r.position === 1 ? r.totalTime || "-" : r.gap || "-" }),
1376
+ t && /* @__PURE__ */ c(F, { children: [
1377
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-hidden-below-sm", children: e.lapsCompleted }),
1378
+ /* @__PURE__ */ n("td", { className: "pvx-td pvx-td--mono pvx-td--muted pvx-hidden-below-sm", children: e.position === 1 ? e.totalTime || "-" : e.gap || "-" }),
1337
1379
  /* @__PURE__ */ c("td", { className: "pvx-td pvx-td--center", children: [
1338
- /* @__PURE__ */ e("span", { className: "pvx-session-points", children: r.points }),
1339
- r.pointsOverride !== 0 && r.pointsOverride && /* @__PURE__ */ c("span", { className: "pvx-points-override", children: [
1380
+ /* @__PURE__ */ n("span", { className: "pvx-session-points", children: e.points }),
1381
+ e.pointsOverride !== 0 && e.pointsOverride && /* @__PURE__ */ c("span", { className: "pvx-points-override", children: [
1340
1382
  "(",
1341
- r.pointsOverride > 0 ? "+" : "",
1342
- r.pointsOverride,
1383
+ e.pointsOverride > 0 ? "+" : "",
1384
+ e.pointsOverride,
1343
1385
  ")"
1344
1386
  ] })
1345
1387
  ] })
1346
1388
  ] })
1347
1389
  ] });
1348
1390
  }
1349
- function or({ bestLap: r, hasBestLap: n, splits: s, fastestSplits: t, showAbove: a }) {
1350
- return r ? /* @__PURE__ */ c("span", { className: `pvx-best-lap-cell ${n ? "pvx-best-lap-cell--fastest" : ""}`, children: [
1351
- /* @__PURE__ */ e("span", { className: "pvx-best-lap-time", children: r }),
1352
- (s == null ? void 0 : s.length) > 0 && /* @__PURE__ */ e("span", { className: "pvx-splits-tooltip-anchor", children: /* @__PURE__ */ e("span", { className: `pvx-splits-tooltip ${a ? "" : "pvx-splits-tooltip--above"}`, children: s.map((i, o) => {
1353
- const d = t && i === t[o];
1391
+ function hn({ bestLap: e, hasBestLap: t, splits: s, fastestSplits: r, showAbove: a }) {
1392
+ return e ? /* @__PURE__ */ c("span", { className: `pvx-best-lap-cell ${t ? "pvx-best-lap-cell--fastest" : ""}`, children: [
1393
+ /* @__PURE__ */ n("span", { className: "pvx-best-lap-time", children: e }),
1394
+ (s == null ? void 0 : s.length) > 0 && /* @__PURE__ */ n("span", { className: "pvx-splits-tooltip-anchor", children: /* @__PURE__ */ n("span", { className: `pvx-splits-tooltip ${a ? "" : "pvx-splits-tooltip--above"}`, children: s.map((i, o) => {
1395
+ const d = r && i === r[o];
1354
1396
  return /* @__PURE__ */ c("span", { className: "pvx-splits-tooltip-row", children: [
1355
1397
  /* @__PURE__ */ c("span", { className: "pvx-splits-tooltip-label", children: [
1356
1398
  "S",
1357
1399
  o + 1
1358
1400
  ] }),
1359
- /* @__PURE__ */ e("span", { className: d ? "pvx-splits-tooltip-best" : "", children: i })
1401
+ /* @__PURE__ */ n("span", { className: d ? "pvx-splits-tooltip-best" : "", children: i })
1360
1402
  ] }, o);
1361
1403
  }) }) })
1362
- ] }) : /* @__PURE__ */ e("span", { className: "pvx-td--muted", children: "-" });
1404
+ ] }) : /* @__PURE__ */ n("span", { className: "pvx-td--muted", children: "-" });
1363
1405
  }
1364
- function Xr({ competitionId: r, className: n }) {
1365
- const { getSteamId: s } = k(), { data: t, isLoading: a } = pe(r), i = s();
1406
+ function ct({ competitionId: e, className: t }) {
1407
+ const { getSteamId: s } = k(), { data: r, isLoading: a } = ve(e), i = s();
1366
1408
  if (a)
1367
- return /* @__PURE__ */ e(A, { message: "Loading drivers..." });
1368
- const o = (t == null ? void 0 : t.drivers) || (t == null ? void 0 : t.entries) || [];
1369
- return o.length ? /* @__PURE__ */ e("div", { className: `pvx-entry-grid ${n || ""}`, children: o.map((d) => {
1409
+ return /* @__PURE__ */ n(U, { message: "Loading drivers..." });
1410
+ const o = (r == null ? void 0 : r.drivers) || (r == null ? void 0 : r.entries) || [];
1411
+ return o.length ? /* @__PURE__ */ n("div", { className: `pvx-entry-grid ${t || ""}`, children: o.map((d) => {
1370
1412
  var l, m;
1371
1413
  const v = i && d.steamId === i;
1372
1414
  return /* @__PURE__ */ c("div", { className: `pvx-entry-card ${v ? "pvx-entry-card--you" : ""}`, children: [
1373
- d.avatarUrl ? /* @__PURE__ */ e(
1415
+ d.avatarUrl ? /* @__PURE__ */ n(
1374
1416
  "img",
1375
1417
  {
1376
1418
  src: d.avatarUrl,
1377
1419
  alt: "",
1378
1420
  className: "pvx-entry-avatar"
1379
1421
  }
1380
- ) : /* @__PURE__ */ e("div", { className: "pvx-entry-avatar pvx-entry-avatar--placeholder", children: ((m = (l = d.displayName) == null ? void 0 : l.charAt(0)) == null ? void 0 : m.toUpperCase()) || "?" }),
1422
+ ) : /* @__PURE__ */ n("div", { className: "pvx-entry-avatar pvx-entry-avatar--placeholder", children: ((m = (l = d.displayName) == null ? void 0 : l.charAt(0)) == null ? void 0 : m.toUpperCase()) || "?" }),
1381
1423
  /* @__PURE__ */ c("span", { className: "pvx-entry-name", children: [
1382
1424
  d.displayName,
1383
- v && /* @__PURE__ */ e("span", { className: "pvx-entry-you", children: " (you)" })
1425
+ v && /* @__PURE__ */ n("span", { className: "pvx-entry-you", children: " (you)" })
1384
1426
  ] })
1385
1427
  ] }, d.steamId || d.driverId);
1386
- }) }) : /* @__PURE__ */ e(B, { message: "No drivers registered yet." });
1428
+ }) }) : /* @__PURE__ */ n(P, { message: "No drivers registered yet." });
1387
1429
  }
1388
- function en({
1389
- competitionId: r,
1390
- driverData: n,
1430
+ function lt({
1431
+ competitionId: e,
1432
+ driverData: t,
1391
1433
  className: s,
1392
- children: t
1434
+ children: r
1393
1435
  }) {
1394
- const { data: a, isLoading: i } = Z(r), { isPowerMode: o } = X(), d = ee(r), v = ue(r), l = me(r), m = (a == null ? void 0 : a.isRegistered) || !1, g = i || v.isPending || l.isPending, f = v.error || l.error || null, u = () => {
1395
- o && v.mutate(n || {});
1436
+ const { data: a, isLoading: i } = X(e), { isPowerMode: o } = ee(), d = ne(e), v = he(e), l = xe(e), m = (a == null ? void 0 : a.isRegistered) || !1, f = i || v.isPending || l.isPending, g = v.error || l.error || null, p = () => {
1437
+ o && v.mutate(t || {});
1396
1438
  }, b = () => {
1397
1439
  o && l.mutate();
1398
1440
  };
1399
- return typeof t == "function" ? t({ isRegistered: m, isLoading: g, register: u, withdraw: b, error: f, isPowerMode: o, registrationUrl: d }) : o ? /* @__PURE__ */ e(
1441
+ return typeof r == "function" ? r({ isRegistered: m, isLoading: f, register: p, withdraw: b, error: g, isPowerMode: o, registrationUrl: d }) : o ? /* @__PURE__ */ n(
1400
1442
  "button",
1401
1443
  {
1402
1444
  className: `pvx-comp-register-btn ${s || ""}`,
1403
- onClick: m ? b : u,
1404
- disabled: g,
1405
- children: g ? "Loading..." : m ? "Withdraw" : "Register"
1445
+ onClick: m ? b : p,
1446
+ disabled: f,
1447
+ children: f ? "Loading..." : m ? "Withdraw" : "Register"
1406
1448
  }
1407
- ) : /* @__PURE__ */ e(
1449
+ ) : /* @__PURE__ */ n(
1408
1450
  "a",
1409
1451
  {
1410
1452
  href: d,
@@ -1415,127 +1457,127 @@ function en({
1415
1457
  }
1416
1458
  );
1417
1459
  }
1418
- function rn({ competitionId: r, registration: n, onWithdrawSuccess: s, className: t }) {
1419
- const { getSteamId: a } = k(), { isPowerMode: i } = X(), o = ee(r), { data: d, isLoading: v } = Z(r), { data: l, isLoading: m } = pe(r), g = ue(r), f = me(r), u = a(), b = (d == null ? void 0 : d.isRegistered) || !1, x = (l == null ? void 0 : l.drivers) || (l == null ? void 0 : l.entries) || [], p = n || {}, N = x.length || p.currentCount || 0, h = p.maxParticipants && N >= p.maxParticipants, y = p.deadline && new Date(p.deadline) < /* @__PURE__ */ new Date(), L = p.isOpen && !y && !h;
1420
- return v || m ? /* @__PURE__ */ e(A, { message: "Loading registration..." }) : b ? /* @__PURE__ */ e("div", { className: `pvx-reg-panel ${t || ""}`, children: /* @__PURE__ */ e(
1421
- lr,
1460
+ function dt({ competitionId: e, registration: t, onWithdrawSuccess: s, className: r }) {
1461
+ const { getSteamId: a } = k(), { isPowerMode: i } = ee(), o = ne(e), { data: d, isLoading: v } = X(e), { data: l, isLoading: m } = ve(e), f = he(e), g = xe(e), p = a(), b = (d == null ? void 0 : d.isRegistered) || !1, x = (l == null ? void 0 : l.drivers) || (l == null ? void 0 : l.entries) || [], u = t || {}, N = x.length || u.currentCount || 0, h = u.maxParticipants && N >= u.maxParticipants, y = u.deadline && new Date(u.deadline) < /* @__PURE__ */ new Date(), C = u.isOpen && !y && !h;
1462
+ return v || m ? /* @__PURE__ */ n(U, { message: "Loading registration..." }) : b ? /* @__PURE__ */ n("div", { className: `pvx-reg-panel ${r || ""}`, children: /* @__PURE__ */ n(
1463
+ gn,
1422
1464
  {
1423
- competitionId: r,
1465
+ competitionId: e,
1424
1466
  drivers: x,
1425
- steamId: u,
1467
+ steamId: p,
1426
1468
  isPowerMode: i,
1427
1469
  registrationUrl: o,
1428
- withdrawMutation: f,
1470
+ withdrawMutation: g,
1429
1471
  onWithdrawSuccess: s,
1430
- registration: p
1472
+ registration: u
1431
1473
  }
1432
- ) }) : L ? u ? i ? /* @__PURE__ */ e("div", { className: `pvx-reg-panel ${t || ""}`, children: /* @__PURE__ */ e(
1433
- cr,
1474
+ ) }) : C ? p ? i ? /* @__PURE__ */ n("div", { className: `pvx-reg-panel ${r || ""}`, children: /* @__PURE__ */ n(
1475
+ xn,
1434
1476
  {
1435
- competitionId: r,
1436
- registerMutation: g,
1437
- registration: p
1477
+ competitionId: e,
1478
+ registerMutation: f,
1479
+ registration: u
1438
1480
  }
1439
- ) }) : /* @__PURE__ */ e("div", { className: `pvx-reg-panel ${t || ""}`, children: /* @__PURE__ */ e("a", { href: o, target: "_blank", rel: "noopener noreferrer", className: "pvx-comp-register-link", children: "Register on PitVox" }) }) : /* @__PURE__ */ e("div", { className: `pvx-reg-panel ${t || ""}`, children: i ? /* @__PURE__ */ e("div", { className: "pvx-reg-status-msg", children: "Sign in to register for this competition." }) : /* @__PURE__ */ e("div", { className: "pvx-reg-status-msg", children: /* @__PURE__ */ e("a", { href: o, target: "_blank", rel: "noopener noreferrer", className: "pvx-comp-register-link", children: "Register on PitVox" }) }) }) : /* @__PURE__ */ c("div", { className: `pvx-reg-panel ${t || ""}`, children: [
1440
- /* @__PURE__ */ e("div", { className: "pvx-reg-status-msg", children: h ? "Registration is full." : y ? "Registration deadline has passed." : "Registration is closed." }),
1441
- x.length > 0 && /* @__PURE__ */ e(we, { drivers: x, steamId: u })
1481
+ ) }) : /* @__PURE__ */ n("div", { className: `pvx-reg-panel ${r || ""}`, children: /* @__PURE__ */ n("a", { href: o, target: "_blank", rel: "noopener noreferrer", className: "pvx-comp-register-link", children: "Register on PitVox" }) }) : /* @__PURE__ */ n("div", { className: `pvx-reg-panel ${r || ""}`, children: i ? /* @__PURE__ */ n("div", { className: "pvx-reg-status-msg", children: "Sign in to register for this competition." }) : /* @__PURE__ */ n("div", { className: "pvx-reg-status-msg", children: /* @__PURE__ */ n("a", { href: o, target: "_blank", rel: "noopener noreferrer", className: "pvx-comp-register-link", children: "Register on PitVox" }) }) }) : /* @__PURE__ */ c("div", { className: `pvx-reg-panel ${r || ""}`, children: [
1482
+ /* @__PURE__ */ n("div", { className: "pvx-reg-status-msg", children: h ? "Registration is full." : y ? "Registration deadline has passed." : "Registration is closed." }),
1483
+ x.length > 0 && /* @__PURE__ */ n(Te, { drivers: x, steamId: p })
1442
1484
  ] });
1443
1485
  }
1444
- function cr({ competitionId: r, registerMutation: n, registration: s }) {
1445
- const [t, a] = M(""), [i, o] = M("intermediate"), [d, v] = M(""), l = (u) => {
1446
- u.preventDefault(), n.mutate({
1447
- discordUsername: t || void 0,
1486
+ function xn({ competitionId: e, registerMutation: t, registration: s }) {
1487
+ const [r, a] = D(""), [i, o] = D("intermediate"), [d, v] = D(""), l = (p) => {
1488
+ p.preventDefault(), t.mutate({
1489
+ discordUsername: r || void 0,
1448
1490
  experience: i,
1449
1491
  comments: d || void 0
1450
1492
  });
1451
- }, m = s || {}, g = m.currentCount || 0, f = m.maxParticipants;
1493
+ }, m = s || {}, f = m.currentCount || 0, g = m.maxParticipants;
1452
1494
  return /* @__PURE__ */ c("form", { className: "pvx-reg-form", onSubmit: l, children: [
1453
1495
  /* @__PURE__ */ c("div", { className: "pvx-reg-form-header", children: [
1454
- /* @__PURE__ */ e("h3", { className: "pvx-reg-form-title", children: "Register" }),
1455
- f && /* @__PURE__ */ e(Ce, { count: g, max: f })
1496
+ /* @__PURE__ */ n("h3", { className: "pvx-reg-form-title", children: "Register" }),
1497
+ g && /* @__PURE__ */ n(Re, { count: f, max: g })
1456
1498
  ] }),
1457
- n.error && /* @__PURE__ */ e("div", { className: "pvx-reg-error", children: n.error.message || "Registration failed" }),
1499
+ t.error && /* @__PURE__ */ n("div", { className: "pvx-reg-error", children: t.error.message || "Registration failed" }),
1458
1500
  /* @__PURE__ */ c("div", { className: "pvx-reg-field", children: [
1459
- /* @__PURE__ */ c("label", { className: "pvx-reg-label", htmlFor: `pvx-discord-${r}`, children: [
1501
+ /* @__PURE__ */ c("label", { className: "pvx-reg-label", htmlFor: `pvx-discord-${e}`, children: [
1460
1502
  "Discord Username ",
1461
- /* @__PURE__ */ e("span", { className: "pvx-reg-optional", children: "(optional)" })
1503
+ /* @__PURE__ */ n("span", { className: "pvx-reg-optional", children: "(optional)" })
1462
1504
  ] }),
1463
- /* @__PURE__ */ e(
1505
+ /* @__PURE__ */ n(
1464
1506
  "input",
1465
1507
  {
1466
- id: `pvx-discord-${r}`,
1508
+ id: `pvx-discord-${e}`,
1467
1509
  type: "text",
1468
1510
  className: "pvx-reg-input",
1469
1511
  placeholder: "e.g. username",
1470
- value: t,
1471
- onChange: (u) => a(u.target.value)
1512
+ value: r,
1513
+ onChange: (p) => a(p.target.value)
1472
1514
  }
1473
1515
  )
1474
1516
  ] }),
1475
1517
  /* @__PURE__ */ c("div", { className: "pvx-reg-field", children: [
1476
- /* @__PURE__ */ e("label", { className: "pvx-reg-label", htmlFor: `pvx-exp-${r}`, children: "Experience Level" }),
1518
+ /* @__PURE__ */ n("label", { className: "pvx-reg-label", htmlFor: `pvx-exp-${e}`, children: "Experience Level" }),
1477
1519
  /* @__PURE__ */ c(
1478
1520
  "select",
1479
1521
  {
1480
- id: `pvx-exp-${r}`,
1522
+ id: `pvx-exp-${e}`,
1481
1523
  className: "pvx-reg-select",
1482
1524
  value: i,
1483
- onChange: (u) => o(u.target.value),
1525
+ onChange: (p) => o(p.target.value),
1484
1526
  children: [
1485
- /* @__PURE__ */ e("option", { value: "beginner", children: "Beginner" }),
1486
- /* @__PURE__ */ e("option", { value: "intermediate", children: "Intermediate" }),
1487
- /* @__PURE__ */ e("option", { value: "advanced", children: "Advanced" })
1527
+ /* @__PURE__ */ n("option", { value: "beginner", children: "Beginner" }),
1528
+ /* @__PURE__ */ n("option", { value: "intermediate", children: "Intermediate" }),
1529
+ /* @__PURE__ */ n("option", { value: "advanced", children: "Advanced" })
1488
1530
  ]
1489
1531
  }
1490
1532
  )
1491
1533
  ] }),
1492
1534
  /* @__PURE__ */ c("div", { className: "pvx-reg-field", children: [
1493
- /* @__PURE__ */ c("label", { className: "pvx-reg-label", htmlFor: `pvx-comments-${r}`, children: [
1535
+ /* @__PURE__ */ c("label", { className: "pvx-reg-label", htmlFor: `pvx-comments-${e}`, children: [
1494
1536
  "Comments ",
1495
- /* @__PURE__ */ e("span", { className: "pvx-reg-optional", children: "(optional)" })
1537
+ /* @__PURE__ */ n("span", { className: "pvx-reg-optional", children: "(optional)" })
1496
1538
  ] }),
1497
- /* @__PURE__ */ e(
1539
+ /* @__PURE__ */ n(
1498
1540
  "textarea",
1499
1541
  {
1500
- id: `pvx-comments-${r}`,
1542
+ id: `pvx-comments-${e}`,
1501
1543
  className: "pvx-reg-textarea",
1502
1544
  rows: 3,
1503
1545
  placeholder: "Anything the organisers should know?",
1504
1546
  value: d,
1505
- onChange: (u) => v(u.target.value)
1547
+ onChange: (p) => v(p.target.value)
1506
1548
  }
1507
1549
  )
1508
1550
  ] }),
1509
- /* @__PURE__ */ e("div", { className: "pvx-reg-actions", children: /* @__PURE__ */ e(
1551
+ /* @__PURE__ */ n("div", { className: "pvx-reg-actions", children: /* @__PURE__ */ n(
1510
1552
  "button",
1511
1553
  {
1512
1554
  type: "submit",
1513
1555
  className: "pvx-comp-register-btn",
1514
- disabled: n.isPending,
1515
- children: n.isPending ? "Registering..." : "Register"
1556
+ disabled: t.isPending,
1557
+ children: t.isPending ? "Registering..." : "Register"
1516
1558
  }
1517
1559
  ) })
1518
1560
  ] });
1519
1561
  }
1520
- function lr({ competitionId: r, drivers: n, steamId: s, isPowerMode: t, registrationUrl: a, withdrawMutation: i, onWithdrawSuccess: o, registration: d }) {
1521
- const [v, l] = M(!1), m = () => {
1562
+ function gn({ competitionId: e, drivers: t, steamId: s, isPowerMode: r, registrationUrl: a, withdrawMutation: i, onWithdrawSuccess: o, registration: d }) {
1563
+ const [v, l] = D(!1), m = () => {
1522
1564
  i.mutate(void 0, {
1523
1565
  onSuccess: () => {
1524
1566
  l(!1), o && o();
1525
1567
  }
1526
1568
  });
1527
- }, g = d || {}, f = n.length || g.currentCount || 0, u = g.maxParticipants;
1528
- return /* @__PURE__ */ c(E, { children: [
1569
+ }, f = d || {}, g = t.length || f.currentCount || 0, p = f.maxParticipants;
1570
+ return /* @__PURE__ */ c(F, { children: [
1529
1571
  /* @__PURE__ */ c("div", { className: "pvx-reg-form-header", children: [
1530
- /* @__PURE__ */ e("h3", { className: "pvx-reg-form-title", children: "Registered Drivers" }),
1531
- u && /* @__PURE__ */ e(Ce, { count: f, max: u })
1572
+ /* @__PURE__ */ n("h3", { className: "pvx-reg-form-title", children: "Registered Drivers" }),
1573
+ p && /* @__PURE__ */ n(Re, { count: g, max: p })
1532
1574
  ] }),
1533
- /* @__PURE__ */ e(we, { drivers: n, steamId: s }),
1534
- i.error && /* @__PURE__ */ e("div", { className: "pvx-reg-error", children: i.error.message || "Withdrawal failed" }),
1535
- t ? /* @__PURE__ */ e("div", { className: "pvx-reg-actions", children: v ? /* @__PURE__ */ c("div", { className: "pvx-reg-confirm", children: [
1536
- /* @__PURE__ */ e("p", { className: "pvx-reg-confirm-text", children: "Are you sure you want to unregister?" }),
1575
+ /* @__PURE__ */ n(Te, { drivers: t, steamId: s }),
1576
+ i.error && /* @__PURE__ */ n("div", { className: "pvx-reg-error", children: i.error.message || "Withdrawal failed" }),
1577
+ r ? /* @__PURE__ */ n("div", { className: "pvx-reg-actions", children: v ? /* @__PURE__ */ c("div", { className: "pvx-reg-confirm", children: [
1578
+ /* @__PURE__ */ n("p", { className: "pvx-reg-confirm-text", children: "Are you sure you want to unregister?" }),
1537
1579
  /* @__PURE__ */ c("div", { className: "pvx-reg-confirm-actions", children: [
1538
- /* @__PURE__ */ e(
1580
+ /* @__PURE__ */ n(
1539
1581
  "button",
1540
1582
  {
1541
1583
  type: "button",
@@ -1544,7 +1586,7 @@ function lr({ competitionId: r, drivers: n, steamId: s, isPowerMode: t, registra
1544
1586
  children: "Cancel"
1545
1587
  }
1546
1588
  ),
1547
- /* @__PURE__ */ e(
1589
+ /* @__PURE__ */ n(
1548
1590
  "button",
1549
1591
  {
1550
1592
  type: "button",
@@ -1555,7 +1597,7 @@ function lr({ competitionId: r, drivers: n, steamId: s, isPowerMode: t, registra
1555
1597
  }
1556
1598
  )
1557
1599
  ] })
1558
- ] }) : /* @__PURE__ */ e(
1600
+ ] }) : /* @__PURE__ */ n(
1559
1601
  "button",
1560
1602
  {
1561
1603
  type: "button",
@@ -1563,272 +1605,272 @@ function lr({ competitionId: r, drivers: n, steamId: s, isPowerMode: t, registra
1563
1605
  onClick: () => l(!0),
1564
1606
  children: "Unregister"
1565
1607
  }
1566
- ) }) : /* @__PURE__ */ e("div", { className: "pvx-reg-actions", children: /* @__PURE__ */ e("a", { href: a, target: "_blank", rel: "noopener noreferrer", className: "pvx-comp-register-link", children: "Manage on PitVox" }) })
1608
+ ) }) : /* @__PURE__ */ n("div", { className: "pvx-reg-actions", children: /* @__PURE__ */ n("a", { href: a, target: "_blank", rel: "noopener noreferrer", className: "pvx-comp-register-link", children: "Manage on PitVox" }) })
1567
1609
  ] });
1568
1610
  }
1569
- function we({ drivers: r, steamId: n }) {
1570
- if (!r.length)
1571
- return /* @__PURE__ */ e("div", { className: "pvx-reg-no-drivers", children: "No drivers registered yet." });
1572
- const s = [...r].sort((t, a) => {
1573
- const i = n && t.steamId === n ? -1 : 0, o = n && a.steamId === n ? -1 : 0;
1611
+ function Te({ drivers: e, steamId: t }) {
1612
+ if (!e.length)
1613
+ return /* @__PURE__ */ n("div", { className: "pvx-reg-no-drivers", children: "No drivers registered yet." });
1614
+ const s = [...e].sort((r, a) => {
1615
+ const i = t && r.steamId === t ? -1 : 0, o = t && a.steamId === t ? -1 : 0;
1574
1616
  return i - o;
1575
1617
  });
1576
- return /* @__PURE__ */ e("div", { className: "pvx-reg-driver-list", children: s.map((t) => {
1618
+ return /* @__PURE__ */ n("div", { className: "pvx-reg-driver-list", children: s.map((r) => {
1577
1619
  var i, o;
1578
- const a = n && t.steamId === n;
1620
+ const a = t && r.steamId === t;
1579
1621
  return /* @__PURE__ */ c(
1580
1622
  "div",
1581
1623
  {
1582
1624
  className: `pvx-reg-driver-row ${a ? "pvx-reg-driver-row--you" : ""}`,
1583
1625
  children: [
1584
- t.avatarUrl ? /* @__PURE__ */ e("img", { src: t.avatarUrl, alt: "", className: "pvx-reg-driver-avatar" }) : /* @__PURE__ */ e("div", { className: "pvx-reg-driver-avatar pvx-reg-driver-avatar--placeholder", children: ((o = (i = t.displayName) == null ? void 0 : i.charAt(0)) == null ? void 0 : o.toUpperCase()) || "?" }),
1626
+ r.avatarUrl ? /* @__PURE__ */ n("img", { src: r.avatarUrl, alt: "", className: "pvx-reg-driver-avatar" }) : /* @__PURE__ */ n("div", { className: "pvx-reg-driver-avatar pvx-reg-driver-avatar--placeholder", children: ((o = (i = r.displayName) == null ? void 0 : i.charAt(0)) == null ? void 0 : o.toUpperCase()) || "?" }),
1585
1627
  /* @__PURE__ */ c("span", { className: "pvx-reg-driver-name", children: [
1586
- t.displayName,
1587
- a && /* @__PURE__ */ e("span", { className: "pvx-entry-you", children: " (you)" })
1628
+ r.displayName,
1629
+ a && /* @__PURE__ */ n("span", { className: "pvx-entry-you", children: " (you)" })
1588
1630
  ] })
1589
1631
  ]
1590
1632
  },
1591
- t.steamId || t.driverId
1633
+ r.steamId || r.driverId
1592
1634
  );
1593
1635
  }) });
1594
1636
  }
1595
- function Ce({ count: r, max: n }) {
1596
- const s = n ? r / n * 100 : 0, t = s >= 100 ? "full" : s >= 75 ? "warning" : "ok";
1597
- return /* @__PURE__ */ c("span", { className: `pvx-reg-capacity pvx-reg-capacity--${t}`, children: [
1598
- r,
1637
+ function Re({ count: e, max: t }) {
1638
+ const s = t ? e / t * 100 : 0, r = s >= 100 ? "full" : s >= 75 ? "warning" : "ok";
1639
+ return /* @__PURE__ */ c("span", { className: `pvx-reg-capacity pvx-reg-capacity--${r}`, children: [
1640
+ e,
1599
1641
  "/",
1600
- n,
1642
+ t,
1601
1643
  " drivers"
1602
1644
  ] });
1603
1645
  }
1604
- function nn({ competitionId: r, className: n }) {
1605
- const { data: s, isLoading: t } = de(r), a = (s == null ? void 0 : s.type) === "championship", i = C(
1646
+ function pt({ competitionId: e, className: t }) {
1647
+ const { data: s, isLoading: r } = ue(e), a = (s == null ? void 0 : s.type) === "championship", i = L(
1606
1648
  () => {
1607
- var p;
1608
- return ((p = s == null ? void 0 : s.rounds) == null ? void 0 : p.filter((N) => N.isFinalized)) || [];
1649
+ var u;
1650
+ return ((u = s == null ? void 0 : s.rounds) == null ? void 0 : u.filter((N) => N.isFinalized)) || [];
1609
1651
  },
1610
1652
  [s]
1611
- ), o = C(
1612
- () => i.map((p) => p.roundNumber),
1653
+ ), o = L(
1654
+ () => i.map((u) => u.roundNumber),
1613
1655
  [i]
1614
- ), { data: d = [], isLoading: v } = je(
1615
- r,
1656
+ ), { data: d = [], isLoading: v } = He(
1657
+ e,
1616
1658
  o
1617
- ), l = a ? "standings" : o.length > 0 ? `round-${o[o.length - 1]}` : null, [m, g] = M(null), f = m || l;
1618
- if (t || v)
1619
- return /* @__PURE__ */ e(A, { message: "Loading results..." });
1659
+ ), l = a ? "standings" : o.length > 0 ? `round-${o[o.length - 1]}` : null, [m, f] = D(null), g = m || l;
1660
+ if (r || v)
1661
+ return /* @__PURE__ */ n(U, { message: "Loading results..." });
1620
1662
  if (!s)
1621
- return /* @__PURE__ */ e(B, { message: "Competition not found." });
1663
+ return /* @__PURE__ */ n(P, { message: "Competition not found." });
1622
1664
  if (!i.length)
1623
- return /* @__PURE__ */ e(B, { message: "No results available yet. Results will appear here once rounds are finalised." });
1624
- const u = new Map(d.map((p) => [`round-${p.roundNumber}`, p])), b = [];
1665
+ return /* @__PURE__ */ n(P, { message: "No results available yet. Results will appear here once rounds are finalised." });
1666
+ const p = new Map(d.map((u) => [`round-${u.roundNumber}`, u])), b = [];
1625
1667
  a && b.push({ id: "standings", label: "Standings" });
1626
- for (const p of i)
1668
+ for (const u of i)
1627
1669
  b.push({
1628
- id: `round-${p.roundNumber}`,
1629
- label: `R${p.roundNumber}`,
1670
+ id: `round-${u.roundNumber}`,
1671
+ label: `R${u.roundNumber}`,
1630
1672
  track: null
1631
1673
  });
1632
- const x = u.get(f);
1633
- return /* @__PURE__ */ c("div", { className: n || "", children: [
1634
- /* @__PURE__ */ e("div", { className: "pvx-results-tabs", children: b.map((p) => /* @__PURE__ */ c(
1674
+ const x = p.get(g);
1675
+ return /* @__PURE__ */ c("div", { className: t || "", children: [
1676
+ /* @__PURE__ */ n("div", { className: "pvx-results-tabs", children: b.map((u) => /* @__PURE__ */ c(
1635
1677
  "button",
1636
1678
  {
1637
- className: `pvx-results-tab ${f === p.id ? "pvx-results-tab--active" : ""}`,
1638
- onClick: () => g(p.id),
1639
- title: p.track || void 0,
1679
+ className: `pvx-results-tab ${g === u.id ? "pvx-results-tab--active" : ""}`,
1680
+ onClick: () => f(u.id),
1681
+ title: u.track || void 0,
1640
1682
  children: [
1641
- /* @__PURE__ */ e("span", { className: "pvx-results-tab-label", children: p.label }),
1642
- p.track && /* @__PURE__ */ e("span", { className: "pvx-results-tab-track", children: p.track })
1683
+ /* @__PURE__ */ n("span", { className: "pvx-results-tab-label", children: u.label }),
1684
+ u.track && /* @__PURE__ */ n("span", { className: "pvx-results-tab-track", children: u.track })
1643
1685
  ]
1644
1686
  },
1645
- p.id
1687
+ u.id
1646
1688
  )) }),
1647
- f === "standings" ? /* @__PURE__ */ e(tr, { competitionId: r }) : x ? /* @__PURE__ */ e(dr, { round: x }) : /* @__PURE__ */ e(B, { message: "No results for this round." })
1689
+ g === "standings" ? /* @__PURE__ */ n(pn, { competitionId: e }) : x ? /* @__PURE__ */ n(fn, { round: x }) : /* @__PURE__ */ n(P, { message: "No results for this round." })
1648
1690
  ] });
1649
1691
  }
1650
- function dr({ round: r }) {
1692
+ function fn({ round: e }) {
1651
1693
  var a;
1652
- const s = (r.sessions || []).find((i) => i.type === "RACE"), t = (a = s == null ? void 0 : s.results) == null ? void 0 : a.filter((i) => i.position <= 3).sort((i, o) => i.position - o.position);
1694
+ const s = (e.sessions || []).find((i) => i.type === "RACE"), r = (a = s == null ? void 0 : s.results) == null ? void 0 : a.filter((i) => i.position <= 3).sort((i, o) => i.position - o.position);
1653
1695
  return /* @__PURE__ */ c("div", { className: "pvx-card", children: [
1654
1696
  /* @__PURE__ */ c("div", { className: "pvx-card-header--split", children: [
1655
1697
  /* @__PURE__ */ c("div", { children: [
1656
1698
  /* @__PURE__ */ c("h4", { className: "pvx-card-title", children: [
1657
1699
  "Round ",
1658
- r.roundNumber,
1659
- r.track ? `: ${r.track}` : ""
1700
+ e.roundNumber,
1701
+ e.track ? `: ${e.track}` : ""
1660
1702
  ] }),
1661
- r.startTime && /* @__PURE__ */ e("span", { className: "pvx-standings-subtitle", children: new Date(r.startTime).toLocaleDateString("en-GB", {
1703
+ e.startTime && /* @__PURE__ */ n("span", { className: "pvx-standings-subtitle", children: new Date(e.startTime).toLocaleDateString("en-GB", {
1662
1704
  day: "numeric",
1663
1705
  month: "long",
1664
1706
  year: "numeric"
1665
1707
  }) })
1666
1708
  ] }),
1667
- (t == null ? void 0 : t.length) > 0 && /* @__PURE__ */ e("div", { className: "pvx-round-podium-summary", children: t.map((i) => /* @__PURE__ */ c("span", { className: "pvx-round-podium-item", children: [
1668
- /* @__PURE__ */ e("span", { children: Ne[i.position - 1] }),
1669
- /* @__PURE__ */ e("span", { children: i.driverName })
1709
+ (r == null ? void 0 : r.length) > 0 && /* @__PURE__ */ n("div", { className: "pvx-round-podium-summary", children: r.map((i) => /* @__PURE__ */ c("span", { className: "pvx-round-podium-item", children: [
1710
+ /* @__PURE__ */ n("span", { children: se[i.position - 1] }),
1711
+ /* @__PURE__ */ n("span", { children: i.driverName })
1670
1712
  ] }, i.driverId)) })
1671
1713
  ] }),
1672
- /* @__PURE__ */ e(ke, { round: r })
1714
+ /* @__PURE__ */ n(Le, { round: e })
1673
1715
  ] });
1674
1716
  }
1675
- function pr(r) {
1676
- const { cdnUrl: n } = k(), s = R({
1677
- queryKey: ["pitvox", "laps", "global", r],
1678
- queryFn: () => T(n, `laps/${r}.json`),
1679
- enabled: !!r,
1717
+ function Nn(e) {
1718
+ const { cdnUrl: t } = k(), s = R({
1719
+ queryKey: ["pitvox", "laps", "global", e, "index"],
1720
+ queryFn: () => S(t, Fe(null, e)),
1721
+ enabled: !!e,
1680
1722
  staleTime: 3e4,
1681
1723
  refetchInterval: 3e4
1682
- }), t = s.data;
1724
+ }), r = s.data;
1683
1725
  return {
1684
1726
  isLoading: s.isLoading,
1685
1727
  error: s.error,
1686
- data: t ? {
1687
- driverName: t.driverName || "Driver",
1688
- lapCount: t.lapCount || 0,
1689
- trackBreakdown: t.trackBreakdown || [],
1690
- carBreakdown: t.carBreakdown || [],
1691
- recordsHeld: t.recordsHeld || 0,
1692
- currentRecords: t.currentRecords || [],
1693
- bestRanking: t.bestRanking ?? null,
1694
- bestRankingTrackId: t.bestRankingTrackId ?? null,
1695
- bestRankingLayout: t.bestRankingLayout ?? null,
1696
- bestRankingCarId: t.bestRankingCarId ?? null,
1697
- generatedAt: t.generatedAt
1728
+ data: r ? {
1729
+ driverName: r.driverName || "Driver",
1730
+ lapCount: r.lapCount || 0,
1731
+ trackBreakdown: r.trackBreakdown || [],
1732
+ carBreakdown: r.carBreakdown || [],
1733
+ recordsHeld: r.recordsHeld || 0,
1734
+ currentRecords: r.currentRecords || [],
1735
+ bestRanking: r.bestRanking ?? null,
1736
+ bestRankingTrackId: r.bestRankingTrackId ?? null,
1737
+ bestRankingLayout: r.bestRankingLayout ?? null,
1738
+ bestRankingCarId: r.bestRankingCarId ?? null,
1739
+ generatedAt: r.generatedAt
1698
1740
  } : null
1699
1741
  };
1700
1742
  }
1701
- function Le(r = {}) {
1702
- const { cdnUrl: n, partnerSlug: s } = k(), { game: t, gameVersion: a, enabled: i = !0 } = r, o = J(s, t, a, "ratings.json");
1743
+ function Se(e = {}) {
1744
+ const { cdnUrl: t, partnerSlug: s } = k(), { game: r, gameVersion: a, enabled: i = !0 } = e, o = Z(s, r, a, "ratings.json");
1703
1745
  return R({
1704
- queryKey: ["pitvox", "ratings", s, t || null, a || null],
1705
- queryFn: () => T(n, o),
1746
+ queryKey: ["pitvox", "ratings", s, r || null, a || null],
1747
+ queryFn: () => S(t, o),
1706
1748
  staleTime: 3e4,
1707
1749
  refetchInterval: 3e4,
1708
1750
  enabled: i
1709
1751
  });
1710
1752
  }
1711
- function ur(r) {
1712
- var t;
1713
- const n = Le(), s = C(() => {
1753
+ function bn(e) {
1754
+ var r;
1755
+ const t = Se(), s = L(() => {
1714
1756
  var a;
1715
- return !((a = n.data) != null && a.drivers) || !r ? null : n.data.drivers.find(
1716
- (i) => i.identifier === r
1757
+ return !((a = t.data) != null && a.drivers) || !e ? null : t.data.drivers.find(
1758
+ (i) => i.identifier === e
1717
1759
  ) || null;
1718
- }, [(t = n.data) == null ? void 0 : t.drivers, r]);
1760
+ }, [(r = t.data) == null ? void 0 : r.drivers, e]);
1719
1761
  return {
1720
- isLoading: n.isLoading,
1721
- error: n.error,
1762
+ isLoading: t.isLoading,
1763
+ error: t.error,
1722
1764
  data: s ? {
1723
1765
  rating: s.rating,
1724
1766
  rank: s.rank,
1725
- totalDrivers: n.data.driverCount || n.data.drivers.length,
1767
+ totalDrivers: t.data.driverCount || t.data.drivers.length,
1726
1768
  comboCount: s.comboCount || 0,
1727
1769
  distinctCars: s.distinctCars || 0,
1728
1770
  combos: s.combos || []
1729
1771
  } : null
1730
1772
  };
1731
1773
  }
1732
- function tn(r = {}) {
1733
- const n = Le(r);
1774
+ function ut(e = {}) {
1775
+ const t = Se(e);
1734
1776
  return {
1735
- data: n.data || null,
1736
- isLoading: n.isLoading,
1737
- error: n.error
1777
+ data: t.data || null,
1778
+ isLoading: t.isLoading,
1779
+ error: t.error
1738
1780
  };
1739
1781
  }
1740
- function mr() {
1741
- const { cdnUrl: r, partnerSlug: n, getSteamId: s, onFetchServerPassword: t } = k(), a = s(), { data: i, isLoading: o } = R({
1742
- queryKey: ["pitvox", "competitions", n],
1782
+ function yn() {
1783
+ const { cdnUrl: e, partnerSlug: t, getSteamId: s, onFetchServerPassword: r } = k(), a = s(), { data: i, isLoading: o } = R({
1784
+ queryKey: ["pitvox", "competitions", t],
1743
1785
  queryFn: async () => {
1744
- const u = await T(r, "competitions/index.json");
1745
- return u != null && u.competitions ? u.competitions.filter((b) => b.partnerSlug === n) : [];
1786
+ const p = await S(e, "competitions/index.json");
1787
+ return p != null && p.competitions ? p.competitions.filter((b) => b.partnerSlug === t) : [];
1746
1788
  },
1747
1789
  staleTime: 6e4
1748
- }), d = (i == null ? void 0 : i.map((u) => u.id)) || [], v = se({
1749
- queries: d.map((u) => ({
1750
- queryKey: ["pitvox", "competition", n, u, "entrylist"],
1751
- queryFn: () => T(r, `competitions/${n}/${u}/entrylist.json`),
1790
+ }), d = (i == null ? void 0 : i.map((p) => p.id)) || [], v = ie({
1791
+ queries: d.map((p) => ({
1792
+ queryKey: ["pitvox", "competition", t, p, "entrylist"],
1793
+ queryFn: () => S(e, `competitions/${t}/${p}/entrylist.json`),
1752
1794
  enabled: !!a && d.length > 0,
1753
1795
  staleTime: 6e4
1754
1796
  }))
1755
- }), l = v.some((u) => u.isLoading), m = C(() => {
1756
- var x, p;
1797
+ }), l = v.some((p) => p.isLoading), m = L(() => {
1798
+ var x, u;
1757
1799
  if (!i || !a || l) return [];
1758
- const u = /* @__PURE__ */ new Date(), b = [];
1800
+ const p = /* @__PURE__ */ new Date(), b = [];
1759
1801
  for (let N = 0; N < i.length; N++) {
1760
1802
  const h = i[N], y = (x = v[N]) == null ? void 0 : x.data;
1761
- if (!((p = y == null ? void 0 : y.drivers) == null ? void 0 : p.some((w) => w.steamId === a))) continue;
1762
- const $ = h.rounds || [];
1763
- for (const w of $)
1764
- w.isFinalized || !w.startTime || new Date(w.startTime) <= u || b.push({
1803
+ if (!((u = y == null ? void 0 : y.drivers) == null ? void 0 : u.some((T) => T.steamId === a))) continue;
1804
+ const w = h.rounds || [];
1805
+ for (const T of w)
1806
+ T.isFinalized || !T.startTime || new Date(T.startTime) <= p || b.push({
1765
1807
  competitionId: h.id,
1766
1808
  competitionName: h.name,
1767
- roundNumber: w.roundNumber,
1768
- track: w.track || "TBD",
1769
- startTime: w.startTime
1809
+ roundNumber: T.roundNumber,
1810
+ track: T.track || "TBD",
1811
+ startTime: T.startTime
1770
1812
  });
1771
1813
  }
1772
1814
  return b.sort((N, h) => new Date(N.startTime) - new Date(h.startTime)), b.length > 0 && (b[0].isNext = !0), b;
1773
- }, [i, a, l, v]), g = se({
1774
- queries: m.map((u) => ({
1775
- queryKey: ["pitvox", "serverInfo", u.competitionId, u.roundNumber],
1776
- queryFn: () => t(u.competitionId, u.roundNumber),
1777
- enabled: !!t && m.length > 0,
1815
+ }, [i, a, l, v]), f = ie({
1816
+ queries: m.map((p) => ({
1817
+ queryKey: ["pitvox", "serverInfo", p.competitionId, p.roundNumber],
1818
+ queryFn: () => r(p.competitionId, p.roundNumber),
1819
+ enabled: !!r && m.length > 0,
1778
1820
  staleTime: 5 * 6e4,
1779
1821
  // 5 minutes
1780
1822
  retry: !1
1781
1823
  }))
1782
1824
  });
1783
1825
  return {
1784
- data: C(() => m.length ? t ? m.map((u, b) => {
1785
- var p;
1786
- const x = (p = g[b]) == null ? void 0 : p.data;
1826
+ data: L(() => m.length ? r ? m.map((p, b) => {
1827
+ var u;
1828
+ const x = (u = f[b]) == null ? void 0 : u.data;
1787
1829
  return x != null && x.success ? {
1788
- ...u,
1830
+ ...p,
1789
1831
  serverAddress: x.serverAddress || null,
1790
1832
  serverPassword: x.serverPassword || null
1791
- } : u;
1792
- }) : m : [], [m, t, g]),
1833
+ } : p;
1834
+ }) : m : [], [m, r, f]),
1793
1835
  isLoading: o || !!a && l
1794
1836
  };
1795
1837
  }
1796
- function vr() {
1797
- const { onFetchNotifications: r } = k();
1798
- return !!r;
1838
+ function kn() {
1839
+ const { onFetchNotifications: e } = k();
1840
+ return !!e;
1799
1841
  }
1800
- function hr(r = {}) {
1801
- const { onFetchNotifications: n, partnerSlug: s } = k(), { limit: t = 20, unreadOnly: a = !1 } = r;
1842
+ function wn(e = {}) {
1843
+ const { onFetchNotifications: t, partnerSlug: s } = k(), { limit: r = 20, unreadOnly: a = !1 } = e;
1802
1844
  return R({
1803
- queryKey: ["pitvox", "notifications", s, { limit: t, unreadOnly: a }],
1804
- queryFn: () => n({ limit: t, unreadOnly: a }),
1805
- enabled: !!n,
1845
+ queryKey: ["pitvox", "notifications", s, { limit: r, unreadOnly: a }],
1846
+ queryFn: () => t({ limit: r, unreadOnly: a }),
1847
+ enabled: !!t,
1806
1848
  staleTime: 3e4,
1807
1849
  refetchInterval: 3e4
1808
1850
  });
1809
1851
  }
1810
- function sn() {
1811
- const { onFetchNotifications: r, partnerSlug: n } = k(), { data: s, isLoading: t } = R({
1812
- queryKey: ["pitvox", "notifications", n, { limit: 1, unreadOnly: !1 }],
1813
- queryFn: () => r({ limit: 1 }),
1814
- enabled: !!r,
1852
+ function mt() {
1853
+ const { onFetchNotifications: e, partnerSlug: t } = k(), { data: s, isLoading: r } = R({
1854
+ queryKey: ["pitvox", "notifications", t, { limit: 1, unreadOnly: !1 }],
1855
+ queryFn: () => e({ limit: 1 }),
1856
+ enabled: !!e,
1815
1857
  staleTime: 3e4,
1816
1858
  refetchInterval: 3e4,
1817
1859
  select: (a) => (a == null ? void 0 : a.unreadCount) ?? 0
1818
1860
  });
1819
- return { count: s ?? 0, isLoading: t };
1861
+ return { count: s ?? 0, isLoading: r };
1820
1862
  }
1821
- function xr() {
1822
- const { onMarkNotificationRead: r, partnerSlug: n } = k(), s = F();
1823
- return H({
1824
- mutationFn: (t) => {
1825
- if (!r)
1863
+ function Cn() {
1864
+ const { onMarkNotificationRead: e, partnerSlug: t } = k(), s = _();
1865
+ return O({
1866
+ mutationFn: (r) => {
1867
+ if (!e)
1826
1868
  throw new Error("No onMarkNotificationRead callback provided to PitVoxPartnerProvider.");
1827
- return r(t);
1869
+ return e(r);
1828
1870
  },
1829
- onSuccess: (t, a) => {
1871
+ onSuccess: (r, a) => {
1830
1872
  s.setQueriesData(
1831
- { queryKey: ["pitvox", "notifications", n] },
1873
+ { queryKey: ["pitvox", "notifications", t] },
1832
1874
  (i) => i != null && i.notifications ? {
1833
1875
  ...i,
1834
1876
  unreadCount: Math.max(0, (i.unreadCount || 0) - 1),
@@ -1840,36 +1882,36 @@ function xr() {
1840
1882
  }
1841
1883
  });
1842
1884
  }
1843
- function gr() {
1844
- const { onMarkAllNotificationsRead: r, partnerSlug: n } = k(), s = F();
1845
- return H({
1885
+ function Ln() {
1886
+ const { onMarkAllNotificationsRead: e, partnerSlug: t } = k(), s = _();
1887
+ return O({
1846
1888
  mutationFn: () => {
1847
- if (!r)
1889
+ if (!e)
1848
1890
  throw new Error("No onMarkAllNotificationsRead callback provided to PitVoxPartnerProvider.");
1849
- return r();
1891
+ return e();
1850
1892
  },
1851
1893
  onSuccess: () => {
1852
1894
  s.setQueriesData(
1853
- { queryKey: ["pitvox", "notifications", n] },
1854
- (t) => t != null && t.notifications ? {
1855
- ...t,
1895
+ { queryKey: ["pitvox", "notifications", t] },
1896
+ (r) => r != null && r.notifications ? {
1897
+ ...r,
1856
1898
  unreadCount: 0,
1857
- notifications: t.notifications.map((a) => ({
1899
+ notifications: r.notifications.map((a) => ({
1858
1900
  ...a,
1859
1901
  isRead: !0,
1860
1902
  readAt: a.readAt || (/* @__PURE__ */ new Date()).toISOString()
1861
1903
  }))
1862
- } : t
1904
+ } : r
1863
1905
  );
1864
1906
  }
1865
1907
  });
1866
1908
  }
1867
- function fr({ driverName: r, avatarUrl: n, memberSince: s, className: t = "" }) {
1909
+ function Tn({ driverName: e, avatarUrl: t, memberSince: s, className: r = "" }) {
1868
1910
  const a = s ? new Date(s).toLocaleDateString("en-GB", { day: "2-digit", month: "2-digit", year: "numeric" }) : null;
1869
- return /* @__PURE__ */ c("div", { className: `pvx-card pvx-dash-profile ${t}`, children: [
1870
- n ? /* @__PURE__ */ e("img", { src: n, alt: "", className: "pvx-dash-profile-avatar" }) : /* @__PURE__ */ e("div", { className: "pvx-dash-profile-avatar pvx-dash-profile-avatar--placeholder", children: (r || "?")[0].toUpperCase() }),
1911
+ return /* @__PURE__ */ c("div", { className: `pvx-card pvx-dash-profile ${r}`, children: [
1912
+ t ? /* @__PURE__ */ n("img", { src: t, alt: "", className: "pvx-dash-profile-avatar" }) : /* @__PURE__ */ n("div", { className: "pvx-dash-profile-avatar pvx-dash-profile-avatar--placeholder", children: (e || "?")[0].toUpperCase() }),
1871
1913
  /* @__PURE__ */ c("div", { className: "pvx-dash-profile-info", children: [
1872
- /* @__PURE__ */ e("h2", { className: "pvx-dash-profile-name", children: r }),
1914
+ /* @__PURE__ */ n("h2", { className: "pvx-dash-profile-name", children: e }),
1873
1915
  a && /* @__PURE__ */ c("p", { className: "pvx-dash-profile-since", children: [
1874
1916
  "Racing since ",
1875
1917
  a
@@ -1877,36 +1919,36 @@ function fr({ driverName: r, avatarUrl: n, memberSince: s, className: t = "" })
1877
1919
  ] })
1878
1920
  ] });
1879
1921
  }
1880
- function Nr() {
1922
+ function Rn() {
1881
1923
  return /* @__PURE__ */ c("svg", { className: "pvx-dash-stat-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1882
- /* @__PURE__ */ e("line", { x1: "4", y1: "9", x2: "20", y2: "9" }),
1883
- /* @__PURE__ */ e("line", { x1: "4", y1: "15", x2: "20", y2: "15" }),
1884
- /* @__PURE__ */ e("line", { x1: "10", y1: "3", x2: "8", y2: "21" }),
1885
- /* @__PURE__ */ e("line", { x1: "16", y1: "3", x2: "14", y2: "21" })
1924
+ /* @__PURE__ */ n("line", { x1: "4", y1: "9", x2: "20", y2: "9" }),
1925
+ /* @__PURE__ */ n("line", { x1: "4", y1: "15", x2: "20", y2: "15" }),
1926
+ /* @__PURE__ */ n("line", { x1: "10", y1: "3", x2: "8", y2: "21" }),
1927
+ /* @__PURE__ */ n("line", { x1: "16", y1: "3", x2: "14", y2: "21" })
1886
1928
  ] });
1887
1929
  }
1888
- function br() {
1930
+ function Sn() {
1889
1931
  return /* @__PURE__ */ c("svg", { className: "pvx-dash-stat-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1890
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "10" }),
1891
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "2" }),
1892
- /* @__PURE__ */ e("path", { d: "M12 14v4" }),
1893
- /* @__PURE__ */ e("path", { d: "M10.5 12.5l-4 2.5" }),
1894
- /* @__PURE__ */ e("path", { d: "M13.5 12.5l4 2.5" })
1932
+ /* @__PURE__ */ n("circle", { cx: "12", cy: "12", r: "10" }),
1933
+ /* @__PURE__ */ n("circle", { cx: "12", cy: "12", r: "2" }),
1934
+ /* @__PURE__ */ n("path", { d: "M12 14v4" }),
1935
+ /* @__PURE__ */ n("path", { d: "M10.5 12.5l-4 2.5" }),
1936
+ /* @__PURE__ */ n("path", { d: "M13.5 12.5l4 2.5" })
1895
1937
  ] });
1896
1938
  }
1897
- function yr() {
1898
- return /* @__PURE__ */ e("svg", { className: "pvx-dash-stat-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ e("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }) });
1939
+ function $n() {
1940
+ return /* @__PURE__ */ n("svg", { className: "pvx-dash-stat-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ n("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }) });
1899
1941
  }
1900
- function ie({ icon: r, value: n, label: s, items: t, labelKey: a, countKey: i }) {
1901
- const [o, d] = M(!1), v = Se(null);
1902
- $e(() => {
1942
+ function ce({ icon: e, value: t, label: s, items: r, labelKey: a, countKey: i }) {
1943
+ const [o, d] = D(!1), v = De(null);
1944
+ Ie(() => {
1903
1945
  if (!o) return;
1904
- function m(g) {
1905
- v.current && !v.current.contains(g.target) && d(!1);
1946
+ function m(f) {
1947
+ v.current && !v.current.contains(f.target) && d(!1);
1906
1948
  }
1907
1949
  return document.addEventListener("mousedown", m), () => document.removeEventListener("mousedown", m);
1908
1950
  }, [o]);
1909
- const l = t != null && t.length ? t.slice().sort((m, g) => g[i] - m[i]) : null;
1951
+ const l = r != null && r.length ? r.slice().sort((m, f) => f[i] - m[i]) : null;
1910
1952
  return /* @__PURE__ */ c(
1911
1953
  "div",
1912
1954
  {
@@ -1914,80 +1956,80 @@ function ie({ icon: r, value: n, label: s, items: t, labelKey: a, countKey: i })
1914
1956
  className: `pvx-dash-stat-card ${l ? "pvx-dash-stat-card--clickable" : ""}`,
1915
1957
  onClick: l ? () => d((m) => !m) : void 0,
1916
1958
  children: [
1917
- r,
1959
+ e,
1918
1960
  /* @__PURE__ */ c("div", { className: "pvx-dash-stat-content", children: [
1919
- /* @__PURE__ */ e("span", { className: "pvx-dash-stat-value", children: n }),
1920
- /* @__PURE__ */ e("span", { className: "pvx-dash-stat-label", children: s })
1961
+ /* @__PURE__ */ n("span", { className: "pvx-dash-stat-value", children: t }),
1962
+ /* @__PURE__ */ n("span", { className: "pvx-dash-stat-label", children: s })
1921
1963
  ] }),
1922
- l && /* @__PURE__ */ e("div", { className: `pvx-dash-tooltip pvx-dash-tooltip--scrollable ${o ? "pvx-dash-tooltip--open" : ""}`, children: l.map((m, g) => /* @__PURE__ */ c("div", { className: "pvx-dash-tooltip-row", children: [
1923
- /* @__PURE__ */ e("span", { className: "pvx-dash-tooltip-label", children: m[a] }),
1924
- /* @__PURE__ */ e("span", { className: "pvx-dash-tooltip-value", children: m[i] })
1925
- ] }, g)) })
1964
+ l && /* @__PURE__ */ n("div", { className: `pvx-dash-tooltip pvx-dash-tooltip--scrollable ${o ? "pvx-dash-tooltip--open" : ""}`, children: l.map((m, f) => /* @__PURE__ */ c("div", { className: "pvx-dash-tooltip-row", children: [
1965
+ /* @__PURE__ */ n("span", { className: "pvx-dash-tooltip-label", children: m[a] }),
1966
+ /* @__PURE__ */ n("span", { className: "pvx-dash-tooltip-value", children: m[i] })
1967
+ ] }, f)) })
1926
1968
  ]
1927
1969
  }
1928
1970
  );
1929
1971
  }
1930
- function kr({ stats: r, rating: n, className: s = "" }) {
1931
- if (!r) return null;
1932
- const t = r.trackBreakdown.map((i) => ({
1933
- name: _(i.trackId, i.layout),
1972
+ function Mn({ stats: e, rating: t, className: s = "" }) {
1973
+ if (!e) return null;
1974
+ const r = e.trackBreakdown.map((i) => ({
1975
+ name: q(i.trackId, i.layout),
1934
1976
  lapCount: i.lapCount
1935
- })), a = r.carBreakdown.map((i) => ({
1977
+ })), a = e.carBreakdown.map((i) => ({
1936
1978
  name: I(i.carId),
1937
1979
  lapCount: i.lapCount
1938
1980
  }));
1939
1981
  return /* @__PURE__ */ c("div", { className: `pvx-dash-stats ${s}`, children: [
1940
- /* @__PURE__ */ e(
1941
- ie,
1982
+ /* @__PURE__ */ n(
1983
+ ce,
1942
1984
  {
1943
- icon: /* @__PURE__ */ e(Nr, {}),
1944
- value: r.lapCount.toLocaleString(),
1985
+ icon: /* @__PURE__ */ n(Rn, {}),
1986
+ value: e.lapCount.toLocaleString(),
1945
1987
  label: "Total Laps",
1946
- items: t,
1988
+ items: r,
1947
1989
  labelKey: "name",
1948
1990
  countKey: "lapCount"
1949
1991
  }
1950
1992
  ),
1951
- /* @__PURE__ */ e(
1952
- ie,
1993
+ /* @__PURE__ */ n(
1994
+ ce,
1953
1995
  {
1954
- icon: /* @__PURE__ */ e(br, {}),
1955
- value: r.carBreakdown.length,
1996
+ icon: /* @__PURE__ */ n(Sn, {}),
1997
+ value: e.carBreakdown.length,
1956
1998
  label: "Cars Used",
1957
1999
  items: a,
1958
2000
  labelKey: "name",
1959
2001
  countKey: "lapCount"
1960
2002
  }
1961
2003
  ),
1962
- n && /* @__PURE__ */ c("div", { className: "pvx-dash-stat-card pvx-dash-stat-card--rating", children: [
1963
- /* @__PURE__ */ e(yr, {}),
2004
+ t && /* @__PURE__ */ c("div", { className: "pvx-dash-stat-card pvx-dash-stat-card--rating", children: [
2005
+ /* @__PURE__ */ n($n, {}),
1964
2006
  /* @__PURE__ */ c("div", { className: "pvx-dash-stat-content", children: [
1965
- /* @__PURE__ */ e("span", { className: "pvx-dash-stat-value", children: n.rating.toFixed(1) }),
1966
- /* @__PURE__ */ e("span", { className: "pvx-dash-stat-label", children: "Driver Rating" }),
2007
+ /* @__PURE__ */ n("span", { className: "pvx-dash-stat-value", children: t.rating.toFixed(1) }),
2008
+ /* @__PURE__ */ n("span", { className: "pvx-dash-stat-label", children: "Driver Rating" }),
1967
2009
  /* @__PURE__ */ c("span", { className: "pvx-dash-stat-sub", children: [
1968
2010
  "#",
1969
- n.rank,
2011
+ t.rank,
1970
2012
  " of ",
1971
- n.totalDrivers
2013
+ t.totalDrivers
1972
2014
  ] })
1973
2015
  ] })
1974
2016
  ] })
1975
2017
  ] });
1976
2018
  }
1977
- function wr({ records: r, className: n = "" }) {
1978
- const s = C(() => r != null && r.length ? r.slice().sort((t, a) => {
1979
- const i = t.recordedAt ? new Date(t.recordedAt).getTime() : 0;
2019
+ function Dn({ records: e, className: t = "" }) {
2020
+ const s = L(() => e != null && e.length ? e.slice().sort((r, a) => {
2021
+ const i = r.recordedAt ? new Date(r.recordedAt).getTime() : 0;
1980
2022
  return (a.recordedAt ? new Date(a.recordedAt).getTime() : 0) - i;
1981
- }) : [], [r]);
1982
- return s.length ? /* @__PURE__ */ c("div", { className: `pvx-card ${n}`, children: [
1983
- /* @__PURE__ */ e("div", { className: "pvx-card-header", children: /* @__PURE__ */ c("h3", { className: "pvx-card-title", children: [
1984
- /* @__PURE__ */ e("span", { className: "pvx-dash-records-icon", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1985
- /* @__PURE__ */ e("path", { d: "M6 9H4.5a2.5 2.5 0 010-5H6" }),
1986
- /* @__PURE__ */ e("path", { d: "M18 9h1.5a2.5 2.5 0 000-5H18" }),
1987
- /* @__PURE__ */ e("path", { d: "M4 22h16" }),
1988
- /* @__PURE__ */ e("path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20 7 22" }),
1989
- /* @__PURE__ */ e("path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20 17 22" }),
1990
- /* @__PURE__ */ e("path", { d: "M18 2H6v7a6 6 0 0012 0V2z" })
2023
+ }) : [], [e]);
2024
+ return s.length ? /* @__PURE__ */ c("div", { className: `pvx-card ${t}`, children: [
2025
+ /* @__PURE__ */ n("div", { className: "pvx-card-header", children: /* @__PURE__ */ c("h3", { className: "pvx-card-title", children: [
2026
+ /* @__PURE__ */ n("span", { className: "pvx-dash-records-icon", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2027
+ /* @__PURE__ */ n("path", { d: "M6 9H4.5a2.5 2.5 0 010-5H6" }),
2028
+ /* @__PURE__ */ n("path", { d: "M18 9h1.5a2.5 2.5 0 000-5H18" }),
2029
+ /* @__PURE__ */ n("path", { d: "M4 22h16" }),
2030
+ /* @__PURE__ */ n("path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20 7 22" }),
2031
+ /* @__PURE__ */ n("path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20 17 22" }),
2032
+ /* @__PURE__ */ n("path", { d: "M18 2H6v7a6 6 0 0012 0V2z" })
1991
2033
  ] }) }),
1992
2034
  "Current Records",
1993
2035
  /* @__PURE__ */ c("span", { className: "pvx-dash-records-count", children: [
@@ -1996,34 +2038,34 @@ function wr({ records: r, className: n = "" }) {
1996
2038
  ")"
1997
2039
  ] })
1998
2040
  ] }) }),
1999
- /* @__PURE__ */ e("div", { className: "pvx-dash-records-list", children: s.map((t, a) => /* @__PURE__ */ c("div", { className: "pvx-dash-record-row", children: [
2041
+ /* @__PURE__ */ n("div", { className: "pvx-dash-records-list", children: s.map((r, a) => /* @__PURE__ */ c("div", { className: "pvx-dash-record-row", children: [
2000
2042
  /* @__PURE__ */ c("div", { className: "pvx-dash-record-info", children: [
2001
- /* @__PURE__ */ e("span", { className: "pvx-dash-record-track", children: _(t.trackId, t.layout, t.game) }),
2002
- /* @__PURE__ */ e("span", { className: "pvx-dash-record-car", children: I(t.carId) })
2043
+ /* @__PURE__ */ n("span", { className: "pvx-dash-record-track", children: q(r.trackId, r.layout, r.game) }),
2044
+ /* @__PURE__ */ n("span", { className: "pvx-dash-record-car", children: I(r.carId) })
2003
2045
  ] }),
2004
2046
  /* @__PURE__ */ c("div", { className: "pvx-dash-record-time", children: [
2005
- /* @__PURE__ */ e("span", { className: "pvx-dash-record-lap", children: P(t.lapTimeMs) }),
2006
- /* @__PURE__ */ c("span", { className: `pvx-dash-game-badge pvx-dash-game-badge--${t.game || "evo"}`, children: [
2007
- (t.game || "evo").toUpperCase(),
2008
- t.gameVersion ? ` ${t.gameVersion}` : ""
2047
+ /* @__PURE__ */ n("span", { className: "pvx-dash-record-lap", children: A(r.lapTimeMs) }),
2048
+ /* @__PURE__ */ c("span", { className: `pvx-dash-game-badge pvx-dash-game-badge--${r.game || "evo"}`, children: [
2049
+ (r.game || "evo").toUpperCase(),
2050
+ r.gameVersion ? ` ${r.gameVersion}` : ""
2009
2051
  ] })
2010
2052
  ] })
2011
2053
  ] }, a)) })
2012
2054
  ] }) : null;
2013
2055
  }
2014
- function Cr({ events: r, isLoading: n, className: s, limit: t = 3 }) {
2015
- if (n)
2016
- return /* @__PURE__ */ e("div", { className: "pvx-loading", children: "Loading upcoming events..." });
2017
- if (!(r != null && r.length))
2056
+ function In({ events: e, isLoading: t, className: s, limit: r = 3 }) {
2057
+ if (t)
2058
+ return /* @__PURE__ */ n("div", { className: "pvx-loading", children: "Loading upcoming events..." });
2059
+ if (!(e != null && e.length))
2018
2060
  return null;
2019
- const a = t ? r.slice(0, t) : r, i = r.length - a.length;
2061
+ const a = r ? e.slice(0, r) : e, i = e.length - a.length;
2020
2062
  return /* @__PURE__ */ c("div", { className: `pvx-card ${s || ""}`, children: [
2021
- /* @__PURE__ */ e("div", { className: "pvx-card-header", children: /* @__PURE__ */ c("h3", { className: "pvx-card-title", children: [
2022
- /* @__PURE__ */ e(Tr, {}),
2063
+ /* @__PURE__ */ n("div", { className: "pvx-card-header", children: /* @__PURE__ */ c("h3", { className: "pvx-card-title", children: [
2064
+ /* @__PURE__ */ n(An, {}),
2023
2065
  "Upcoming Events",
2024
2066
  /* @__PURE__ */ c("span", { className: "pvx-dash-records-count", children: [
2025
2067
  "(",
2026
- r.length,
2068
+ e.length,
2027
2069
  ")"
2028
2070
  ] })
2029
2071
  ] }) }),
@@ -2034,15 +2076,15 @@ function Cr({ events: r, isLoading: n, className: s, limit: t = 3 }) {
2034
2076
  className: `pvx-upcoming-item ${o.isNext ? "pvx-upcoming-item--next" : ""}`,
2035
2077
  children: [
2036
2078
  /* @__PURE__ */ c("div", { className: "pvx-upcoming-info", children: [
2037
- /* @__PURE__ */ e("span", { className: "pvx-upcoming-comp", children: o.competitionName }),
2079
+ /* @__PURE__ */ n("span", { className: "pvx-upcoming-comp", children: o.competitionName }),
2038
2080
  /* @__PURE__ */ c("span", { className: "pvx-upcoming-round", children: [
2039
2081
  "Round ",
2040
2082
  o.roundNumber,
2041
2083
  ": ",
2042
2084
  o.track
2043
2085
  ] }),
2044
- o.serverPassword && /* @__PURE__ */ e(
2045
- Lr,
2086
+ o.serverPassword && /* @__PURE__ */ n(
2087
+ Bn,
2046
2088
  {
2047
2089
  password: o.serverPassword,
2048
2090
  address: o.serverAddress
@@ -2050,13 +2092,13 @@ function Cr({ events: r, isLoading: n, className: s, limit: t = 3 }) {
2050
2092
  )
2051
2093
  ] }),
2052
2094
  /* @__PURE__ */ c("div", { className: "pvx-upcoming-time", children: [
2053
- /* @__PURE__ */ e("span", { className: "pvx-upcoming-date", children: new Date(o.startTime).toLocaleDateString("en-GB", {
2095
+ /* @__PURE__ */ n("span", { className: "pvx-upcoming-date", children: new Date(o.startTime).toLocaleDateString("en-GB", {
2054
2096
  day: "numeric",
2055
2097
  month: "short",
2056
2098
  year: "numeric"
2057
2099
  }) }),
2058
- /* @__PURE__ */ e("span", { className: "pvx-upcoming-relative", children: Rr(o.startTime) }),
2059
- o.isNext && /* @__PURE__ */ e("span", { className: "pvx-upcoming-badge", children: "Next" })
2100
+ /* @__PURE__ */ n("span", { className: "pvx-upcoming-relative", children: Pn(o.startTime) }),
2101
+ o.isNext && /* @__PURE__ */ n("span", { className: "pvx-upcoming-badge", children: "Next" })
2060
2102
  ] })
2061
2103
  ]
2062
2104
  },
@@ -2071,11 +2113,11 @@ function Cr({ events: r, isLoading: n, className: s, limit: t = 3 }) {
2071
2113
  ] })
2072
2114
  ] });
2073
2115
  }
2074
- function Lr({ password: r, address: n }) {
2075
- const [s, t] = M(!1), [a, i] = M(!1), o = n ? r ? `join:${n}|${r}` : `join:${n}` : null, d = K(async () => {
2116
+ function Bn({ password: e, address: t }) {
2117
+ const [s, r] = D(!1), [a, i] = D(!1), o = t ? e ? `join:${t}|${e}` : `join:${t}` : null, d = H(async () => {
2076
2118
  if (o)
2077
2119
  try {
2078
- await navigator.clipboard.writeText(o), t(!0), setTimeout(() => t(!1), 2e3);
2120
+ await navigator.clipboard.writeText(o), r(!0), setTimeout(() => r(!1), 2e3);
2079
2121
  } catch {
2080
2122
  }
2081
2123
  }, [o]);
@@ -2087,230 +2129,238 @@ function Lr({ password: r, address: n }) {
2087
2129
  onClick: d,
2088
2130
  title: "Copy join string to clipboard",
2089
2131
  children: [
2090
- /* @__PURE__ */ e($r, {}),
2132
+ /* @__PURE__ */ n(En, {}),
2091
2133
  " ",
2092
2134
  s ? "Copied!" : "Join"
2093
2135
  ]
2094
2136
  }
2095
2137
  ),
2096
- r && /* @__PURE__ */ c(E, { children: [
2097
- /* @__PURE__ */ e(
2138
+ e && /* @__PURE__ */ c(F, { children: [
2139
+ /* @__PURE__ */ n(
2098
2140
  "span",
2099
2141
  {
2100
2142
  className: "pvx-server-detail pvx-server-detail--clickable",
2101
2143
  onClick: () => i((v) => !v),
2102
2144
  title: a ? "Hide password" : "Reveal password",
2103
- children: a ? /* @__PURE__ */ e(Ir, {}) : /* @__PURE__ */ e(Mr, {})
2145
+ children: a ? /* @__PURE__ */ n(_n, {}) : /* @__PURE__ */ n(Fn, {})
2104
2146
  }
2105
2147
  ),
2106
2148
  a && /* @__PURE__ */ c("span", { className: "pvx-server-detail", children: [
2107
- /* @__PURE__ */ e(Sr, {}),
2149
+ /* @__PURE__ */ n(Un, {}),
2108
2150
  " ",
2109
- r
2151
+ e
2110
2152
  ] })
2111
2153
  ] })
2112
2154
  ] });
2113
2155
  }
2114
- function Rr(r) {
2115
- const n = new Date(r).getTime() - Date.now();
2116
- if (n <= 0) return "Now";
2117
- const s = Math.floor(n / (1e3 * 60 * 60));
2156
+ function Pn(e) {
2157
+ const t = new Date(e).getTime() - Date.now();
2158
+ if (t <= 0) return "Now";
2159
+ const s = Math.floor(t / (1e3 * 60 * 60));
2118
2160
  if (s < 1) return "Less than 1 hour";
2119
2161
  if (s < 24) return `in ${s}h`;
2120
- const t = Math.floor(s / 24);
2121
- if (t === 1) return "Tomorrow";
2122
- if (t < 7) return `in ${t} days`;
2123
- if (t < 30) {
2124
- const a = Math.floor(t / 7);
2162
+ const r = Math.floor(s / 24);
2163
+ if (r === 1) return "Tomorrow";
2164
+ if (r < 7) return `in ${r} days`;
2165
+ if (r < 30) {
2166
+ const a = Math.floor(r / 7);
2125
2167
  return `in ${a} week${a !== 1 ? "s" : ""}`;
2126
2168
  }
2127
- return oe(r);
2169
+ return le(e);
2128
2170
  }
2129
- function Tr() {
2171
+ function An() {
2130
2172
  return /* @__PURE__ */ c("svg", { className: "pvx-dash-records-icon", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2131
- /* @__PURE__ */ e("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2" }),
2132
- /* @__PURE__ */ e("path", { d: "M16 2v4M8 2v4M3 10h18" })
2173
+ /* @__PURE__ */ n("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2" }),
2174
+ /* @__PURE__ */ n("path", { d: "M16 2v4M8 2v4M3 10h18" })
2133
2175
  ] });
2134
2176
  }
2135
- function Sr() {
2177
+ function Un() {
2136
2178
  return /* @__PURE__ */ c("svg", { className: "pvx-server-icon", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2137
- /* @__PURE__ */ e("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2" }),
2138
- /* @__PURE__ */ e("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
2179
+ /* @__PURE__ */ n("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2" }),
2180
+ /* @__PURE__ */ n("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
2139
2181
  ] });
2140
2182
  }
2141
- function $r() {
2183
+ function En() {
2142
2184
  return /* @__PURE__ */ c("svg", { className: "pvx-server-icon pvx-server-icon--action", width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2143
- /* @__PURE__ */ e("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2" }),
2144
- /* @__PURE__ */ e("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
2185
+ /* @__PURE__ */ n("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2" }),
2186
+ /* @__PURE__ */ n("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
2145
2187
  ] });
2146
2188
  }
2147
- function Mr() {
2189
+ function Fn() {
2148
2190
  return /* @__PURE__ */ c("svg", { className: "pvx-server-icon pvx-server-icon--action", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2149
- /* @__PURE__ */ e("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }),
2150
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "3" })
2191
+ /* @__PURE__ */ n("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }),
2192
+ /* @__PURE__ */ n("circle", { cx: "12", cy: "12", r: "3" })
2151
2193
  ] });
2152
2194
  }
2153
- function Ir() {
2195
+ function _n() {
2154
2196
  return /* @__PURE__ */ c("svg", { className: "pvx-server-icon pvx-server-icon--action", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2155
- /* @__PURE__ */ e("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24" }),
2156
- /* @__PURE__ */ e("line", { x1: "1", y1: "1", x2: "23", y2: "23" })
2197
+ /* @__PURE__ */ n("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24" }),
2198
+ /* @__PURE__ */ n("line", { x1: "1", y1: "1", x2: "23", y2: "23" })
2157
2199
  ] });
2158
2200
  }
2159
- function Dr({ notifications: r, unreadCount: n = 0, onMarkRead: s, onMarkAllRead: t, isLoading: a, className: i }) {
2160
- const o = le();
2161
- return a ? /* @__PURE__ */ e("div", { className: "pvx-loading", children: "Loading notifications..." }) : /* @__PURE__ */ c("div", { className: `pvx-card ${i || ""}`, children: [
2201
+ function qn({ notifications: e, unreadCount: t = 0, onMarkRead: s, onMarkAllRead: r, isLoading: a, className: i }) {
2202
+ const o = pe();
2203
+ return a ? /* @__PURE__ */ n("div", { className: "pvx-loading", children: "Loading notifications..." }) : /* @__PURE__ */ c("div", { className: `pvx-card ${i || ""}`, children: [
2162
2204
  /* @__PURE__ */ c("div", { className: "pvx-card-header", children: [
2163
2205
  /* @__PURE__ */ c("h3", { className: "pvx-card-title", children: [
2164
- /* @__PURE__ */ e(Ar, {}),
2206
+ /* @__PURE__ */ n(Kn, {}),
2165
2207
  "Notifications",
2166
- n > 0 && /* @__PURE__ */ e("span", { className: "pvx-notif-badge", children: n > 99 ? "99+" : n })
2208
+ t > 0 && /* @__PURE__ */ n("span", { className: "pvx-notif-badge", children: t > 99 ? "99+" : t })
2167
2209
  ] }),
2168
- n > 0 && t && /* @__PURE__ */ e("button", { className: "pvx-notif-mark-all", onClick: t, children: "Mark all read" })
2210
+ t > 0 && r && /* @__PURE__ */ n("button", { className: "pvx-notif-mark-all", onClick: r, children: "Mark all read" })
2169
2211
  ] }),
2170
- r != null && r.length ? /* @__PURE__ */ e("div", { className: "pvx-notif-list", children: r.map((d) => /* @__PURE__ */ e(
2171
- Br,
2212
+ e != null && e.length ? /* @__PURE__ */ n("div", { className: "pvx-notif-list", children: e.map((d) => /* @__PURE__ */ n(
2213
+ jn,
2172
2214
  {
2173
2215
  notification: d,
2174
2216
  getUserDisplay: o,
2175
2217
  onMarkRead: s
2176
2218
  },
2177
2219
  d.id
2178
- )) }) : /* @__PURE__ */ e("div", { className: "pvx-notif-empty", children: "No notifications" })
2220
+ )) }) : /* @__PURE__ */ n("div", { className: "pvx-notif-empty", children: "No notifications" })
2179
2221
  ] });
2180
2222
  }
2181
- function Br({ notification: r, getUserDisplay: n, onMarkRead: s }) {
2182
- const t = () => {
2183
- !r.isRead && s && s(r.id);
2223
+ function jn({ notification: e, getUserDisplay: t, onMarkRead: s }) {
2224
+ const r = () => {
2225
+ !e.isRead && s && s(e.id);
2184
2226
  };
2185
2227
  return /* @__PURE__ */ c(
2186
2228
  "button",
2187
2229
  {
2188
- className: `pvx-notif-item ${r.isRead ? "" : "pvx-notif-item--unread"}`,
2189
- onClick: t,
2230
+ className: `pvx-notif-item ${e.isRead ? "" : "pvx-notif-item--unread"}`,
2231
+ onClick: r,
2190
2232
  children: [
2191
- /* @__PURE__ */ e(Pr, { type: r.type }),
2233
+ /* @__PURE__ */ n(Vn, { type: e.type }),
2192
2234
  /* @__PURE__ */ c("div", { className: "pvx-notif-content", children: [
2193
- /* @__PURE__ */ e("span", { className: "pvx-notif-message", children: Ue(r, n) }),
2194
- /* @__PURE__ */ e("span", { className: "pvx-notif-time", children: oe(r.createdAt) })
2235
+ /* @__PURE__ */ n("span", { className: "pvx-notif-message", children: qe(e, t) }),
2236
+ /* @__PURE__ */ n("span", { className: "pvx-notif-time", children: le(e.createdAt) })
2195
2237
  ] }),
2196
- !r.isRead && /* @__PURE__ */ e("span", { className: "pvx-notif-dot" })
2238
+ !e.isRead && /* @__PURE__ */ n("span", { className: "pvx-notif-dot" })
2197
2239
  ]
2198
2240
  }
2199
2241
  );
2200
2242
  }
2201
- function Pr({ type: r }) {
2202
- return r === "RECORD_BEATEN" ? /* @__PURE__ */ e("span", { className: "pvx-notif-icon pvx-notif-icon--beaten", children: /* @__PURE__ */ e("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ e("path", { d: "m7 7 10 10M17 7v10H7" }) }) }) : r === "ADMIN_MESSAGE" ? /* @__PURE__ */ e("span", { className: "pvx-notif-icon pvx-notif-icon--admin", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2203
- /* @__PURE__ */ e("path", { d: "m3 11 18-5v12L3 13v-2z" }),
2204
- /* @__PURE__ */ e("path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6" })
2205
- ] }) }) : /* @__PURE__ */ e("span", { className: "pvx-notif-icon pvx-notif-icon--record", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2206
- /* @__PURE__ */ e("path", { d: "M6 9H4.5a2.5 2.5 0 0 1 0-5H6" }),
2207
- /* @__PURE__ */ e("path", { d: "M18 9h1.5a2.5 2.5 0 0 0 0-5H18" }),
2208
- /* @__PURE__ */ e("path", { d: "M4 22h16" }),
2209
- /* @__PURE__ */ e("path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22" }),
2210
- /* @__PURE__ */ e("path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22" }),
2211
- /* @__PURE__ */ e("path", { d: "M18 2H6v7a6 6 0 0 0 12 0V2Z" })
2243
+ function Vn({ type: e }) {
2244
+ return e === "RECORD_BEATEN" ? /* @__PURE__ */ n("span", { className: "pvx-notif-icon pvx-notif-icon--beaten", children: /* @__PURE__ */ n("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ n("path", { d: "m7 7 10 10M17 7v10H7" }) }) }) : e === "ADMIN_MESSAGE" ? /* @__PURE__ */ n("span", { className: "pvx-notif-icon pvx-notif-icon--admin", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2245
+ /* @__PURE__ */ n("path", { d: "m3 11 18-5v12L3 13v-2z" }),
2246
+ /* @__PURE__ */ n("path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6" })
2247
+ ] }) }) : /* @__PURE__ */ n("span", { className: "pvx-notif-icon pvx-notif-icon--record", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2248
+ /* @__PURE__ */ n("path", { d: "M6 9H4.5a2.5 2.5 0 0 1 0-5H6" }),
2249
+ /* @__PURE__ */ n("path", { d: "M18 9h1.5a2.5 2.5 0 0 0 0-5H18" }),
2250
+ /* @__PURE__ */ n("path", { d: "M4 22h16" }),
2251
+ /* @__PURE__ */ n("path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22" }),
2252
+ /* @__PURE__ */ n("path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22" }),
2253
+ /* @__PURE__ */ n("path", { d: "M18 2H6v7a6 6 0 0 0 12 0V2Z" })
2212
2254
  ] }) });
2213
2255
  }
2214
- function Ar() {
2256
+ function Kn() {
2215
2257
  return /* @__PURE__ */ c("svg", { className: "pvx-dash-records-icon", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2216
- /* @__PURE__ */ e("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }),
2217
- /* @__PURE__ */ e("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" })
2258
+ /* @__PURE__ */ n("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }),
2259
+ /* @__PURE__ */ n("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" })
2218
2260
  ] });
2219
2261
  }
2220
- function an({ steamId: r, avatarUrl: n, memberSince: s, className: t = "" }) {
2221
- const { data: a, isLoading: i, error: o } = pr(r), { data: d, isLoading: v } = ur(r), { data: l, isLoading: m } = mr(), g = vr(), { data: f, isLoading: u } = hr({ limit: 10 }), b = xr(), x = gr();
2222
- return i || v ? /* @__PURE__ */ e("div", { className: "pvx-loading", children: "Loading dashboard..." }) : o ? /* @__PURE__ */ e("div", { className: "pvx-empty", children: "Failed to load dashboard data." }) : a ? /* @__PURE__ */ c("div", { className: `pvx-dash ${t}`, children: [
2223
- /* @__PURE__ */ e(
2224
- fr,
2262
+ function vt({ steamId: e, avatarUrl: t, memberSince: s, className: r = "" }) {
2263
+ const { data: a, isLoading: i, error: o } = Nn(e), { data: d, isLoading: v } = bn(e), { data: l, isLoading: m } = yn(), f = kn(), { data: g, isLoading: p } = wn({ limit: 10 }), b = Cn(), x = Ln();
2264
+ return i || v ? /* @__PURE__ */ n("div", { className: "pvx-loading", children: "Loading dashboard..." }) : o ? /* @__PURE__ */ n("div", { className: "pvx-empty", children: "Failed to load dashboard data." }) : a ? /* @__PURE__ */ c("div", { className: `pvx-dash ${r}`, children: [
2265
+ /* @__PURE__ */ n(
2266
+ Tn,
2225
2267
  {
2226
2268
  driverName: a.driverName,
2227
- avatarUrl: n,
2269
+ avatarUrl: t,
2228
2270
  memberSince: s
2229
2271
  }
2230
2272
  ),
2231
- /* @__PURE__ */ e(kr, { stats: a, rating: d }),
2232
- r && /* @__PURE__ */ e(Cr, { events: l, isLoading: m }),
2233
- /* @__PURE__ */ c("div", { className: `pvx-dash-row ${g ? "pvx-dash-row--2col" : ""}`, children: [
2234
- /* @__PURE__ */ e(wr, { records: a.currentRecords }),
2235
- g && /* @__PURE__ */ e(
2236
- Dr,
2273
+ /* @__PURE__ */ n(Mn, { stats: a, rating: d }),
2274
+ e && /* @__PURE__ */ n(In, { events: l, isLoading: m }),
2275
+ /* @__PURE__ */ c("div", { className: `pvx-dash-row ${f ? "pvx-dash-row--2col" : ""}`, children: [
2276
+ /* @__PURE__ */ n(Dn, { records: a.currentRecords }),
2277
+ f && /* @__PURE__ */ n(
2278
+ qn,
2237
2279
  {
2238
- notifications: f == null ? void 0 : f.notifications,
2239
- unreadCount: (f == null ? void 0 : f.unreadCount) || 0,
2240
- onMarkRead: (p) => b.mutate(p),
2280
+ notifications: g == null ? void 0 : g.notifications,
2281
+ unreadCount: (g == null ? void 0 : g.unreadCount) || 0,
2282
+ onMarkRead: (u) => b.mutate(u),
2241
2283
  onMarkAllRead: () => x.mutate(),
2242
- isLoading: u
2284
+ isLoading: p
2243
2285
  }
2244
2286
  )
2245
2287
  ] })
2246
- ] }) : /* @__PURE__ */ e("div", { className: "pvx-empty", children: "No data available yet. Start driving to see your stats!" });
2288
+ ] }) : /* @__PURE__ */ n("div", { className: "pvx-empty", children: "No data available yet. Start driving to see your stats!" });
2247
2289
  }
2248
2290
  export {
2249
- zr as CarsTable,
2250
- B as CompEmptyState,
2251
- A as CompLoadingState,
2252
- er as CompetitionCard,
2253
- Jr as CompetitionCards,
2254
- nn as CompetitionResultsTabs,
2255
- an as DriverDashboard,
2256
- fr as DriverProfile,
2257
- Gr as DriversTable,
2258
- Xr as EntryList,
2259
- Q as InfoPill,
2260
- Qr as LapHistoryTable,
2261
- Dr as NotificationsCard,
2262
- Ne as PODIUM_MEDALS,
2263
- _r as PitVoxPartnerProvider,
2264
- Yr as RankingsTable,
2265
- wr as RecordsTable,
2266
- en as RegisterButton,
2267
- rn as RegistrationPanel,
2268
- Zr as RoundResults,
2269
- ke as RoundSessionResults,
2270
- tr as StandingsTable,
2271
- kr as StatsCards,
2272
- Or as TracksTable,
2273
- Je as TypeBadge,
2274
- Cr as UpcomingEvents,
2275
- Pe as buildLapsPath,
2276
- J as buildLeaderboardPath,
2277
- Ae as buildRecentLapsPath,
2278
- T as fetchCdnJson,
2291
+ nt as CarsTable,
2292
+ P as CompEmptyState,
2293
+ U as CompLoadingState,
2294
+ cn as CompetitionCard,
2295
+ it as CompetitionCards,
2296
+ pt as CompetitionResultsTabs,
2297
+ on as CompletedBadge,
2298
+ we as DEFAULT_COMPLETION_GRACE_DAYS,
2299
+ vt as DriverDashboard,
2300
+ Tn as DriverProfile,
2301
+ tt as DriversTable,
2302
+ ct as EntryList,
2303
+ Y as InfoPill,
2304
+ rt as LapHistoryTable,
2305
+ qn as NotificationsCard,
2306
+ se as PODIUM_MEDALS,
2307
+ zn as PitVoxPartnerProvider,
2308
+ st as RankingsTable,
2309
+ Dn as RecordsTable,
2310
+ lt as RegisterButton,
2311
+ dt as RegistrationPanel,
2312
+ ot as RoundResults,
2313
+ Le as RoundSessionResults,
2314
+ pn as StandingsTable,
2315
+ Mn as StatsCards,
2316
+ et as TracksTable,
2317
+ en as TypeBadge,
2318
+ In as UpcomingEvents,
2319
+ Fe as buildDriverIndexPath,
2320
+ Ee as buildLapsPath,
2321
+ Z as buildLeaderboardPath,
2322
+ _e as buildRecentLapsPath,
2323
+ S as fetchCdnJson,
2324
+ at as filterCompetitionsByStatus,
2279
2325
  I as formatCarName,
2280
- q as formatDate,
2281
- qr as formatDelta,
2282
- P as formatLapTime,
2283
- Ue as formatNotificationMessage,
2284
- oe as formatRelativeTime,
2285
- D as formatSectorTime,
2286
- _ as formatTrackName,
2287
- ce as formatTyreCompound,
2288
- Hr as useCarLeaderboard,
2289
- Vr as useCarMetadata,
2290
- je as useCompetitionAllRounds,
2291
- de as useCompetitionConfig,
2292
- pe as useCompetitionEntryList,
2293
- qe as useCompetitionRound,
2294
- _e as useCompetitionStandings,
2295
- Wr as useCompetitions,
2296
- Fe as useDriverLaps,
2297
- ur as useDriverRating,
2298
- tn as useDriverRatings,
2299
- pr as useDriverStats,
2300
- jr as useLeaderboardIndex,
2301
- gr as useMarkAllNotificationsRead,
2302
- xr as useMarkNotificationRead,
2303
- hr as useNotifications,
2304
- vr as useNotificationsEnabled,
2326
+ j as formatDate,
2327
+ Gn as formatDelta,
2328
+ A as formatLapTime,
2329
+ qe as formatNotificationMessage,
2330
+ le as formatRelativeTime,
2331
+ B as formatSectorTime,
2332
+ q as formatTrackName,
2333
+ de as formatTyreCompound,
2334
+ an as getCompetitionPodium,
2335
+ Ce as getCompetitionStatus,
2336
+ sn as getCompletionDate,
2337
+ rn as isCompetitionComplete,
2338
+ Zn as useCarLeaderboard,
2339
+ Yn as useCarMetadata,
2340
+ He as useCompetitionAllRounds,
2341
+ ue as useCompetitionConfig,
2342
+ ve as useCompetitionEntryList,
2343
+ Ke as useCompetitionRound,
2344
+ me as useCompetitionStandings,
2345
+ Xn as useCompetitions,
2346
+ Ve as useDriverLaps,
2347
+ bn as useDriverRating,
2348
+ ut as useDriverRatings,
2349
+ Nn as useDriverStats,
2350
+ Qn as useLeaderboardIndex,
2351
+ Ln as useMarkAllNotificationsRead,
2352
+ Cn as useMarkNotificationRead,
2353
+ wn as useNotifications,
2354
+ kn as useNotificationsEnabled,
2305
2355
  k as usePitVox,
2306
- Kr as useRecentLaps,
2307
- ue as useRegister,
2308
- X as useRegistrationMode,
2309
- Z as useRegistrationStatus,
2310
- ee as useRegistrationUrl,
2311
- Ee as useTrackLeaderboard,
2312
- sn as useUnreadCount,
2313
- mr as useUpcomingEvents,
2314
- le as useUserLookup,
2315
- me as useWithdraw
2356
+ Jn as useRecentLaps,
2357
+ he as useRegister,
2358
+ ee as useRegistrationMode,
2359
+ X as useRegistrationStatus,
2360
+ ne as useRegistrationUrl,
2361
+ je as useTrackLeaderboard,
2362
+ mt as useUnreadCount,
2363
+ yn as useUpcomingEvents,
2364
+ pe as useUserLookup,
2365
+ xe as useWithdraw
2316
2366
  };