@wral/hsot-data 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/dist/define.mjs +1 -1
- package/dist/define.standalone.js +272 -232
- package/dist/{hsot-brackets-D3mrvZfC.js → hsot-brackets-CfP_Djqm.js} +233 -193
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
const J = globalThis,
|
|
1
|
+
const J = globalThis, me = J.ShadowRoot && (J.ShadyCSS === void 0 || J.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, ue = /* @__PURE__ */ Symbol(), Ae = /* @__PURE__ */ new WeakMap();
|
|
2
2
|
let qe = class {
|
|
3
3
|
constructor(e, t, s) {
|
|
4
|
-
if (this._$cssResult$ = !0, s !==
|
|
4
|
+
if (this._$cssResult$ = !0, s !== ue) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
|
|
5
5
|
this.cssText = e, this.t = t;
|
|
6
6
|
}
|
|
7
7
|
get styleSheet() {
|
|
8
8
|
let e = this.o;
|
|
9
9
|
const t = this.t;
|
|
10
|
-
if (
|
|
10
|
+
if (me && e === void 0) {
|
|
11
11
|
const s = t !== void 0 && t.length === 1;
|
|
12
|
-
s && (e =
|
|
12
|
+
s && (e = Ae.get(t)), e === void 0 && ((this.o = e = new CSSStyleSheet()).replaceSync(this.cssText), s && Ae.set(t, e));
|
|
13
13
|
}
|
|
14
14
|
return e;
|
|
15
15
|
}
|
|
@@ -17,25 +17,25 @@ let qe = class {
|
|
|
17
17
|
return this.cssText;
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
const kt = (a) => new qe(typeof a == "string" ? a : a + "", void 0,
|
|
20
|
+
const kt = (a) => new qe(typeof a == "string" ? a : a + "", void 0, ue), y = (a, ...e) => {
|
|
21
21
|
const t = a.length === 1 ? a[0] : e.reduce((s, r, o) => s + ((n) => {
|
|
22
22
|
if (n._$cssResult$ === !0) return n.cssText;
|
|
23
23
|
if (typeof n == "number") return n;
|
|
24
24
|
throw Error("Value passed to 'css' function must be a 'css' function result: " + n + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
|
|
25
25
|
})(r) + a[o + 1], a[0]);
|
|
26
|
-
return new qe(t, a,
|
|
26
|
+
return new qe(t, a, ue);
|
|
27
27
|
}, St = (a, e) => {
|
|
28
|
-
if (
|
|
28
|
+
if (me) a.adoptedStyleSheets = e.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
|
|
29
29
|
else for (const t of e) {
|
|
30
30
|
const s = document.createElement("style"), r = J.litNonce;
|
|
31
31
|
r !== void 0 && s.setAttribute("nonce", r), s.textContent = t.cssText, a.appendChild(s);
|
|
32
32
|
}
|
|
33
|
-
}, Te =
|
|
33
|
+
}, Te = me ? (a) => a : (a) => a instanceof CSSStyleSheet ? ((e) => {
|
|
34
34
|
let t = "";
|
|
35
35
|
for (const s of e.cssRules) t += s.cssText;
|
|
36
36
|
return kt(t);
|
|
37
37
|
})(a) : a;
|
|
38
|
-
const { is: _t, defineProperty:
|
|
38
|
+
const { is: _t, defineProperty: At, getOwnPropertyDescriptor: Tt, getOwnPropertyNames: It, getOwnPropertySymbols: Ct, getPrototypeOf: Et } = Object, re = globalThis, Ie = re.trustedTypes, Pt = Ie ? Ie.emptyScript : "", Bt = re.reactiveElementPolyfillSupport, G = (a, e) => a, he = { toAttribute(a, e) {
|
|
39
39
|
switch (e) {
|
|
40
40
|
case Boolean:
|
|
41
41
|
a = a ? Pt : null;
|
|
@@ -63,7 +63,7 @@ const { is: _t, defineProperty: Tt, getOwnPropertyDescriptor: At, getOwnProperty
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
return t;
|
|
66
|
-
} }, We = (a, e) => !_t(a, e),
|
|
66
|
+
} }, We = (a, e) => !_t(a, e), Ce = { attribute: !0, type: String, converter: he, reflect: !1, useDefault: !1, hasChanged: We };
|
|
67
67
|
Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), re.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
|
|
68
68
|
let R = class extends HTMLElement {
|
|
69
69
|
static addInitializer(e) {
|
|
@@ -72,14 +72,14 @@ let R = class extends HTMLElement {
|
|
|
72
72
|
static get observedAttributes() {
|
|
73
73
|
return this.finalize(), this._$Eh && [...this._$Eh.keys()];
|
|
74
74
|
}
|
|
75
|
-
static createProperty(e, t =
|
|
75
|
+
static createProperty(e, t = Ce) {
|
|
76
76
|
if (t.state && (t.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(e) && ((t = Object.create(t)).wrapped = !0), this.elementProperties.set(e, t), !t.noAccessor) {
|
|
77
77
|
const s = /* @__PURE__ */ Symbol(), r = this.getPropertyDescriptor(e, s, t);
|
|
78
|
-
r !== void 0 &&
|
|
78
|
+
r !== void 0 && At(this.prototype, e, r);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
static getPropertyDescriptor(e, t, s) {
|
|
82
|
-
const { get: r, set: o } =
|
|
82
|
+
const { get: r, set: o } = Tt(this.prototype, e) ?? { get() {
|
|
83
83
|
return this[t];
|
|
84
84
|
}, set(n) {
|
|
85
85
|
this[t] = n;
|
|
@@ -90,7 +90,7 @@ let R = class extends HTMLElement {
|
|
|
90
90
|
}, configurable: !0, enumerable: !0 };
|
|
91
91
|
}
|
|
92
92
|
static getPropertyOptions(e) {
|
|
93
|
-
return this.elementProperties.get(e) ??
|
|
93
|
+
return this.elementProperties.get(e) ?? Ce;
|
|
94
94
|
}
|
|
95
95
|
static _$Ei() {
|
|
96
96
|
if (this.hasOwnProperty(G("elementProperties"))) return;
|
|
@@ -247,12 +247,12 @@ let R = class extends HTMLElement {
|
|
|
247
247
|
}
|
|
248
248
|
};
|
|
249
249
|
R.elementStyles = [], R.shadowRootOptions = { mode: "open" }, R[G("elementProperties")] = /* @__PURE__ */ new Map(), R[G("finalized")] = /* @__PURE__ */ new Map(), Bt?.({ ReactiveElement: R }), (re.reactiveElementVersions ??= []).push("2.1.2");
|
|
250
|
-
const
|
|
251
|
-
\f\r]`, H = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,
|
|
252
|
-
\f\r"'\`<>=]|("|')|))|$)`, "g"),
|
|
250
|
+
const fe = globalThis, Ee = (a) => a, X = fe.trustedTypes, Pe = X ? X.createPolicy("lit-html", { createHTML: (a) => a }) : void 0, Ve = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, Ke = "?" + _, Dt = `<${Ke}>`, C = document, j = () => C.createComment(""), q = (a) => a === null || typeof a != "object" && typeof a != "function", ge = Array.isArray, Rt = (a) => ge(a) || typeof a?.[Symbol.iterator] == "function", ce = `[
|
|
251
|
+
\f\r]`, H = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, Be = /-->/g, De = />/g, T = RegExp(`>|${ce}(?:([^\\s"'>=/]+)(${ce}*=${ce}*(?:[^
|
|
252
|
+
\f\r"'\`<>=]|("|')|))|$)`, "g"), Re = /'/g, ze = /"/g, Ye = /^(?:script|style|textarea|title)$/i, Qe = (a) => (e, ...t) => ({ _$litType$: a, strings: e, values: t }), l = Qe(1), Ne = Qe(2), F = /* @__PURE__ */ Symbol.for("lit-noChange"), m = /* @__PURE__ */ Symbol.for("lit-nothing"), Fe = /* @__PURE__ */ new WeakMap(), I = C.createTreeWalker(C, 129);
|
|
253
253
|
function Ze(a, e) {
|
|
254
|
-
if (!
|
|
255
|
-
return
|
|
254
|
+
if (!ge(a) || !a.hasOwnProperty("raw")) throw Error("invalid template strings array");
|
|
255
|
+
return Pe !== void 0 ? Pe.createHTML(e) : e;
|
|
256
256
|
}
|
|
257
257
|
const zt = (a, e) => {
|
|
258
258
|
const t = a.length - 1, s = [];
|
|
@@ -260,8 +260,8 @@ const zt = (a, e) => {
|
|
|
260
260
|
for (let i = 0; i < t; i++) {
|
|
261
261
|
const c = a[i];
|
|
262
262
|
let p, d, h = -1, u = 0;
|
|
263
|
-
for (; u < c.length && (n.lastIndex = u, d = n.exec(c), d !== null); ) u = n.lastIndex, n === H ? d[1] === "!--" ? n =
|
|
264
|
-
const f = n ===
|
|
263
|
+
for (; u < c.length && (n.lastIndex = u, d = n.exec(c), d !== null); ) u = n.lastIndex, n === H ? d[1] === "!--" ? n = Be : d[1] !== void 0 ? n = De : d[2] !== void 0 ? (Ye.test(d[2]) && (r = RegExp("</" + d[2], "g")), n = T) : d[3] !== void 0 && (n = T) : n === T ? d[0] === ">" ? (n = r ?? H, h = -1) : d[1] === void 0 ? h = -2 : (h = n.lastIndex - d[2].length, p = d[1], n = d[3] === void 0 ? T : d[3] === '"' ? ze : Re) : n === ze || n === Re ? n = T : n === Be || n === De ? n = H : (n = T, r = void 0);
|
|
264
|
+
const f = n === T && a[i + 1].startsWith("/>") ? " " : "";
|
|
265
265
|
o += n === H ? c + Dt : h >= 0 ? (s.push(p), c.slice(0, h) + Ve + c.slice(h) + _ + f) : c + _ + (h === -2 ? i : f);
|
|
266
266
|
}
|
|
267
267
|
return [Ze(a, o + (a[t] || "<?>") + (e === 2 ? "</svg>" : e === 3 ? "</math>" : "")), s];
|
|
@@ -279,10 +279,10 @@ class W {
|
|
|
279
279
|
for (; (r = I.nextNode()) !== null && c.length < i; ) {
|
|
280
280
|
if (r.nodeType === 1) {
|
|
281
281
|
if (r.hasAttributes()) for (const h of r.getAttributeNames()) if (h.endsWith(Ve)) {
|
|
282
|
-
const u = d[n++], f = r.getAttribute(h).split(_),
|
|
283
|
-
c.push({ type: 1, index: o, name:
|
|
282
|
+
const u = d[n++], f = r.getAttribute(h).split(_), g = /([.?@])?(.*)/.exec(u);
|
|
283
|
+
c.push({ type: 1, index: o, name: g[2], strings: f, ctor: g[1] === "." ? Ft : g[1] === "?" ? Mt : g[1] === "@" ? Ot : oe }), r.removeAttribute(h);
|
|
284
284
|
} else h.startsWith(_) && (c.push({ type: 6, index: o }), r.removeAttribute(h));
|
|
285
|
-
if (
|
|
285
|
+
if (Ye.test(r.tagName)) {
|
|
286
286
|
const h = r.textContent.split(_), u = h.length - 1;
|
|
287
287
|
if (u > 0) {
|
|
288
288
|
r.textContent = X ? X.emptyScript : "";
|
|
@@ -290,7 +290,7 @@ class W {
|
|
|
290
290
|
r.append(h[u], j());
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
|
-
} else if (r.nodeType === 8) if (r.data ===
|
|
293
|
+
} else if (r.nodeType === 8) if (r.data === Ke) c.push({ type: 2, index: o });
|
|
294
294
|
else {
|
|
295
295
|
let h = -1;
|
|
296
296
|
for (; (h = r.data.indexOf(_, h + 1)) !== -1; ) c.push({ type: 7, index: o }), h += _.length - 1;
|
|
@@ -326,7 +326,7 @@ class Nt {
|
|
|
326
326
|
for (; c !== void 0; ) {
|
|
327
327
|
if (n === c.index) {
|
|
328
328
|
let p;
|
|
329
|
-
c.type === 2 ? p = new
|
|
329
|
+
c.type === 2 ? p = new K(o, o.nextSibling, this, e) : c.type === 1 ? p = new c.ctor(o, c.name, c.strings, this, e) : c.type === 6 && (p = new Ut(o, this, e)), this._$AV.push(p), c = s[++i];
|
|
330
330
|
}
|
|
331
331
|
n !== c?.index && (o = I.nextNode(), n++);
|
|
332
332
|
}
|
|
@@ -337,7 +337,7 @@ class Nt {
|
|
|
337
337
|
for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(e, s, t), t += s.strings.length - 2) : s._$AI(e[t])), t++;
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
|
-
class
|
|
340
|
+
class K {
|
|
341
341
|
get _$AU() {
|
|
342
342
|
return this._$AM?._$AU ?? this._$Cv;
|
|
343
343
|
}
|
|
@@ -376,20 +376,20 @@ class Y {
|
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
378
|
_$AC(e) {
|
|
379
|
-
let t =
|
|
380
|
-
return t === void 0 &&
|
|
379
|
+
let t = Fe.get(e.strings);
|
|
380
|
+
return t === void 0 && Fe.set(e.strings, t = new W(e)), t;
|
|
381
381
|
}
|
|
382
382
|
k(e) {
|
|
383
|
-
|
|
383
|
+
ge(this._$AH) || (this._$AH = [], this._$AR());
|
|
384
384
|
const t = this._$AH;
|
|
385
385
|
let s, r = 0;
|
|
386
|
-
for (const o of e) r === t.length ? t.push(s = new
|
|
386
|
+
for (const o of e) r === t.length ? t.push(s = new K(this.O(j()), this.O(j()), this, this.options)) : s = t[r], s._$AI(o), r++;
|
|
387
387
|
r < t.length && (this._$AR(s && s._$AB.nextSibling, r), t.length = r);
|
|
388
388
|
}
|
|
389
389
|
_$AR(e = this._$AA.nextSibling, t) {
|
|
390
390
|
for (this._$AP?.(!1, !0, t); e !== this._$AB; ) {
|
|
391
|
-
const s =
|
|
392
|
-
|
|
391
|
+
const s = Ee(e).nextSibling;
|
|
392
|
+
Ee(e).remove(), e = s;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
395
|
setConnected(e) {
|
|
@@ -461,18 +461,18 @@ class Ut {
|
|
|
461
461
|
M(this, e);
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
|
-
const Ht =
|
|
465
|
-
Ht?.(W,
|
|
464
|
+
const Ht = fe.litHtmlPolyfillSupport;
|
|
465
|
+
Ht?.(W, K), (fe.litHtmlVersions ??= []).push("3.3.3");
|
|
466
466
|
const Lt = (a, e, t) => {
|
|
467
467
|
const s = t?.renderBefore ?? e;
|
|
468
468
|
let r = s._$litPart$;
|
|
469
469
|
if (r === void 0) {
|
|
470
470
|
const o = t?.renderBefore ?? null;
|
|
471
|
-
s._$litPart$ = r = new
|
|
471
|
+
s._$litPart$ = r = new K(e.insertBefore(j(), o), o, void 0, t ?? {});
|
|
472
472
|
}
|
|
473
473
|
return r._$AI(a), r;
|
|
474
474
|
};
|
|
475
|
-
const
|
|
475
|
+
const ve = globalThis;
|
|
476
476
|
class N extends R {
|
|
477
477
|
constructor() {
|
|
478
478
|
super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
|
|
@@ -495,10 +495,10 @@ class N extends R {
|
|
|
495
495
|
return F;
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
|
-
N._$litElement$ = !0, N.finalized = !0,
|
|
499
|
-
const Gt =
|
|
498
|
+
N._$litElement$ = !0, N.finalized = !0, ve.litElementHydrateSupport?.({ LitElement: N });
|
|
499
|
+
const Gt = ve.litElementPolyfillSupport;
|
|
500
500
|
Gt?.({ LitElement: N });
|
|
501
|
-
(
|
|
501
|
+
(ve.litElementVersions ??= []).push("4.2.2");
|
|
502
502
|
const jt = 50;
|
|
503
503
|
function qt(a = {}) {
|
|
504
504
|
const e = Object.entries(a).filter(([, s]) => s != null && s !== "");
|
|
@@ -553,7 +553,7 @@ const L = {
|
|
|
553
553
|
// reportHref() drops the parameter when there is none.
|
|
554
554
|
report: "/report-a-score/?game={id}"
|
|
555
555
|
};
|
|
556
|
-
function
|
|
556
|
+
function v(a, e) {
|
|
557
557
|
return String(a).replace(/\{(\w+)\}/g, (t, s) => e[s] !== void 0 && e[s] !== null ? String(e[s]) : t);
|
|
558
558
|
}
|
|
559
559
|
function O(a) {
|
|
@@ -565,7 +565,7 @@ function O(a) {
|
|
|
565
565
|
};
|
|
566
566
|
}
|
|
567
567
|
function Je(a, e = "") {
|
|
568
|
-
const t =
|
|
568
|
+
const t = v(a.report || L.report, { id: e || "" });
|
|
569
569
|
return e ? t : t.replace(/([?&])game=(?=&|$)/, "$1").replace(/[?&]$/, "").replace(/\?&/, "?");
|
|
570
570
|
}
|
|
571
571
|
const k = (a) => a ? a.charAt(0).toUpperCase() + a.slice(1) : "";
|
|
@@ -574,7 +574,7 @@ function x(a, e) {
|
|
|
574
574
|
const [t, s, r] = String(a).split("-").map(Number);
|
|
575
575
|
return !t || !s || !r ? "TBD" : new Date(t, s - 1, r).toLocaleDateString("en-US", e || { weekday: "short", month: "short", day: "numeric" });
|
|
576
576
|
}
|
|
577
|
-
function
|
|
577
|
+
function $e(a) {
|
|
578
578
|
if (!a) return "";
|
|
579
579
|
const [e, t] = String(a).split(":").map(Number);
|
|
580
580
|
if (Number.isNaN(e)) return "";
|
|
@@ -584,24 +584,24 @@ function ve(a) {
|
|
|
584
584
|
function Vt(a) {
|
|
585
585
|
return a ? `${Math.floor(a / 12)}-${a % 12}` : "·";
|
|
586
586
|
}
|
|
587
|
-
function
|
|
587
|
+
function Kt(a) {
|
|
588
588
|
return (Array.isArray(a?.positions) ? a.positions : String(a?.position ?? "").split(/[/,]/)).map((t) => String(t ?? "").trim()).filter(Boolean).join("/");
|
|
589
589
|
}
|
|
590
|
-
function
|
|
590
|
+
function Y(a = /* @__PURE__ */ new Date()) {
|
|
591
591
|
const e = a.getFullYear();
|
|
592
592
|
return a.getMonth() >= 6 ? `${e}-${e + 1}` : `${e - 1}-${e}`;
|
|
593
593
|
}
|
|
594
|
-
function
|
|
594
|
+
function be(a = /* @__PURE__ */ new Date()) {
|
|
595
595
|
const e = (t) => String(t).padStart(2, "0");
|
|
596
596
|
return `${a.getFullYear()}-${e(a.getMonth() + 1)}-${e(a.getDate())}`;
|
|
597
597
|
}
|
|
598
|
-
function
|
|
598
|
+
function Yt(a, e = be()) {
|
|
599
599
|
const t = [...new Set((a || []).filter(Boolean))].sort();
|
|
600
600
|
if (!t.length || t.includes(e)) return e;
|
|
601
601
|
const s = t.filter((r) => r < e);
|
|
602
602
|
return s.length ? s[s.length - 1] : t[0];
|
|
603
603
|
}
|
|
604
|
-
function
|
|
604
|
+
function ye(a) {
|
|
605
605
|
return a ? (a.abbr || a.name || "?").slice(0, 4).toUpperCase() : "?";
|
|
606
606
|
}
|
|
607
607
|
function ee(a) {
|
|
@@ -613,7 +613,7 @@ const Qt = (a) => {
|
|
|
613
613
|
const e = ["th", "st", "nd", "rd"], t = a % 100;
|
|
614
614
|
return a + (e[(t - 20) % 10] || e[t] || e[0]);
|
|
615
615
|
};
|
|
616
|
-
function
|
|
616
|
+
function de(a, e) {
|
|
617
617
|
const t = (o) => {
|
|
618
618
|
const n = /^\d+/.exec(String(o ?? ""));
|
|
619
619
|
return n ? Number(n[0]) : null;
|
|
@@ -633,7 +633,7 @@ function et(a) {
|
|
|
633
633
|
const e = [];
|
|
634
634
|
return a.finish === "overtime" && e.push("OT"), a.finish === "shootout" && e.push("PK-SO"), a.forfeit && a.forfeit !== "none" && e.push("Forfeit"), { kind: "final", label: `Final${e.length ? ` · ${e.join(" · ")}` : ""}` };
|
|
635
635
|
}
|
|
636
|
-
return a.state === "postponed" ? { kind: "warn", label: "Postponed" } : a.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${x(a.date, { month: "short", day: "numeric" })} · ${
|
|
636
|
+
return a.state === "postponed" ? { kind: "warn", label: "Postponed" } : a.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${x(a.date, { month: "short", day: "numeric" })} · ${$e(a.time)}`.replace(/ · $/, "") };
|
|
637
637
|
}
|
|
638
638
|
const Zt = ["boys", "girls"];
|
|
639
639
|
function tt(a, e) {
|
|
@@ -642,12 +642,12 @@ function tt(a, e) {
|
|
|
642
642
|
function st(a, e) {
|
|
643
643
|
return e ? (a || []).filter((t) => tt(t, e)) : a || [];
|
|
644
644
|
}
|
|
645
|
-
function
|
|
645
|
+
function pe(a) {
|
|
646
646
|
const e = new Set((a || []).map((t) => t && t.gender));
|
|
647
647
|
return Zt.filter((t) => e.has(t));
|
|
648
648
|
}
|
|
649
|
-
const Jt = (a) =>
|
|
650
|
-
function
|
|
649
|
+
const Jt = (a) => pe(a).length === 2, Xt = /* @__PURE__ */ new Set(["game", "story", "page", "forum", "video", "gallery"]);
|
|
650
|
+
function A(a) {
|
|
651
651
|
let e = String(a || "").replace(/^[a-z][a-z0-9+.-]*:\/\/[^/#?]*/i, "");
|
|
652
652
|
const t = e.indexOf("#");
|
|
653
653
|
let s = "";
|
|
@@ -659,22 +659,22 @@ function at() {
|
|
|
659
659
|
const a = globalThis.location;
|
|
660
660
|
if (!a) return "";
|
|
661
661
|
const e = (a.hash || "").startsWith("#/") ? a.hash : "";
|
|
662
|
-
return
|
|
662
|
+
return A((a.pathname || "") + e);
|
|
663
663
|
}
|
|
664
664
|
function es(a, e, t) {
|
|
665
665
|
if (!t) return null;
|
|
666
|
-
const s =
|
|
666
|
+
const s = A(a);
|
|
667
667
|
if (!s) return null;
|
|
668
|
-
const r =
|
|
668
|
+
const r = A(v(e.game, { sport: t, id: "" })), o = A(v(e.school, { id: "" }));
|
|
669
669
|
if (s === r || s.startsWith(`${r}/`) || s === o || s.startsWith(`${o}/`)) return null;
|
|
670
|
-
const n =
|
|
670
|
+
const n = A(v(e.section, { sport: t, view: "" }));
|
|
671
671
|
if (s === n) return "";
|
|
672
672
|
if (!s.startsWith(`${n}/`)) return null;
|
|
673
673
|
const i = s.slice(n.length + 1), c = i.split("/");
|
|
674
674
|
return c.length > 2 || c.some((p) => !/^[a-z][a-z-]*$/.test(p)) || Xt.has(c[0]) ? null : i;
|
|
675
675
|
}
|
|
676
676
|
function ts(a, e, t) {
|
|
677
|
-
const s = (o) =>
|
|
677
|
+
const s = (o) => v(t.section, { sport: a, view: o }).replace(/([^:])\/{2,}/g, "$1/"), r = Jt(e) ? [
|
|
678
678
|
{ label: "Boys Standings", href: s("boys/standings") },
|
|
679
679
|
{ label: "Girls Standings", href: s("girls/standings") }
|
|
680
680
|
] : [{ label: "Standings", href: s("standings") }];
|
|
@@ -687,9 +687,9 @@ function ts(a, e, t) {
|
|
|
687
687
|
];
|
|
688
688
|
}
|
|
689
689
|
function ss(a, e = at()) {
|
|
690
|
-
const t =
|
|
690
|
+
const t = A(e);
|
|
691
691
|
for (const s of a.querySelectorAll(':scope > a[slot="nav"]'))
|
|
692
|
-
t &&
|
|
692
|
+
t && A(s.getAttribute("href")) === t ? s.setAttribute("aria-current", "page") : s.removeAttribute("aria-current");
|
|
693
693
|
}
|
|
694
694
|
class w extends N {
|
|
695
695
|
static properties = {
|
|
@@ -1059,14 +1059,14 @@ function rt(a, e) {
|
|
|
1059
1059
|
return { team: t, rec: s, confPct: Me(s.cw, s.cl, s.ct), overallPct: Me(s.w, s.l, s.t) };
|
|
1060
1060
|
}).sort((t, s) => s.confPct - t.confPct || s.overallPct - t.overallPct || s.rec.pf - s.rec.pa - (t.rec.pf - t.rec.pa));
|
|
1061
1061
|
}
|
|
1062
|
-
function
|
|
1062
|
+
function we(a, e) {
|
|
1063
1063
|
return a.filter((t) => (t.homeTeamId === e || t.awayTeamId === e) && (t.state === "scheduled" || t.state === "live") && t.gameType !== "scrimmage").sort((t, s) => String(t.date).localeCompare(String(s.date)))[0] || null;
|
|
1064
1064
|
}
|
|
1065
1065
|
function Ue(a, e) {
|
|
1066
1066
|
const t = a[e];
|
|
1067
1067
|
return t && t.results.length ? t.results[t.results.length - 1] : null;
|
|
1068
1068
|
}
|
|
1069
|
-
function
|
|
1069
|
+
function xe(a, e, t, s, r) {
|
|
1070
1070
|
const o = e[t];
|
|
1071
1071
|
if (!o) return null;
|
|
1072
1072
|
const n = /* @__PURE__ */ new Map();
|
|
@@ -1122,7 +1122,7 @@ function le(a, e, { title: t, sub: s, teams: r }) {
|
|
|
1122
1122
|
<div class="navrow">
|
|
1123
1123
|
<slot name="nav">
|
|
1124
1124
|
${ts(e.sport, r, e.hrefs).map((c) => l`<a href=${c.href}
|
|
1125
|
-
aria-current=${o &&
|
|
1125
|
+
aria-current=${o && A(c.href) === o ? "page" : m}>${c.label}</a>`)}
|
|
1126
1126
|
</slot>
|
|
1127
1127
|
</div>
|
|
1128
1128
|
</nav>` : m}
|
|
@@ -1142,24 +1142,24 @@ function P(a, e = 26) {
|
|
|
1142
1142
|
const s = a.colorPrimary || "#030711", r = ee(s);
|
|
1143
1143
|
return l`<span class="swatch" aria-hidden="true"
|
|
1144
1144
|
style="width:${e}px;height:${e}px;background:${s};color:${r};font-size:${Math.max(8, e * 0.28)}px"
|
|
1145
|
-
>${
|
|
1145
|
+
>${ye(a)}</span>`;
|
|
1146
1146
|
}
|
|
1147
|
-
function
|
|
1148
|
-
const s =
|
|
1147
|
+
function ke(a, e, t) {
|
|
1148
|
+
const s = xe(a.rankings, a.teamsById, e, a.sport, t);
|
|
1149
1149
|
return s ? l`<span class="rankbadge">#${s}</span>` : m;
|
|
1150
1150
|
}
|
|
1151
1151
|
function ae(a, e, t) {
|
|
1152
1152
|
const s = E(a, e);
|
|
1153
|
-
return s ? l`${
|
|
1153
|
+
return s ? l`${ke(a, e, t)}<a href=${v(a.hrefs.school, { id: s.id })}>${s.name}</a>` : l`<span class="mut">TBD</span>`;
|
|
1154
1154
|
}
|
|
1155
|
-
function
|
|
1155
|
+
function Se(a, e, t = 5) {
|
|
1156
1156
|
const s = a.records[e];
|
|
1157
1157
|
if (!s || !s.results.length) return l`<span class="mut">·</span>`;
|
|
1158
1158
|
const r = s.results.slice(-1 * t);
|
|
1159
1159
|
return l`<span class="dots" role="img" aria-label="last ${r.length} results">
|
|
1160
1160
|
${r.map((o) => l`<a class="dot ${o.mark}"
|
|
1161
1161
|
title="${o.mark} ${o.my}-${o.their} vs ${z(a, o.opp)}"
|
|
1162
|
-
href=${
|
|
1162
|
+
href=${v(a.hrefs.game, { sport: a.sport, id: o.gameId })}>${o.mark}</a>`)}
|
|
1163
1163
|
</span>`;
|
|
1164
1164
|
}
|
|
1165
1165
|
function B(a, e) {
|
|
@@ -1182,20 +1182,67 @@ function nt(a, e, t) {
|
|
|
1182
1182
|
const s = e.homeTeamId === t ? e.awayTeamId : e.homeTeamId, r = e.homeTeamId === t ? "vs" : "at";
|
|
1183
1183
|
return l`${e.state === "live" ? l`<span class="pill live">Live</span> ` : l`${x(e.date, { month: "numeric", day: "numeric" })} `}${r} ${se(a, s)}`;
|
|
1184
1184
|
}
|
|
1185
|
-
const us =
|
|
1185
|
+
const us = "https://api.wral.com/search";
|
|
1186
|
+
function fs(a) {
|
|
1187
|
+
return a.map((e) => `uri:"${e}"`).join(" OR ");
|
|
1188
|
+
}
|
|
1189
|
+
function gs(a, e) {
|
|
1190
|
+
const t = String(a || us).replace(/\/+$/, ""), s = new URLSearchParams({ query: fs(e), sort: "score", lang: "en" });
|
|
1191
|
+
return `${t}/v1/query?${s}`;
|
|
1192
|
+
}
|
|
1193
|
+
function it(a) {
|
|
1194
|
+
try {
|
|
1195
|
+
const e = new URL(a);
|
|
1196
|
+
if (/(^|\.)smugmug\.com$/i.test(e.hostname)) {
|
|
1197
|
+
const t = e.pathname.split("/").filter(Boolean).pop() || "", s = !t || /^[ni]-[A-Za-z0-9]+$/.test(t);
|
|
1198
|
+
return {
|
|
1199
|
+
uri: a,
|
|
1200
|
+
title: s ? a : decodeURIComponent(t).replace(/-/g, " "),
|
|
1201
|
+
photos: !0
|
|
1202
|
+
};
|
|
1203
|
+
}
|
|
1204
|
+
} catch {
|
|
1205
|
+
}
|
|
1206
|
+
return { uri: a, title: a };
|
|
1207
|
+
}
|
|
1208
|
+
async function vs(a, e, t) {
|
|
1209
|
+
const r = await ((...i) => fetch(...i))(gs(a, e));
|
|
1210
|
+
if (!r.ok) throw new Error(`search answered ${r.status}`);
|
|
1211
|
+
const o = await r.json(), n = new Map((o.items || []).map((i) => [i.uri, i]));
|
|
1212
|
+
return e.map((i) => n.get(i) || it(i));
|
|
1213
|
+
}
|
|
1214
|
+
function $s(a) {
|
|
1215
|
+
try {
|
|
1216
|
+
const e = new URL(a);
|
|
1217
|
+
if (/(^|\.)smugmug\.com$/i.test(e.hostname)) return "Photos";
|
|
1218
|
+
const t = e.pathname.split("/").filter(Boolean)[0] || "";
|
|
1219
|
+
if (t === "video") return "Video";
|
|
1220
|
+
if (t === "news" || t === "story") return "Story";
|
|
1221
|
+
} catch {
|
|
1222
|
+
}
|
|
1223
|
+
return "Coverage";
|
|
1224
|
+
}
|
|
1225
|
+
function bs(a) {
|
|
1226
|
+
const e = /* @__PURE__ */ new Map();
|
|
1227
|
+
return (Array.isArray(a) ? a : []).filter((t) => /^https?:\/\//i.test(String(t || ""))).map((t) => {
|
|
1228
|
+
const s = $s(t), r = (e.get(s) || 0) + 1;
|
|
1229
|
+
return e.set(s, r), { href: t, label: r > 1 ? `${s} ${r}` : s };
|
|
1230
|
+
});
|
|
1231
|
+
}
|
|
1232
|
+
const ys = ["all", "conferences"], lt = "all", He = (a) => ys.includes(a) ? a : lt, ct = Number.MAX_SAFE_INTEGER, ht = (a, e, t) => {
|
|
1186
1233
|
const s = a[t];
|
|
1187
1234
|
return s && e[s.schoolId] || null;
|
|
1188
1235
|
};
|
|
1189
|
-
function
|
|
1236
|
+
function ws(a, e) {
|
|
1190
1237
|
const t = (a || []).map((s) => e[s.schoolId]?.areaCode).filter(Boolean);
|
|
1191
1238
|
return [...new Set(t)].sort();
|
|
1192
1239
|
}
|
|
1193
|
-
function
|
|
1194
|
-
return e ? [a.awayTeamId, a.homeTeamId].some((r) =>
|
|
1240
|
+
function xs(a, e, t, s) {
|
|
1241
|
+
return e ? [a.awayTeamId, a.homeTeamId].some((r) => ht(t, s, r)?.areaCode === e) : !0;
|
|
1195
1242
|
}
|
|
1196
|
-
function
|
|
1197
|
-
const r = (i) =>
|
|
1198
|
-
rank: e(i) ||
|
|
1243
|
+
function ks(a, e, t, s) {
|
|
1244
|
+
const r = (i) => ht(t, s, i)?.name || "", o = (i, c) => !i - !c || Xe(i, c), n = new Map((a || []).map((i) => [i, {
|
|
1245
|
+
rank: e(i) || ct,
|
|
1199
1246
|
away: r(i.awayTeamId),
|
|
1200
1247
|
home: r(i.homeTeamId)
|
|
1201
1248
|
}]));
|
|
@@ -1204,30 +1251,41 @@ function vs(a, e, t, s) {
|
|
|
1204
1251
|
return p.rank - d.rank || o(p.away, d.away) || o(p.home, d.home) || String(i.time || "").localeCompare(String(c.time || ""));
|
|
1205
1252
|
});
|
|
1206
1253
|
}
|
|
1207
|
-
function
|
|
1208
|
-
const t = new Map((a || []).map((r) => [r, e(r) ||
|
|
1254
|
+
function Ss(a, e) {
|
|
1255
|
+
const t = new Map((a || []).map((r) => [r, e(r) || ct])), s = (r) => r.state === "live" ? 0 : 1;
|
|
1209
1256
|
return [...t.keys()].sort((r, o) => s(r) - s(o) || t.get(r) - t.get(o));
|
|
1210
1257
|
}
|
|
1211
|
-
function
|
|
1212
|
-
|
|
1258
|
+
function _s(a, e) {
|
|
1259
|
+
if (a.gameType === "conference" && a.conferenceId) {
|
|
1260
|
+
const t = e[a.conferenceId] || null;
|
|
1261
|
+
return { name: t?.name || "Conference", conference: t };
|
|
1262
|
+
}
|
|
1263
|
+
return a.gameType === "playoff" ? { name: "Playoffs", conference: null } : a.gameType === "scrimmage" ? { name: "Scrimmages", conference: null } : { name: "Nonconference", conference: null };
|
|
1213
1264
|
}
|
|
1214
|
-
function
|
|
1265
|
+
function As(a, e) {
|
|
1215
1266
|
const t = /* @__PURE__ */ new Map();
|
|
1216
1267
|
return (a || []).forEach((s) => {
|
|
1217
|
-
const r =
|
|
1218
|
-
t.has(r) || t.set(r, []), t.get(r).push(s);
|
|
1219
|
-
}), t;
|
|
1268
|
+
const { name: r, conference: o } = _s(s, e);
|
|
1269
|
+
t.has(r) || t.set(r, { name: r, conference: o, games: [] }), t.get(r).games.push(s);
|
|
1270
|
+
}), [...t.values()];
|
|
1220
1271
|
}
|
|
1221
|
-
const
|
|
1272
|
+
const Ts = y`
|
|
1222
1273
|
.toolbar.filters { gap: 0.5rem 1.1rem; }
|
|
1223
1274
|
.filters [role="group"] { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }
|
|
1224
1275
|
.filters .asof { margin-right: 0.1rem; }
|
|
1225
1276
|
/* A phone can't fit the label and six chips on one line; the label takes
|
|
1226
1277
|
its own row so the chips stay together instead of stranding the last. */
|
|
1227
1278
|
@media (max-width: 480px) { .filters .asof { flex-basis: 100%; } }
|
|
1279
|
+
/* Conference headings carry the standings cards' classification pills. */
|
|
1280
|
+
.section-title .pill { margin-left: 0.3rem; vertical-align: 0.1em; }
|
|
1281
|
+
/* The desk's coverage links ride in one group with the box-score link, in
|
|
1282
|
+
its style, so a narrow row wraps them together instead of leaving a
|
|
1283
|
+
lone "Story" beside the matchup and "Box score" on the next line. */
|
|
1284
|
+
.gamelist .links { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 0.6rem; }
|
|
1285
|
+
.gamelist .links a { font-size: 0.78rem; }
|
|
1228
1286
|
`;
|
|
1229
|
-
class
|
|
1230
|
-
static styles = [...U,
|
|
1287
|
+
class dt extends w {
|
|
1288
|
+
static styles = [...U, Ts];
|
|
1231
1289
|
static properties = {
|
|
1232
1290
|
...w.properties,
|
|
1233
1291
|
sport: { type: String },
|
|
@@ -1245,14 +1303,14 @@ class ht extends w {
|
|
|
1245
1303
|
!this.date && e.get("date") && (this.date = e.get("date")), !this.view && e.get("view") && (this.view = e.get("view")), !this.areaCode && e.get("area") && (this.areaCode = e.get("area")), this._datePinned = !!this.date;
|
|
1246
1304
|
}
|
|
1247
1305
|
async fetchData(e) {
|
|
1248
|
-
const t = this.season ||
|
|
1306
|
+
const t = this.season || Y(), [s, r, o, n, i] = await Promise.all([
|
|
1249
1307
|
e.listSchools(),
|
|
1250
1308
|
e.listTeams({ sport: this.sport }),
|
|
1251
1309
|
e.listConferences(),
|
|
1252
1310
|
e.listGames({ sport: this.sport, season: t }),
|
|
1253
1311
|
e.listRankings({ sport: this.sport })
|
|
1254
1312
|
]);
|
|
1255
|
-
return this._datePinned || (this.date =
|
|
1313
|
+
return this._datePinned || (this.date = Yt(n.items.map((c) => c.date)), this._datePinned = !0), {
|
|
1256
1314
|
season: t,
|
|
1257
1315
|
schools: s.items,
|
|
1258
1316
|
teams: r.items,
|
|
@@ -1276,15 +1334,19 @@ class ht extends w {
|
|
|
1276
1334
|
e !== null && (this.view = e), t !== null && (this.areaCode = t);
|
|
1277
1335
|
try {
|
|
1278
1336
|
const s = new URL(globalThis.location.href), r = (o, n, i) => n && n !== i ? s.searchParams.set(o, n) : s.searchParams.delete(o);
|
|
1279
|
-
r("view", He(this.view),
|
|
1337
|
+
r("view", He(this.view), lt), r("area", this.areaCode, ""), globalThis.history?.replaceState(null, "", s);
|
|
1280
1338
|
} catch {
|
|
1281
1339
|
}
|
|
1282
1340
|
}
|
|
1283
1341
|
renderView() {
|
|
1284
|
-
const e = this.ctx, t = b(this.data.conferences), s = [...new Set(this.data.games.map((h) => h.date).filter(Boolean))].sort(), r = He(this.view), o =
|
|
1285
|
-
const u = [h.awayTeamId, h.homeTeamId].map((f) =>
|
|
1342
|
+
const e = this.ctx, t = b(this.data.conferences), s = [...new Set(this.data.games.map((h) => h.date).filter(Boolean))].sort(), r = He(this.view), o = ws(this.data.teams, e.schoolsById), n = o.includes(this.areaCode) ? this.areaCode : "", i = (h) => {
|
|
1343
|
+
const u = [h.awayTeamId, h.homeTeamId].map((f) => xe(e.rankings, e.teamsById, f, this.sport, h.date)).filter(Boolean);
|
|
1286
1344
|
return u.length ? Math.min(...u) : null;
|
|
1287
|
-
}, c = this.data.games.filter((h) => h.date === this.date), p = c.filter((h) =>
|
|
1345
|
+
}, c = this.data.games.filter((h) => h.date === this.date), p = c.filter((h) => xs(h, n, e.teamsById, e.schoolsById)), d = r === "conferences" ? As(Ss(p, i), t) : p.length ? [{
|
|
1346
|
+
name: n ? `All games · ${n}` : "All games",
|
|
1347
|
+
conference: null,
|
|
1348
|
+
games: ks(p, i, e.teamsById, e.schoolsById)
|
|
1349
|
+
}] : [];
|
|
1288
1350
|
return l`
|
|
1289
1351
|
${le(this, e, {
|
|
1290
1352
|
title: l`${k(this.sport)} scores & schedules`,
|
|
@@ -1299,7 +1361,7 @@ class ht extends w {
|
|
|
1299
1361
|
this.date = h.target.value;
|
|
1300
1362
|
}}>
|
|
1301
1363
|
${(s.includes(this.date) ? s : [...s, this.date].sort()).map((h) => l`<option value=${h} ?selected=${h === this.date}>
|
|
1302
|
-
${x(h, { weekday: "short", month: "short", day: "numeric" })}${h ===
|
|
1364
|
+
${x(h, { weekday: "short", month: "short", day: "numeric" })}${h === be() ? " · today" : ""}
|
|
1303
1365
|
</option>`)}
|
|
1304
1366
|
</select>
|
|
1305
1367
|
<button class="chip" ?disabled=${s.indexOf(this.date) <= 0}
|
|
@@ -1331,10 +1393,10 @@ class ht extends w {
|
|
|
1331
1393
|
${c.length ? m : l`<p class="empty">No ${this.sport} games on this date.</p>`}
|
|
1332
1394
|
${c.length && !p.length ? l`<p class="empty">No ${this.sport} games in the ${n} area code on this date.
|
|
1333
1395
|
<button class="chip" @click=${() => this.pick({ area: "" })}>Every area</button></p>` : m}
|
|
1334
|
-
${
|
|
1335
|
-
<div class="section-title">${h}</div>
|
|
1396
|
+
${d.map(({ name: h, conference: u, games: f }) => l`
|
|
1397
|
+
<div class="section-title">${h}${[...u?.classifications || []].sort(de).map((g) => l`<span class="pill class">${g}</span>`)}</div>
|
|
1336
1398
|
<div class="card"><ul class="gamelist">
|
|
1337
|
-
${
|
|
1399
|
+
${f.map((g) => this.renderGame(e, g))}
|
|
1338
1400
|
</ul></div>
|
|
1339
1401
|
`)}
|
|
1340
1402
|
`)}
|
|
@@ -1343,6 +1405,10 @@ class ht extends w {
|
|
|
1343
1405
|
// Each team's score rides in a block beside its name (reader feedback:
|
|
1344
1406
|
// a lone score column on the far right read as detached from the teams).
|
|
1345
1407
|
// Scheduled games carry their start time on the status pill alone.
|
|
1408
|
+
// The desk's coverage links (Game.coverageUrls, already on the games
|
|
1409
|
+
// list, so they cost no request) sit before the box score link, labelled
|
|
1410
|
+
// from each URL's shape (lib/search.mjs) rather than the site search the
|
|
1411
|
+
// box score's coverage cards query.
|
|
1346
1412
|
renderGame(e, t) {
|
|
1347
1413
|
const s = t.state === "final" || t.state === "live", r = (n, i, c = m) => l`<span class="side">${ae(e, n, t.date)}${s ? l`<span class="score">${i}</span>` : m}${c}</span>`, o = hs(t);
|
|
1348
1414
|
return l`
|
|
@@ -1352,13 +1418,16 @@ class ht extends w {
|
|
|
1352
1418
|
${o ? l`<span class="ff">${z(e, o === "home" ? t.homeTeamId : t.awayTeamId)} forfeited</span>` : m}
|
|
1353
1419
|
<span class="where">${t.venue || ""}</span>
|
|
1354
1420
|
${t.broadcast ? l`<span class="pill class">${t.broadcast}</span>` : m}
|
|
1355
|
-
<
|
|
1421
|
+
<span class="links">
|
|
1422
|
+
${bs(t.coverageUrls).map((n) => l`<a href=${n.href}>${n.label}</a>`)}
|
|
1423
|
+
<a class="box" href=${v(e.hrefs.game, { sport: this.sport, id: t.id })}>Box score →</a>
|
|
1424
|
+
</span>
|
|
1356
1425
|
</li>
|
|
1357
1426
|
`;
|
|
1358
1427
|
}
|
|
1359
1428
|
}
|
|
1360
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores",
|
|
1361
|
-
class
|
|
1429
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores", dt);
|
|
1430
|
+
class pt extends w {
|
|
1362
1431
|
static styles = U;
|
|
1363
1432
|
static properties = {
|
|
1364
1433
|
...w.properties,
|
|
@@ -1379,11 +1448,11 @@ class dt extends w {
|
|
|
1379
1448
|
*/
|
|
1380
1449
|
get viewGender() {
|
|
1381
1450
|
if (this.gender) return this.gender;
|
|
1382
|
-
const e =
|
|
1451
|
+
const e = pe(this.data?.teams);
|
|
1383
1452
|
return e.length < 2 ? "" : e.includes(this.pickedGender) ? this.pickedGender : e[0];
|
|
1384
1453
|
}
|
|
1385
1454
|
async fetchData(e) {
|
|
1386
|
-
const t = this.season ||
|
|
1455
|
+
const t = this.season || Y(), [s, r, o, n, i] = await Promise.all([
|
|
1387
1456
|
e.listConferences({ active: !0 }),
|
|
1388
1457
|
e.listSchools(),
|
|
1389
1458
|
// Deliberately NOT gender-filtered: the sub-nav decides whether to
|
|
@@ -1419,7 +1488,7 @@ class dt extends w {
|
|
|
1419
1488
|
}, this._ctxData = this.data, this._ctxGender = this.viewGender), this._ctx;
|
|
1420
1489
|
}
|
|
1421
1490
|
renderView() {
|
|
1422
|
-
const e = this.ctx, t = this.viewGender, s = this.gender ? [] :
|
|
1491
|
+
const e = this.ctx, t = this.viewGender, s = this.gender ? [] : pe(this.data.teams), r = ["All", ...[...new Set(this.data.conferences.flatMap((n) => n.classifications || []))].sort(de)].slice(0, 9), o = this.data.conferences.filter((n) => n.active !== !1).filter((n) => this.classFilter === "All" || (n.classifications || []).includes(this.classFilter)).sort(Xe);
|
|
1423
1492
|
return l`
|
|
1424
1493
|
${le(this, e, {
|
|
1425
1494
|
title: l`${t ? `${k(t)} ` : ""}${k(this.sport)} standings`,
|
|
@@ -1451,7 +1520,7 @@ class dt extends w {
|
|
|
1451
1520
|
this.query = n.target.value;
|
|
1452
1521
|
}}>
|
|
1453
1522
|
<span class="spacer"></span>
|
|
1454
|
-
<span class="asof">Records through ${x(
|
|
1523
|
+
<span class="asof">Records through ${x(be(), { month: "long", day: "numeric" })} · conference games count toward both records · scrimmages toward neither</span>
|
|
1455
1524
|
</div>
|
|
1456
1525
|
${o.map((n) => this.renderConference(e, n))}
|
|
1457
1526
|
`)}
|
|
@@ -1465,7 +1534,7 @@ class dt extends w {
|
|
|
1465
1534
|
<div class="card">
|
|
1466
1535
|
<div class="card-head">
|
|
1467
1536
|
<h2>${t.name}</h2>
|
|
1468
|
-
${[...t.classifications || []].sort(
|
|
1537
|
+
${[...t.classifications || []].sort(de).map((n) => l`<span class="pill class">${n}</span>`)}
|
|
1469
1538
|
<span class="meta">${o.length} teams · membership derives from teams</span>
|
|
1470
1539
|
</div>
|
|
1471
1540
|
<div class="tablewrap"><table class="data">
|
|
@@ -1484,8 +1553,8 @@ class dt extends w {
|
|
|
1484
1553
|
renderRow(e, t, s, r) {
|
|
1485
1554
|
const o = e.schoolsById[t.team.schoolId], n = o?.name || t.team.name || "TBD";
|
|
1486
1555
|
if (r && !n.toLowerCase().includes(r)) return m;
|
|
1487
|
-
const i = t.rec.pf - t.rec.pa, c =
|
|
1488
|
-
location.href =
|
|
1556
|
+
const i = t.rec.pf - t.rec.pa, c = we(this.data.games, t.team.id), p = () => {
|
|
1557
|
+
location.href = v(e.hrefs.school, { id: t.team.schoolId });
|
|
1489
1558
|
};
|
|
1490
1559
|
return l`
|
|
1491
1560
|
<tr class="rowlink" @click=${(d) => {
|
|
@@ -1493,8 +1562,8 @@ class dt extends w {
|
|
|
1493
1562
|
}}>
|
|
1494
1563
|
<td class="mut">${s + 1}</td>
|
|
1495
1564
|
<td class="teamcell">
|
|
1496
|
-
${P(o)}${
|
|
1497
|
-
<a href=${
|
|
1565
|
+
${P(o)}${ke(e, t.team.id, null)}
|
|
1566
|
+
<a href=${v(e.hrefs.school, { id: t.team.schoolId })}>${n}</a>
|
|
1498
1567
|
</td>
|
|
1499
1568
|
<td class="num">${S(t.rec, !0)}</td>
|
|
1500
1569
|
<td class="num">${Oe(t.confPct)}</td>
|
|
@@ -1504,14 +1573,14 @@ class dt extends w {
|
|
|
1504
1573
|
<td class="num">${t.rec.pa}</td>
|
|
1505
1574
|
<td class="num" style="color:${i >= 0 ? "var(--hsot-win)" : "var(--hsot-loss)"}">${i > 0 ? "+" : ""}${i}</td>
|
|
1506
1575
|
<td>${ie(t.rec.results) || "·"}</td>
|
|
1507
|
-
<td>${
|
|
1576
|
+
<td>${Se(e, t.team.id)}</td>
|
|
1508
1577
|
<td>${nt(e, c, t.team.id)}</td>
|
|
1509
1578
|
</tr>
|
|
1510
1579
|
`;
|
|
1511
1580
|
}
|
|
1512
1581
|
}
|
|
1513
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings",
|
|
1514
|
-
const
|
|
1582
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings", pt);
|
|
1583
|
+
const Is = y`
|
|
1515
1584
|
.hero1 {
|
|
1516
1585
|
border-radius: var(--hsot-radius-md); color: var(--hsot-white);
|
|
1517
1586
|
padding: 1.3rem 1.4rem; display: flex; align-items: center; gap: 1.2rem;
|
|
@@ -1528,8 +1597,8 @@ const xs = y`
|
|
|
1528
1597
|
.delta.new { background: var(--hsot-straw); color: #6b5900; border-radius: var(--hsot-radius-xs); padding: 0.1rem 0.3rem; font-size: 0.7rem; }
|
|
1529
1598
|
.sparkline { vertical-align: middle; }
|
|
1530
1599
|
`;
|
|
1531
|
-
class
|
|
1532
|
-
static styles = [...U,
|
|
1600
|
+
class mt extends w {
|
|
1601
|
+
static styles = [...U, Is];
|
|
1533
1602
|
static properties = {
|
|
1534
1603
|
...w.properties,
|
|
1535
1604
|
sport: { type: String },
|
|
@@ -1546,7 +1615,7 @@ class pt extends w {
|
|
|
1546
1615
|
e && (this.pollDate = e);
|
|
1547
1616
|
}
|
|
1548
1617
|
async fetchData(e) {
|
|
1549
|
-
const t = this.season ||
|
|
1618
|
+
const t = this.season || Y(), [s, r, o, n, i] = await Promise.all([
|
|
1550
1619
|
e.listRankings({ sport: this.sport, ...this.gender ? { gender: this.gender } : {} }),
|
|
1551
1620
|
e.listSchools(),
|
|
1552
1621
|
e.listTeams({ sport: this.sport }),
|
|
@@ -1576,8 +1645,8 @@ class pt extends w {
|
|
|
1576
1645
|
const i = t.map((h, u) => {
|
|
1577
1646
|
const f = (h.teamIds || []).indexOf(e);
|
|
1578
1647
|
if (f === -1) return null;
|
|
1579
|
-
const
|
|
1580
|
-
return { x:
|
|
1648
|
+
const g = t.length === 1 ? 96 / 2 : u / (t.length - 1) * 90 + 3, $ = 3 + f / 24 * 20;
|
|
1649
|
+
return { x: g, y: $ };
|
|
1581
1650
|
}), c = [];
|
|
1582
1651
|
let p = [];
|
|
1583
1652
|
if (i.forEach((h) => {
|
|
@@ -1585,9 +1654,9 @@ class pt extends w {
|
|
|
1585
1654
|
}), p.length && c.push(p), !c.length) return m;
|
|
1586
1655
|
const d = i[s];
|
|
1587
1656
|
return l`<svg class="sparkline" width=${96} height=${26} viewBox="0 0 ${96} ${26}" role="img" aria-label="rank history">
|
|
1588
|
-
${c.map((h) =>
|
|
1657
|
+
${c.map((h) => Ne`<polyline fill="none" stroke="var(--hsot-red)" stroke-width="2"
|
|
1589
1658
|
points=${h.map((u) => `${u.x.toFixed(1)},${u.y.toFixed(1)}`).join(" ")}></polyline>`)}
|
|
1590
|
-
${d ?
|
|
1659
|
+
${d ? Ne`<circle cx=${d.x.toFixed(1)} cy=${d.y.toFixed(1)} r="3" fill="var(--hsot-black)"></circle>` : m}
|
|
1591
1660
|
</svg>`;
|
|
1592
1661
|
}
|
|
1593
1662
|
movement(e, t, s) {
|
|
@@ -1647,7 +1716,7 @@ class pt extends w {
|
|
|
1647
1716
|
<div class="bigrank">#1</div>
|
|
1648
1717
|
${P(o, 64)}
|
|
1649
1718
|
<div>
|
|
1650
|
-
<h2><a href=${
|
|
1719
|
+
<h2><a href=${v(e.hrefs.school, { id: o.id })}>${o.name} ${o.mascot || ""}</a></h2>
|
|
1651
1720
|
<div class="facts">
|
|
1652
1721
|
${S(i)} overall${p ? l` · ${S(i, !0)} ${p.name}` : m}
|
|
1653
1722
|
· streak ${ie(i?.results) || "·"}
|
|
@@ -1661,20 +1730,20 @@ class pt extends w {
|
|
|
1661
1730
|
renderRow(e, t, s, r, o, n, i, c) {
|
|
1662
1731
|
const p = E(e, i);
|
|
1663
1732
|
if (!p) return m;
|
|
1664
|
-
const d = e.records[i], h = Ue(e.records, i), u =
|
|
1665
|
-
location.href =
|
|
1733
|
+
const d = e.records[i], h = Ue(e.records, i), u = we(this.data.games, i), f = n[e.teamsById[i]?.conferenceId], g = () => {
|
|
1734
|
+
location.href = v(e.hrefs.school, { id: p.id });
|
|
1666
1735
|
};
|
|
1667
1736
|
return l`
|
|
1668
1737
|
<tr class="rowlink" @click=${($) => {
|
|
1669
|
-
$.target.closest("a") ||
|
|
1738
|
+
$.target.closest("a") || g();
|
|
1670
1739
|
}}>
|
|
1671
1740
|
<td class="num" style="font-weight:700">${c}</td>
|
|
1672
1741
|
<td>${this.movement(t, s, i)}</td>
|
|
1673
|
-
<td class="teamcell">${P(p)}<a href=${
|
|
1742
|
+
<td class="teamcell">${P(p)}<a href=${v(e.hrefs.school, { id: p.id })}>${p.name}</a>
|
|
1674
1743
|
<span class="mut" style="font-size:0.78rem">${p.mascot || ""}</span></td>
|
|
1675
1744
|
<td class="num">${S(d)}</td>
|
|
1676
1745
|
<td class="mut">${f?.name || "Independent"}</td>
|
|
1677
|
-
<td>${h ? l`<a class="box" style="text-decoration:none" href=${
|
|
1746
|
+
<td>${h ? l`<a class="box" style="text-decoration:none" href=${v(e.hrefs.game, { sport: this.sport, id: h.gameId })}>
|
|
1678
1747
|
<b style="color:${h.mark === "W" ? "var(--hsot-win)" : h.mark === "L" ? "var(--hsot-loss)" : "var(--hsot-tie)"}">${h.mark}</b>
|
|
1679
1748
|
${h.my}-${h.their} vs ${se(e, h.opp)}</a>` : l`<span class="mut">·</span>`}</td>
|
|
1680
1749
|
<td>${nt(e, u, i)}</td>
|
|
@@ -1683,8 +1752,8 @@ class pt extends w {
|
|
|
1683
1752
|
`;
|
|
1684
1753
|
}
|
|
1685
1754
|
}
|
|
1686
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings",
|
|
1687
|
-
const
|
|
1755
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings", mt);
|
|
1756
|
+
const Cs = y`
|
|
1688
1757
|
.schoolhero { color: var(--hsot-white); padding: 1.6rem 1.25rem 1.3rem; }
|
|
1689
1758
|
.schoolhero .inner { max-width: 1366px; margin: 0 auto; display: flex; gap: 1.2rem; align-items: center; flex-wrap: wrap; }
|
|
1690
1759
|
.schoolhero .crest {
|
|
@@ -1738,8 +1807,8 @@ const ks = y`
|
|
|
1738
1807
|
table.data.roster .sub { display: block; font-weight: 400; font-size: 0.78rem; color: var(--hsot-gray-5); }
|
|
1739
1808
|
}
|
|
1740
1809
|
`;
|
|
1741
|
-
class
|
|
1742
|
-
static styles = [...U,
|
|
1810
|
+
class ut extends w {
|
|
1811
|
+
static styles = [...U, Cs];
|
|
1743
1812
|
static properties = {
|
|
1744
1813
|
...w.properties,
|
|
1745
1814
|
schoolId: { type: String, attribute: "school-id" },
|
|
@@ -1757,7 +1826,7 @@ class mt extends w {
|
|
|
1757
1826
|
t && !this.sport && (this.sport = t), s && !this.gender && (this.gender = s);
|
|
1758
1827
|
}
|
|
1759
1828
|
async fetchData(e) {
|
|
1760
|
-
const t = this.season ||
|
|
1829
|
+
const t = this.season || Y(), s = await e.getSchool(this.schoolId), o = (await e.listTeams({ schoolId: this.schoolId })).items, n = this.sport || "football", i = o.find(($) => $.id === this.activeTeamId) || o.find(($) => $.sport === n && tt($, this.gender)) || o.find(($) => $.sport === n) || o[0] || null, [c, p, d, h, u, f, g] = await Promise.all([
|
|
1761
1830
|
i ? e.listGames({ sport: i.sport, season: t }) : Promise.resolve({ items: [] }),
|
|
1762
1831
|
i ? e.listTeams({ sport: i.sport }) : Promise.resolve({ items: [] }),
|
|
1763
1832
|
e.listSchools(),
|
|
@@ -1779,7 +1848,7 @@ class mt extends w {
|
|
|
1779
1848
|
conferences: h.items,
|
|
1780
1849
|
rankings: u.items,
|
|
1781
1850
|
roster: f.items.find(($) => $.season === t) || null,
|
|
1782
|
-
players:
|
|
1851
|
+
players: g.items
|
|
1783
1852
|
};
|
|
1784
1853
|
}
|
|
1785
1854
|
get ctx() {
|
|
@@ -1807,7 +1876,7 @@ class mt extends w {
|
|
|
1807
1876
|
return l`
|
|
1808
1877
|
<div class="schoolhero" style="background:linear-gradient(115deg, ${e.colorPrimary || "#030711"} 0%, ${e.colorPrimary || "#030711"} 55%, var(--hsot-black) 100%);color:${n}">
|
|
1809
1878
|
<div class="inner">
|
|
1810
|
-
${te(e, 84) ? l`<img class="crest logo" alt="" loading="lazy" src=${te(e, 84)} />` : l`<div class="crest" style="background:${e.colorSecondary || "#7C7C7C"};color:${ee(e.colorSecondary || "#7C7C7C")}">${
|
|
1879
|
+
${te(e, 84) ? l`<img class="crest logo" alt="" loading="lazy" src=${te(e, 84)} />` : l`<div class="crest" style="background:${e.colorSecondary || "#7C7C7C"};color:${ee(e.colorSecondary || "#7C7C7C")}">${ye(e)}</div>`}
|
|
1811
1880
|
<div style="min-width:260px">
|
|
1812
1881
|
<h1>${e.name} <span class="mascot">${e.mascot || ""}</span></h1>
|
|
1813
1882
|
<div class="facts">
|
|
@@ -1835,7 +1904,7 @@ class mt extends w {
|
|
|
1835
1904
|
`;
|
|
1836
1905
|
}
|
|
1837
1906
|
renderTeam(e, t, s, r) {
|
|
1838
|
-
const o = e.records[t.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, n = o.w + o.l + o.t, i = s ? st(this.data.allTeams.filter((h) => h.conferenceId === s.id), t.gender) : [], c = s ? rt(i, e.records).findIndex((h) => h.team.id === t.id) + 1 : 0, p =
|
|
1907
|
+
const o = e.records[t.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, n = o.w + o.l + o.t, i = s ? st(this.data.allTeams.filter((h) => h.conferenceId === s.id), t.gender) : [], c = s ? rt(i, e.records).findIndex((h) => h.team.id === t.id) + 1 : 0, p = xe(e.rankings, e.teamsById, t.id, t.sport, null), d = this.data.games.filter((h) => h.homeTeamId === t.id || h.awayTeamId === t.id).sort((h, u) => String(h.date).localeCompare(String(u.date)));
|
|
1839
1908
|
return l`
|
|
1840
1909
|
<div class="tiles">
|
|
1841
1910
|
<div class="tile"><div class="k">Overall</div><div class="v">${S(o)}</div><div class="s">${n} games played</div></div>
|
|
@@ -1844,9 +1913,9 @@ class mt extends w {
|
|
|
1844
1913
|
<div class="tile"><div class="k">Points</div><div class="v">${n ? (o.pf / n).toFixed(1) : "0.0"}</div>
|
|
1845
1914
|
<div class="s">scored per game · ${n ? (o.pa / n).toFixed(1) : "0.0"} allowed</div></div>
|
|
1846
1915
|
<div class="tile"><div class="k">Streak</div><div class="v">${ie(o.results) || "·"}</div>
|
|
1847
|
-
<div class="s">last 5: ${
|
|
1916
|
+
<div class="s">last 5: ${Se(e, t.id)}</div></div>
|
|
1848
1917
|
<div class="tile"><div class="k">HSOT Top 25</div><div class="v">${p ? `#${p}` : "NR"}</div>
|
|
1849
|
-
<div class="s"><a href=${
|
|
1918
|
+
<div class="s"><a href=${v(e.hrefs.section, { sport: t.sport, view: "rankings" })}>full poll</a></div></div>
|
|
1850
1919
|
</div>
|
|
1851
1920
|
${(t.championships || []).length ? l`
|
|
1852
1921
|
<div style="margin:-0.2rem 0 1rem;display:flex;gap:0.4rem;flex-wrap:wrap">
|
|
@@ -1868,7 +1937,7 @@ class mt extends w {
|
|
|
1868
1937
|
}
|
|
1869
1938
|
renderGameRow(e, t, s) {
|
|
1870
1939
|
const r = s.homeTeamId === t.id, o = r ? s.awayTeamId : s.homeTeamId, n = r ? s.homeScore : s.awayScore, i = r ? s.awayScore : s.homeScore;
|
|
1871
|
-
let c = l`<span class="mut">${
|
|
1940
|
+
let c = l`<span class="mut">${$e(s.time)}</span>`;
|
|
1872
1941
|
if (s.state === "final") {
|
|
1873
1942
|
const d = ne(s), h = d === "tie" ? "T" : d === (r ? "home" : "away") ? "W" : "L";
|
|
1874
1943
|
c = l`<span class=${h}>${h}</span> ${n}-${i}${s.finish === "overtime" ? l` <span class="mut">OT</span>` : m}${s.forfeit && s.forfeit !== "none" ? l` <span class="mut">FF</span>` : m}`;
|
|
@@ -1884,7 +1953,7 @@ class mt extends w {
|
|
|
1884
1953
|
${s.broadcast ? l`<span class="pill class">${s.broadcast}</span>` : m}
|
|
1885
1954
|
</span>
|
|
1886
1955
|
<span class="where">${s.venue || ""}</span>
|
|
1887
|
-
<a class="box" href=${
|
|
1956
|
+
<a class="box" href=${v(e.hrefs.game, { sport: t.sport, id: s.id })}>Box score →</a>
|
|
1888
1957
|
</li>
|
|
1889
1958
|
`;
|
|
1890
1959
|
}
|
|
@@ -1902,7 +1971,7 @@ class mt extends w {
|
|
|
1902
1971
|
${i.map((p) => {
|
|
1903
1972
|
const d = n[p.playerId];
|
|
1904
1973
|
if (!d) return m;
|
|
1905
|
-
const h =
|
|
1974
|
+
const h = Kt(p), u = [h, d.classOf].filter(Boolean).join(" · ") || "·";
|
|
1906
1975
|
return l`<tr>
|
|
1907
1976
|
<td class="num mut">${p.number ?? "·"}</td>
|
|
1908
1977
|
<td class="player" style="font-weight:500">${d.firstName} ${d.lastName}<span class="sub">${u}</span></td>
|
|
@@ -1918,8 +1987,8 @@ class mt extends w {
|
|
|
1918
1987
|
`;
|
|
1919
1988
|
}
|
|
1920
1989
|
}
|
|
1921
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school",
|
|
1922
|
-
const
|
|
1990
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school", ut);
|
|
1991
|
+
const ft = {
|
|
1923
1992
|
football: ["quarters", 4],
|
|
1924
1993
|
flag_football: ["quarters", 4],
|
|
1925
1994
|
basketball: ["quarters", 4],
|
|
@@ -1930,78 +1999,49 @@ const ut = {
|
|
|
1930
1999
|
softball: ["innings", 7],
|
|
1931
2000
|
volleyball: ["sets", 3]
|
|
1932
2001
|
};
|
|
1933
|
-
function
|
|
1934
|
-
return (
|
|
2002
|
+
function gt(a) {
|
|
2003
|
+
return (ft[a] || ["quarters", 4])[0];
|
|
1935
2004
|
}
|
|
1936
|
-
function
|
|
1937
|
-
return (
|
|
2005
|
+
function _e(a) {
|
|
2006
|
+
return (ft[a] || ["quarters", 4])[1];
|
|
1938
2007
|
}
|
|
1939
|
-
function
|
|
1940
|
-
const t =
|
|
2008
|
+
function Es(a, e) {
|
|
2009
|
+
const t = gt(a), s = _e(a);
|
|
1941
2010
|
if (e <= s || t === "innings" || t === "sets") return String(e);
|
|
1942
2011
|
const r = e - s;
|
|
1943
2012
|
return `OT${r > 1 ? r : ""}`;
|
|
1944
2013
|
}
|
|
1945
|
-
function
|
|
2014
|
+
function Ps(a, e) {
|
|
1946
2015
|
const t = String(a ?? "").trim();
|
|
1947
2016
|
let s;
|
|
1948
|
-
return (s = /^(\d+)Q$/i.exec(t)) || (s = /^(\d+)H$/i.exec(t)) ? Number(s[1]) : /^half$/i.test(t) ?
|
|
2017
|
+
return (s = /^(\d+)Q$/i.exec(t)) || (s = /^(\d+)H$/i.exec(t)) ? Number(s[1]) : /^half$/i.test(t) ? gt(e) === "halves" ? 1 : 2 : (s = /^(\d*)OT(\d*)$/i.exec(t)) ? _e(e) + Number(s[1] || s[2] || 1) : (s = /^[TB](\d+)$/i.exec(t)) || (s = /^(\d+)(?:st|nd|rd|th)\s*set$/i.exec(t)) || (s = /^set\s*(\d+)$/i.exec(t)) ? Number(s[1]) : null;
|
|
1949
2018
|
}
|
|
1950
2019
|
const Z = (a) => Number.isInteger(a) && a >= 0 ? a : null;
|
|
1951
|
-
function
|
|
2020
|
+
function Bs(a) {
|
|
1952
2021
|
const e = Array.isArray(a?.scoringPlays) ? a.scoringPlays : [];
|
|
1953
2022
|
if (!e.length) return null;
|
|
1954
2023
|
const t = a.sport, s = /* @__PURE__ */ new Map();
|
|
1955
2024
|
for (const h of e) {
|
|
1956
|
-
const u =
|
|
1957
|
-
if (!u || f === null ||
|
|
2025
|
+
const u = Ps(h?.period, t), f = Z(h?.homeScore), g = Z(h?.awayScore);
|
|
2026
|
+
if (!u || f === null || g === null) return null;
|
|
1958
2027
|
const $ = s.get(u) || { home: 0, away: 0 };
|
|
1959
|
-
$.home = Math.max($.home, f), $.away = Math.max($.away,
|
|
2028
|
+
$.home = Math.max($.home, f), $.away = Math.max($.away, g), s.set(u, $);
|
|
1960
2029
|
}
|
|
1961
2030
|
const r = Math.max(...s.keys()), o = [];
|
|
1962
2031
|
let n = !0, i = { home: 0, away: 0 };
|
|
1963
2032
|
for (let h = 1; h <= r; h += 1) {
|
|
1964
|
-
const u = s.get(h) || i, f = u.home - i.home,
|
|
1965
|
-
(f < 0 ||
|
|
2033
|
+
const u = s.get(h) || i, f = u.home - i.home, g = u.away - i.away;
|
|
2034
|
+
(f < 0 || g < 0) && (n = !1), o.push({ period: h, home: Math.max(f, 0), away: Math.max(g, 0) }), i = { home: Math.max(u.home, i.home), away: Math.max(u.away, i.away) };
|
|
1966
2035
|
}
|
|
1967
2036
|
const c = Z(a.homeScore) ?? 0, p = Z(a.awayScore) ?? 0, d = n && i.home === c && i.away === p;
|
|
1968
2037
|
return n = n && i.home <= c && i.away <= p, { periods: o, reconciled: d, consistent: n };
|
|
1969
2038
|
}
|
|
1970
|
-
function
|
|
2039
|
+
function Ds(a) {
|
|
1971
2040
|
if (Array.isArray(a?.periodScores) && a.periodScores.length) return a.periodScores;
|
|
1972
|
-
const e =
|
|
2041
|
+
const e = Bs(a);
|
|
1973
2042
|
return e ? a.state === "final" ? e.reconciled ? e.periods : null : e.consistent ? e.periods : null : null;
|
|
1974
2043
|
}
|
|
1975
|
-
const
|
|
1976
|
-
function Cs(a) {
|
|
1977
|
-
return a.map((e) => `uri:"${e}"`).join(" OR ");
|
|
1978
|
-
}
|
|
1979
|
-
function Es(a, e) {
|
|
1980
|
-
const t = String(a || Is).replace(/\/+$/, ""), s = new URLSearchParams({ query: Cs(e), sort: "score", lang: "en" });
|
|
1981
|
-
return `${t}/v1/query?${s}`;
|
|
1982
|
-
}
|
|
1983
|
-
function gt(a) {
|
|
1984
|
-
try {
|
|
1985
|
-
const e = new URL(a);
|
|
1986
|
-
if (/(^|\.)smugmug\.com$/i.test(e.hostname)) {
|
|
1987
|
-
const t = e.pathname.split("/").filter(Boolean).pop() || "", s = !t || /^[ni]-[A-Za-z0-9]+$/.test(t);
|
|
1988
|
-
return {
|
|
1989
|
-
uri: a,
|
|
1990
|
-
title: s ? a : decodeURIComponent(t).replace(/-/g, " "),
|
|
1991
|
-
photos: !0
|
|
1992
|
-
};
|
|
1993
|
-
}
|
|
1994
|
-
} catch {
|
|
1995
|
-
}
|
|
1996
|
-
return { uri: a, title: a };
|
|
1997
|
-
}
|
|
1998
|
-
async function Ps(a, e, t) {
|
|
1999
|
-
const r = await ((...i) => fetch(...i))(Es(a, e));
|
|
2000
|
-
if (!r.ok) throw new Error(`search answered ${r.status}`);
|
|
2001
|
-
const o = await r.json(), n = new Map((o.items || []).map((i) => [i.uri, i]));
|
|
2002
|
-
return e.map((i) => n.get(i) || gt(i));
|
|
2003
|
-
}
|
|
2004
|
-
const Bs = y`
|
|
2044
|
+
const Rs = y`
|
|
2005
2045
|
.breadcrumbs { font-size: 0.8125rem; margin: 0.9rem 0 0; color: var(--hsot-gray-5); }
|
|
2006
2046
|
.breadcrumbs a { text-decoration: none; }
|
|
2007
2047
|
.scorehead { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1rem; align-items: center; padding: 1.4rem 1rem; }
|
|
@@ -2058,7 +2098,7 @@ const Bs = y`
|
|
|
2058
2098
|
}
|
|
2059
2099
|
`;
|
|
2060
2100
|
class vt extends w {
|
|
2061
|
-
static styles = [...U,
|
|
2101
|
+
static styles = [...U, Rs];
|
|
2062
2102
|
static properties = {
|
|
2063
2103
|
...w.properties,
|
|
2064
2104
|
gameId: { type: String, attribute: "game-id" },
|
|
@@ -2088,7 +2128,7 @@ class vt extends w {
|
|
|
2088
2128
|
// links (fetchCoverage already degrades per-URL index misses).
|
|
2089
2129
|
// The embed drops the Coverage grid, so it skips the search
|
|
2090
2130
|
// round-trip entirely rather than fetching cards it will not render.
|
|
2091
|
-
s.length && !this.embed ?
|
|
2131
|
+
s.length && !this.embed ? vs(this.searchApi, s).catch(() => s.map(it)) : Promise.resolve([])
|
|
2092
2132
|
]);
|
|
2093
2133
|
return {
|
|
2094
2134
|
game: t,
|
|
@@ -2119,8 +2159,8 @@ class vt extends w {
|
|
|
2119
2159
|
${D(this)}
|
|
2120
2160
|
${this.embed ? m : l`
|
|
2121
2161
|
<p class="breadcrumbs">
|
|
2122
|
-
<a href=${
|
|
2123
|
-
<a href=${
|
|
2162
|
+
<a href=${v(t.hrefs.section, { sport: e.sport, view: "scores" })}>${k(e.sport)}</a> /
|
|
2163
|
+
<a href=${v(t.hrefs.section, { sport: e.sport, view: "scores" })}>Scores/Schedules</a> /
|
|
2124
2164
|
${z(t, e.awayTeamId)} at ${z(t, e.homeTeamId)}
|
|
2125
2165
|
</p>`}
|
|
2126
2166
|
<div class="card">
|
|
@@ -2133,7 +2173,7 @@ class vt extends w {
|
|
|
2133
2173
|
<span style=${i("home")}>${e.homeScore}</span>
|
|
2134
2174
|
</div>
|
|
2135
2175
|
<div class="status">${V(e)}</div>
|
|
2136
|
-
<div class="status">${x(e.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${e.state === "scheduled" && e.time ? l` · ${
|
|
2176
|
+
<div class="status">${x(e.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${e.state === "scheduled" && e.time ? l` · ${$e(e.time)}` : m} · ${e.venue || "Venue TBD"}
|
|
2137
2177
|
${e.broadcast ? l` · <span class="pill class">${e.broadcast}</span>` : m}</div>
|
|
2138
2178
|
<div class="status">
|
|
2139
2179
|
<span class="pill type">${e.gameType === "conference" ? `${c?.name || "Conference"} game` : e.gameType}</span>
|
|
@@ -2153,7 +2193,7 @@ class vt extends w {
|
|
|
2153
2193
|
</div>
|
|
2154
2194
|
${this.embed ? l`
|
|
2155
2195
|
<p class="fullbox">
|
|
2156
|
-
<a href=${
|
|
2196
|
+
<a href=${v(t.hrefs.game, { sport: e.sport, id: e.id })}>Full box score →</a>
|
|
2157
2197
|
</p>` : l`
|
|
2158
2198
|
${(this.data.coverage || []).length ? l`
|
|
2159
2199
|
<div class="section-title">Coverage</div>
|
|
@@ -2181,7 +2221,7 @@ class vt extends w {
|
|
|
2181
2221
|
${p.map((d) => l`<li>
|
|
2182
2222
|
<span class="d">${x(d.date)}</span>${V(d)}
|
|
2183
2223
|
<span class="opp">${z(t, d.awayTeamId)} ${d.awayScore}, ${z(t, d.homeTeamId)} ${d.homeScore}</span>
|
|
2184
|
-
<a class="box" href=${
|
|
2224
|
+
<a class="box" href=${v(t.hrefs.game, { sport: e.sport, id: d.id })}>Box score →</a>
|
|
2185
2225
|
</li>`)}
|
|
2186
2226
|
</ul></div>` : m}`}
|
|
2187
2227
|
`)}
|
|
@@ -2192,19 +2232,19 @@ class vt extends w {
|
|
|
2192
2232
|
const n = e.teamsById[s], i = e.records[s], c = te(r, 58);
|
|
2193
2233
|
return l`
|
|
2194
2234
|
<div class="teamblock ${o ? "right" : ""}">
|
|
2195
|
-
${c ? l`<img class="crest logo" alt="" loading="lazy" src=${c} />` : l`<span class="crest" style="background:${r.colorPrimary || "#030711"};color:${ee(r.colorPrimary || "#030711")}">${
|
|
2235
|
+
${c ? l`<img class="crest logo" alt="" loading="lazy" src=${c} />` : l`<span class="crest" style="background:${r.colorPrimary || "#030711"};color:${ee(r.colorPrimary || "#030711")}">${ye(r)}</span>`}
|
|
2196
2236
|
<div>
|
|
2197
|
-
<div class="tname">${
|
|
2237
|
+
<div class="tname">${ke(e, s, t.date)}<a href=${v(e.hrefs.school, { id: r.id })}>${r.name}</a></div>
|
|
2198
2238
|
<div class="trec">${r.mascot || ""} · ${S(i)}${n?.conferenceId ? l` · ${S(i, !0)} conf` : m}</div>
|
|
2199
2239
|
</div>
|
|
2200
2240
|
</div>
|
|
2201
2241
|
`;
|
|
2202
2242
|
}
|
|
2203
2243
|
renderLineScore(e, t, s) {
|
|
2204
|
-
const r =
|
|
2244
|
+
const r = Ds(e);
|
|
2205
2245
|
if (!r)
|
|
2206
2246
|
return e.state === "scheduled" ? l`<p class="empty" style="text-align:center">Period scoring will appear once the game starts.</p>` : m;
|
|
2207
|
-
const o = Math.max(
|
|
2247
|
+
const o = Math.max(_e(e.sport), ...r.map((p) => p.period)), n = (p) => Es(e.sport, p), i = (p, d) => {
|
|
2208
2248
|
const h = r.find((u) => u.period === d);
|
|
2209
2249
|
return h ? h[p] : e.state === "final" ? 0 : "·";
|
|
2210
2250
|
}, c = (p, d, h) => l`
|
|
@@ -2253,12 +2293,12 @@ class vt extends w {
|
|
|
2253
2293
|
}
|
|
2254
2294
|
renderContext(e, t, s) {
|
|
2255
2295
|
if (!s) return m;
|
|
2256
|
-
const r = e.records[t], o =
|
|
2296
|
+
const r = e.records[t], o = we(this.data.games, t);
|
|
2257
2297
|
return l`
|
|
2258
2298
|
<div class="card ctxcard">
|
|
2259
2299
|
<div class="who">${P(s)}${s.name}</div>
|
|
2260
2300
|
<div class="row">
|
|
2261
|
-
<span>Last 5: ${
|
|
2301
|
+
<span>Last 5: ${Se(e, t)}</span>
|
|
2262
2302
|
<span>Streak: <b>${r ? ie(r.results) : "·"}</b></span>
|
|
2263
2303
|
<span>PF/PA: <b>${r ? `${r.pf} / ${r.pa}` : "·"}</b></span>
|
|
2264
2304
|
<span>Next: ${o ? l`${x(o.date, { month: "numeric", day: "numeric" })}
|
|
@@ -2269,7 +2309,7 @@ class vt extends w {
|
|
|
2269
2309
|
}
|
|
2270
2310
|
}
|
|
2271
2311
|
globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore", vt);
|
|
2272
|
-
const
|
|
2312
|
+
const zs = 250, Ns = 2;
|
|
2273
2313
|
class $t extends N {
|
|
2274
2314
|
static properties = {
|
|
2275
2315
|
api: { type: String },
|
|
@@ -2350,11 +2390,11 @@ class $t extends N {
|
|
|
2350
2390
|
}
|
|
2351
2391
|
onInput(e) {
|
|
2352
2392
|
const t = e.target.value.trim();
|
|
2353
|
-
if (clearTimeout(this.debounceTimer), t.length <
|
|
2393
|
+
if (clearTimeout(this.debounceTimer), t.length < Ns) {
|
|
2354
2394
|
this.abortController?.abort(), this.results = [], this.open = !1, this.searched = !1;
|
|
2355
2395
|
return;
|
|
2356
2396
|
}
|
|
2357
|
-
this.debounceTimer = setTimeout(() => this.search(t),
|
|
2397
|
+
this.debounceTimer = setTimeout(() => this.search(t), zs);
|
|
2358
2398
|
}
|
|
2359
2399
|
async search(e) {
|
|
2360
2400
|
this.abortController?.abort(), this.abortController = new AbortController();
|
|
@@ -2467,17 +2507,17 @@ function yt(a, e = [], t = 0) {
|
|
|
2467
2507
|
for (const s of a.children || []) yt(s, e, t + 1);
|
|
2468
2508
|
return e;
|
|
2469
2509
|
}
|
|
2470
|
-
const
|
|
2471
|
-
function
|
|
2472
|
-
const s =
|
|
2510
|
+
const Fs = (a) => Math.max(1, Math.round(Math.log2(a || 2)));
|
|
2511
|
+
function Ms({ round: a, perGroup: e, groupCount: t = 1 }) {
|
|
2512
|
+
const s = Fs(e), o = (t === 4 ? s + 2 : t === 2 ? s + 1 : s) - a;
|
|
2473
2513
|
return o === 0 ? t > 1 ? "Championship" : "Final" : o === 1 ? "Semifinal" : `Round ${a}`;
|
|
2474
2514
|
}
|
|
2475
|
-
function
|
|
2515
|
+
function Os(a) {
|
|
2476
2516
|
if (!a || !a.length) return "setup";
|
|
2477
2517
|
const e = Math.max(...a.map((s) => s.round ?? 0)), t = a.filter((s) => (s.round ?? 0) === e);
|
|
2478
2518
|
return t.length && t.every((s) => s.state === "final") ? "complete" : a.some((s) => s.state !== "scheduled" || s.homeScore || s.awayScore || s.round === 1 && (s.homeTeamId || s.awayTeamId)) ? "active" : "setup";
|
|
2479
2519
|
}
|
|
2480
|
-
function
|
|
2520
|
+
function Us(a, e) {
|
|
2481
2521
|
const t = a?.groupNames || [];
|
|
2482
2522
|
if (t.length >= 2) {
|
|
2483
2523
|
const r = t.map((o) => ({ key: o, name: o }));
|
|
@@ -2486,11 +2526,11 @@ function Ms(a, e) {
|
|
|
2486
2526
|
const s = [...new Set((e || []).map((r) => r.bracketGroup).filter(Boolean))];
|
|
2487
2527
|
return [{ key: null, name: s.length === 1 ? s[0] : "Bracket" }];
|
|
2488
2528
|
}
|
|
2489
|
-
const
|
|
2529
|
+
const Hs = (a, e) => e?.key == null ? [...a || []] : (a || []).filter((t) => t.bracketGroup === e.key), Le = (a) => {
|
|
2490
2530
|
const e = /(\d+)\s*$/.exec(a.label || "");
|
|
2491
2531
|
return e ? Number(e[1]) : 1 / 0;
|
|
2492
2532
|
}, Ge = (a, e) => Le(a) - Le(e) || String(a.id).localeCompare(String(e.id));
|
|
2493
|
-
function
|
|
2533
|
+
function Ls(a, e) {
|
|
2494
2534
|
if (a.every((r) => Number.isInteger(r.round))) return (r) => r.round;
|
|
2495
2535
|
const t = bt(a, e), s = /* @__PURE__ */ new Map();
|
|
2496
2536
|
for (const r of Array.isArray(t) ? t : [t]) {
|
|
@@ -2499,10 +2539,10 @@ function Us(a, e) {
|
|
|
2499
2539
|
}
|
|
2500
2540
|
return (r) => Number.isInteger(r.round) ? r.round : s.get(r.id) || 1;
|
|
2501
2541
|
}
|
|
2502
|
-
function
|
|
2503
|
-
const s =
|
|
2542
|
+
function Gs(a, e, t) {
|
|
2543
|
+
const s = Hs(a, t);
|
|
2504
2544
|
if (!s.length) return [];
|
|
2505
|
-
const r =
|
|
2545
|
+
const r = Ls(a || [], e || []), o = /* @__PURE__ */ new Map();
|
|
2506
2546
|
for (const p of s) {
|
|
2507
2547
|
const d = r(p);
|
|
2508
2548
|
o.has(d) || o.set(d, []), o.get(d).push(p);
|
|
@@ -2516,7 +2556,7 @@ function Hs(a, e, t) {
|
|
|
2516
2556
|
let d = [...o.get(p)];
|
|
2517
2557
|
if (c) {
|
|
2518
2558
|
const h = (u) => {
|
|
2519
|
-
const f = (n.get(u.id) || []).map((
|
|
2559
|
+
const f = (n.get(u.id) || []).map((g) => c.get(g)).filter((g) => g !== void 0);
|
|
2520
2560
|
return f.length ? Math.min(...f) : 1 / 0;
|
|
2521
2561
|
};
|
|
2522
2562
|
d.sort((u, f) => h(u) - h(f) || Ge(u, f));
|
|
@@ -2526,7 +2566,7 @@ function Hs(a, e, t) {
|
|
|
2526
2566
|
}
|
|
2527
2567
|
return i;
|
|
2528
2568
|
}
|
|
2529
|
-
function
|
|
2569
|
+
function js(a, e, t) {
|
|
2530
2570
|
const s = a[`${e}TeamId`] || null, r = (t || []).find((n) => n.gameId === a.id && n.slot === e), o = a[`${e}Seed`] ?? r?.seed ?? null;
|
|
2531
2571
|
return { teamId: s, seed: o, bye: !s && !!r?.isBye };
|
|
2532
2572
|
}
|
|
@@ -2534,14 +2574,14 @@ function wt(a) {
|
|
|
2534
2574
|
const e = ne(a);
|
|
2535
2575
|
return e === "home" || e === "away" ? e : null;
|
|
2536
2576
|
}
|
|
2537
|
-
function
|
|
2577
|
+
function qs(a, e) {
|
|
2538
2578
|
const t = bt(a || [], e || []);
|
|
2539
2579
|
if (!t || Array.isArray(t)) return null;
|
|
2540
2580
|
const s = wt(t.game);
|
|
2541
2581
|
return s && t.game[`${s}TeamId`] || null;
|
|
2542
2582
|
}
|
|
2543
2583
|
const je = { active: 0, setup: 1, complete: 2 };
|
|
2544
|
-
function
|
|
2584
|
+
function Ws(a, { id: e, param: t } = {}) {
|
|
2545
2585
|
const s = a || [];
|
|
2546
2586
|
if (!s.length) return null;
|
|
2547
2587
|
for (const r of [e, t]) {
|
|
@@ -2551,7 +2591,7 @@ function js(a, { id: e, param: t } = {}) {
|
|
|
2551
2591
|
}
|
|
2552
2592
|
return [...s].sort((r, o) => (je[r.status] ?? 3) - (je[o.status] ?? 3) || String(r.name || "").localeCompare(String(o.name || "")))[0];
|
|
2553
2593
|
}
|
|
2554
|
-
const
|
|
2594
|
+
const Vs = y`
|
|
2555
2595
|
.bracket { display: flex; gap: 1rem; align-items: stretch; overflow-x: auto; padding-bottom: 0.5rem; }
|
|
2556
2596
|
.round { flex: 0 0 250px; display: flex; flex-direction: column; min-width: 0; }
|
|
2557
2597
|
.roundhead {
|
|
@@ -2598,7 +2638,7 @@ const qs = y`
|
|
|
2598
2638
|
@media (max-width: 720px) { .round { flex-basis: 215px; } }
|
|
2599
2639
|
`;
|
|
2600
2640
|
class xt extends w {
|
|
2601
|
-
static styles = [U,
|
|
2641
|
+
static styles = [U, Vs];
|
|
2602
2642
|
static properties = {
|
|
2603
2643
|
...w.properties,
|
|
2604
2644
|
sport: { type: String },
|
|
@@ -2611,7 +2651,7 @@ class xt extends w {
|
|
|
2611
2651
|
super(), this.sport = "football", this.season = "", this.tournamentId = "", this.picked = "", this.group = null;
|
|
2612
2652
|
}
|
|
2613
2653
|
async fetchData(e) {
|
|
2614
|
-
const t = this.season ||
|
|
2654
|
+
const t = this.season || Y(), s = (await e.listTournaments({ sport: this.sport, season: t })).items, r = new URLSearchParams(globalThis.location?.search || "").get("tournament"), o = Ws(s, { id: this.picked || this.tournamentId, param: r });
|
|
2615
2655
|
if (!o) return { season: t, tournaments: s, tournament: null };
|
|
2616
2656
|
const [n, i, c, p, d] = await Promise.all([
|
|
2617
2657
|
e.listSeedings(o.id),
|
|
@@ -2664,7 +2704,7 @@ class xt extends w {
|
|
|
2664
2704
|
${D(this)}
|
|
2665
2705
|
<div class="card"><div class="empty">No ${this.sport} brackets have been published for the ${e.season} season yet.</div></div>
|
|
2666
2706
|
`)}`;
|
|
2667
|
-
const r =
|
|
2707
|
+
const r = Us(e.tournament, e.games), o = r.find((h) => h.key === this.group) || r[0], n = (e.tournament.groupNames || []).length >= 2 ? e.tournament.groupNames.length : 1, i = (Number(e.tournament.size) || 0) / n, c = Gs(e.games, e.edges, o), p = Os(e.games), d = qs(e.games, e.edges);
|
|
2668
2708
|
return l`
|
|
2669
2709
|
${s}
|
|
2670
2710
|
${B(this, l`
|
|
@@ -2693,7 +2733,7 @@ class xt extends w {
|
|
|
2693
2733
|
<div class="bracket" role="region" aria-label="${o.name} bracket">
|
|
2694
2734
|
${c.map((h) => l`
|
|
2695
2735
|
<section class="round">
|
|
2696
|
-
<h3 class="roundhead">${
|
|
2736
|
+
<h3 class="roundhead">${Ms({ round: h.round, perGroup: i, groupCount: n })}</h3>
|
|
2697
2737
|
<div class="games">${h.games.map((u) => this.renderMatchup(t, u))}</div>
|
|
2698
2738
|
</section>`)}
|
|
2699
2739
|
</div>` : l`<div class="card"><div class="empty">This bracket has no games yet.</div></div>`}
|
|
@@ -2710,13 +2750,13 @@ class xt extends w {
|
|
|
2710
2750
|
${V(t)}
|
|
2711
2751
|
${t.label ? l`<span class="label">${t.label}</span>` : m}
|
|
2712
2752
|
<span class="spacer"></span>
|
|
2713
|
-
${s ? l`<a class="box" href=${
|
|
2753
|
+
${s ? l`<a class="box" href=${v(e.hrefs.game, { sport: this.sport, id: t.id })}>Box score</a>` : m}
|
|
2714
2754
|
</footer>
|
|
2715
2755
|
</article>
|
|
2716
2756
|
`;
|
|
2717
2757
|
}
|
|
2718
2758
|
renderSlot(e, t, s) {
|
|
2719
|
-
const { teamId: r, seed: o, bye: n } =
|
|
2759
|
+
const { teamId: r, seed: o, bye: n } = js(t, s, this.data.seedings), i = wt(t), c = t.state === "live" || t.state === "final";
|
|
2720
2760
|
return l`
|
|
2721
2761
|
<div class="slot ${i ? i === s ? "winner" : "loser" : ""}">
|
|
2722
2762
|
<span class="seed">${o ?? ""}</span>
|
|
@@ -2727,22 +2767,22 @@ class xt extends w {
|
|
|
2727
2767
|
}
|
|
2728
2768
|
}
|
|
2729
2769
|
globalThis?.customElements && !globalThis.customElements.get("hsot-brackets") && globalThis.customElements.define("hsot-brackets", xt);
|
|
2730
|
-
const
|
|
2731
|
-
"hsot-scores":
|
|
2732
|
-
"hsot-standings":
|
|
2733
|
-
"hsot-rankings":
|
|
2734
|
-
"hsot-school":
|
|
2770
|
+
const Ks = {
|
|
2771
|
+
"hsot-scores": dt,
|
|
2772
|
+
"hsot-standings": pt,
|
|
2773
|
+
"hsot-rankings": mt,
|
|
2774
|
+
"hsot-school": ut,
|
|
2735
2775
|
"hsot-boxscore": vt,
|
|
2736
2776
|
"hsot-school-search": $t,
|
|
2737
2777
|
"hsot-brackets": xt
|
|
2738
2778
|
};
|
|
2739
|
-
function
|
|
2779
|
+
function Ys() {
|
|
2740
2780
|
const a = globalThis?.customElements;
|
|
2741
2781
|
if (a)
|
|
2742
|
-
for (const [e, t] of Object.entries(
|
|
2782
|
+
for (const [e, t] of Object.entries(Ks))
|
|
2743
2783
|
a.get(e) || a.define(e, t);
|
|
2744
2784
|
}
|
|
2745
|
-
typeof window < "u" && globalThis.customElements &&
|
|
2785
|
+
typeof window < "u" && globalThis.customElements && Ys();
|
|
2746
2786
|
export {
|
|
2747
|
-
|
|
2787
|
+
Ys as defineAll
|
|
2748
2788
|
};
|