@sensiblestats/widget-react 0.93.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ var NBA_STAT_EN = { points: "Points", rebounds: "Rebounds", assists: "Assists",
19
19
  var NBA_STAT_TR = { points: "Say\u0131", rebounds: "Ribaund", assists: "Asist", threes: "\xDC\xE7l\xFCk", steals: "Top \xE7alma", blocks: "Blok" };
20
20
  var NBA_STAT_SHORT_EN = { points: "PTS", rebounds: "REB", assists: "AST", threes: "3PM" };
21
21
  var NBA_STAT_SHORT_TR = { points: "SAY", rebounds: "RIB", assists: "AST", threes: "3SY" };
22
+ var NBA_POSITION_EN = { G: "guards", F: "forwards", C: "centers" };
23
+ var NBA_POSITION_TR = { G: "guard", F: "forvet", C: "pivot" };
22
24
  var NBA_STATUS_TR = { Out: "Oynamayacak", Doubtful: "\u015E\xFCpheli", Questionable: "Belirsiz", Probable: "Muhtemel" };
23
25
  var signed = (line) => line.replace(/^-/, "\u2212");
24
26
  var GROUP_NOUN_EN = { G: "goalkeepers", D: "defenders", M: "midfielders", F: "forwards" };
@@ -309,7 +311,6 @@ var STRINGS = {
309
311
  under: (l) => `Under ${l}`,
310
312
  lastN: (n) => `L${n}`,
311
313
  both: "Both",
312
- combined: "Two prices multiplied",
313
314
  addBoth: "Add both to slip",
314
315
  bothInSlip: "Both in slip",
315
316
  spread: "Spread",
@@ -335,7 +336,26 @@ var STRINGS = {
335
336
  propsLast5: "Last 5 games",
336
337
  propsLadderOnly: "Ladder only",
337
338
  propsMarkets: (n) => `${n} markets`,
338
- propsStatShort: (stat) => NBA_STAT_SHORT_EN[stat] ?? stat
339
+ propsStatShort: (stat) => NBA_STAT_SHORT_EN[stat] ?? stat,
340
+ matchupPace: "Pace",
341
+ matchupOffRating: "Offensive rating",
342
+ matchupDefRating: "Defensive rating",
343
+ rankOf: (r, n) => `rank ${r} of ${n}`,
344
+ daysRest: (d) => `${d} ${d === 1 ? "day" : "days"} rest`,
345
+ backToBack: "Back-to-back",
346
+ allowsToPosition: (team, v, stat, pos, avg) => `${team} allows ${v} ${(NBA_STAT_EN[stat] ?? stat).toLowerCase()} per game to ${NBA_POSITION_EN[pos] ?? pos} (league average ${avg})`,
347
+ quarterWindow1q: "First quarter",
348
+ quarterWindowFirst3: "First 3 min",
349
+ hitsOf: (h, n) => `${h} of ${n}`,
350
+ settled: "Settled",
351
+ actual: "Actual",
352
+ resultOver: "Over",
353
+ resultUnder: "Under",
354
+ resultPush: "Push",
355
+ resultVoid: "Void",
356
+ lastLineBeforeTip: "Last line before tip",
357
+ morePlayers: (n) => `+${n} more players`,
358
+ smallSample: "Small sample"
339
359
  },
340
360
  games: {
341
361
  lang: "en",
@@ -820,7 +840,6 @@ var STRINGS = {
820
840
  under: (l) => `Alt ${l}`,
821
841
  lastN: (n) => `L${n}`,
822
842
  both: "\u0130kisi de",
823
- combined: "\u0130ki oran\u0131n \xE7arp\u0131m\u0131",
824
843
  addBoth: "\u0130kisini kupona ekle",
825
844
  bothInSlip: "\u0130kisi de kuponda",
826
845
  spread: "Handikap",
@@ -846,7 +865,26 @@ var STRINGS = {
846
865
  propsLast5: "Son 5 ma\xE7",
847
866
  propsLadderOnly: "Sadece alternatif",
848
867
  propsMarkets: (n) => `${n} market`,
849
- propsStatShort: (stat) => NBA_STAT_SHORT_TR[stat] ?? stat
868
+ propsStatShort: (stat) => NBA_STAT_SHORT_TR[stat] ?? stat,
869
+ matchupPace: "Tempo",
870
+ matchupOffRating: "H\xFCcum reytingi",
871
+ matchupDefRating: "Savunma reytingi",
872
+ rankOf: (r, n) => `${n} tak\u0131mda ${r}. s\u0131ra`,
873
+ daysRest: (d) => `${d} g\xFCn dinlenme`,
874
+ backToBack: "Arka arkaya ma\xE7",
875
+ allowsToPosition: (team, v, stat, pos, avg) => `${team}, ${NBA_POSITION_TR[pos] ?? pos} oyunculara ma\xE7 ba\u015F\u0131na ${v} ${(NBA_STAT_TR[stat] ?? stat).toLocaleLowerCase("tr-TR")} veriyor (lig ortalamas\u0131 ${avg})`,
876
+ quarterWindow1q: "\u0130lk \xE7eyrek",
877
+ quarterWindowFirst3: "\u0130lk 3 dakika",
878
+ hitsOf: (h, n) => `${n} ma\xE7ta ${h}`,
879
+ settled: "Sonu\xE7land\u0131",
880
+ actual: "Ger\xE7ek",
881
+ resultOver: "\xDCst",
882
+ resultUnder: "Alt",
883
+ resultPush: "\u0130ade",
884
+ resultVoid: "\u0130ptal",
885
+ lastLineBeforeTip: "Ma\xE7 \xF6ncesi son baraj",
886
+ morePlayers: (n) => `+${n} oyuncu daha`,
887
+ smallSample: "Az ma\xE7"
850
888
  },
851
889
  games: {
852
890
  lang: "tr",
@@ -1061,7 +1099,7 @@ function isEnglishLocale(locale) {
1061
1099
  }
1062
1100
 
1063
1101
  // src/version.generated.ts
1064
- var WIDGET_REACT_VERSION = "0.93.0";
1102
+ var WIDGET_REACT_VERSION = "0.95.0";
1065
1103
 
1066
1104
  // src/config.ts
1067
1105
  function normalizeUi(cfg) {
@@ -1656,6 +1694,27 @@ function comboLegToSlipSelection(leg, conversationId) {
1656
1694
  if (conversationId !== void 0) selection.conversationId = conversationId;
1657
1695
  return selection;
1658
1696
  }
1697
+ var isNum = (v) => typeof v === "number" && Number.isFinite(v);
1698
+ var isObj = (v) => typeof v === "object" && v !== null;
1699
+ var numOrNull = (v) => v === null || v === void 0 || isNum(v);
1700
+ function validMatchupTeam(t) {
1701
+ return isObj(t) && typeof t.name === "string" && typeof t.abbr === "string" && isNum(t.pace) && isNum(t.offRating) && isNum(t.defRating) && isNum(t.n) && isNum(t.teamsRanked) && numOrNull(t.daysRest) && numOrNull(t.paceRank) && numOrNull(t.offRatingRank) && numOrNull(t.defRatingRank);
1702
+ }
1703
+ function validMatchupPosition(p) {
1704
+ return isObj(p) && typeof p.defendingTeamAbbr === "string" && typeof p.position === "string" && typeof p.stat === "string" && isNum(p.allowedPerGame) && isNum(p.leagueAvg) && isNum(p.rank) && isNum(p.teamsRanked) && isNum(p.n);
1705
+ }
1706
+ function sanitizeMatchup(m) {
1707
+ if (!m || !Array.isArray(m.teams) || m.teams.length !== 2 || !m.teams.every(validMatchupTeam)) return null;
1708
+ const teams = m.teams.map((t) => ({ ...t, daysRest: t.daysRest ?? null, paceRank: t.paceRank ?? null, offRatingRank: t.offRatingRank ?? null, defRatingRank: t.defRatingRank ?? null }));
1709
+ return { teams, position: validMatchupPosition(m.position) ? m.position : null };
1710
+ }
1711
+ function validQuarterLadder(q) {
1712
+ return !!q && (q.window === "1q" || q.window === "first3min") && Array.isArray(q.stats) && q.stats.every((st) => isObj(st) && Array.isArray(st.rungs) && st.rungs.every((r) => isObj(r) && typeof r.at === "string" && isNum(r.hits) && isNum(r.n)));
1713
+ }
1714
+ var SETTLE_RESULTS = ["over", "under", "push", "void"];
1715
+ function validSettleRecap(sr) {
1716
+ return !!sr && isObj(sr.summary) && isNum(sr.summary.over) && isNum(sr.summary.under) && isNum(sr.summary.pushes) && isNum(sr.summary.voids) && Array.isArray(sr.players) && sr.players.every((p) => isObj(p) && Array.isArray(p.lines) && p.lines.every((l) => isObj(l) && typeof l.line === "string" && (l.actual === null || typeof l.actual === "string") && SETTLE_RESULTS.includes(l.result)));
1717
+ }
1659
1718
  function nbaEvidence(insight) {
1660
1719
  switch (insight.kind) {
1661
1720
  case "prop_reason":
@@ -1668,6 +1727,14 @@ function nbaEvidence(insight) {
1668
1727
  return insight.coHit && insight.coHit.legs.length === 2 ? { kind: "co_hit", coHit: insight.coHit } : null;
1669
1728
  case "ladder":
1670
1729
  return insight.ladder ? { kind: "ladder", ladder: insight.ladder } : null;
1730
+ case "matchup": {
1731
+ const matchup = sanitizeMatchup(insight.matchup);
1732
+ return matchup ? { kind: "matchup", matchup } : null;
1733
+ }
1734
+ case "quarter_ladder":
1735
+ return validQuarterLadder(insight.quarterLadder) ? { kind: "quarter_ladder", quarterLadder: insight.quarterLadder } : null;
1736
+ case "settle_recap":
1737
+ return validSettleRecap(insight.settleRecap) ? { kind: "settle_recap", settleRecap: insight.settleRecap } : null;
1671
1738
  default:
1672
1739
  return null;
1673
1740
  }
@@ -2614,7 +2681,7 @@ function clearConversation(storageKey) {
2614
2681
  }
2615
2682
 
2616
2683
  // src/presets.ts
2617
- var CLIENT_CAPABILITIES = ["price_presets", "price_presets_open", "limit_notice", "nba_insight"];
2684
+ var CLIENT_CAPABILITIES = ["price_presets", "price_presets_open", "limit_notice", "nba_insight", "nba_insight_v2"];
2618
2685
  var PRICE_TILE_PREFIX = "goal-preset-";
2619
2686
  function isPriceTile(tile) {
2620
2687
  const id = tile.signal?.entityId;
@@ -5055,19 +5122,23 @@ function NbaPrice({ vm, selectionKey, label, ui, slip }) {
5055
5122
  function Head({ vm, chip, ui, monitor }) {
5056
5123
  const fixture = vm.homeTeamName && vm.awayTeamName ? `${vm.homeTeamName} vs ${vm.awayTeamName}` : vm.competition;
5057
5124
  const meta = [fixture, vm.kickoffLabel].filter(Boolean).join(" \xB7 ");
5125
+ const pinnable = monitor?.enabled === true && vm.evidence.kind !== "settle_recap";
5058
5126
  return /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-head", children: [
5059
5127
  /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-head-l", children: [
5060
5128
  meta ? /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-meta", children: meta }) : null,
5061
5129
  /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-title", children: vm.title })
5062
5130
  ] }),
5063
- chip || monitor?.enabled ? /* @__PURE__ */ jsxs13("span", { className: "ss-w-bi-meta-right", children: [
5131
+ chip || pinnable ? /* @__PURE__ */ jsxs13("span", { className: "ss-w-bi-meta-right", children: [
5064
5132
  chip ? /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-chip", children: chip }) : null,
5065
- monitor?.enabled ? /* @__PURE__ */ jsx17(PinToggle, { ui, monitor, pin: { kind: "match", matchId: vm.matchId, sport: "basketball" } }) : null
5133
+ pinnable && monitor ? /* @__PURE__ */ jsx17(PinToggle, { ui, monitor, pin: { kind: "match", matchId: vm.matchId, sport: "basketball" } }) : null
5066
5134
  ] }) : null
5067
5135
  ] });
5068
5136
  }
5069
5137
  function Foot({ vm, ui, lines }) {
5070
- return /* @__PURE__ */ jsx17("div", { className: "ss-w-nba-foot", children: [...lines, ui.nba.quoted(clock(vm.quotedAtUtc)), ...vm.disclaimer ? [vm.disclaimer] : []].join(" ") });
5138
+ const quoted = Object.keys(vm.selections).length > 0 ? [ui.nba.quoted(clock(vm.quotedAtUtc))] : [];
5139
+ const parts = [...lines, ...quoted, ...vm.disclaimer ? [vm.disclaimer] : []];
5140
+ if (parts.length === 0) return null;
5141
+ return /* @__PURE__ */ jsx17("div", { className: "ss-w-nba-foot", children: parts.join(" ") });
5071
5142
  }
5072
5143
  function PropReason({ vm, pr, ui, slip }) {
5073
5144
  const nba = ui.nba;
@@ -5136,6 +5207,117 @@ function Ladder({ vm, ld, ui, slip }) {
5136
5207
  ] })
5137
5208
  ] }, `${st.stat}:${si}`)) });
