@wral/hsot-data 0.1.8 → 0.1.10
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 +7 -5
- package/dist/define.mjs +1 -1
- package/dist/define.standalone.js +325 -311
- package/dist/{hsot-school-search-R6y64nMR.js → hsot-school-search-CKZtwPCA.js} +433 -419
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
|
@@ -17,14 +17,14 @@ let Ft = class {
|
|
|
17
17
|
return this.cssText;
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
const
|
|
20
|
+
const se = (a) => new Ft(typeof a == "string" ? a : a + "", void 0, lt), b = (a, ...t) => {
|
|
21
21
|
const e = a.length === 1 ? a[0] : t.reduce((s, r, o) => s + ((i) => {
|
|
22
22
|
if (i._$cssResult$ === !0) return i.cssText;
|
|
23
23
|
if (typeof i == "number") return i;
|
|
24
24
|
throw Error("Value passed to 'css' function must be a 'css' function result: " + i + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
|
|
25
25
|
})(r) + a[o + 1], a[0]);
|
|
26
26
|
return new Ft(e, a, lt);
|
|
27
|
-
},
|
|
27
|
+
}, ae = (a, t) => {
|
|
28
28
|
if (nt) a.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
|
|
29
29
|
else for (const e of t) {
|
|
30
30
|
const s = document.createElement("style"), r = V.litNonce;
|
|
@@ -33,12 +33,12 @@ const ee = (a) => new Ft(typeof a == "string" ? a : a + "", void 0, lt), b = (a,
|
|
|
33
33
|
}, xt = nt ? (a) => a : (a) => a instanceof CSSStyleSheet ? ((t) => {
|
|
34
34
|
let e = "";
|
|
35
35
|
for (const s of t.cssRules) e += s.cssText;
|
|
36
|
-
return
|
|
36
|
+
return se(e);
|
|
37
37
|
})(a) : a;
|
|
38
|
-
const { is:
|
|
38
|
+
const { is: re, defineProperty: oe, getOwnPropertyDescriptor: ie, getOwnPropertyNames: ne, getOwnPropertySymbols: le, getPrototypeOf: ce } = Object, X = globalThis, kt = X.trustedTypes, he = kt ? kt.emptyScript : "", de = X.reactiveElementPolyfillSupport, B = (a, t) => a, it = { toAttribute(a, t) {
|
|
39
39
|
switch (t) {
|
|
40
40
|
case Boolean:
|
|
41
|
-
a = a ?
|
|
41
|
+
a = a ? he : null;
|
|
42
42
|
break;
|
|
43
43
|
case Object:
|
|
44
44
|
case Array:
|
|
@@ -63,7 +63,7 @@ const { is: ae, defineProperty: re, getOwnPropertyDescriptor: oe, getOwnProperty
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
return e;
|
|
66
|
-
} }, Nt = (a, t) => !
|
|
66
|
+
} }, Nt = (a, t) => !re(a, t), _t = { attribute: !0, type: String, converter: it, reflect: !1, useDefault: !1, hasChanged: Nt };
|
|
67
67
|
Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), X.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
|
|
68
68
|
let I = class extends HTMLElement {
|
|
69
69
|
static addInitializer(t) {
|
|
@@ -75,11 +75,11 @@ let I = class extends HTMLElement {
|
|
|
75
75
|
static createProperty(t, e = _t) {
|
|
76
76
|
if (e.state && (e.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t) && ((e = Object.create(e)).wrapped = !0), this.elementProperties.set(t, e), !e.noAccessor) {
|
|
77
77
|
const s = /* @__PURE__ */ Symbol(), r = this.getPropertyDescriptor(t, s, e);
|
|
78
|
-
r !== void 0 &&
|
|
78
|
+
r !== void 0 && oe(this.prototype, t, r);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
static getPropertyDescriptor(t, e, s) {
|
|
82
|
-
const { get: r, set: o } =
|
|
82
|
+
const { get: r, set: o } = ie(this.prototype, t) ?? { get() {
|
|
83
83
|
return this[e];
|
|
84
84
|
}, set(i) {
|
|
85
85
|
this[e] = i;
|
|
@@ -94,13 +94,13 @@ let I = class extends HTMLElement {
|
|
|
94
94
|
}
|
|
95
95
|
static _$Ei() {
|
|
96
96
|
if (this.hasOwnProperty(B("elementProperties"))) return;
|
|
97
|
-
const t =
|
|
97
|
+
const t = ce(this);
|
|
98
98
|
t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
|
|
99
99
|
}
|
|
100
100
|
static finalize() {
|
|
101
101
|
if (this.hasOwnProperty(B("finalized"))) return;
|
|
102
102
|
if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(B("properties"))) {
|
|
103
|
-
const e = this.properties, s = [...
|
|
103
|
+
const e = this.properties, s = [...ne(e), ...le(e)];
|
|
104
104
|
for (const r of s) this.createProperty(r, e[r]);
|
|
105
105
|
}
|
|
106
106
|
const t = this[Symbol.metadata];
|
|
@@ -146,7 +146,7 @@ let I = class extends HTMLElement {
|
|
|
146
146
|
}
|
|
147
147
|
createRenderRoot() {
|
|
148
148
|
const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
|
|
149
|
-
return
|
|
149
|
+
return ae(t, this.constructor.elementStyles), t;
|
|
150
150
|
}
|
|
151
151
|
connectedCallback() {
|
|
152
152
|
this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach((t) => t.hostConnected?.());
|
|
@@ -246,41 +246,41 @@ let I = class extends HTMLElement {
|
|
|
246
246
|
firstUpdated(t) {
|
|
247
247
|
}
|
|
248
248
|
};
|
|
249
|
-
I.elementStyles = [], I.shadowRootOptions = { mode: "open" }, I[B("elementProperties")] = /* @__PURE__ */ new Map(), I[B("finalized")] = /* @__PURE__ */ new Map(),
|
|
250
|
-
const ct = globalThis, St = (a) => a, Y = ct.trustedTypes, At = Y ? Y.createPolicy("lit-html", { createHTML: (a) => a }) : void 0,
|
|
249
|
+
I.elementStyles = [], I.shadowRootOptions = { mode: "open" }, I[B("elementProperties")] = /* @__PURE__ */ new Map(), I[B("finalized")] = /* @__PURE__ */ new Map(), de?.({ ReactiveElement: I }), (X.reactiveElementVersions ??= []).push("2.1.2");
|
|
250
|
+
const ct = globalThis, St = (a) => a, Y = ct.trustedTypes, At = Y ? Y.createPolicy("lit-html", { createHTML: (a) => a }) : void 0, Ut = "$lit$", k = `lit$${Math.random().toFixed(9).slice(2)}$`, Ot = "?" + k, pe = `<${Ot}>`, T = document, F = () => T.createComment(""), N = (a) => a === null || typeof a != "object" && typeof a != "function", ht = Array.isArray, me = (a) => ht(a) || typeof a?.[Symbol.iterator] == "function", rt = `[
|
|
251
251
|
\f\r]`, R = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, Tt = /-->/g, It = />/g, S = RegExp(`>|${rt}(?:([^\\s"'>=/]+)(${rt}*=${rt}*(?:[^
|
|
252
|
-
\f\r"'\`<>=]|("|')|))|$)`, "g"),
|
|
252
|
+
\f\r"'\`<>=]|("|')|))|$)`, "g"), Ct = /'/g, Et = /"/g, Ht = /^(?:script|style|textarea|title)$/i, Mt = (a) => (t, ...e) => ({ _$litType$: a, strings: t, values: e }), c = Mt(1), Pt = Mt(2), P = /* @__PURE__ */ Symbol.for("lit-noChange"), m = /* @__PURE__ */ Symbol.for("lit-nothing"), Dt = /* @__PURE__ */ new WeakMap(), A = T.createTreeWalker(T, 129);
|
|
253
253
|
function Lt(a, t) {
|
|
254
254
|
if (!ht(a) || !a.hasOwnProperty("raw")) throw Error("invalid template strings array");
|
|
255
255
|
return At !== void 0 ? At.createHTML(t) : t;
|
|
256
256
|
}
|
|
257
|
-
const
|
|
257
|
+
const fe = (a, t) => {
|
|
258
258
|
const e = a.length - 1, s = [];
|
|
259
259
|
let r, o = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", i = R;
|
|
260
260
|
for (let n = 0; n < e; n++) {
|
|
261
261
|
const d = a[n];
|
|
262
|
-
let
|
|
263
|
-
for (; f < d.length && (i.lastIndex = f, h = i.exec(d), h !== null); ) f = i.lastIndex, i === R ? h[1] === "!--" ? i = Tt : h[1] !== void 0 ? i = It : h[2] !== void 0 ? (Ht.test(h[2]) && (r = RegExp("</" + h[2], "g")), i = S) : h[3] !== void 0 && (i = S) : i === S ? h[0] === ">" ? (i = r ?? R, p = -1) : h[1] === void 0 ? p = -2 : (p = i.lastIndex - h[2].length,
|
|
262
|
+
let l, h, p = -1, f = 0;
|
|
263
|
+
for (; f < d.length && (i.lastIndex = f, h = i.exec(d), h !== null); ) f = i.lastIndex, i === R ? h[1] === "!--" ? i = Tt : h[1] !== void 0 ? i = It : h[2] !== void 0 ? (Ht.test(h[2]) && (r = RegExp("</" + h[2], "g")), i = S) : h[3] !== void 0 && (i = S) : i === S ? h[0] === ">" ? (i = r ?? R, p = -1) : h[1] === void 0 ? p = -2 : (p = i.lastIndex - h[2].length, l = h[1], i = h[3] === void 0 ? S : h[3] === '"' ? Et : Ct) : i === Et || i === Ct ? i = S : i === Tt || i === It ? i = R : (i = S, r = void 0);
|
|
264
264
|
const u = i === S && a[n + 1].startsWith("/>") ? " " : "";
|
|
265
|
-
o += i === R ? d +
|
|
265
|
+
o += i === R ? d + pe : p >= 0 ? (s.push(l), d.slice(0, p) + Ut + d.slice(p) + k + u) : d + k + (p === -2 ? n : u);
|
|
266
266
|
}
|
|
267
267
|
return [Lt(a, o + (a[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
|
|
268
268
|
};
|
|
269
|
-
class
|
|
269
|
+
class U {
|
|
270
270
|
constructor({ strings: t, _$litType$: e }, s) {
|
|
271
271
|
let r;
|
|
272
272
|
this.parts = [];
|
|
273
273
|
let o = 0, i = 0;
|
|
274
|
-
const n = t.length - 1, d = this.parts, [
|
|
275
|
-
if (this.el =
|
|
274
|
+
const n = t.length - 1, d = this.parts, [l, h] = fe(t, e);
|
|
275
|
+
if (this.el = U.createElement(l, s), A.currentNode = this.el.content, e === 2 || e === 3) {
|
|
276
276
|
const p = this.el.content.firstChild;
|
|
277
277
|
p.replaceWith(...p.childNodes);
|
|
278
278
|
}
|
|
279
279
|
for (; (r = A.nextNode()) !== null && d.length < n; ) {
|
|
280
280
|
if (r.nodeType === 1) {
|
|
281
|
-
if (r.hasAttributes()) for (const p of r.getAttributeNames()) if (p.endsWith(
|
|
281
|
+
if (r.hasAttributes()) for (const p of r.getAttributeNames()) if (p.endsWith(Ut)) {
|
|
282
282
|
const f = h[i++], u = r.getAttribute(p).split(k), $ = /([.?@])?(.*)/.exec(f);
|
|
283
|
-
d.push({ type: 1, index: o, name: $[2], strings: u, ctor: $[1] === "." ?
|
|
283
|
+
d.push({ type: 1, index: o, name: $[2], strings: u, ctor: $[1] === "." ? ge : $[1] === "?" ? ve : $[1] === "@" ? $e : tt }), r.removeAttribute(p);
|
|
284
284
|
} else p.startsWith(k) && (d.push({ type: 6, index: o }), r.removeAttribute(p));
|
|
285
285
|
if (Ht.test(r.tagName)) {
|
|
286
286
|
const p = r.textContent.split(k), f = p.length - 1;
|
|
@@ -290,7 +290,7 @@ class O {
|
|
|
290
290
|
r.append(p[f], F());
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
|
-
} else if (r.nodeType === 8) if (r.data ===
|
|
293
|
+
} else if (r.nodeType === 8) if (r.data === Ot) d.push({ type: 2, index: o });
|
|
294
294
|
else {
|
|
295
295
|
let p = -1;
|
|
296
296
|
for (; (p = r.data.indexOf(k, p + 1)) !== -1; ) d.push({ type: 7, index: o }), p += k.length - 1;
|
|
@@ -309,7 +309,7 @@ function D(a, t, e = a, s) {
|
|
|
309
309
|
const o = N(t) ? void 0 : t._$litDirective$;
|
|
310
310
|
return r?.constructor !== o && (r?._$AO?.(!1), o === void 0 ? r = void 0 : (r = new o(a), r._$AT(a, e, s)), s !== void 0 ? (e._$Co ??= [])[s] = r : e._$Cl = r), r !== void 0 && (t = D(a, r._$AS(a, t.values), r, s)), t;
|
|
311
311
|
}
|
|
312
|
-
class
|
|
312
|
+
class ue {
|
|
313
313
|
constructor(t, e) {
|
|
314
314
|
this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
|
|
315
315
|
}
|
|
@@ -325,8 +325,8 @@ class fe {
|
|
|
325
325
|
let o = A.nextNode(), i = 0, n = 0, d = s[0];
|
|
326
326
|
for (; d !== void 0; ) {
|
|
327
327
|
if (i === d.index) {
|
|
328
|
-
let
|
|
329
|
-
d.type === 2 ?
|
|
328
|
+
let l;
|
|
329
|
+
d.type === 2 ? l = new M(o, o.nextSibling, this, t) : d.type === 1 ? l = new d.ctor(o, d.name, d.strings, this, t) : d.type === 6 && (l = new be(o, this, t)), this._$AV.push(l), d = s[++n];
|
|
330
330
|
}
|
|
331
331
|
i !== d?.index && (o = A.nextNode(), i++);
|
|
332
332
|
}
|
|
@@ -356,7 +356,7 @@ class M {
|
|
|
356
356
|
return this._$AB;
|
|
357
357
|
}
|
|
358
358
|
_$AI(t, e = this) {
|
|
359
|
-
t = D(this, t, e), N(t) ? t === m || t == null || t === "" ? (this._$AH !== m && this._$AR(), this._$AH = m) : t !== this._$AH && t !== P && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) :
|
|
359
|
+
t = D(this, t, e), N(t) ? t === m || t == null || t === "" ? (this._$AH !== m && this._$AR(), this._$AH = m) : t !== this._$AH && t !== P && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : me(t) ? this.k(t) : this._(t);
|
|
360
360
|
}
|
|
361
361
|
O(t) {
|
|
362
362
|
return this._$AA.parentNode.insertBefore(t, this._$AB);
|
|
@@ -368,16 +368,16 @@ class M {
|
|
|
368
368
|
this._$AH !== m && N(this._$AH) ? this._$AA.nextSibling.data = t : this.T(T.createTextNode(t)), this._$AH = t;
|
|
369
369
|
}
|
|
370
370
|
$(t) {
|
|
371
|
-
const { values: e, _$litType$: s } = t, r = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el =
|
|
371
|
+
const { values: e, _$litType$: s } = t, r = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = U.createElement(Lt(s.h, s.h[0]), this.options)), s);
|
|
372
372
|
if (this._$AH?._$AD === r) this._$AH.p(e);
|
|
373
373
|
else {
|
|
374
|
-
const o = new
|
|
374
|
+
const o = new ue(r, this), i = o.u(this.options);
|
|
375
375
|
o.p(e), this.T(i), this._$AH = o;
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
378
|
_$AC(t) {
|
|
379
379
|
let e = Dt.get(t.strings);
|
|
380
|
-
return e === void 0 && Dt.set(t.strings, e = new
|
|
380
|
+
return e === void 0 && Dt.set(t.strings, e = new U(t)), e;
|
|
381
381
|
}
|
|
382
382
|
k(t) {
|
|
383
383
|
ht(this._$AH) || (this._$AH = [], this._$AR());
|
|
@@ -412,8 +412,8 @@ class tt {
|
|
|
412
412
|
if (o === void 0) t = D(this, t, e, 0), i = !N(t) || t !== this._$AH && t !== P, i && (this._$AH = t);
|
|
413
413
|
else {
|
|
414
414
|
const n = t;
|
|
415
|
-
let d,
|
|
416
|
-
for (t = o[0], d = 0; d < o.length - 1; d++)
|
|
415
|
+
let d, l;
|
|
416
|
+
for (t = o[0], d = 0; d < o.length - 1; d++) l = D(this, n[s + d], e, d), l === P && (l = this._$AH[d]), i ||= !N(l) || l !== this._$AH[d], l === m ? t = m : t !== m && (t += (l ?? "") + o[d + 1]), this._$AH[d] = l;
|
|
417
417
|
}
|
|
418
418
|
i && !r && this.j(t);
|
|
419
419
|
}
|
|
@@ -421,7 +421,7 @@ class tt {
|
|
|
421
421
|
t === m ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
|
|
422
422
|
}
|
|
423
423
|
}
|
|
424
|
-
class
|
|
424
|
+
class ge extends tt {
|
|
425
425
|
constructor() {
|
|
426
426
|
super(...arguments), this.type = 3;
|
|
427
427
|
}
|
|
@@ -429,7 +429,7 @@ class ue extends tt {
|
|
|
429
429
|
this.element[this.name] = t === m ? void 0 : t;
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
|
-
class
|
|
432
|
+
class ve extends tt {
|
|
433
433
|
constructor() {
|
|
434
434
|
super(...arguments), this.type = 4;
|
|
435
435
|
}
|
|
@@ -437,7 +437,7 @@ class ge extends tt {
|
|
|
437
437
|
this.element.toggleAttribute(this.name, !!t && t !== m);
|
|
438
438
|
}
|
|
439
439
|
}
|
|
440
|
-
class
|
|
440
|
+
class $e extends tt {
|
|
441
441
|
constructor(t, e, s, r, o) {
|
|
442
442
|
super(t, e, s, r, o), this.type = 5;
|
|
443
443
|
}
|
|
@@ -450,7 +450,7 @@ class ve extends tt {
|
|
|
450
450
|
typeof this._$AH == "function" ? this._$AH.call(this.options?.host ?? this.element, t) : this._$AH.handleEvent(t);
|
|
451
451
|
}
|
|
452
452
|
}
|
|
453
|
-
class
|
|
453
|
+
class be {
|
|
454
454
|
constructor(t, e, s) {
|
|
455
455
|
this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
|
|
456
456
|
}
|
|
@@ -461,9 +461,9 @@ class $e {
|
|
|
461
461
|
D(this, t);
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
|
-
const
|
|
465
|
-
|
|
466
|
-
const
|
|
464
|
+
const ye = ct.litHtmlPolyfillSupport;
|
|
465
|
+
ye?.(U, M), (ct.litHtmlVersions ??= []).push("3.3.3");
|
|
466
|
+
const we = (a, t, e) => {
|
|
467
467
|
const s = e?.renderBefore ?? t;
|
|
468
468
|
let r = s._$litPart$;
|
|
469
469
|
if (r === void 0) {
|
|
@@ -473,7 +473,7 @@ const ye = (a, t, e) => {
|
|
|
473
473
|
return r._$AI(a), r;
|
|
474
474
|
};
|
|
475
475
|
const dt = globalThis;
|
|
476
|
-
class
|
|
476
|
+
class E extends I {
|
|
477
477
|
constructor() {
|
|
478
478
|
super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
|
|
479
479
|
}
|
|
@@ -483,7 +483,7 @@ class C extends I {
|
|
|
483
483
|
}
|
|
484
484
|
update(t) {
|
|
485
485
|
const e = this.render();
|
|
486
|
-
this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do =
|
|
486
|
+
this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = we(e, this.renderRoot, this.renderOptions);
|
|
487
487
|
}
|
|
488
488
|
connectedCallback() {
|
|
489
489
|
super.connectedCallback(), this._$Do?.setConnected(!0);
|
|
@@ -495,38 +495,38 @@ class C extends I {
|
|
|
495
495
|
return P;
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
|
-
|
|
499
|
-
const
|
|
500
|
-
|
|
498
|
+
E._$litElement$ = !0, E.finalized = !0, dt.litElementHydrateSupport?.({ LitElement: E });
|
|
499
|
+
const xe = dt.litElementPolyfillSupport;
|
|
500
|
+
xe?.({ LitElement: E });
|
|
501
501
|
(dt.litElementVersions ??= []).push("4.2.2");
|
|
502
|
-
const
|
|
503
|
-
function
|
|
502
|
+
const ke = 50;
|
|
503
|
+
function _e(a = {}) {
|
|
504
504
|
const t = Object.entries(a).filter(([, s]) => s != null && s !== "");
|
|
505
505
|
if (!t.length) return "";
|
|
506
506
|
const e = new URLSearchParams();
|
|
507
507
|
return t.forEach(([s, r]) => e.set(s, String(r))), `?${e.toString()}`;
|
|
508
508
|
}
|
|
509
|
-
function
|
|
509
|
+
function Se({ baseUrl: a, token: t = "", fetchFn: e } = {}) {
|
|
510
510
|
if (!a) throw new Error("createClient requires a baseUrl");
|
|
511
511
|
const s = a.replace(/\/+$/, ""), r = e || ((...n) => fetch(...n));
|
|
512
512
|
async function o(n) {
|
|
513
513
|
const d = { Accept: "application/json" };
|
|
514
514
|
t && (d.Authorization = `Bearer ${t}`);
|
|
515
|
-
const
|
|
516
|
-
if (!
|
|
517
|
-
const h = new Error(`api-hsot ${
|
|
518
|
-
throw h.status =
|
|
515
|
+
const l = await r(`${s}${n}`, { headers: d });
|
|
516
|
+
if (!l.ok) {
|
|
517
|
+
const h = new Error(`api-hsot ${l.status} on ${n}`);
|
|
518
|
+
throw h.status = l.status, h;
|
|
519
519
|
}
|
|
520
|
-
return
|
|
520
|
+
return l.json();
|
|
521
521
|
}
|
|
522
522
|
async function i(n, d = {}) {
|
|
523
|
-
const
|
|
523
|
+
const l = [];
|
|
524
524
|
let h = null;
|
|
525
|
-
for (let p = 0; p <
|
|
526
|
-
const f =
|
|
527
|
-
if (
|
|
525
|
+
for (let p = 0; p < ke; p += 1) {
|
|
526
|
+
const f = _e(h ? { ...d, cursor: h } : d), u = await o(`${n}${f}`);
|
|
527
|
+
if (l.push(...u.items || []), h = u.nextCursor || null, !h) break;
|
|
528
528
|
}
|
|
529
|
-
return { items:
|
|
529
|
+
return { items: l, total: l.length, nextCursor: null };
|
|
530
530
|
}
|
|
531
531
|
return {
|
|
532
532
|
listSchools: (n) => i("/schools", n),
|
|
@@ -572,7 +572,7 @@ function pt(a) {
|
|
|
572
572
|
const s = t >= 12 ? "PM" : "AM";
|
|
573
573
|
return `${(t + 11) % 12 + 1}:${String(e || 0).padStart(2, "0")} ${s}`;
|
|
574
574
|
}
|
|
575
|
-
function
|
|
575
|
+
function Ae(a) {
|
|
576
576
|
return a ? `${Math.floor(a / 12)}-${a % 12}` : "·";
|
|
577
577
|
}
|
|
578
578
|
function et(a = /* @__PURE__ */ new Date()) {
|
|
@@ -583,7 +583,7 @@ function mt(a = /* @__PURE__ */ new Date()) {
|
|
|
583
583
|
const t = (e) => String(e).padStart(2, "0");
|
|
584
584
|
return `${a.getFullYear()}-${t(a.getMonth() + 1)}-${t(a.getDate())}`;
|
|
585
585
|
}
|
|
586
|
-
function
|
|
586
|
+
function Te(a, t = mt()) {
|
|
587
587
|
const e = [...new Set((a || []).filter(Boolean))].sort();
|
|
588
588
|
if (!e.length || e.includes(t)) return t;
|
|
589
589
|
const s = e.filter((r) => r < t);
|
|
@@ -597,7 +597,7 @@ function K(a) {
|
|
|
597
597
|
const t = parseInt(a.slice(1), 16), e = t >> 16 & 255, s = t >> 8 & 255, r = t & 255;
|
|
598
598
|
return 0.299 * e + 0.587 * s + 0.114 * r > 150 ? "#0F1B33" : "#FFFFFF";
|
|
599
599
|
}
|
|
600
|
-
const
|
|
600
|
+
const Ie = (a) => {
|
|
601
601
|
const t = ["th", "st", "nd", "rd"], e = a % 100;
|
|
602
602
|
return a + (t[(e - 20) % 10] || t[e] || t[0]);
|
|
603
603
|
};
|
|
@@ -609,7 +609,7 @@ function jt(a) {
|
|
|
609
609
|
}
|
|
610
610
|
return a.state === "postponed" ? { kind: "warn", label: "Postponed" } : a.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${y(a.date, { month: "short", day: "numeric" })} · ${pt(a.time)}`.replace(/ · $/, "") };
|
|
611
611
|
}
|
|
612
|
-
const
|
|
612
|
+
const Ce = /* @__PURE__ */ new Set(["game", "story", "page", "forum", "video", "gallery"]);
|
|
613
613
|
function _(a) {
|
|
614
614
|
let t = String(a || "").replace(/^[a-z][a-z0-9+.-]*:\/\/[^/#?]*/i, "");
|
|
615
615
|
const e = t.indexOf("#");
|
|
@@ -634,9 +634,9 @@ function Ee(a, t, e) {
|
|
|
634
634
|
if (s === i) return "";
|
|
635
635
|
if (!s.startsWith(`${i}/`)) return null;
|
|
636
636
|
const n = s.slice(i.length + 1), d = n.split("/");
|
|
637
|
-
return d.length > 2 || d.some((
|
|
637
|
+
return d.length > 2 || d.some((l) => !/^[a-z][a-z-]*$/.test(l)) || Ce.has(d[0]) ? null : n;
|
|
638
638
|
}
|
|
639
|
-
function
|
|
639
|
+
function Pe(a, t, e) {
|
|
640
640
|
const s = (i) => g(e.section, { sport: a, view: i }).replace(/([^:])\/{2,}/g, "$1/"), o = new Set((t || []).map((i) => i && i.gender).filter((i) => i === "boys" || i === "girls")).size === 2 ? [
|
|
641
641
|
{ label: "Boys Standings", href: s("boys/standings") },
|
|
642
642
|
{ label: "Girls Standings", href: s("girls/standings") }
|
|
@@ -649,12 +649,12 @@ function Ce(a, t, e) {
|
|
|
649
649
|
{ label: "Polls & Rankings", href: s("rankings") }
|
|
650
650
|
];
|
|
651
651
|
}
|
|
652
|
-
function
|
|
652
|
+
function De(a, t = Wt()) {
|
|
653
653
|
const e = _(t);
|
|
654
654
|
for (const s of a.querySelectorAll(':scope > a[slot="nav"]'))
|
|
655
655
|
e && _(s.getAttribute("href")) === e ? s.setAttribute("aria-current", "page") : s.removeAttribute("aria-current");
|
|
656
656
|
}
|
|
657
|
-
class w extends
|
|
657
|
+
class w extends E {
|
|
658
658
|
static properties = {
|
|
659
659
|
api: { type: String },
|
|
660
660
|
refreshInterval: { type: Number, attribute: "refresh-interval" },
|
|
@@ -673,7 +673,7 @@ class w extends C {
|
|
|
673
673
|
this._client = t, this.isConnected && this.load();
|
|
674
674
|
}
|
|
675
675
|
get client() {
|
|
676
|
-
return this._client ? this._client : this.api ?
|
|
676
|
+
return this._client ? this._client : this.api ? Se({ baseUrl: this.api }) : null;
|
|
677
677
|
}
|
|
678
678
|
connectedCallback() {
|
|
679
679
|
super.connectedCallback(), this._setupInterval();
|
|
@@ -685,7 +685,7 @@ class w extends C {
|
|
|
685
685
|
this.load();
|
|
686
686
|
}
|
|
687
687
|
updated(t) {
|
|
688
|
-
t.has("api") && t.get("api") !== void 0 && t.get("api") !== this.api && this.load(), t.has("refreshInterval") && this._setupInterval(),
|
|
688
|
+
t.has("api") && t.get("api") !== void 0 && t.get("api") !== this.api && this.load(), t.has("refreshInterval") && this._setupInterval(), De(this);
|
|
689
689
|
}
|
|
690
690
|
async load() {
|
|
691
691
|
const t = this.client;
|
|
@@ -714,13 +714,13 @@ class w extends C {
|
|
|
714
714
|
this._refreshId && (clearInterval(this._refreshId), this._refreshId = null);
|
|
715
715
|
}
|
|
716
716
|
render() {
|
|
717
|
-
return this.error === "not-configured" ?
|
|
717
|
+
return this.error === "not-configured" ? c`<div class="error">This component needs an <code>api</code> attribute (the api-hsot public read-surface base URL) or an injected client.</div>` : this.error ? c`<div class="error">Unable to load right now. <button class="chip" @click=${() => this.load()}>Retry</button></div>` : this.data ? this.renderView() : c`<div class="loading" role="status">Loading…</div>`;
|
|
718
718
|
}
|
|
719
719
|
renderView() {
|
|
720
|
-
return
|
|
720
|
+
return c``;
|
|
721
721
|
}
|
|
722
722
|
}
|
|
723
|
-
const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])),
|
|
723
|
+
const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ze = b`
|
|
724
724
|
:host {
|
|
725
725
|
--hsot-red: var(--color-red, #D1232A);
|
|
726
726
|
--hsot-red-deep: var(--color-red-dark, #951C21);
|
|
@@ -758,7 +758,7 @@ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
|
|
|
758
758
|
outline-offset: 1px;
|
|
759
759
|
}
|
|
760
760
|
.mut { color: var(--hsot-gray-5); }
|
|
761
|
-
`,
|
|
761
|
+
`, Re = b`
|
|
762
762
|
.band { background: var(--hsot-white); color: var(--hsot-black); }
|
|
763
763
|
.band .inner { max-width: 1366px; margin: 0 auto; padding: 1.1rem 1.25rem 0; }
|
|
764
764
|
.band h1, .band h2.bandtitle {
|
|
@@ -807,7 +807,7 @@ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
|
|
|
807
807
|
@media (max-width: 720px) {
|
|
808
808
|
.band h1, .band h2.bandtitle, .band.section h1, .band.section h2.bandtitle { font-size: 1.8rem; }
|
|
809
809
|
}
|
|
810
|
-
`,
|
|
810
|
+
`, Be = b`
|
|
811
811
|
.view { max-width: 1366px; margin: 0 auto; padding: 1.25rem; box-sizing: border-box; }
|
|
812
812
|
/* Optional right rail (slot="rail" light-DOM children): a divided 300px
|
|
813
813
|
column on desktop, stacked under the view content on smaller screens. */
|
|
@@ -871,7 +871,7 @@ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
|
|
|
871
871
|
.error { padding: 1.2rem 1rem; color: var(--hsot-red-deep); font-size: 0.9rem; }
|
|
872
872
|
.note { font-size: 0.8125rem; color: var(--hsot-gray-5); margin: 0.6rem 0 0; }
|
|
873
873
|
.loading { padding: 1.2rem; color: var(--hsot-gray-5); font-family: var(--hsot-heading-font); }
|
|
874
|
-
`,
|
|
874
|
+
`, Fe = b`
|
|
875
875
|
.pill {
|
|
876
876
|
display: inline-block; font-family: var(--hsot-heading-font); font-weight: 700;
|
|
877
877
|
font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.04em;
|
|
@@ -886,7 +886,7 @@ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
|
|
|
886
886
|
.pill.champ { background: var(--hsot-straw); color: #6b5900; }
|
|
887
887
|
@keyframes hsot-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } }
|
|
888
888
|
@media (prefers-reduced-motion: reduce) { .pill.live { animation: none; } }
|
|
889
|
-
`,
|
|
889
|
+
`, Ne = b`
|
|
890
890
|
.tablewrap { overflow-x: auto; }
|
|
891
891
|
table.data { font-family: var(--hsot-heading-font); font-size: 14px; border-collapse: collapse; width: 100%; }
|
|
892
892
|
table.data th {
|
|
@@ -904,7 +904,7 @@ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
|
|
|
904
904
|
table.data tbody tr.rowlink:hover { background: var(--hsot-gray-1); }
|
|
905
905
|
table.data td.teamcell a { color: inherit; text-decoration: none; font-weight: 500; }
|
|
906
906
|
table.data td.teamcell a:hover { text-decoration: underline; }
|
|
907
|
-
`,
|
|
907
|
+
`, Ue = b`
|
|
908
908
|
.swatch {
|
|
909
909
|
display: inline-flex; align-items: center; justify-content: center;
|
|
910
910
|
width: 26px; height: 26px; border-radius: 50%;
|
|
@@ -978,21 +978,21 @@ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
|
|
|
978
978
|
.gamelist .ff { color: var(--hsot-gray-5); font-size: 0.78rem; font-style: italic; }
|
|
979
979
|
.gamelist .where { color: var(--hsot-gray-5); font-size: 0.78rem; }
|
|
980
980
|
.gamelist a.box { font-size: 0.78rem; }
|
|
981
|
-
`, j = [
|
|
981
|
+
`, j = [ze, Re, Be, Fe, Ne, Ue, Oe];
|
|
982
982
|
function ut(a) {
|
|
983
|
-
return a.state !== "final" ? null : a.forfeit
|
|
983
|
+
return a.state !== "final" ? null : a.forfeit === "home" ? "away" : a.forfeit === "away" || a.homeScore > a.awayScore ? "home" : a.awayScore > a.homeScore ? "away" : a.tiebreakWinner && a.tiebreakWinner !== "none" ? a.tiebreakWinner : "tie";
|
|
984
984
|
}
|
|
985
|
-
function
|
|
986
|
-
return
|
|
985
|
+
function He(a) {
|
|
986
|
+
return a && (a.forfeit === "home" || a.forfeit === "away") ? a.forfeit : null;
|
|
987
987
|
}
|
|
988
988
|
function W(a, t) {
|
|
989
989
|
const e = {}, s = (o) => (e[o] = e[o] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, e[o]), r = a.filter((o) => o.state === "final" && o.gameType !== "scrimmage" && !0).sort((o, i) => String(o.date).localeCompare(String(i.date)));
|
|
990
990
|
for (const o of r) {
|
|
991
991
|
const i = ut(o), n = o.gameType === "conference";
|
|
992
992
|
for (const d of ["home", "away"]) {
|
|
993
|
-
const
|
|
994
|
-
if (!
|
|
995
|
-
const h = s(
|
|
993
|
+
const l = d === "home" ? o.homeTeamId : o.awayTeamId;
|
|
994
|
+
if (!l) continue;
|
|
995
|
+
const h = s(l), p = d === "home" ? o.homeScore : o.awayScore, f = d === "home" ? o.awayScore : o.homeScore;
|
|
996
996
|
h.pf += p, h.pa += f;
|
|
997
997
|
let u = "T";
|
|
998
998
|
i === "tie" ? (h.t += 1, n && (h.ct += 1)) : i === d ? (h.w += 1, n && (h.cw += 1), u = "W") : (h.l += 1, n && (h.cl += 1), u = "L"), h.results.push({ gameId: o.id, date: o.date, mark: u, my: p, their: f, opp: d === "home" ? o.awayTeamId : o.homeTeamId, conf: n });
|
|
@@ -1035,17 +1035,17 @@ function vt(a, t, e, s, r) {
|
|
|
1035
1035
|
const i = /* @__PURE__ */ new Map();
|
|
1036
1036
|
for (const d of a || []) {
|
|
1037
1037
|
if (d.sport !== s || r && d.effectiveDate > r || d.gender && o.gender !== d.gender && o.gender !== "coed") continue;
|
|
1038
|
-
const
|
|
1039
|
-
(!h || d.effectiveDate > h.effectiveDate) && i.set(
|
|
1038
|
+
const l = d.gender || "", h = i.get(l);
|
|
1039
|
+
(!h || d.effectiveDate > h.effectiveDate) && i.set(l, d);
|
|
1040
1040
|
}
|
|
1041
1041
|
let n = null;
|
|
1042
1042
|
for (const d of i.values()) {
|
|
1043
|
-
const
|
|
1044
|
-
|
|
1043
|
+
const l = (d.teamIds || []).indexOf(e);
|
|
1044
|
+
l !== -1 && (!n || d.effectiveDate > n.effectiveDate) && (n = { poll: d, rank: l + 1 });
|
|
1045
1045
|
}
|
|
1046
1046
|
return n ? n.rank : null;
|
|
1047
1047
|
}
|
|
1048
|
-
function
|
|
1048
|
+
function Me(a, t, e) {
|
|
1049
1049
|
if (!a) return { kind: "none", delta: 0 };
|
|
1050
1050
|
const s = (a.teamIds || []).indexOf(e) + 1;
|
|
1051
1051
|
if (!s) return { kind: "none", delta: 0 };
|
|
@@ -1055,28 +1055,36 @@ function He(a, t, e) {
|
|
|
1055
1055
|
const o = r - s;
|
|
1056
1056
|
return o > 0 ? { kind: "up", delta: o } : o < 0 ? { kind: "down", delta: -o } : { kind: "same", delta: 0 };
|
|
1057
1057
|
}
|
|
1058
|
-
function
|
|
1058
|
+
function Le(a) {
|
|
1059
1059
|
return /^https?:\/\//i.test(String(a || ""));
|
|
1060
1060
|
}
|
|
1061
|
+
function Gt(a, { w: t, h: e } = {}) {
|
|
1062
|
+
if (!Le(a)) return "";
|
|
1063
|
+
const s = [];
|
|
1064
|
+
t && s.push(`w=${Math.max(1, Math.round(t))}`), e && s.push(`h=${Math.max(1, Math.round(e))}`), s.push("f=webp");
|
|
1065
|
+
const r = a.includes("?") ? "&" : "?";
|
|
1066
|
+
return `${a}${r}${s.join("&")}`;
|
|
1067
|
+
}
|
|
1061
1068
|
function Q(a, t) {
|
|
1062
|
-
const e =
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1069
|
+
const e = t * 2;
|
|
1070
|
+
return Gt(a?.logoAssetId, { w: e, h: e });
|
|
1071
|
+
}
|
|
1072
|
+
function je(a, t) {
|
|
1073
|
+
return Gt(a?.photoAssetId, { w: t * 2 });
|
|
1066
1074
|
}
|
|
1067
1075
|
function $t(a, t, { title: e, sub: s, teams: r }) {
|
|
1068
1076
|
const o = Wt(), n = !!a.querySelector(':scope > a[slot="nav"]') || Ee(o, t.hrefs, t.sport) !== null;
|
|
1069
|
-
return
|
|
1077
|
+
return c`
|
|
1070
1078
|
<div class="band section">
|
|
1071
1079
|
<div class="inner">
|
|
1072
1080
|
<h1>${e}</h1>
|
|
1073
|
-
${s ?
|
|
1081
|
+
${s ? c`<p class="sub">${s}</p>` : m}
|
|
1074
1082
|
</div>
|
|
1075
|
-
${n ?
|
|
1083
|
+
${n ? c`
|
|
1076
1084
|
<nav class="sectionnav" aria-label="${z(t.sport)} section">
|
|
1077
1085
|
<div class="navrow">
|
|
1078
1086
|
<slot name="nav">
|
|
1079
|
-
${
|
|
1087
|
+
${Pe(t.sport, r, t.hrefs).map((d) => c`<a href=${d.href}
|
|
1080
1088
|
aria-current=${o && _(d.href) === o ? "page" : m}>${d.label}</a>`)}
|
|
1081
1089
|
</slot>
|
|
1082
1090
|
</div>
|
|
@@ -1084,60 +1092,60 @@ function $t(a, t, { title: e, sub: s, teams: r }) {
|
|
|
1084
1092
|
</div>
|
|
1085
1093
|
`;
|
|
1086
1094
|
}
|
|
1087
|
-
const
|
|
1095
|
+
const O = (a, t) => {
|
|
1088
1096
|
const e = a.teamsById[t];
|
|
1089
1097
|
return e ? a.schoolsById[e.schoolId] : null;
|
|
1090
|
-
},
|
|
1098
|
+
}, C = (a, t) => O(a, t)?.name || "TBD", Z = (a, t) => O(a, t)?.abbr || "TBD";
|
|
1091
1099
|
function H(a, t = 26) {
|
|
1092
1100
|
if (!a) return m;
|
|
1093
1101
|
const e = Q(a, t);
|
|
1094
1102
|
if (e)
|
|
1095
|
-
return
|
|
1103
|
+
return c`<img class="swatch logo" aria-hidden="true" alt="" loading="lazy"
|
|
1096
1104
|
src=${e} style="width:${t}px;height:${t}px" />`;
|
|
1097
1105
|
const s = a.colorPrimary || "#030711", r = K(s);
|
|
1098
|
-
return
|
|
1106
|
+
return c`<span class="swatch" aria-hidden="true"
|
|
1099
1107
|
style="width:${t}px;height:${t}px;background:${s};color:${r};font-size:${Math.max(8, t * 0.28)}px"
|
|
1100
1108
|
>${ft(a)}</span>`;
|
|
1101
1109
|
}
|
|
1102
1110
|
function bt(a, t, e) {
|
|
1103
1111
|
const s = vt(a.rankings, a.teamsById, t, a.sport, e);
|
|
1104
|
-
return s ?
|
|
1112
|
+
return s ? c`<span class="rankbadge">#${s}</span>` : m;
|
|
1105
1113
|
}
|
|
1106
|
-
function
|
|
1107
|
-
const s =
|
|
1108
|
-
return s ?
|
|
1114
|
+
function Vt(a, t, e) {
|
|
1115
|
+
const s = O(a, t);
|
|
1116
|
+
return s ? c`${bt(a, t, e)}<a href=${g(a.hrefs.school, { id: s.id })}>${s.name}</a>` : c`<span class="mut">TBD</span>`;
|
|
1109
1117
|
}
|
|
1110
1118
|
function yt(a, t, e = 5) {
|
|
1111
1119
|
const s = a.records[t];
|
|
1112
|
-
if (!s || !s.results.length) return
|
|
1120
|
+
if (!s || !s.results.length) return c`<span class="mut">·</span>`;
|
|
1113
1121
|
const r = s.results.slice(-1 * e);
|
|
1114
|
-
return
|
|
1115
|
-
${r.map((o) =>
|
|
1116
|
-
title="${o.mark} ${o.my}-${o.their} vs ${
|
|
1122
|
+
return c`<span class="dots" role="img" aria-label="last ${r.length} results">
|
|
1123
|
+
${r.map((o) => c`<a class="dot ${o.mark}"
|
|
1124
|
+
title="${o.mark} ${o.my}-${o.their} vs ${C(a, o.opp)}"
|
|
1117
1125
|
href=${g(a.hrefs.game, { sport: a.sport, id: o.gameId })}>${o.mark}</a>`)}
|
|
1118
1126
|
</span>`;
|
|
1119
1127
|
}
|
|
1120
1128
|
function q(a, t) {
|
|
1121
|
-
return a.querySelector(':scope > [slot="rail"]') ?
|
|
1129
|
+
return a.querySelector(':scope > [slot="rail"]') ? c`<div class="view withrail">
|
|
1122
1130
|
<div class="viewmain">${t}</div>
|
|
1123
1131
|
<aside class="viewrail"><slot name="rail"></slot></aside>
|
|
1124
|
-
</div>` :
|
|
1132
|
+
</div>` : c`<div class="view">${t}</div>`;
|
|
1125
1133
|
}
|
|
1126
1134
|
function G(a) {
|
|
1127
1135
|
if (!a.promoImage) return m;
|
|
1128
|
-
const t =
|
|
1129
|
-
return
|
|
1136
|
+
const t = c`<img src=${a.promoImage} alt=${a.promoAlt || "Sponsor"}>`;
|
|
1137
|
+
return c`<div class="promo">${a.promoHref ? c`<a href=${a.promoHref} target="_blank" rel="sponsored noopener">${t}</a>` : t}</div>`;
|
|
1130
1138
|
}
|
|
1131
1139
|
function J(a) {
|
|
1132
1140
|
const t = jt(a);
|
|
1133
|
-
return
|
|
1141
|
+
return c`<span class="pill ${t.kind}">${t.label}</span>`;
|
|
1134
1142
|
}
|
|
1135
|
-
function
|
|
1136
|
-
if (!t) return
|
|
1143
|
+
function Yt(a, t, e) {
|
|
1144
|
+
if (!t) return c`<span class="mut">·</span>`;
|
|
1137
1145
|
const s = t.homeTeamId === e ? t.awayTeamId : t.homeTeamId, r = t.homeTeamId === e ? "vs" : "at";
|
|
1138
|
-
return
|
|
1146
|
+
return c`${t.state === "live" ? c`<span class="pill live">Live</span> ` : c`${y(t.date, { month: "numeric", day: "numeric" })} `}${r} ${Z(a, s)}`;
|
|
1139
1147
|
}
|
|
1140
|
-
class
|
|
1148
|
+
class Kt extends w {
|
|
1141
1149
|
static styles = j;
|
|
1142
1150
|
static properties = {
|
|
1143
1151
|
...w.properties,
|
|
@@ -1163,7 +1171,7 @@ class Yt extends w {
|
|
|
1163
1171
|
t.listGames({ sport: this.sport, season: e }),
|
|
1164
1172
|
t.listRankings({ sport: this.sport })
|
|
1165
1173
|
]);
|
|
1166
|
-
return this._datePinned || (this.date =
|
|
1174
|
+
return this._datePinned || (this.date = Te(i.items.map((d) => d.date)), this._datePinned = !0), {
|
|
1167
1175
|
season: e,
|
|
1168
1176
|
schools: s.items,
|
|
1169
1177
|
teams: r.items,
|
|
@@ -1183,30 +1191,30 @@ class Yt extends w {
|
|
|
1183
1191
|
}, this._ctxData = this.data), this._ctx;
|
|
1184
1192
|
}
|
|
1185
1193
|
renderView() {
|
|
1186
|
-
const t = this.ctx, e = v(this.data.conferences), s = [...new Set(this.data.games.map((
|
|
1187
|
-
const h = [
|
|
1194
|
+
const t = this.ctx, e = v(this.data.conferences), s = [...new Set(this.data.games.map((l) => l.date).filter(Boolean))].sort(), r = Number.MAX_SAFE_INTEGER, o = (l) => {
|
|
1195
|
+
const h = [l.awayTeamId, l.homeTeamId].map((p) => vt(t.rankings, t.teamsById, p, this.sport, l.date)).filter(Boolean);
|
|
1188
1196
|
return h.length ? Math.min(...h) : r;
|
|
1189
|
-
}, i = this.data.games.filter((
|
|
1190
|
-
i.sort((
|
|
1197
|
+
}, i = this.data.games.filter((l) => l.date === this.date), n = new Map(i.map((l) => [l, o(l)]));
|
|
1198
|
+
i.sort((l, h) => (l.state === "live" ? 0 : 1) - (h.state === "live" ? 0 : 1) || n.get(l) - n.get(h));
|
|
1191
1199
|
const d = /* @__PURE__ */ new Map();
|
|
1192
|
-
return i.forEach((
|
|
1193
|
-
const h =
|
|
1194
|
-
d.has(h) || d.set(h, []), d.get(h).push(
|
|
1195
|
-
}),
|
|
1200
|
+
return i.forEach((l) => {
|
|
1201
|
+
const h = l.gameType === "conference" && l.conferenceId ? e[l.conferenceId]?.name || "Conference" : l.gameType === "playoff" ? "Playoffs" : l.gameType === "scrimmage" ? "Scrimmages" : "Nonconference";
|
|
1202
|
+
d.has(h) || d.set(h, []), d.get(h).push(l);
|
|
1203
|
+
}), c`
|
|
1196
1204
|
${$t(this, t, {
|
|
1197
|
-
title:
|
|
1198
|
-
sub:
|
|
1205
|
+
title: c`${z(this.sport)} scores & schedules`,
|
|
1206
|
+
sub: c`${y(this.date, { weekday: "long", month: "long", day: "numeric", year: "numeric" })} · ${i.length} games`,
|
|
1199
1207
|
teams: this.data.teams
|
|
1200
1208
|
})}
|
|
1201
|
-
${q(this,
|
|
1209
|
+
${q(this, c`
|
|
1202
1210
|
${G(this)}
|
|
1203
1211
|
<div class="toolbar">
|
|
1204
1212
|
<label class="asof" for="datesel">Date</label>
|
|
1205
|
-
<select id="datesel" @change=${(
|
|
1206
|
-
this.date =
|
|
1213
|
+
<select id="datesel" @change=${(l) => {
|
|
1214
|
+
this.date = l.target.value;
|
|
1207
1215
|
}}>
|
|
1208
|
-
${(s.includes(this.date) ? s : [...s, this.date].sort()).map((
|
|
1209
|
-
${y(
|
|
1216
|
+
${(s.includes(this.date) ? s : [...s, this.date].sort()).map((l) => c`<option value=${l} ?selected=${l === this.date}>
|
|
1217
|
+
${y(l, { weekday: "short", month: "short", day: "numeric" })}${l === mt() ? " · today" : ""}
|
|
1210
1218
|
</option>`)}
|
|
1211
1219
|
</select>
|
|
1212
1220
|
<button class="chip" ?disabled=${s.indexOf(this.date) <= 0}
|
|
@@ -1220,9 +1228,9 @@ class Yt extends w {
|
|
|
1220
1228
|
<span class="spacer"></span>
|
|
1221
1229
|
<span class="asof">Live games first · report a score to see it update here</span>
|
|
1222
1230
|
</div>
|
|
1223
|
-
${i.length ? m :
|
|
1224
|
-
${[...d.entries()].map(([
|
|
1225
|
-
<div class="section-title">${
|
|
1231
|
+
${i.length ? m : c`<p class="empty">No ${this.sport} games on this date.</p>`}
|
|
1232
|
+
${[...d.entries()].map(([l, h]) => c`
|
|
1233
|
+
<div class="section-title">${l}</div>
|
|
1226
1234
|
<div class="card"><ul class="gamelist">
|
|
1227
1235
|
${h.map((p) => this.renderGame(t, p))}
|
|
1228
1236
|
</ul></div>
|
|
@@ -1234,21 +1242,21 @@ class Yt extends w {
|
|
|
1234
1242
|
// a lone score column on the far right read as detached from the teams).
|
|
1235
1243
|
// Scheduled games carry their start time on the status pill alone.
|
|
1236
1244
|
renderGame(t, e) {
|
|
1237
|
-
const s = e.state === "final" || e.state === "live", r = (i, n, d = m) =>
|
|
1238
|
-
return
|
|
1245
|
+
const s = e.state === "final" || e.state === "live", r = (i, n, d = m) => c`<span class="side">${Vt(t, i, e.date)}${s ? c`<span class="score">${n}</span>` : m}${d}</span>`, o = He(e);
|
|
1246
|
+
return c`
|
|
1239
1247
|
<li>
|
|
1240
1248
|
${J(e)}
|
|
1241
|
-
<span class="opp matchup">${r(e.awayTeamId, e.awayScore,
|
|
1242
|
-
${o ?
|
|
1249
|
+
<span class="opp matchup">${r(e.awayTeamId, e.awayScore, c`<span class="at">at</span>`)}${r(e.homeTeamId, e.homeScore)}</span>
|
|
1250
|
+
${o ? c`<span class="ff">${C(t, o === "home" ? e.homeTeamId : e.awayTeamId)} forfeited</span>` : m}
|
|
1243
1251
|
<span class="where">${e.venue || ""}</span>
|
|
1244
|
-
${e.broadcast ?
|
|
1252
|
+
${e.broadcast ? c`<span class="pill class">${e.broadcast}</span>` : m}
|
|
1245
1253
|
<a class="box" href=${g(t.hrefs.game, { sport: this.sport, id: e.id })}>Box score →</a>
|
|
1246
1254
|
</li>
|
|
1247
1255
|
`;
|
|
1248
1256
|
}
|
|
1249
1257
|
}
|
|
1250
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores",
|
|
1251
|
-
class
|
|
1258
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores", Kt);
|
|
1259
|
+
class Qt extends w {
|
|
1252
1260
|
static styles = j;
|
|
1253
1261
|
static properties = {
|
|
1254
1262
|
...w.properties,
|
|
@@ -1289,17 +1297,17 @@ class Kt extends w {
|
|
|
1289
1297
|
}
|
|
1290
1298
|
renderView() {
|
|
1291
1299
|
const t = this.ctx, e = ["All", ...new Set(this.data.conferences.flatMap((r) => r.classifications || []))].slice(0, 9), s = this.data.conferences.filter((r) => r.active !== !1).filter((r) => this.classFilter === "All" || (r.classifications || []).includes(this.classFilter));
|
|
1292
|
-
return
|
|
1300
|
+
return c`
|
|
1293
1301
|
${$t(this, t, {
|
|
1294
|
-
title:
|
|
1295
|
-
sub:
|
|
1302
|
+
title: c`${z(this.sport)} standings`,
|
|
1303
|
+
sub: c`${this.data.season} season · every conference, computed live from reported results`,
|
|
1296
1304
|
teams: this.data.teams
|
|
1297
1305
|
})}
|
|
1298
|
-
${q(this,
|
|
1306
|
+
${q(this, c`
|
|
1299
1307
|
${G(this)}
|
|
1300
1308
|
<div class="toolbar">
|
|
1301
1309
|
<div role="group" aria-label="Classification filter">
|
|
1302
|
-
${e.map((r) =>
|
|
1310
|
+
${e.map((r) => c`<button class="chip ${this.classFilter === r ? "on" : ""}"
|
|
1303
1311
|
@click=${() => {
|
|
1304
1312
|
this.classFilter = r;
|
|
1305
1313
|
}}>${r}</button>`)}
|
|
@@ -1319,11 +1327,11 @@ class Kt extends w {
|
|
|
1319
1327
|
const s = this.data.teams.filter((i) => i.conferenceId === e.id);
|
|
1320
1328
|
if (!s.length) return m;
|
|
1321
1329
|
const r = this.query.trim().toLowerCase(), o = qt(s, t.records);
|
|
1322
|
-
return
|
|
1330
|
+
return c`
|
|
1323
1331
|
<div class="card">
|
|
1324
1332
|
<div class="card-head">
|
|
1325
1333
|
<h2>${e.name}</h2>
|
|
1326
|
-
${(e.classifications || []).map((i) =>
|
|
1334
|
+
${(e.classifications || []).map((i) => c`<span class="pill class">${i}</span>`)}
|
|
1327
1335
|
<span class="meta">${o.length} teams · membership derives from teams</span>
|
|
1328
1336
|
</div>
|
|
1329
1337
|
<div class="tablewrap"><table class="data">
|
|
@@ -1342,18 +1350,17 @@ class Kt extends w {
|
|
|
1342
1350
|
renderRow(t, e, s, r) {
|
|
1343
1351
|
const o = t.schoolsById[e.team.schoolId], i = o?.name || e.team.name || "TBD";
|
|
1344
1352
|
if (r && !i.toLowerCase().includes(r)) return m;
|
|
1345
|
-
const n = e.rec.pf - e.rec.pa, d = gt(this.data.games, e.team.id),
|
|
1346
|
-
<span class="pill champ" title="${p.season} ${p.title} champion">★ ${p.season} ${p.title}</span>`), h = () => {
|
|
1353
|
+
const n = e.rec.pf - e.rec.pa, d = gt(this.data.games, e.team.id), l = () => {
|
|
1347
1354
|
location.href = g(t.hrefs.school, { id: e.team.schoolId });
|
|
1348
1355
|
};
|
|
1349
|
-
return
|
|
1350
|
-
<tr class="rowlink" @click=${(
|
|
1351
|
-
|
|
1356
|
+
return c`
|
|
1357
|
+
<tr class="rowlink" @click=${(h) => {
|
|
1358
|
+
h.target.closest("a") || l();
|
|
1352
1359
|
}}>
|
|
1353
1360
|
<td class="mut">${s + 1}</td>
|
|
1354
1361
|
<td class="teamcell">
|
|
1355
1362
|
${H(o)}${bt(t, e.team.id, null)}
|
|
1356
|
-
<a href=${g(t.hrefs.school, { id: e.team.schoolId })}>${i}</a>
|
|
1363
|
+
<a href=${g(t.hrefs.school, { id: e.team.schoolId })}>${i}</a>
|
|
1357
1364
|
</td>
|
|
1358
1365
|
<td class="num">${x(e.rec, !0)}</td>
|
|
1359
1366
|
<td class="num">${Rt(e.confPct)}</td>
|
|
@@ -1364,13 +1371,13 @@ class Kt extends w {
|
|
|
1364
1371
|
<td class="num" style="color:${n >= 0 ? "var(--hsot-win)" : "var(--hsot-loss)"}">${n > 0 ? "+" : ""}${n}</td>
|
|
1365
1372
|
<td>${st(e.rec.results) || "·"}</td>
|
|
1366
1373
|
<td>${yt(t, e.team.id)}</td>
|
|
1367
|
-
<td>${
|
|
1374
|
+
<td>${Yt(t, d, e.team.id)}</td>
|
|
1368
1375
|
</tr>
|
|
1369
1376
|
`;
|
|
1370
1377
|
}
|
|
1371
1378
|
}
|
|
1372
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings",
|
|
1373
|
-
const
|
|
1379
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings", Qt);
|
|
1380
|
+
const We = b`
|
|
1374
1381
|
.hero1 {
|
|
1375
1382
|
border-radius: var(--hsot-radius-md); color: var(--hsot-white);
|
|
1376
1383
|
padding: 1.3rem 1.4rem; display: flex; align-items: center; gap: 1.2rem;
|
|
@@ -1387,8 +1394,8 @@ const Le = b`
|
|
|
1387
1394
|
.delta.new { background: var(--hsot-straw); color: #6b5900; border-radius: var(--hsot-radius-xs); padding: 0.1rem 0.3rem; font-size: 0.7rem; }
|
|
1388
1395
|
.sparkline { vertical-align: middle; }
|
|
1389
1396
|
`;
|
|
1390
|
-
class
|
|
1391
|
-
static styles = [...j,
|
|
1397
|
+
class Zt extends w {
|
|
1398
|
+
static styles = [...j, We];
|
|
1392
1399
|
static properties = {
|
|
1393
1400
|
...w.properties,
|
|
1394
1401
|
sport: { type: String },
|
|
@@ -1411,7 +1418,7 @@ class Qt extends w {
|
|
|
1411
1418
|
t.listTeams({ sport: this.sport }),
|
|
1412
1419
|
t.listConferences(),
|
|
1413
1420
|
t.listGames({ sport: this.sport, season: e })
|
|
1414
|
-
]), d = s.items.filter((
|
|
1421
|
+
]), d = s.items.filter((l) => !this.gender || !l.gender || l.gender === this.gender).sort((l, h) => h.effectiveDate.localeCompare(l.effectiveDate));
|
|
1415
1422
|
return {
|
|
1416
1423
|
season: e,
|
|
1417
1424
|
polls: d,
|
|
@@ -1438,39 +1445,39 @@ class Qt extends w {
|
|
|
1438
1445
|
const $ = e.length === 1 ? 96 / 2 : f / (e.length - 1) * 90 + 3, at = 3 + u / 24 * 20;
|
|
1439
1446
|
return { x: $, y: at };
|
|
1440
1447
|
}), d = [];
|
|
1441
|
-
let
|
|
1448
|
+
let l = [];
|
|
1442
1449
|
if (n.forEach((p) => {
|
|
1443
|
-
p ?
|
|
1444
|
-
}),
|
|
1450
|
+
p ? l.push(p) : l.length && (d.push(l), l = []);
|
|
1451
|
+
}), l.length && d.push(l), !d.length) return m;
|
|
1445
1452
|
const h = n[s];
|
|
1446
|
-
return
|
|
1453
|
+
return c`<svg class="sparkline" width=${96} height=${26} viewBox="0 0 ${96} ${26}" role="img" aria-label="rank history">
|
|
1447
1454
|
${d.map((p) => Pt`<polyline fill="none" stroke="var(--hsot-red)" stroke-width="2"
|
|
1448
1455
|
points=${p.map((f) => `${f.x.toFixed(1)},${f.y.toFixed(1)}`).join(" ")}></polyline>`)}
|
|
1449
1456
|
${h ? Pt`<circle cx=${h.x.toFixed(1)} cy=${h.y.toFixed(1)} r="3" fill="var(--hsot-black)"></circle>` : m}
|
|
1450
1457
|
</svg>`;
|
|
1451
1458
|
}
|
|
1452
1459
|
movement(t, e, s) {
|
|
1453
|
-
const r =
|
|
1454
|
-
return r.kind === "up" ?
|
|
1460
|
+
const r = Me(t, e, s);
|
|
1461
|
+
return r.kind === "up" ? c`<span class="delta up">▲ ${r.delta}</span>` : r.kind === "down" ? c`<span class="delta down">▼ ${r.delta}</span>` : r.kind === "new" ? c`<span class="delta new">NEW</span>` : r.kind === "same" ? c`<span class="delta same">—</span>` : c`<span class="delta same">·</span>`;
|
|
1455
1462
|
}
|
|
1456
1463
|
renderView() {
|
|
1457
1464
|
const t = this.ctx, e = this.data.polls;
|
|
1458
|
-
if (!e.length) return
|
|
1459
|
-
const s = Math.max(0, e.findIndex((p) => p.effectiveDate === this.pollDate)), r = e[s] || e[0], o = e[s + 1] || null, i = e.slice().reverse(), n = i.indexOf(r), d = v(this.data.conferences),
|
|
1460
|
-
return
|
|
1465
|
+
if (!e.length) return c`<div class="view"><p class="empty">No ${this.sport} polls published yet this season.</p></div>`;
|
|
1466
|
+
const s = Math.max(0, e.findIndex((p) => p.effectiveDate === this.pollDate)), r = e[s] || e[0], o = e[s + 1] || null, i = e.slice().reverse(), n = i.indexOf(r), d = v(this.data.conferences), l = (r.teamIds || [])[0], h = l ? O(t, l) : null;
|
|
1467
|
+
return c`
|
|
1461
1468
|
${$t(this, t, {
|
|
1462
|
-
title:
|
|
1463
|
-
sub:
|
|
1469
|
+
title: c`${z(this.sport)} Top 25`,
|
|
1470
|
+
sub: c`The HighSchoolOT poll · updated weekly · ${e.length} polls this season`,
|
|
1464
1471
|
teams: this.data.teams
|
|
1465
1472
|
})}
|
|
1466
|
-
${q(this,
|
|
1473
|
+
${q(this, c`
|
|
1467
1474
|
${G(this)}
|
|
1468
1475
|
<div class="toolbar">
|
|
1469
1476
|
<label class="asof" for="pollsel">Poll of</label>
|
|
1470
1477
|
<select id="pollsel" @change=${(p) => {
|
|
1471
1478
|
this.pollDate = p.target.value;
|
|
1472
1479
|
}}>
|
|
1473
|
-
${e.map((p, f) =>
|
|
1480
|
+
${e.map((p, f) => c`<option value=${p.effectiveDate} ?selected=${p === r}>
|
|
1474
1481
|
${y(p.effectiveDate, { month: "long", day: "numeric", year: "numeric" })}${f === 0 ? " · current" : ""}
|
|
1475
1482
|
</option>`)}
|
|
1476
1483
|
</select>
|
|
@@ -1485,7 +1492,7 @@ class Qt extends w {
|
|
|
1485
1492
|
<span class="spacer"></span>
|
|
1486
1493
|
<span class="asof">Movement vs. the previous poll · sparkline = season rank history</span>
|
|
1487
1494
|
</div>
|
|
1488
|
-
${h ? this.renderHero(t, r, o,
|
|
1495
|
+
${h ? this.renderHero(t, r, o, l, h, d) : m}
|
|
1489
1496
|
<div class="card"><div class="tablewrap"><table class="data">
|
|
1490
1497
|
<thead><tr>
|
|
1491
1498
|
<th class="num">Rk</th><th>Mvmt</th><th>Team</th><th class="num">Record</th>
|
|
@@ -1500,17 +1507,17 @@ class Qt extends w {
|
|
|
1500
1507
|
`;
|
|
1501
1508
|
}
|
|
1502
1509
|
renderHero(t, e, s, r, o, i) {
|
|
1503
|
-
const n = t.records[r], d = Bt(t.records, r),
|
|
1504
|
-
return
|
|
1510
|
+
const n = t.records[r], d = Bt(t.records, r), l = i[t.teamsById[r]?.conferenceId], h = `linear-gradient(120deg, ${o.colorPrimary || "#030711"} 0%, var(--hsot-black) 85%)`;
|
|
1511
|
+
return c`
|
|
1505
1512
|
<div class="hero1" style="background:${h}">
|
|
1506
1513
|
<div class="bigrank">#1</div>
|
|
1507
1514
|
${H(o, 64)}
|
|
1508
1515
|
<div>
|
|
1509
1516
|
<h2><a href=${g(t.hrefs.school, { id: o.id })}>${o.name} ${o.mascot || ""}</a></h2>
|
|
1510
1517
|
<div class="facts">
|
|
1511
|
-
${x(n)} overall${
|
|
1518
|
+
${x(n)} overall${l ? c` · ${x(n, !0)} ${l.name}` : m}
|
|
1512
1519
|
· streak ${st(n?.results) || "·"}
|
|
1513
|
-
${d ?
|
|
1520
|
+
${d ? c` · last: ${d.mark} ${d.my}-${d.their} vs ${Z(t, d.opp)}` : m}
|
|
1514
1521
|
${this.movement(e, s, r)}
|
|
1515
1522
|
</div>
|
|
1516
1523
|
</div>
|
|
@@ -1518,32 +1525,32 @@ class Qt extends w {
|
|
|
1518
1525
|
`;
|
|
1519
1526
|
}
|
|
1520
1527
|
renderRow(t, e, s, r, o, i, n, d) {
|
|
1521
|
-
const
|
|
1522
|
-
if (!
|
|
1528
|
+
const l = O(t, n);
|
|
1529
|
+
if (!l) return m;
|
|
1523
1530
|
const h = t.records[n], p = Bt(t.records, n), f = gt(this.data.games, n), u = i[t.teamsById[n]?.conferenceId], $ = () => {
|
|
1524
|
-
location.href = g(t.hrefs.school, { id:
|
|
1531
|
+
location.href = g(t.hrefs.school, { id: l.id });
|
|
1525
1532
|
};
|
|
1526
|
-
return
|
|
1533
|
+
return c`
|
|
1527
1534
|
<tr class="rowlink" @click=${(at) => {
|
|
1528
1535
|
at.target.closest("a") || $();
|
|
1529
1536
|
}}>
|
|
1530
1537
|
<td class="num" style="font-weight:700">${d}</td>
|
|
1531
1538
|
<td>${this.movement(e, s, n)}</td>
|
|
1532
|
-
<td class="teamcell">${H(
|
|
1533
|
-
<span class="mut" style="font-size:0.78rem">${
|
|
1539
|
+
<td class="teamcell">${H(l)}<a href=${g(t.hrefs.school, { id: l.id })}>${l.name}</a>
|
|
1540
|
+
<span class="mut" style="font-size:0.78rem">${l.mascot || ""}</span></td>
|
|
1534
1541
|
<td class="num">${x(h)}</td>
|
|
1535
1542
|
<td class="mut">${u?.name || "Independent"}</td>
|
|
1536
|
-
<td>${p ?
|
|
1543
|
+
<td>${p ? c`<a class="box" style="text-decoration:none" href=${g(t.hrefs.game, { sport: this.sport, id: p.gameId })}>
|
|
1537
1544
|
<b style="color:${p.mark === "W" ? "var(--hsot-win)" : p.mark === "L" ? "var(--hsot-loss)" : "var(--hsot-tie)"}">${p.mark}</b>
|
|
1538
|
-
${p.my}-${p.their} vs ${Z(t, p.opp)}</a>` :
|
|
1539
|
-
<td>${
|
|
1545
|
+
${p.my}-${p.their} vs ${Z(t, p.opp)}</a>` : c`<span class="mut">·</span>`}</td>
|
|
1546
|
+
<td>${Yt(t, f, n)}</td>
|
|
1540
1547
|
<td>${this.sparkline(n, r, o)}</td>
|
|
1541
1548
|
</tr>
|
|
1542
1549
|
`;
|
|
1543
1550
|
}
|
|
1544
1551
|
}
|
|
1545
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings",
|
|
1546
|
-
const
|
|
1552
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings", Zt);
|
|
1553
|
+
const qe = b`
|
|
1547
1554
|
.schoolhero { color: var(--hsot-white); padding: 1.6rem 1.25rem 1.3rem; }
|
|
1548
1555
|
.schoolhero .inner { max-width: 1366px; margin: 0 auto; display: flex; gap: 1.2rem; align-items: center; flex-wrap: wrap; }
|
|
1549
1556
|
.schoolhero .crest {
|
|
@@ -1566,10 +1573,14 @@ const je = b`
|
|
|
1566
1573
|
.tile .v { font-family: var(--hsot-heading-font); font-weight: 700; font-size: 1.7rem; line-height: 1.15; color: var(--hsot-black); }
|
|
1567
1574
|
.tile .s { font-size: 0.78rem; color: var(--hsot-gray-5); }
|
|
1568
1575
|
.cols { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 1.25rem; }
|
|
1576
|
+
/* The season roster photo heads the roster card, above the table. Natural
|
|
1577
|
+
height: a team photo is never cropped to a box — the card's overflow
|
|
1578
|
+
rounds its top corners. */
|
|
1579
|
+
.rosterphoto { display: block; width: 100%; height: auto; background: var(--hsot-gray-1); border-bottom: 1px solid var(--hsot-gray-2); }
|
|
1569
1580
|
@media (max-width: 900px) { .cols { grid-template-columns: 1fr; } .schoolhero h1 { font-size: 1.9rem; } }
|
|
1570
1581
|
`;
|
|
1571
|
-
class
|
|
1572
|
-
static styles = [...j,
|
|
1582
|
+
class Jt extends w {
|
|
1583
|
+
static styles = [...j, qe];
|
|
1573
1584
|
static properties = {
|
|
1574
1585
|
...w.properties,
|
|
1575
1586
|
schoolId: { type: String, attribute: "school-id" },
|
|
@@ -1586,7 +1597,7 @@ class Zt extends w {
|
|
|
1586
1597
|
t && !this.sport && (this.sport = t);
|
|
1587
1598
|
}
|
|
1588
1599
|
async fetchData(t) {
|
|
1589
|
-
const e = this.season || et(), s = await t.getSchool(this.schoolId), o = (await t.listTeams({ schoolId: this.schoolId })).items, i = o.find(($) => $.sport === (this.sport || "football")) || o[0] || null, [n, d,
|
|
1600
|
+
const e = this.season || et(), s = await t.getSchool(this.schoolId), o = (await t.listTeams({ schoolId: this.schoolId })).items, i = o.find(($) => $.sport === (this.sport || "football")) || o[0] || null, [n, d, l, h, p, f, u] = await Promise.all([
|
|
1590
1601
|
i ? t.listGames({ sport: i.sport, season: e }) : Promise.resolve({ items: [] }),
|
|
1591
1602
|
i ? t.listTeams({ sport: i.sport }) : Promise.resolve({ items: [] }),
|
|
1592
1603
|
t.listSchools(),
|
|
@@ -1604,7 +1615,7 @@ class Zt extends w {
|
|
|
1604
1615
|
active: i,
|
|
1605
1616
|
games: n.items,
|
|
1606
1617
|
allTeams: d.items,
|
|
1607
|
-
schools:
|
|
1618
|
+
schools: l.items,
|
|
1608
1619
|
conferences: h.items,
|
|
1609
1620
|
rankings: p.items,
|
|
1610
1621
|
roster: f.items.find(($) => $.season === e) || null,
|
|
@@ -1626,110 +1637,113 @@ class Zt extends w {
|
|
|
1626
1637
|
}
|
|
1627
1638
|
renderView() {
|
|
1628
1639
|
const { school: t, teams: e, active: s, season: r } = this.data;
|
|
1629
|
-
if (!t) return
|
|
1630
|
-
const o = this.ctx, i = K(t.colorPrimary || "#030711"), n = (t.adm || [])[0], d = v(this.data.conferences),
|
|
1631
|
-
return
|
|
1640
|
+
if (!t) return c`<div class="view"><p class="empty">School not found.</p></div>`;
|
|
1641
|
+
const o = this.ctx, i = K(t.colorPrimary || "#030711"), n = (t.adm || [])[0], d = v(this.data.conferences), l = s ? d[s.conferenceId] : null;
|
|
1642
|
+
return c`
|
|
1632
1643
|
<div class="schoolhero" style="background:linear-gradient(115deg, ${t.colorPrimary || "#030711"} 0%, ${t.colorPrimary || "#030711"} 55%, var(--hsot-black) 100%);color:${i}">
|
|
1633
1644
|
<div class="inner">
|
|
1634
|
-
${Q(t, 84) ?
|
|
1645
|
+
${Q(t, 84) ? c`<img class="crest logo" alt="" loading="lazy" src=${Q(t, 84)} />` : c`<div class="crest" style="background:${t.colorSecondary || "#7C7C7C"};color:${K(t.colorSecondary || "#7C7C7C")}">${ft(t)}</div>`}
|
|
1635
1646
|
<div style="min-width:260px">
|
|
1636
1647
|
<h1>${t.name} <span class="mascot">${t.mascot || ""}</span></h1>
|
|
1637
1648
|
<div class="facts">
|
|
1638
|
-
${t.location ?
|
|
1639
|
-
${t.association ?
|
|
1640
|
-
${
|
|
1641
|
-
${n ?
|
|
1642
|
-
${t.openingYear ?
|
|
1643
|
-
${t.areaCode ?
|
|
1649
|
+
${t.location ? c`<span><b>Location</b>${t.location}${t.county ? c` · ${t.county} County` : m}</span>` : m}
|
|
1650
|
+
${t.association ? c`<span><b>League</b>${t.association}${t.classification ? c` · ${t.classification}` : m}</span>` : m}
|
|
1651
|
+
${l ? c`<span><b>Conference</b>${l.name}</span>` : m}
|
|
1652
|
+
${n ? c`<span><b>Enrollment</b>${n.value.toLocaleString()} (${n.season} ADM)</span>` : m}
|
|
1653
|
+
${t.openingYear ? c`<span><b>Opened</b>${t.openingYear}</span>` : m}
|
|
1654
|
+
${t.areaCode ? c`<span><b>Area</b>${t.areaCode}</span>` : m}
|
|
1644
1655
|
</div>
|
|
1645
1656
|
</div>
|
|
1646
1657
|
</div>
|
|
1647
1658
|
</div>
|
|
1648
1659
|
<div class="band">
|
|
1649
1660
|
<nav class="tabs" aria-label="Teams">
|
|
1650
|
-
${e.map((h) => h.id === s?.id ?
|
|
1661
|
+
${e.map((h) => h.id === s?.id ? c`<a class="on" href="#" @click=${(p) => p.preventDefault()}>${h.name}</a>` : c`<a href="#" @click=${(p) => {
|
|
1651
1662
|
p.preventDefault(), this.switchSport(h.sport);
|
|
1652
1663
|
}}>${h.name}</a>`)}
|
|
1653
1664
|
</nav>
|
|
1654
1665
|
</div>
|
|
1655
|
-
${q(this,
|
|
1666
|
+
${q(this, c`
|
|
1656
1667
|
${G(this)}
|
|
1657
|
-
${s ? this.renderTeam(o, s,
|
|
1668
|
+
${s ? this.renderTeam(o, s, l, r) : c`<p class="empty">No teams recorded for this school yet.</p>`}
|
|
1658
1669
|
`)}
|
|
1659
1670
|
`;
|
|
1660
1671
|
}
|
|
1661
1672
|
renderTeam(t, e, s, r) {
|
|
1662
|
-
const o = t.records[e.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, i = o.w + o.l + o.t, n = s ? this.data.allTeams.filter((p) => p.conferenceId === s.id) : [], d = s ? qt(n, t.records).findIndex((p) => p.team.id === e.id) + 1 : 0,
|
|
1663
|
-
return
|
|
1673
|
+
const o = t.records[e.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, i = o.w + o.l + o.t, n = s ? this.data.allTeams.filter((p) => p.conferenceId === s.id) : [], d = s ? qt(n, t.records).findIndex((p) => p.team.id === e.id) + 1 : 0, l = vt(t.rankings, t.teamsById, e.id, e.sport, null), h = this.data.games.filter((p) => p.homeTeamId === e.id || p.awayTeamId === e.id).sort((p, f) => String(p.date).localeCompare(String(f.date)));
|
|
1674
|
+
return c`
|
|
1664
1675
|
<div class="tiles">
|
|
1665
1676
|
<div class="tile"><div class="k">Overall</div><div class="v">${x(o)}</div><div class="s">${i} games played</div></div>
|
|
1666
1677
|
<div class="tile"><div class="k">${s?.name || "Conference"}</div><div class="v">${x(o, !0)}</div>
|
|
1667
|
-
<div class="s">${d ? `${
|
|
1678
|
+
<div class="s">${d ? `${Ie(d)} of ${n.length}` : "·"}</div></div>
|
|
1668
1679
|
<div class="tile"><div class="k">Points</div><div class="v">${i ? (o.pf / i).toFixed(1) : "0.0"}</div>
|
|
1669
1680
|
<div class="s">scored per game · ${i ? (o.pa / i).toFixed(1) : "0.0"} allowed</div></div>
|
|
1670
1681
|
<div class="tile"><div class="k">Streak</div><div class="v">${st(o.results) || "·"}</div>
|
|
1671
1682
|
<div class="s">last 5: ${yt(t, e.id)}</div></div>
|
|
1672
|
-
<div class="tile"><div class="k">HSOT Top 25</div><div class="v">${
|
|
1683
|
+
<div class="tile"><div class="k">HSOT Top 25</div><div class="v">${l ? `#${l}` : "NR"}</div>
|
|
1673
1684
|
<div class="s"><a href=${g(t.hrefs.section, { sport: e.sport, view: "rankings" })}>full poll</a></div></div>
|
|
1674
1685
|
</div>
|
|
1675
|
-
${(e.championships || []).length ?
|
|
1686
|
+
${(e.championships || []).length ? c`
|
|
1676
1687
|
<div style="margin:-0.2rem 0 1rem;display:flex;gap:0.4rem;flex-wrap:wrap">
|
|
1677
|
-
${e.championships.map((p) =>
|
|
1688
|
+
${e.championships.map((p) => c`<span class="pill champ">★ ${p.season} ${p.title} champion${p.classification ? ` · ${p.classification}` : ""}${p.region ? ` · ${p.region}` : ""}</span>`)}
|
|
1678
1689
|
</div>` : m}
|
|
1679
1690
|
<div class="cols">
|
|
1680
1691
|
<div>
|
|
1681
1692
|
<div class="section-title">Schedule & results</div>
|
|
1682
1693
|
<div class="card">
|
|
1683
|
-
${h.length ?
|
|
1694
|
+
${h.length ? c`<ul class="gamelist">${h.map((p) => this.renderGameRow(t, e, p))}</ul>` : c`<p class="empty">No ${e.sport} games recorded for ${r}.</p>`}
|
|
1684
1695
|
</div>
|
|
1685
1696
|
</div>
|
|
1686
1697
|
<div>
|
|
1687
1698
|
<div class="section-title">Roster · ${r}</div>
|
|
1688
|
-
<div class="card">${this.renderRoster(r)}</div>
|
|
1699
|
+
<div class="card">${this.renderRoster(e, r)}</div>
|
|
1689
1700
|
</div>
|
|
1690
1701
|
</div>
|
|
1691
1702
|
`;
|
|
1692
1703
|
}
|
|
1693
1704
|
renderGameRow(t, e, s) {
|
|
1694
1705
|
const r = s.homeTeamId === e.id, o = r ? s.awayTeamId : s.homeTeamId, i = r ? s.homeScore : s.awayScore, n = r ? s.awayScore : s.homeScore;
|
|
1695
|
-
let d =
|
|
1706
|
+
let d = c`<span class="mut">${pt(s.time)}</span>`;
|
|
1696
1707
|
if (s.state === "final") {
|
|
1697
1708
|
const h = ut(s), p = h === "tie" ? "T" : h === (r ? "home" : "away") ? "W" : "L";
|
|
1698
|
-
d =
|
|
1699
|
-
} else s.state === "live" && (d =
|
|
1700
|
-
const
|
|
1701
|
-
return
|
|
1709
|
+
d = c`<span class=${p}>${p}</span> ${i}-${n}${s.finish === "overtime" ? c` <span class="mut">OT</span>` : m}${s.forfeit && s.forfeit !== "none" ? c` <span class="mut">FF</span>` : m}`;
|
|
1710
|
+
} else s.state === "live" && (d = c`<span style="color:var(--hsot-red)">${i}-${n}</span>`);
|
|
1711
|
+
const l = s.gameType === "conference" ? "Conf" : s.gameType === "nonconference" ? "Non-conf" : s.gameType === "playoff" ? `Playoff${s.label ? ` · ${s.label}` : ""}` : "Scrimmage";
|
|
1712
|
+
return c`
|
|
1702
1713
|
<li>
|
|
1703
1714
|
<span class="d">${y(s.date)}</span>
|
|
1704
1715
|
${jt(s).kind === "sched" ? m : J(s)}
|
|
1705
1716
|
<span class="res">${d}</span>
|
|
1706
|
-
<span class="opp">${r ? "vs" : "at"} ${
|
|
1707
|
-
<span class="pill type">${
|
|
1708
|
-
${s.broadcast ?
|
|
1717
|
+
<span class="opp">${r ? "vs" : "at"} ${Vt(t, o, s.date)}
|
|
1718
|
+
<span class="pill type">${l}</span>
|
|
1719
|
+
${s.broadcast ? c`<span class="pill class">${s.broadcast}</span>` : m}
|
|
1709
1720
|
</span>
|
|
1710
1721
|
<span class="where">${s.venue || ""}</span>
|
|
1711
1722
|
<a class="box" href=${g(t.hrefs.game, { sport: e.sport, id: s.id })}>Box score →</a>
|
|
1712
1723
|
</li>
|
|
1713
1724
|
`;
|
|
1714
1725
|
}
|
|
1715
|
-
renderRoster(t) {
|
|
1716
|
-
const
|
|
1717
|
-
if (!
|
|
1718
|
-
return
|
|
1719
|
-
const s = v(this.data.players),
|
|
1720
|
-
return
|
|
1726
|
+
renderRoster(t, e) {
|
|
1727
|
+
const s = this.data.roster;
|
|
1728
|
+
if (!s)
|
|
1729
|
+
return c`<p class="empty">Roster not published for ${e}.</p>`;
|
|
1730
|
+
const r = je(s, 560), o = this.data.school?.name || "", i = v(this.data.players), n = s.entries.slice().sort((l, h) => (l.number || 0) - (h.number || 0)), d = n.some((l) => i[l.playerId]?.college);
|
|
1731
|
+
return c`
|
|
1732
|
+
${r ? c`<img class="rosterphoto" src=${r} loading="lazy" decoding="async"
|
|
1733
|
+
alt="${o} ${t.name} ${e} team photo" />` : m}
|
|
1721
1734
|
<div class="tablewrap"><table class="data">
|
|
1722
|
-
<thead><tr><th class="num">No.</th><th>Player</th><th>Pos</th><th>Class</th><th class="num">Ht</th><th class="num">Wt</th
|
|
1735
|
+
<thead><tr><th class="num">No.</th><th>Player</th><th>Pos</th><th>Class</th><th class="num">Ht</th><th class="num">Wt</th>${d ? c`<th>College</th>` : m}</tr></thead>
|
|
1723
1736
|
<tbody>
|
|
1724
|
-
${
|
|
1725
|
-
const
|
|
1726
|
-
return
|
|
1727
|
-
<td class="num mut">${
|
|
1728
|
-
<td style="font-weight:500">${
|
|
1729
|
-
<td>${
|
|
1730
|
-
<td class="mut">${
|
|
1731
|
-
<td class="num">${
|
|
1732
|
-
<td class="num">${
|
|
1737
|
+
${n.map((l) => {
|
|
1738
|
+
const h = i[l.playerId];
|
|
1739
|
+
return h ? c`<tr>
|
|
1740
|
+
<td class="num mut">${l.number ?? "·"}</td>
|
|
1741
|
+
<td style="font-weight:500">${h.firstName} ${h.lastName}</td>
|
|
1742
|
+
<td>${l.position || "·"}</td>
|
|
1743
|
+
<td class="mut">${h.classOf || "·"}</td>
|
|
1744
|
+
<td class="num">${Ae(h.heightIn)}</td>
|
|
1745
|
+
<td class="num">${h.weightLb || "·"}</td>
|
|
1746
|
+
${d ? c`<td>${h.college || "·"}</td>` : m}
|
|
1733
1747
|
</tr>` : m;
|
|
1734
1748
|
})}
|
|
1735
1749
|
</tbody>
|
|
@@ -1737,16 +1751,16 @@ class Zt extends w {
|
|
|
1737
1751
|
`;
|
|
1738
1752
|
}
|
|
1739
1753
|
}
|
|
1740
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school",
|
|
1741
|
-
const
|
|
1742
|
-
function
|
|
1754
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school", Jt);
|
|
1755
|
+
const Ge = "https://api.wral.com/search";
|
|
1756
|
+
function Ve(a) {
|
|
1743
1757
|
return a.map((t) => `uri:"${t}"`).join(" OR ");
|
|
1744
1758
|
}
|
|
1745
|
-
function
|
|
1746
|
-
const e = String(a ||
|
|
1759
|
+
function Ye(a, t) {
|
|
1760
|
+
const e = String(a || Ge).replace(/\/+$/, ""), s = new URLSearchParams({ query: Ve(t), sort: "score", lang: "en" });
|
|
1747
1761
|
return `${e}/v1/query?${s}`;
|
|
1748
1762
|
}
|
|
1749
|
-
function
|
|
1763
|
+
function Xt(a) {
|
|
1750
1764
|
try {
|
|
1751
1765
|
const t = new URL(a);
|
|
1752
1766
|
if (/(^|\.)smugmug\.com$/i.test(t.hostname)) {
|
|
@@ -1761,13 +1775,13 @@ function Jt(a) {
|
|
|
1761
1775
|
}
|
|
1762
1776
|
return { uri: a, title: a };
|
|
1763
1777
|
}
|
|
1764
|
-
async function
|
|
1765
|
-
const r = await ((...n) => fetch(...n))(
|
|
1778
|
+
async function Ke(a, t, e) {
|
|
1779
|
+
const r = await ((...n) => fetch(...n))(Ye(a, t));
|
|
1766
1780
|
if (!r.ok) throw new Error(`search answered ${r.status}`);
|
|
1767
1781
|
const o = await r.json(), i = new Map((o.items || []).map((n) => [n.uri, n]));
|
|
1768
|
-
return t.map((n) => i.get(n) ||
|
|
1782
|
+
return t.map((n) => i.get(n) || Xt(n));
|
|
1769
1783
|
}
|
|
1770
|
-
const
|
|
1784
|
+
const Qe = b`
|
|
1771
1785
|
.breadcrumbs { font-size: 0.8125rem; margin: 0.9rem 0 0; color: var(--hsot-gray-5); }
|
|
1772
1786
|
.breadcrumbs a { text-decoration: none; }
|
|
1773
1787
|
.scorehead { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1rem; align-items: center; padding: 1.4rem 1rem; }
|
|
@@ -1806,8 +1820,8 @@ const Ye = b`
|
|
|
1806
1820
|
.cols { grid-template-columns: 1fr; }
|
|
1807
1821
|
}
|
|
1808
1822
|
`;
|
|
1809
|
-
class
|
|
1810
|
-
static styles = [...j,
|
|
1823
|
+
class te extends w {
|
|
1824
|
+
static styles = [...j, Qe];
|
|
1811
1825
|
static properties = {
|
|
1812
1826
|
...w.properties,
|
|
1813
1827
|
gameId: { type: String, attribute: "game-id" },
|
|
@@ -1821,7 +1835,7 @@ class Xt extends w {
|
|
|
1821
1835
|
super(), this.gameId = "", this.searchApi = "";
|
|
1822
1836
|
}
|
|
1823
1837
|
async fetchData(t) {
|
|
1824
|
-
const e = await t.getGame(this.gameId), s = Array.isArray(e.coverageUrls) ? e.coverageUrls : [], [r, o, i, n, d,
|
|
1838
|
+
const e = await t.getGame(this.gameId), s = Array.isArray(e.coverageUrls) ? e.coverageUrls : [], [r, o, i, n, d, l] = await Promise.all([
|
|
1825
1839
|
t.listSchools(),
|
|
1826
1840
|
t.listTeams({ sport: e.sport }),
|
|
1827
1841
|
t.listConferences(),
|
|
@@ -1829,7 +1843,7 @@ class Xt extends w {
|
|
|
1829
1843
|
t.listGames({ sport: e.sport, season: e.season }),
|
|
1830
1844
|
// A search outage must not blank the box score — degrade to bare
|
|
1831
1845
|
// links (fetchCoverage already degrades per-URL index misses).
|
|
1832
|
-
s.length ?
|
|
1846
|
+
s.length ? Ke(this.searchApi, s).catch(() => s.map(Xt)) : Promise.resolve([])
|
|
1833
1847
|
]);
|
|
1834
1848
|
return {
|
|
1835
1849
|
game: e,
|
|
@@ -1838,7 +1852,7 @@ class Xt extends w {
|
|
|
1838
1852
|
conferences: i.items,
|
|
1839
1853
|
rankings: n.items,
|
|
1840
1854
|
games: d.items,
|
|
1841
|
-
coverage:
|
|
1855
|
+
coverage: l
|
|
1842
1856
|
};
|
|
1843
1857
|
}
|
|
1844
1858
|
get ctx() {
|
|
@@ -1853,15 +1867,15 @@ class Xt extends w {
|
|
|
1853
1867
|
}
|
|
1854
1868
|
renderView() {
|
|
1855
1869
|
const t = this.data.game;
|
|
1856
|
-
if (!t) return
|
|
1857
|
-
const e = this.ctx, s = v(this.data.conferences), r = e.teamsById[t.awayTeamId] ? e.schoolsById[e.teamsById[t.awayTeamId].schoolId] : null, o = e.teamsById[t.homeTeamId] ? e.schoolsById[e.teamsById[t.homeTeamId].schoolId] : null, i = ut(t), n = (h) => t.state === "final" && i !== h && i !== "tie" ? "opacity:0.45" : "", d = t.conferenceId ? s[t.conferenceId] : null,
|
|
1858
|
-
return
|
|
1859
|
-
${q(this,
|
|
1870
|
+
if (!t) return c`<div class="view"><p class="empty">Game not found.</p></div>`;
|
|
1871
|
+
const e = this.ctx, s = v(this.data.conferences), r = e.teamsById[t.awayTeamId] ? e.schoolsById[e.teamsById[t.awayTeamId].schoolId] : null, o = e.teamsById[t.homeTeamId] ? e.schoolsById[e.teamsById[t.homeTeamId].schoolId] : null, i = ut(t), n = (h) => t.state === "final" && i !== h && i !== "tie" ? "opacity:0.45" : "", d = t.conferenceId ? s[t.conferenceId] : null, l = this.data.games.filter((h) => h.id !== t.id && h.state === "final" && h.gameType !== "scrimmage" && (h.homeTeamId === t.homeTeamId && h.awayTeamId === t.awayTeamId || h.homeTeamId === t.awayTeamId && h.awayTeamId === t.homeTeamId));
|
|
1872
|
+
return c`
|
|
1873
|
+
${q(this, c`
|
|
1860
1874
|
${G(this)}
|
|
1861
1875
|
<p class="breadcrumbs">
|
|
1862
1876
|
<a href=${g(e.hrefs.section, { sport: t.sport, view: "scores" })}>${z(t.sport)}</a> /
|
|
1863
1877
|
<a href=${g(e.hrefs.section, { sport: t.sport, view: "scores" })}>Scores/Schedules</a> /
|
|
1864
|
-
${
|
|
1878
|
+
${C(e, t.awayTeamId)} at ${C(e, t.homeTeamId)}
|
|
1865
1879
|
</p>
|
|
1866
1880
|
<div class="card">
|
|
1867
1881
|
<div class="scorehead">
|
|
@@ -1873,29 +1887,29 @@ class Xt extends w {
|
|
|
1873
1887
|
<span style=${n("home")}>${t.homeScore}</span>
|
|
1874
1888
|
</div>
|
|
1875
1889
|
<div class="status">${J(t)}</div>
|
|
1876
|
-
<div class="status">${y(t.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${t.state === "scheduled" && t.time ?
|
|
1877
|
-
${t.broadcast ?
|
|
1890
|
+
<div class="status">${y(t.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${t.state === "scheduled" && t.time ? c` · ${pt(t.time)}` : m} · ${t.venue || "Venue TBD"}
|
|
1891
|
+
${t.broadcast ? c` · <span class="pill class">${t.broadcast}</span>` : m}</div>
|
|
1878
1892
|
<div class="status">
|
|
1879
1893
|
<span class="pill type">${t.gameType === "conference" ? `${d?.name || "Conference"} game` : t.gameType}</span>
|
|
1880
|
-
${t.label ?
|
|
1881
|
-
${(t.tags || []).map((h) =>
|
|
1894
|
+
${t.label ? c`<span class="pill type">Bracket ${t.label}</span>` : m}
|
|
1895
|
+
${(t.tags || []).map((h) => c`<span class="pill type">${h}</span>`)}
|
|
1882
1896
|
</div>
|
|
1883
1897
|
</div>
|
|
1884
1898
|
${this.teamBlock(e, t, t.homeTeamId, o, !0)}
|
|
1885
1899
|
</div>
|
|
1886
1900
|
${this.renderLineScore(t, r, o)}
|
|
1887
|
-
${t.notes ?
|
|
1901
|
+
${t.notes ? c`<p class="note" style="padding:0 1rem 0.9rem;text-align:center">${t.notes}</p>` : m}
|
|
1888
1902
|
</div>
|
|
1889
|
-
${(this.data.coverage || []).length ?
|
|
1903
|
+
${(this.data.coverage || []).length ? c`
|
|
1890
1904
|
<div class="section-title">Coverage</div>
|
|
1891
1905
|
<div class="covgrid">
|
|
1892
|
-
${this.data.coverage.map((h) =>
|
|
1906
|
+
${this.data.coverage.map((h) => c`
|
|
1893
1907
|
<a class="card covcard" href=${h.uri}>
|
|
1894
|
-
${h.image ?
|
|
1908
|
+
${h.image ? c`<img class="covimg" src=${h.image} alt="" loading="lazy" />` : m}
|
|
1895
1909
|
<div class="covbody">
|
|
1896
|
-
<div class="covtitle">${h.videoDuration ?
|
|
1897
|
-
${h.description ?
|
|
1898
|
-
${h.author || h.publishedTime ?
|
|
1910
|
+
<div class="covtitle">${h.videoDuration ? c`<span class="pill live" style="animation:none">Video</span> ` : m}${h.photos ? c`<span class="pill live" style="animation:none">Photos</span> ` : m}${h.title || h.uri}</div>
|
|
1911
|
+
${h.description ? c`<p class="covdesc">${h.description}</p>` : m}
|
|
1912
|
+
${h.author || h.publishedTime ? c`
|
|
1899
1913
|
<div class="covmeta">${[h.author, h.publishedTime ? new Date(h.publishedTime).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }) : ""].filter(Boolean).join(" · ")}</div>
|
|
1900
1914
|
` : m}
|
|
1901
1915
|
</div>
|
|
@@ -1906,12 +1920,12 @@ class Xt extends w {
|
|
|
1906
1920
|
<div class="cols">
|
|
1907
1921
|
${[[t.awayTeamId, r], [t.homeTeamId, o]].map(([h, p]) => this.renderContext(e, h, p))}
|
|
1908
1922
|
</div>
|
|
1909
|
-
${
|
|
1923
|
+
${l.length ? c`
|
|
1910
1924
|
<div class="section-title">Head to head this season</div>
|
|
1911
1925
|
<div class="card"><ul class="gamelist">
|
|
1912
|
-
${
|
|
1926
|
+
${l.map((h) => c`<li>
|
|
1913
1927
|
<span class="d">${y(h.date)}</span>${J(h)}
|
|
1914
|
-
<span class="opp">${
|
|
1928
|
+
<span class="opp">${C(e, h.awayTeamId)} ${h.awayScore}, ${C(e, h.homeTeamId)} ${h.homeScore}</span>
|
|
1915
1929
|
<a class="box" href=${g(e.hrefs.game, { sport: t.sport, id: h.id })}>Box score →</a>
|
|
1916
1930
|
</li>`)}
|
|
1917
1931
|
</ul></div>` : m}
|
|
@@ -1919,14 +1933,14 @@ class Xt extends w {
|
|
|
1919
1933
|
`;
|
|
1920
1934
|
}
|
|
1921
1935
|
teamBlock(t, e, s, r, o) {
|
|
1922
|
-
if (!r) return
|
|
1936
|
+
if (!r) return c`<div class="teamblock ${o ? "right" : ""}"><div class="tname">TBD</div></div>`;
|
|
1923
1937
|
const i = t.teamsById[s], n = t.records[s], d = Q(r, 58);
|
|
1924
|
-
return
|
|
1938
|
+
return c`
|
|
1925
1939
|
<div class="teamblock ${o ? "right" : ""}">
|
|
1926
|
-
${d ?
|
|
1940
|
+
${d ? c`<img class="crest logo" alt="" loading="lazy" src=${d} />` : c`<span class="crest" style="background:${r.colorPrimary || "#030711"};color:${K(r.colorPrimary || "#030711")}">${ft(r)}</span>`}
|
|
1927
1941
|
<div>
|
|
1928
1942
|
<div class="tname">${bt(t, s, e.date)}<a href=${g(t.hrefs.school, { id: r.id })}>${r.name}</a></div>
|
|
1929
|
-
<div class="trec">${r.mascot || ""} · ${x(n)}${i?.conferenceId ?
|
|
1943
|
+
<div class="trec">${r.mascot || ""} · ${x(n)}${i?.conferenceId ? c` · ${x(n, !0)} conf` : m}</div>
|
|
1930
1944
|
</div>
|
|
1931
1945
|
</div>
|
|
1932
1946
|
`;
|
|
@@ -1934,20 +1948,20 @@ class Xt extends w {
|
|
|
1934
1948
|
renderLineScore(t, e, s) {
|
|
1935
1949
|
const r = t.periodScores || [];
|
|
1936
1950
|
if (!r.length)
|
|
1937
|
-
return
|
|
1938
|
-
const o = Math.max(4, ...r.map((
|
|
1951
|
+
return c`<p class="empty" style="text-align:center">Period scoring will appear once the game starts.</p>`;
|
|
1952
|
+
const o = Math.max(4, ...r.map((l) => l.period)), i = (l) => l <= 4 ? String(l) : `OT${l > 5 ? l - 4 : ""}`, n = (l, h) => {
|
|
1939
1953
|
const p = r.find((f) => f.period === h);
|
|
1940
|
-
return p ? p[
|
|
1941
|
-
}, d = (
|
|
1954
|
+
return p ? p[l] : t.state === "final" ? 0 : "·";
|
|
1955
|
+
}, d = (l, h, p) => c`
|
|
1942
1956
|
<tr>
|
|
1943
|
-
<td class="teamcell">${H(
|
|
1944
|
-
${Array.from({ length: o }, (f, u) =>
|
|
1957
|
+
<td class="teamcell">${H(l, 20)}${l?.abbr || "TBD"}</td>
|
|
1958
|
+
${Array.from({ length: o }, (f, u) => c`<td class="num">${n(h, u + 1)}</td>`)}
|
|
1945
1959
|
<td class="num" style="font-weight:700">${p}</td>
|
|
1946
1960
|
</tr>`;
|
|
1947
|
-
return
|
|
1961
|
+
return c`
|
|
1948
1962
|
<div class="tablewrap" style="border-top:1px solid var(--hsot-gray-2)">
|
|
1949
1963
|
<table class="data" style="max-width:560px;margin:0.6rem auto 0.9rem">
|
|
1950
|
-
<thead><tr><th>Team</th>${Array.from({ length: o }, (
|
|
1964
|
+
<thead><tr><th>Team</th>${Array.from({ length: o }, (l, h) => c`<th class="num">${i(h + 1)}</th>`)}<th class="num">T</th></tr></thead>
|
|
1951
1965
|
<tbody>
|
|
1952
1966
|
${d(e, "away", t.awayScore)}
|
|
1953
1967
|
${d(s, "home", t.homeScore)}
|
|
@@ -1959,23 +1973,23 @@ class Xt extends w {
|
|
|
1959
1973
|
renderContext(t, e, s) {
|
|
1960
1974
|
if (!s) return m;
|
|
1961
1975
|
const r = t.records[e], o = gt(this.data.games, e);
|
|
1962
|
-
return
|
|
1976
|
+
return c`
|
|
1963
1977
|
<div class="card ctxcard">
|
|
1964
1978
|
<div class="who">${H(s)}${s.name}</div>
|
|
1965
1979
|
<div class="row">
|
|
1966
1980
|
<span>Last 5: ${yt(t, e)}</span>
|
|
1967
1981
|
<span>Streak: <b>${r ? st(r.results) : "·"}</b></span>
|
|
1968
1982
|
<span>PF/PA: <b>${r ? `${r.pf} / ${r.pa}` : "·"}</b></span>
|
|
1969
|
-
<span>Next: ${o ?
|
|
1983
|
+
<span>Next: ${o ? c`${y(o.date, { month: "numeric", day: "numeric" })}
|
|
1970
1984
|
${o.homeTeamId === e ? "vs" : "at"} ${Z(t, o.homeTeamId === e ? o.awayTeamId : o.homeTeamId)}` : "·"}</span>
|
|
1971
1985
|
</div>
|
|
1972
1986
|
</div>
|
|
1973
1987
|
`;
|
|
1974
1988
|
}
|
|
1975
1989
|
}
|
|
1976
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore",
|
|
1977
|
-
const
|
|
1978
|
-
class
|
|
1990
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore", te);
|
|
1991
|
+
const Ze = 250, Je = 2;
|
|
1992
|
+
class ee extends E {
|
|
1979
1993
|
static properties = {
|
|
1980
1994
|
api: { type: String },
|
|
1981
1995
|
schoolHref: { type: String, attribute: "school-href" },
|
|
@@ -2055,11 +2069,11 @@ class te extends C {
|
|
|
2055
2069
|
}
|
|
2056
2070
|
onInput(t) {
|
|
2057
2071
|
const e = t.target.value.trim();
|
|
2058
|
-
if (clearTimeout(this.debounceTimer), e.length <
|
|
2072
|
+
if (clearTimeout(this.debounceTimer), e.length < Je) {
|
|
2059
2073
|
this.abortController?.abort(), this.results = [], this.open = !1, this.searched = !1;
|
|
2060
2074
|
return;
|
|
2061
2075
|
}
|
|
2062
|
-
this.debounceTimer = setTimeout(() => this.search(e),
|
|
2076
|
+
this.debounceTimer = setTimeout(() => this.search(e), Ze);
|
|
2063
2077
|
}
|
|
2064
2078
|
async search(t) {
|
|
2065
2079
|
this.abortController?.abort(), this.abortController = new AbortController();
|
|
@@ -2107,7 +2121,7 @@ class te extends C {
|
|
|
2107
2121
|
const s = this.where(t), r = (o) => {
|
|
2108
2122
|
o.preventDefault(), this.go(t);
|
|
2109
2123
|
};
|
|
2110
|
-
return
|
|
2124
|
+
return c`
|
|
2111
2125
|
<li
|
|
2112
2126
|
id="school-option-${e}"
|
|
2113
2127
|
role="option"
|
|
@@ -2118,13 +2132,13 @@ class te extends C {
|
|
|
2118
2132
|
}}"
|
|
2119
2133
|
>
|
|
2120
2134
|
<span class="name">${t.name}</span>
|
|
2121
|
-
${s ?
|
|
2135
|
+
${s ? c`<span class="where">${s}</span>` : m}
|
|
2122
2136
|
</li>
|
|
2123
2137
|
`;
|
|
2124
2138
|
}
|
|
2125
2139
|
renderListbox() {
|
|
2126
|
-
const t = this.searched && !this.results.length, e =
|
|
2127
|
-
return
|
|
2140
|
+
const t = this.searched && !this.results.length, e = c`<li class="empty">No schools found</li>`;
|
|
2141
|
+
return c`
|
|
2128
2142
|
<ul id="school-search-listbox" role="listbox" aria-label="Schools">
|
|
2129
2143
|
${this.results.map((s, r) => this.renderOption(s, r))}
|
|
2130
2144
|
${t ? e : m}
|
|
@@ -2133,7 +2147,7 @@ class te extends C {
|
|
|
2133
2147
|
}
|
|
2134
2148
|
render() {
|
|
2135
2149
|
const t = this.activeIndex >= 0 ? `school-option-${this.activeIndex}` : "";
|
|
2136
|
-
return
|
|
2150
|
+
return c`
|
|
2137
2151
|
<input
|
|
2138
2152
|
type="text"
|
|
2139
2153
|
role="combobox"
|
|
@@ -2152,22 +2166,22 @@ class te extends C {
|
|
|
2152
2166
|
`;
|
|
2153
2167
|
}
|
|
2154
2168
|
}
|
|
2155
|
-
globalThis?.customElements && !globalThis.customElements.get("hsot-school-search") && globalThis.customElements.define("hsot-school-search",
|
|
2156
|
-
const
|
|
2157
|
-
"hsot-scores":
|
|
2158
|
-
"hsot-standings":
|
|
2159
|
-
"hsot-rankings":
|
|
2160
|
-
"hsot-school":
|
|
2161
|
-
"hsot-boxscore":
|
|
2162
|
-
"hsot-school-search":
|
|
2169
|
+
globalThis?.customElements && !globalThis.customElements.get("hsot-school-search") && globalThis.customElements.define("hsot-school-search", ee);
|
|
2170
|
+
const Xe = {
|
|
2171
|
+
"hsot-scores": Kt,
|
|
2172
|
+
"hsot-standings": Qt,
|
|
2173
|
+
"hsot-rankings": Zt,
|
|
2174
|
+
"hsot-school": Jt,
|
|
2175
|
+
"hsot-boxscore": te,
|
|
2176
|
+
"hsot-school-search": ee
|
|
2163
2177
|
};
|
|
2164
|
-
function
|
|
2178
|
+
function ts() {
|
|
2165
2179
|
const a = globalThis?.customElements;
|
|
2166
2180
|
if (a)
|
|
2167
|
-
for (const [t, e] of Object.entries(
|
|
2181
|
+
for (const [t, e] of Object.entries(Xe))
|
|
2168
2182
|
a.get(t) || a.define(t, e);
|
|
2169
2183
|
}
|
|
2170
|
-
typeof window < "u" && globalThis.customElements &&
|
|
2184
|
+
typeof window < "u" && globalThis.customElements && ts();
|
|
2171
2185
|
export {
|
|
2172
|
-
|
|
2186
|
+
ts as defineAll
|
|
2173
2187
|
};
|