@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.
@@ -17,14 +17,14 @@ let Ft = class {
17
17
  return this.cssText;
18
18
  }
19
19
  };
20
- const ee = (a) => new Ft(typeof a == "string" ? a : a + "", void 0, lt), b = (a, ...t) => {
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
- }, se = (a, t) => {
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 ee(e);
36
+ return se(e);
37
37
  })(a) : a;
38
- const { is: ae, defineProperty: re, getOwnPropertyDescriptor: oe, getOwnPropertyNames: ie, getOwnPropertySymbols: ne, getPrototypeOf: le } = Object, X = globalThis, kt = X.trustedTypes, ce = kt ? kt.emptyScript : "", he = X.reactiveElementPolyfillSupport, B = (a, t) => a, it = { toAttribute(a, t) {
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 ? ce : null;
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) => !ae(a, t), _t = { attribute: !0, type: String, converter: it, reflect: !1, useDefault: !1, hasChanged: Nt };
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 && re(this.prototype, t, r);
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 } = oe(this.prototype, t) ?? { get() {
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 = le(this);
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 = [...ie(e), ...ne(e)];
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 se(t, this.constructor.elementStyles), t;
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(), he?.({ 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, Ot = "$lit$", k = `lit$${Math.random().toFixed(9).slice(2)}$`, Ut = "?" + k, de = `<${Ut}>`, T = document, F = () => T.createComment(""), N = (a) => a === null || typeof a != "object" && typeof a != "function", ht = Array.isArray, pe = (a) => ht(a) || typeof a?.[Symbol.iterator] == "function", rt = `[
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"), Et = /'/g, Ct = /"/g, Ht = /^(?:script|style|textarea|title)$/i, Mt = (a) => (t, ...e) => ({ _$litType$: a, strings: t, values: e }), l = 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);
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 me = (a, t) => {
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 c, 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, c = h[1], i = h[3] === void 0 ? S : h[3] === '"' ? Ct : Et) : i === Ct || i === Et ? i = S : i === Tt || i === It ? i = R : (i = S, r = void 0);
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 + de : p >= 0 ? (s.push(c), d.slice(0, p) + Ot + d.slice(p) + k + u) : d + k + (p === -2 ? n : u);
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 O {
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, [c, h] = me(t, e);
275
- if (this.el = O.createElement(c, s), A.currentNode = this.el.content, e === 2 || e === 3) {
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(Ot)) {
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] === "." ? ue : $[1] === "?" ? ge : $[1] === "@" ? ve : tt }), r.removeAttribute(p);
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 === Ut) d.push({ type: 2, index: o });
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 fe {
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 c;
329
- d.type === 2 ? c = new M(o, o.nextSibling, this, t) : d.type === 1 ? c = new d.ctor(o, d.name, d.strings, this, t) : d.type === 6 && (c = new $e(o, this, t)), this._$AV.push(c), d = s[++n];
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) : pe(t) ? this.k(t) : this._(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 = O.createElement(Lt(s.h, s.h[0]), this.options)), s);
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 fe(r, this), i = o.u(this.options);
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 O(t)), e;
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, c;
416
- for (t = o[0], d = 0; d < o.length - 1; d++) c = D(this, n[s + d], e, d), c === P && (c = this._$AH[d]), i ||= !N(c) || c !== this._$AH[d], c === m ? t = m : t !== m && (t += (c ?? "") + o[d + 1]), this._$AH[d] = c;
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 ue extends tt {
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 ge extends tt {
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 ve extends tt {
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 $e {
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 be = ct.litHtmlPolyfillSupport;
465
- be?.(O, M), (ct.litHtmlVersions ??= []).push("3.3.3");
466
- const ye = (a, t, e) => {
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 C extends I {
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 = ye(e, this.renderRoot, this.renderOptions);
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
- C._$litElement$ = !0, C.finalized = !0, dt.litElementHydrateSupport?.({ LitElement: C });
499
- const we = dt.litElementPolyfillSupport;
500
- we?.({ LitElement: C });
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 xe = 50;
503
- function ke(a = {}) {
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 _e({ baseUrl: a, token: t = "", fetchFn: e } = {}) {
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 c = await r(`${s}${n}`, { headers: d });
516
- if (!c.ok) {
517
- const h = new Error(`api-hsot ${c.status} on ${n}`);
518
- throw h.status = c.status, h;
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 c.json();
520
+ return l.json();
521
521
  }
522
522
  async function i(n, d = {}) {
523
- const c = [];
523
+ const l = [];
524
524
  let h = null;
525
- for (let p = 0; p < xe; p += 1) {
526
- const f = ke(h ? { ...d, cursor: h } : d), u = await o(`${n}${f}`);
527
- if (c.push(...u.items || []), h = u.nextCursor || null, !h) break;
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: c, total: c.length, nextCursor: null };
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 Se(a) {
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 Ae(a, t = mt()) {
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 Te = (a) => {
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 Ie = /* @__PURE__ */ new Set(["game", "story", "page", "forum", "video", "gallery"]);
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((c) => !/^[a-z][a-z-]*$/.test(c)) || Ie.has(d[0]) ? null : n;
637
+ return d.length > 2 || d.some((l) => !/^[a-z][a-z-]*$/.test(l)) || Ce.has(d[0]) ? null : n;
638
638
  }
639
- function Ce(a, t, e) {
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 Pe(a, t = Wt()) {
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 C {
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 ? _e({ baseUrl: this.api }) : null;
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(), Pe(this);
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" ? l`<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 ? l`<div class="error">Unable to load right now. <button class="chip" @click=${() => this.load()}>Retry</button></div>` : this.data ? this.renderView() : l`<div class="loading" role="status">Loading…</div>`;
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 l``;
720
+ return c``;
721
721
  }
722
722
  }
723
- const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), De = b`
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
- `, ze = b`
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
- `, Re = b`
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
- `, Be = b`
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
- `, Fe = b`
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
- `, Ne = b`
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 = [De, ze, Re, Be, Fe, Ne, Oe];
981
+ `, j = [ze, Re, Be, Fe, Ne, Ue, Oe];
982
982
  function ut(a) {
983
- return a.state !== "final" ? null : a.forfeit && a.forfeit !== "none" ? a.forfeit : a.homeScore > a.awayScore ? "home" : a.awayScore > a.homeScore ? "away" : a.tiebreakWinner && a.tiebreakWinner !== "none" ? a.tiebreakWinner : "tie";
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 Ue(a) {
986
- return !a || !a.forfeit || a.forfeit === "none" ? null : a.forfeit === "home" ? "away" : a.forfeit === "away" ? "home" : null;
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 c = d === "home" ? o.homeTeamId : o.awayTeamId;
994
- if (!c) continue;
995
- const h = s(c), p = d === "home" ? o.homeScore : o.awayScore, f = d === "home" ? o.awayScore : o.homeScore;
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 c = d.gender || "", h = i.get(c);
1039
- (!h || d.effectiveDate > h.effectiveDate) && i.set(c, d);
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 c = (d.teamIds || []).indexOf(e);
1044
- c !== -1 && (!n || d.effectiveDate > n.effectiveDate) && (n = { poll: d, rank: c + 1 });
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 He(a, t, e) {
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 Me(a) {
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 = a?.logoAssetId;
1063
- if (!Me(e)) return "";
1064
- const s = Math.max(1, Math.round(t * 2)), r = e.includes("?") ? "&" : "?";
1065
- return `${e}${r}w=${s}&h=${s}&f=webp`;
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 l`
1077
+ return c`
1070
1078
  <div class="band section">
1071
1079
  <div class="inner">
1072
1080
  <h1>${e}</h1>
1073
- ${s ? l`<p class="sub">${s}</p>` : m}
1081
+ ${s ? c`<p class="sub">${s}</p>` : m}
1074
1082
  </div>
1075
- ${n ? l`
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
- ${Ce(t.sport, r, t.hrefs).map((d) => l`<a href=${d.href}
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 U = (a, t) => {
1095
+ const O = (a, t) => {
1088
1096
  const e = a.teamsById[t];
1089
1097
  return e ? a.schoolsById[e.schoolId] : null;
1090
- }, E = (a, t) => U(a, t)?.name || "TBD", Z = (a, t) => U(a, t)?.abbr || "TBD";
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 l`<img class="swatch logo" aria-hidden="true" alt="" loading="lazy"
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 l`<span class="swatch" aria-hidden="true"
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 ? l`<span class="rankbadge">#${s}</span>` : m;
1112
+ return s ? c`<span class="rankbadge">#${s}</span>` : m;
1105
1113
  }
1106
- function Gt(a, t, e) {
1107
- const s = U(a, t);
1108
- return s ? l`${bt(a, t, e)}<a href=${g(a.hrefs.school, { id: s.id })}>${s.name}</a>` : l`<span class="mut">TBD</span>`;
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 l`<span class="mut">·</span>`;
1120
+ if (!s || !s.results.length) return c`<span class="mut">·</span>`;
1113
1121
  const r = s.results.slice(-1 * e);
1114
- return l`<span class="dots" role="img" aria-label="last ${r.length} results">
1115
- ${r.map((o) => l`<a class="dot ${o.mark}"
1116
- title="${o.mark} ${o.my}-${o.their} vs ${E(a, o.opp)}"
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"]') ? l`<div class="view withrail">
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>` : l`<div class="view">${t}</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 = l`<img src=${a.promoImage} alt=${a.promoAlt || "Sponsor"}>`;
1129
- return l`<div class="promo">${a.promoHref ? l`<a href=${a.promoHref} target="_blank" rel="sponsored noopener">${t}</a>` : t}</div>`;
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 l`<span class="pill ${t.kind}">${t.label}</span>`;
1141
+ return c`<span class="pill ${t.kind}">${t.label}</span>`;
1134
1142
  }
1135
- function Vt(a, t, e) {
1136
- if (!t) return l`<span class="mut">·</span>`;
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 l`${t.state === "live" ? l`<span class="pill live">Live</span> ` : l`${y(t.date, { month: "numeric", day: "numeric" })} `}${r} ${Z(a, s)}`;
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 Yt extends w {
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 = Ae(i.items.map((d) => d.date)), this._datePinned = !0), {
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((c) => c.date).filter(Boolean))].sort(), r = Number.MAX_SAFE_INTEGER, o = (c) => {
1187
- const h = [c.awayTeamId, c.homeTeamId].map((p) => vt(t.rankings, t.teamsById, p, this.sport, c.date)).filter(Boolean);
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((c) => c.date === this.date), n = new Map(i.map((c) => [c, o(c)]));
1190
- i.sort((c, h) => (c.state === "live" ? 0 : 1) - (h.state === "live" ? 0 : 1) || n.get(c) - n.get(h));
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((c) => {
1193
- const h = c.gameType === "conference" && c.conferenceId ? e[c.conferenceId]?.name || "Conference" : c.gameType === "playoff" ? "Playoffs" : c.gameType === "scrimmage" ? "Scrimmages" : "Nonconference";
1194
- d.has(h) || d.set(h, []), d.get(h).push(c);
1195
- }), l`
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: l`${z(this.sport)} scores &amp; schedules`,
1198
- sub: l`${y(this.date, { weekday: "long", month: "long", day: "numeric", year: "numeric" })} · ${i.length} games`,
1205
+ title: c`${z(this.sport)} scores &amp; 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, l`
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=${(c) => {
1206
- this.date = c.target.value;
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((c) => l`<option value=${c} ?selected=${c === this.date}>
1209
- ${y(c, { weekday: "short", month: "short", day: "numeric" })}${c === mt() ? " · today" : ""}
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 : l`<p class="empty">No ${this.sport} games on this date.</p>`}
1224
- ${[...d.entries()].map(([c, h]) => l`
1225
- <div class="section-title">${c}</div>
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) => l`<span class="side">${Gt(t, i, e.date)}${s ? l`<span class="score">${n}</span>` : m}${d}</span>`, o = Ue(e);
1238
- return l`
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, l`<span class="at">at</span>`)}${r(e.homeTeamId, e.homeScore)}</span>
1242
- ${o ? l`<span class="ff">${E(t, o === "home" ? e.homeTeamId : e.awayTeamId)} forfeited</span>` : m}
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 ? l`<span class="pill class">${e.broadcast}</span>` : m}
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", Yt);
1251
- class Kt extends w {
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 l`
1300
+ return c`
1293
1301
  ${$t(this, t, {
1294
- title: l`${z(this.sport)} standings`,
1295
- sub: l`${this.data.season} season · every conference, computed live from reported results`,
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, l`
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) => l`<button class="chip ${this.classFilter === r ? "on" : ""}"
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 l`
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) => l`<span class="pill class">${i}</span>`)}
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), c = (e.team.championships || []).map((p) => l`
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 l`
1350
- <tr class="rowlink" @click=${(p) => {
1351
- p.target.closest("a") || h();
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> ${c}
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>${Vt(t, d, e.team.id)}</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", Kt);
1373
- const Le = b`
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 Qt extends w {
1391
- static styles = [...j, Le];
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((c) => !this.gender || !c.gender || c.gender === this.gender).sort((c, h) => h.effectiveDate.localeCompare(c.effectiveDate));
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 c = [];
1448
+ let l = [];
1442
1449
  if (n.forEach((p) => {
1443
- p ? c.push(p) : c.length && (d.push(c), c = []);
1444
- }), c.length && d.push(c), !d.length) return m;
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 l`<svg class="sparkline" width=${96} height=${26} viewBox="0 0 ${96} ${26}" role="img" aria-label="rank history">
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 = He(t, e, s);
1454
- return r.kind === "up" ? l`<span class="delta up">▲ ${r.delta}</span>` : r.kind === "down" ? l`<span class="delta down">▼ ${r.delta}</span>` : r.kind === "new" ? l`<span class="delta new">NEW</span>` : r.kind === "same" ? l`<span class="delta same">—</span>` : l`<span class="delta same">·</span>`;
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 l`<div class="view"><p class="empty">No ${this.sport} polls published yet this season.</p></div>`;
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), c = (r.teamIds || [])[0], h = c ? U(t, c) : null;
1460
- return l`
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: l`${z(this.sport)} Top 25`,
1463
- sub: l`The HighSchoolOT poll · updated weekly · ${e.length} polls this season`,
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, l`
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) => l`<option value=${p.effectiveDate} ?selected=${p === r}>
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, c, h, d) : m}
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), c = i[t.teamsById[r]?.conferenceId], h = `linear-gradient(120deg, ${o.colorPrimary || "#030711"} 0%, var(--hsot-black) 85%)`;
1504
- return l`
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${c ? l` · ${x(n, !0)} ${c.name}` : m}
1518
+ ${x(n)} overall${l ? c` · ${x(n, !0)} ${l.name}` : m}
1512
1519
  · streak ${st(n?.results) || "·"}
1513
- ${d ? l` · last: ${d.mark} ${d.my}-${d.their} vs ${Z(t, d.opp)}` : m}
1520
+ ${d ? c` · last: ${d.mark} ${d.my}-${d.their} vs ${Z(t, d.opp)}` : m}
1514
1521
  &nbsp;${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 c = U(t, n);
1522
- if (!c) return m;
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: c.id });
1531
+ location.href = g(t.hrefs.school, { id: l.id });
1525
1532
  };
1526
- return l`
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(c)}<a href=${g(t.hrefs.school, { id: c.id })}>${c.name}</a>
1533
- <span class="mut" style="font-size:0.78rem">${c.mascot || ""}</span></td>
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 ? l`<a class="box" style="text-decoration:none" href=${g(t.hrefs.game, { sport: this.sport, id: p.gameId })}>
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>` : l`<span class="mut">·</span>`}</td>
1539
- <td>${Vt(t, f, n)}</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", Qt);
1546
- const je = b`
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 Zt extends w {
1572
- static styles = [...j, je];
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, c, h, p, f, u] = await Promise.all([
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: c.items,
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 l`<div class="view"><p class="empty">School not found.</p></div>`;
1630
- const o = this.ctx, i = K(t.colorPrimary || "#030711"), n = (t.adm || [])[0], d = v(this.data.conferences), c = s ? d[s.conferenceId] : null;
1631
- return l`
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) ? l`<img class="crest logo" alt="" loading="lazy" src=${Q(t, 84)} />` : l`<div class="crest" style="background:${t.colorSecondary || "#7C7C7C"};color:${K(t.colorSecondary || "#7C7C7C")}">${ft(t)}</div>`}
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 ? l`<span><b>Location</b>${t.location}${t.county ? l` · ${t.county} County` : m}</span>` : m}
1639
- ${t.association ? l`<span><b>League</b>${t.association}${t.classification ? l` · ${t.classification}` : m}</span>` : m}
1640
- ${c ? l`<span><b>Conference</b>${c.name}</span>` : m}
1641
- ${n ? l`<span><b>Enrollment</b>${n.value.toLocaleString()} (${n.season} ADM)</span>` : m}
1642
- ${t.openingYear ? l`<span><b>Opened</b>${t.openingYear}</span>` : m}
1643
- ${t.areaCode ? l`<span><b>Area</b>${t.areaCode}</span>` : m}
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 ? l`<a class="on" href="#" @click=${(p) => p.preventDefault()}>${h.name}</a>` : l`<a href="#" @click=${(p) => {
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, l`
1666
+ ${q(this, c`
1656
1667
  ${G(this)}
1657
- ${s ? this.renderTeam(o, s, c, r) : l`<p class="empty">No teams recorded for this school yet.</p>`}
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, c = 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)));
1663
- return l`
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 ? `${Te(d)} of ${n.length}` : "·"}</div></div>
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">${c ? `#${c}` : "NR"}</div>
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 ? l`
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) => l`<span class="pill champ">★ ${p.season} ${p.title} champion${p.classification ? ` · ${p.classification}` : ""}${p.region ? ` · ${p.region}` : ""}</span>`)}
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 &amp; results</div>
1682
1693
  <div class="card">
1683
- ${h.length ? l`<ul class="gamelist">${h.map((p) => this.renderGameRow(t, e, p))}</ul>` : l`<p class="empty">No ${e.sport} games recorded for ${r}.</p>`}
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 = l`<span class="mut">${pt(s.time)}</span>`;
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 = l`<span class=${p}>${p}</span> ${i}-${n}${s.finish === "overtime" ? l` <span class="mut">OT</span>` : m}${s.forfeit && s.forfeit !== "none" ? l` <span class="mut">FF</span>` : m}`;
1699
- } else s.state === "live" && (d = l`<span style="color:var(--hsot-red)">${i}-${n}</span>`);
1700
- const c = s.gameType === "conference" ? "Conf" : s.gameType === "nonconference" ? "Non-conf" : s.gameType === "playoff" ? `Playoff${s.label ? ` · ${s.label}` : ""}` : "Scrimmage";
1701
- return l`
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"} ${Gt(t, o, s.date)}
1707
- <span class="pill type">${c}</span>
1708
- ${s.broadcast ? l`<span class="pill class">${s.broadcast}</span>` : m}
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 e = this.data.roster;
1717
- if (!e)
1718
- return l`<p class="empty">Roster not published for ${t}.</p>`;
1719
- const s = v(this.data.players), r = e.entries.slice().sort((o, i) => (o.number || 0) - (i.number || 0));
1720
- return l`
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></tr></thead>
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
- ${r.map((o) => {
1725
- const i = s[o.playerId];
1726
- return i ? l`<tr>
1727
- <td class="num mut">${o.number ?? "·"}</td>
1728
- <td style="font-weight:500">${i.firstName} ${i.lastName}</td>
1729
- <td>${o.position || "·"}</td>
1730
- <td class="mut">${i.classOf || "·"}</td>
1731
- <td class="num">${Se(i.heightIn)}</td>
1732
- <td class="num">${i.weightLb || "·"}</td>
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", Zt);
1741
- const We = "https://api.wral.com/search";
1742
- function qe(a) {
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 Ge(a, t) {
1746
- const e = String(a || We).replace(/\/+$/, ""), s = new URLSearchParams({ query: qe(t), sort: "score", lang: "en" });
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 Jt(a) {
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 Ve(a, t, e) {
1765
- const r = await ((...n) => fetch(...n))(Ge(a, t));
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) || Jt(n));
1782
+ return t.map((n) => i.get(n) || Xt(n));
1769
1783
  }
1770
- const Ye = b`
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 Xt extends w {
1810
- static styles = [...j, Ye];
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, c] = await Promise.all([
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 ? Ve(this.searchApi, s).catch(() => s.map(Jt)) : Promise.resolve([])
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: c
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 l`<div class="view"><p class="empty">Game not found.</p></div>`;
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, c = 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));
1858
- return l`
1859
- ${q(this, l`
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
- ${E(e, t.awayTeamId)} at ${E(e, t.homeTeamId)}
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 ? l` · ${pt(t.time)}` : m} · ${t.venue || "Venue TBD"}
1877
- ${t.broadcast ? l` · <span class="pill class">${t.broadcast}</span>` : m}</div>
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 ? l`<span class="pill type">Bracket ${t.label}</span>` : m}
1881
- ${(t.tags || []).map((h) => l`<span class="pill type">${h}</span>`)}
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 ? l`<p class="note" style="padding:0 1rem 0.9rem;text-align:center">${t.notes}</p>` : m}
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 ? l`
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) => l`
1906
+ ${this.data.coverage.map((h) => c`
1893
1907
  <a class="card covcard" href=${h.uri}>
1894
- ${h.image ? l`<img class="covimg" src=${h.image} alt="" loading="lazy" />` : m}
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 ? l`<span class="pill live" style="animation:none">Video</span> ` : m}${h.photos ? l`<span class="pill live" style="animation:none">Photos</span> ` : m}${h.title || h.uri}</div>
1897
- ${h.description ? l`<p class="covdesc">${h.description}</p>` : m}
1898
- ${h.author || h.publishedTime ? l`
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
- ${c.length ? l`
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
- ${c.map((h) => l`<li>
1926
+ ${l.map((h) => c`<li>
1913
1927
  <span class="d">${y(h.date)}</span>${J(h)}
1914
- <span class="opp">${E(e, h.awayTeamId)} ${h.awayScore}, ${E(e, h.homeTeamId)} ${h.homeScore}</span>
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 l`<div class="teamblock ${o ? "right" : ""}"><div class="tname">TBD</div></div>`;
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 l`
1938
+ return c`
1925
1939
  <div class="teamblock ${o ? "right" : ""}">
1926
- ${d ? l`<img class="crest logo" alt="" loading="lazy" src=${d} />` : l`<span class="crest" style="background:${r.colorPrimary || "#030711"};color:${K(r.colorPrimary || "#030711")}">${ft(r)}</span>`}
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 ? l` · ${x(n, !0)} conf` : m}</div>
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 l`<p class="empty" style="text-align:center">Period scoring will appear once the game starts.</p>`;
1938
- const o = Math.max(4, ...r.map((c) => c.period)), i = (c) => c <= 4 ? String(c) : `OT${c > 5 ? c - 4 : ""}`, n = (c, h) => {
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[c] : t.state === "final" ? 0 : "·";
1941
- }, d = (c, h, p) => l`
1954
+ return p ? p[l] : t.state === "final" ? 0 : "·";
1955
+ }, d = (l, h, p) => c`
1942
1956
  <tr>
1943
- <td class="teamcell">${H(c, 20)}${c?.abbr || "TBD"}</td>
1944
- ${Array.from({ length: o }, (f, u) => l`<td class="num">${n(h, u + 1)}</td>`)}
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 l`
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 }, (c, h) => l`<th class="num">${i(h + 1)}</th>`)}<th class="num">T</th></tr></thead>
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 l`
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 ? l`${y(o.date, { month: "numeric", day: "numeric" })}
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", Xt);
1977
- const Ke = 250, Qe = 2;
1978
- class te extends C {
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 < Qe) {
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), Ke);
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 l`
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 ? l`<span class="where">${s}</span>` : m}
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 = l`<li class="empty">No schools found</li>`;
2127
- return l`
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 l`
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", te);
2156
- const Ze = {
2157
- "hsot-scores": Yt,
2158
- "hsot-standings": Kt,
2159
- "hsot-rankings": Qt,
2160
- "hsot-school": Zt,
2161
- "hsot-boxscore": Xt,
2162
- "hsot-school-search": te
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 Je() {
2178
+ function ts() {
2165
2179
  const a = globalThis?.customElements;
2166
2180
  if (a)
2167
- for (const [t, e] of Object.entries(Ze))
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 && Je();
2184
+ typeof window < "u" && globalThis.customElements && ts();
2171
2185
  export {
2172
- Je as defineAll
2186
+ ts as defineAll
2173
2187
  };