5138
5209
  }
5210
+ function SmallSample({ ui }) {
5211
+ return /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-small", children: ui.nba.smallSample });
5212
+ }
5213
+ function NbaMatchupBody({ mu, ui }) {
5214
+ const nba = ui.nba;
5215
+ const metrics = [
5216
+ { label: nba.matchupPace, value: (t) => t.pace, rank: (t) => t.paceRank },
5217
+ { label: nba.matchupOffRating, value: (t) => t.offRating, rank: (t) => t.offRatingRank },
5218
+ { label: nba.matchupDefRating, value: (t) => t.defRating, rank: (t) => t.defRatingRank }
5219
+ ];
5220
+ const pos = mu.position;
5221
+ return /* @__PURE__ */ jsxs13(Fragment2, { children: [
5222
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-mu", children: [
5223
+ /* @__PURE__ */ jsx17("span", {}),
5224
+ mu.teams.map((t) => /* @__PURE__ */ jsxs13("span", { className: "ss-w-nba-mu-team", title: t.name, children: [
5225
+ /* @__PURE__ */ jsx17("b", { children: t.abbr }),
5226
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd", children: nba.lastN(t.n) }),
5227
+ t.smallSample ? /* @__PURE__ */ jsx17(SmallSample, { ui }) : null
5228
+ ] }, `h:${t.teamId}`)),
5229
+ metrics.map((m) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5230
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd", children: m.label }),
5231
+ mu.teams.map((t) => {
5232
+ const r = m.rank(t);
5233
+ return /* @__PURE__ */ jsxs13("span", { className: "ss-w-nba-mu-v", children: [
5234
+ /* @__PURE__ */ jsx17("b", { children: oneDecimal(m.value(t), ui) }),
5235
+ r !== null ? /* @__PURE__ */ jsx17("span", { children: nba.rankOf(r, t.teamsRanked) }) : null
5236
+ ] }, `${m.label}:${t.teamId}`);
5237
+ })
5238
+ ] }, m.label)),
5239
+ mu.teams.some((t) => t.daysRest !== null || t.backToBack) ? /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5240
+ /* @__PURE__ */ jsx17("span", {}),
5241
+ mu.teams.map((t) => /* @__PURE__ */ jsxs13("span", { className: "ss-w-nba-mu-rest", children: [
5242
+ t.daysRest !== null ? nba.daysRest(t.daysRest) : "",
5243
+ t.daysRest !== null && t.backToBack ? " \xB7 " : "",
5244
+ t.backToBack ? /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-b2b", children: nba.backToBack }) : null
5245
+ ] }, `rest:${t.teamId}`))
5246
+ ] }) : null
5247
+ ] }),
5248
+ pos ? /* @__PURE__ */ jsxs13("p", { className: "ss-w-nba-mu-pos", children: [
5249
+ nba.allowsToPosition(pos.defendingTeamAbbr, oneDecimal(pos.allowedPerGame, ui), pos.stat, pos.position, oneDecimal(pos.leagueAvg, ui)),
5250
+ " ",
5251
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-note", children: nba.rankOf(pos.rank, pos.teamsRanked) }),
5252
+ pos.smallSample ? /* @__PURE__ */ jsx17(SmallSample, { ui }) : null
5253
+ ] }) : null
5254
+ ] });
5255
+ }
5256
+ function NbaQuarterLadderBody({ vm, ql, ui, slip }) {
5257
+ const nba = ui.nba;
5258
+ const windowLabel = ql.window === "1q" ? nba.quarterWindow1q : ql.window === "first3min" ? nba.quarterWindowFirst3 : "";
5259
+ return /* @__PURE__ */ jsx17(Fragment2, { children: ql.stats.map((st, si) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-stat", children: [
5260
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-stathd", children: [
5261
+ /* @__PURE__ */ jsx17("b", { children: nba.stat(st.stat) }),
5262
+ /* @__PURE__ */ jsx17("span", { children: windowLabel }),
5263
+ st.rungs.some((r) => r.n < 5) ? /* @__PURE__ */ jsx17(SmallSample, { ui }) : null
5264
+ ] }),
5265
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-ladder ss-w-nba-ladder--q", children: [
5266
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5267
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd", children: nba.line }),
5268
+ /* @__PURE__ */ jsx17("span", {}),
5269
+ /* @__PURE__ */ jsx17("span", {}),
5270
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd ss-w-nba-n", children: nba.price })
5271
+ ] }),
5272
+ st.rungs.map((r, ri) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5273
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-at", children: nba.over(nba.lineText(r.at)) }),
5274
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-meter", children: /* @__PURE__ */ jsx17("span", { style: { width: r.n > 0 ? `${r.hits / r.n * 100}%` : "0%" } }) }),
5275
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-n", children: nba.hitsOf(r.hits, r.n) }),
5276
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-pcell", children: /* @__PURE__ */ jsx17(NbaPrice, { vm, selectionKey: r.selectionKey, ui, slip }) })
5277
+ ] }, `${r.selectionKey}:${ri}`))
5278
+ ] })
5279
+ ] }, `${st.stat}:${si}`)) });
5280
+ }
5281
+ function NbaSettleRecapBody({ sr, ui }) {
5282
+ const nba = ui.nba;
5283
+ const result = { over: nba.resultOver, under: nba.resultUnder, push: nba.resultPush, void: nba.resultVoid };
5284
+ const { over, under, pushes, voids } = sr.summary;
5285
+ const summary = [
5286
+ `${nba.resultOver} ${over}`,
5287
+ `${nba.resultUnder} ${under}`,
5288
+ ...pushes > 0 ? [`${nba.resultPush} ${pushes}`] : [],
5289
+ ...voids > 0 ? [`${nba.resultVoid} ${voids}`] : []
5290
+ ].join(" \xB7 ");
5291
+ return /* @__PURE__ */ jsxs13(Fragment2, { children: [
5292
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-stathd", children: [
5293
+ /* @__PURE__ */ jsxs13("b", { children: [
5294
+ nba.settled,
5295
+ " ",
5296
+ sr.finalScore
5297
+ ] }),
5298
+ sr.lineBasis === "last_before_tip" ? /* @__PURE__ */ jsx17("span", { children: nba.lastLineBeforeTip }) : null
5299
+ ] }),
5300
+ sr.players.map((p) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-sr-player", children: [
5301
+ /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-who", children: p.playerName }),
5302
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-sr", children: [
5303
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5304
+ /* @__PURE__ */ jsx17("span", {}),
5305
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd ss-w-nba-n", children: nba.line }),
5306
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd ss-w-nba-n", children: nba.actual }),
5307
+ /* @__PURE__ */ jsx17("span", {})
5308
+ ] }),
5309
+ p.lines.map((l, i) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-sr-line", children: [
5310
+ /* @__PURE__ */ jsx17("span", { children: nba.stat(l.stat) }),
5311
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-n", children: nba.lineText(l.line) }),
5312
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-n", children: l.actual === null ? "\u2014" : nba.lineText(l.actual) }),
5313
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-res", "data-result": l.result, children: result[l.result] })
5314
+ ] }, `${l.stat}:${i}`))
5315
+ ] })
5316
+ ] }, p.playerId)),
5317
+ sr.morePlayers > 0 ? /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-more", children: nba.morePlayers(sr.morePlayers) }) : null,
5318
+ /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-sr-sum", children: summary })
5319
+ ] });
5320
+ }
5139
5321
  function TeammateOut({ vm, to, ui, slip }) {
5140
5322
  const nba = ui.nba;
5141
5323
  const first = to.rows[0];
@@ -5208,10 +5390,6 @@ function CoHit({ vm, ch, ui, slip }) {
5208
5390
  games.map((g, i) => /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-jc ss-w-nba-tick", children: g.both ? "\u2713" : "" }, `both:${i}`)),
5209
5391
  blanks("both")
5210
5392
  ] }) : null,
5211
- /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-combined", children: [
5212
- /* @__PURE__ */ jsx17("span", { children: nba.combined }),
5213
- /* @__PURE__ */ jsx17("b", { children: ch.combinedPrice.toFixed(2) })
5214
- ] }),
5215
5393
  takesBasketball(slip) ? /* @__PURE__ */ jsx17(
5216
5394
  AddAllToSlipButton,
5217
5395
  {
@@ -5326,6 +5504,20 @@ function NbaCard({ vm, ui, slip, monitor }) {
5326
5504
  body = /* @__PURE__ */ jsx17(LineMove, { vm, lm: ev.lineMove, ui, slip });
5327
5505
  foot = [nba.lineMoveKey];
5328
5506
  break;
5507
+ case "matchup":
5508
+ body = /* @__PURE__ */ jsx17(NbaMatchupBody, { mu: ev.matchup, ui });
5509
+ foot = [];
5510
+ break;
5511
+ case "quarter_ladder":
5512
+ body = /* @__PURE__ */ jsx17(NbaQuarterLadderBody, { vm, ql: ev.quarterLadder, ui, slip });
5513
+ foot = [];
5514
+ break;
5515
+ case "settle_recap":
5516
+ body = /* @__PURE__ */ jsx17(NbaSettleRecapBody, { sr: ev.settleRecap, ui });
5517
+ foot = [];
5518
+ break;
5519
+ default:
5520
+ return null;
5329
5521
  }
5330
5522
  return /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-card", "data-kind": ev.kind, children: [
5331
5523
  /* @__PURE__ */ jsx17(Head, { vm, chip, ui, monitor }),
@@ -12870,8 +13062,6 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
12870
13062
  .ss-w-nba-jc[data-hit] { color: var(--ss-w-ink); font-weight: 700; }
12871
13063
  .ss-w-nba-joint .ss-w-nba-hd { font-size: 10px; }
12872
13064
  .ss-w-nba-tick { color: var(--ss-w-accent); font-weight: 700; }
12873
- .ss-w-nba-combined { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 12px; color: var(--ss-w-faint); }
12874
- .ss-w-nba-combined b { font-size: 16px; color: var(--ss-w-ink); font-variant-numeric: tabular-nums; }
12875
13065
  .ss-w-nba-legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: 11px; color: var(--ss-w-faint); }
12876
13066
  .ss-w-nba-legkey { display: inline-flex; align-items: center; gap: 5px; }
12877
13067
  .ss-w-nba-swatch { width: 12px; height: 2px; border-radius: 1px; }
@@ -12893,6 +13083,28 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
12893
13083
  .ss-w-nba-nowrow { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 10px; font-size: 13px; }
12894
13084
  .ss-w-nba-foot{font-size:11px;color:var(--ss-w-faint);line-height:1.4;border-top:1px solid var(--ss-w-line);padding-top:10px}
12895
13085
  .ss-w-nba-card .ss-w-combo-addall { align-self: stretch; }
13086
+ /* matchup, quarter ladder and settle recap (u564 lane B): the same card, ladder grid and figures as above. */
13087
+ .ss-w-nba-ladder--q{grid-template-columns:70px minmax(0,1fr) 62px 74px}
13088
+ .ss-w-nba-mu,.ss-w-nba-sr{display:grid;align-items:start;gap:8px 6px;font-size:13px;font-variant-numeric:tabular-nums}
13089
+ .ss-w-nba-mu{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr)}
13090
+ .ss-w-nba-mu .ss-w-nba-hd{white-space:normal}
13091
+ .ss-w-nba-mu-team { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; font-size: 14px; color: var(--ss-w-ink); }
13092
+ .ss-w-nba-mu-v { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
13093
+ .ss-w-nba-mu-v b { font-size: 15px; font-weight: 700; color: var(--ss-w-ink); }
13094
+ .ss-w-nba-mu-v span, .ss-w-nba-mu-rest { font-size: 10.5px; line-height: 1.3; color: var(--ss-w-faint); }
13095
+ .ss-w-nba-mu-rest { overflow-wrap: anywhere; }
13096
+ .ss-w-nba-b2b { white-space: nowrap; }
13097
+ .ss-w-nba-mu-pos { margin: 0; font-size: 12px; line-height: 1.45; color: var(--ss-w-ink); }
13098
+ .ss-w-nba-small { display: inline-block; font-size: 10px; font-weight: 600; line-height: 1.3; color: var(--ss-w-warn); border: 1px solid var(--ss-w-warn); border-radius: 999px; padding: 0 6px; white-space: nowrap; }
13099
+ .ss-w-nba-mu-pos .ss-w-nba-small { margin-left: 6px; }
13100
+ .ss-w-nba-sr-player { display: flex; flex-direction: column; gap: 6px; }
13101
+ .ss-w-nba-sr{grid-template-columns:minmax(0,1fr) 44px 44px 54px;align-items:center}
13102
+ .ss-w-nba-sr-line { display: contents; }
13103
+ .ss-w-nba-sr .ss-w-nba-n { text-align: right; }
13104
+ .ss-w-nba-res { justify-self: end; font-size: 11px; font-weight: 600; line-height: 1.3; color: var(--ss-w-ink); border: 1px solid var(--ss-w-line); border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
13105
+ .ss-w-nba-res[data-result="push"], .ss-w-nba-res[data-result="void"] { color: var(--ss-w-faint); }
13106
+ .ss-w-nba-more, .ss-w-nba-sr-sum { margin: 0; font-size: 12px; line-height: 1.4; color: var(--ss-w-faint); }
13107
+ .ss-w-nba-sr-sum { font-weight: 600; color: var(--ss-w-ink); }
12896
13108
 
12897
13109
  /* market odds card */
12898
13110
  .ss-w-mocards { display: flex; flex-direction: column; gap: 7px; }