@oddsmith/ui 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/components/os-leaderboard-casino/assets/fallback/config.json +1 -1
  2. package/dist/components/os-leaderboard-casino/assets/fallback/defaults/glam-sections.json +4 -4
  3. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json +1 -1
  4. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js +7 -7
  5. package/dist/components/os-leaderboard-casino/assets/fallback/manifest.json +1 -1
  6. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json +1 -1
  7. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js +1 -1
  8. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json +8 -6
  9. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js +1 -1
  10. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json +3 -4
  11. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js +3 -4
  12. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js.map +1 -1
  13. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js +5 -3
  14. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js.map +1 -1
  15. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js +7 -5
  16. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js.map +1 -1
  17. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js +1 -1
  18. package/dist/components/os-leaderboard-casino/integration/assets-context.d.ts +1 -1
  19. package/dist/components/os-leaderboard-casino/integration/assets-context.js +40 -35
  20. package/dist/components/os-leaderboard-casino/integration/assets-context.js.map +1 -1
  21. package/dist/components/os-leaderboard-casino/integration/resolve-input.js +31 -27
  22. package/dist/components/os-leaderboard-casino/integration/resolve-input.js.map +1 -1
  23. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.d.ts +0 -1
  24. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.host.d.ts +0 -1
  25. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js +7 -5
  26. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js.map +1 -1
  27. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js +33 -38
  28. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js.map +1 -1
  29. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js +7 -5
  30. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js.map +1 -1
  31. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js +26 -23
  32. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js.map +1 -1
  33. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js +7 -5
  34. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js.map +1 -1
  35. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js +11 -9
  36. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js.map +1 -1
  37. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js +5 -3
  38. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js.map +1 -1
  39. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js +15 -13
  40. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js.map +1 -1
  41. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js +6 -4
  42. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js.map +1 -1
  43. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js +6 -3
  44. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js.map +1 -1
  45. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js +5 -3
  46. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js.map +1 -1
  47. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js +10 -6
  48. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js.map +1 -1
  49. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js +5 -3
  50. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js.map +1 -1
  51. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js +26 -23
  52. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js.map +1 -1
  53. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.js +10 -8
  54. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.js.map +1 -1
  55. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js +5 -3
  56. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js.map +1 -1
  57. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js +4 -2
  58. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js.map +1 -1
  59. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.js +17 -15
  60. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.js.map +1 -1
  61. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js +5 -3
  62. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js.map +1 -1
  63. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js +15 -13
  64. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js.map +1 -1
  65. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js +5 -3
  66. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js.map +1 -1
  67. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js +16 -14
  68. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js.map +1 -1
  69. package/dist/components/os-leaderboard-casino/services/icon.service.js +10 -8
  70. package/dist/components/os-leaderboard-casino/services/icon.service.js.map +1 -1
  71. package/dist/components/os-leaderboard-casino/theme/background.d.ts +4 -0
  72. package/dist/components/os-leaderboard-casino/theme/background.js +22 -0
  73. package/dist/components/os-leaderboard-casino/theme/background.js.map +1 -0
  74. package/dist/components/os-leaderboard-casino/theme/styles.js +3 -3
  75. package/dist/components/os-leaderboard-casino/theme/styles.js.map +1 -1
  76. package/dist/components/os-leaderboard-casino/theme/vip-mark.js +11 -9
  77. package/dist/components/os-leaderboard-casino/theme/vip-mark.js.map +1 -1
  78. package/dist/components/os-leaderboard-casino/types/assets.d.ts +2 -0
  79. package/dist/components/os-leaderboard-casino/types/input.d.ts +7 -1
  80. package/dist/shared/lib/lit/scss.js +4 -4
  81. package/dist/shared/vendor/lit-element-lit-element.js +45 -0
  82. package/dist/shared/vendor/lit-element-lit-element.js.map +1 -0
  83. package/dist/shared/vendor/lit-html-directive-helpers.js +32 -0
  84. package/dist/shared/vendor/lit-html-directive-helpers.js.map +1 -0
  85. package/dist/shared/vendor/lit-html-directive.js +23 -0
  86. package/dist/shared/vendor/lit-html-directive.js.map +1 -0
  87. package/dist/shared/vendor/lit-html-keyed.js +18 -0
  88. package/dist/shared/vendor/lit-html-keyed.js.map +1 -0
  89. package/dist/shared/vendor/lit-html-lit-html.js +234 -0
  90. package/dist/shared/vendor/lit-html-lit-html.js.map +1 -0
  91. package/dist/shared/vendor/lit-html-repeat.js +57 -0
  92. package/dist/shared/vendor/lit-html-repeat.js.map +1 -0
  93. package/dist/shared/vendor/lit-html-unsafe-html.js +21 -0
  94. package/dist/shared/vendor/lit-html-unsafe-html.js.map +1 -0
  95. package/dist/shared/vendor/lit-html-unsafe-svg.js +10 -0
  96. package/dist/shared/vendor/lit-html-unsafe-svg.js.map +1 -0
  97. package/dist/shared/vendor/lit-reactive-element-base.js +5 -0
  98. package/dist/shared/vendor/lit-reactive-element-base.js.map +1 -0
  99. package/dist/shared/vendor/lit-reactive-element-css-tag.js +46 -0
  100. package/dist/shared/vendor/lit-reactive-element-css-tag.js.map +1 -0
  101. package/dist/shared/vendor/lit-reactive-element-property.js +33 -0
  102. package/dist/shared/vendor/lit-reactive-element-property.js.map +1 -0
  103. package/dist/shared/vendor/lit-reactive-element-query.js +13 -0
  104. package/dist/shared/vendor/lit-reactive-element-query.js.map +1 -0
  105. package/dist/shared/vendor/lit-reactive-element-reactive-element.js +226 -0
  106. package/dist/shared/vendor/lit-reactive-element-reactive-element.js.map +1 -0
  107. package/dist/shared/vendor/lit-reactive-element-state.js +8 -0
  108. package/dist/shared/vendor/lit-reactive-element-state.js.map +1 -0
  109. package/package.json +3 -1
@@ -1,10 +1,11 @@
1
- import { getBundleDefaultPresetId as c, getOsLeaderboardCasinoPreset as a, resolvePresetState as f, getBundleLabels as p, getThemeVars as b, getTheme as P, resolveAssetsBundle as h } from "./assets-context.js";
2
- import { LEADERBOARD_CASINO_PRESET_CATALOG as L } from "./assets-context.js";
3
- function g(e, n, r, s) {
4
- const t = e.branding?.themeId;
5
- return !t || P(t, s).appearance !== n ? r : t;
1
+ import { getBundleDefaultPresetId as u, getOsLeaderboardCasinoPreset as a, resolvePresetState as f, getBundleLabels as b, getThemeVars as g, getTheme as p, resolveAssetsBundle as m } from "./assets-context.js";
2
+ import { LEADERBOARD_CASINO_PRESET_CATALOG as z } from "./assets-context.js";
3
+ import { resolveBackgroundVars as P } from "../theme/background.js";
4
+ function h(e, n, r, s) {
5
+ const o = e.branding?.themeId;
6
+ return !o || p(o, s).appearance !== n ? r : o;
6
7
  }
7
- function l(e) {
8
+ function d(e) {
8
9
  return {
9
10
  username: e.username,
10
11
  rank: e.rank,
@@ -15,7 +16,7 @@ function l(e) {
15
16
  you: e.isCurrentUser ?? !1
16
17
  };
17
18
  }
18
- function d(e) {
19
+ function c(e) {
19
20
  const n = e.winnings ?? e.points ?? 0;
20
21
  return {
21
22
  id: e.id ?? `player-${e.rank}`,
@@ -30,7 +31,7 @@ function d(e) {
30
31
  badges: []
31
32
  };
32
33
  }
33
- function m(e, n) {
34
+ function k(e, n) {
34
35
  n && (e.sections.hero && (e.sections.hero = {
35
36
  ...e.sections.hero,
36
37
  ...n.title != null ? { title: n.title } : {},
@@ -49,51 +50,54 @@ function m(e, n) {
49
50
  }
50
51
  function C(e, n) {
51
52
  if (!n?.length || !e.sections.table) return;
52
- const r = [...n].sort((t, o) => t.rank - o.rank), s = r.find((t) => t.isCurrentUser) ?? r.find((t) => t.username.toLowerCase() === "you");
53
+ const r = [...n].sort((o, t) => o.rank - t.rank), s = r.find((o) => o.isCurrentUser) ?? r.find((o) => o.username.toLowerCase() === "you");
53
54
  if (e.config.appearance === "glam" && e.sections.table.mode === "preview") {
54
55
  e.sections.table = {
55
56
  ...e.sections.table,
56
- topPlayers: r.slice(0, 10).map(l),
57
- currentUser: s ? l(s) : e.sections.table.currentUser
57
+ topPlayers: r.slice(0, 10).map(d),
58
+ currentUser: s ? d(s) : e.sections.table.currentUser
58
59
  };
59
60
  return;
60
61
  }
61
62
  if (e.sections.table.mode === "ledger") {
62
- const o = r.map(d).slice(0, 8), i = s && !o.some((u) => u.id === (s.id ?? `player-${s.rank}`)) ? d(s) : void 0;
63
+ const t = r.map(c).slice(0, 8), i = s && !t.some((l) => l.id === (s.id ?? `player-${s.rank}`)) ? c(s) : void 0;
63
64
  e.sections.table = {
64
65
  ...e.sections.table,
65
- players: o,
66
+ players: t,
66
67
  currentUser: i
67
68
  };
68
69
  }
69
70
  }
70
71
  function v(e, n) {
71
- const r = h(n), s = e.preset ?? c(r), t = a(s, r);
72
- if (!t)
72
+ const r = m(n), s = e.preset ?? u(r), o = a(s, r);
73
+ if (!o)
73
74
  throw new Error(
74
75
  `Unknown leaderboard preset "${s}". Check assets catalog.`
75
76
  );
76
- const o = g(
77
+ const t = h(
77
78
  e,
78
- t.appearance,
79
- t.themeId,
79
+ o.appearance,
80
+ o.themeId,
80
81
  r
81
82
  ), i = f(s, r);
82
- return i.config.themeId = o, i.config.labels = {
83
- ...p(r),
84
- ...t.config.labels,
83
+ i.config.themeId = t, i.config.labels = {
84
+ ...b(r),
85
+ ...o.config.labels,
85
86
  ...e.branding?.labels
86
- }, i.config.themeVars = {
87
- ...b(o, r),
87
+ };
88
+ const l = e.branding?.background ? P(e.branding.background) : null;
89
+ return i.config.themeVars = {
90
+ ...g(t, r),
91
+ ...l ?? {},
88
92
  ...e.branding?.themeVars
89
- }, m(i, e.campaign), C(i, e.players), i;
93
+ }, k(i, e.campaign), C(i, e.players), i;
90
94
  }
91
- function k(e, n, r) {
95
+ function A(e, n, r) {
92
96
  r !== void 0 && (e.assets = r), e.input = n, e.uuid = n.campaign?.uuid ?? "", e.finished = n.campaign?.finished ?? !1, e.state = v(n, e.assets);
93
97
  }
94
98
  export {
95
- L as LEADERBOARD_CASINO_PRESET_CATALOG,
96
- k as applyLeaderboardCasinoInput,
99
+ z as LEADERBOARD_CASINO_PRESET_CATALOG,
100
+ A as applyLeaderboardCasinoInput,
97
101
  v as resolveLeaderboardCasinoInput
98
102
  };
99
103
  //# sourceMappingURL=resolve-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-input.js","sources":["../../../../src/components/os-leaderboard-casino/integration/resolve-input.ts"],"sourcesContent":["import type { Player } from '../types/ledger.js';\nimport type { UserRank } from '@os-leaderboard-casino/types/data.js';\nimport type { LeaderboardCasinoAssetsBundle } from '../types/assets.js';\nimport type {\n LeaderboardCasinoCampaign,\n LeaderboardCasinoInput,\n LeaderboardCasinoPlayer,\n} from '../types/input.js';\nimport type { OsLeaderboardCasinoState } from '../types/state.js';\nimport {\n getBundleLabels,\n getBundleDefaultPresetId,\n getOsLeaderboardCasinoPreset,\n resolveAssetsBundle,\n resolvePresetState,\n getTheme,\n getThemeVars,\n type OsLeaderboardCasinoThemeId,\n LEADERBOARD_CASINO_PRESET_CATALOG,\n} from './assets-context.js';\n\nexport { LEADERBOARD_CASINO_PRESET_CATALOG };\n\nfunction resolveThemeId(\n input: LeaderboardCasinoInput,\n appearance: OsLeaderboardCasinoState['config']['appearance'],\n fallback: string,\n bundle: LeaderboardCasinoAssetsBundle,\n): OsLeaderboardCasinoThemeId {\n const requested = input.branding?.themeId;\n if (!requested) return fallback as OsLeaderboardCasinoThemeId;\n const theme = getTheme(requested as OsLeaderboardCasinoThemeId, bundle);\n if (theme.appearance !== appearance)\n return fallback as OsLeaderboardCasinoThemeId;\n return requested as OsLeaderboardCasinoThemeId;\n}\n\nfunction toPreviewPlayer(player: LeaderboardCasinoPlayer): UserRank {\n return {\n username: player.username,\n rank: player.rank,\n points: player.points ?? player.winnings ?? 0,\n totalBet: player.winnings,\n prize: null,\n splitCount: 1,\n you: player.isCurrentUser ?? false,\n };\n}\n\nfunction toLedgerPlayer(player: LeaderboardCasinoPlayer): Player {\n const winnings = player.winnings ?? player.points ?? 0;\n return {\n id: player.id ?? `player-${player.rank}`,\n username: player.username,\n rank: player.rank,\n totalWinnings: winnings,\n points: player.points ?? winnings,\n winRate: 52,\n gamesPlayed: 120,\n streak: 2,\n level: 12,\n badges: [],\n };\n}\n\nfunction applyCampaign(\n state: OsLeaderboardCasinoState,\n campaign: LeaderboardCasinoCampaign | undefined,\n): void {\n if (!campaign) return;\n\n if (state.sections.hero) {\n state.sections.hero = {\n ...state.sections.hero,\n ...(campaign.title != null ? { title: campaign.title } : {}),\n ...(campaign.description != null\n ? { description: campaign.description }\n : {}),\n ...(campaign.endAt != null ? { endTs: campaign.endAt } : {}),\n ...(campaign.prizePool?.value != null\n ? { prizePoolValue: campaign.prizePool.value }\n : {}),\n ...(campaign.prizePool?.currency != null\n ? { prizePoolCurrency: campaign.prizePool.currency }\n : {}),\n ...(campaign.finished != null\n ? { status: campaign.finished ? 'completed' : 'active' }\n : {}),\n };\n }\n\n if (state.sections.stats && campaign.participantCount != null) {\n state.sections.stats = {\n ...state.sections.stats,\n totalParticipants: campaign.participantCount,\n };\n }\n\n if (state.sections.footer && campaign.footerText != null) {\n state.sections.footer = {\n ...state.sections.footer,\n text: campaign.footerText,\n };\n }\n}\n\nfunction applyPlayers(\n state: OsLeaderboardCasinoState,\n players: LeaderboardCasinoPlayer[] | undefined,\n): void {\n if (!players?.length || !state.sections.table) return;\n\n const sorted = [...players].sort((a, b) => a.rank - b.rank);\n const current =\n sorted.find((p) => p.isCurrentUser) ??\n sorted.find((p) => p.username.toLowerCase() === 'you');\n\n if (\n state.config.appearance === 'glam' &&\n state.sections.table.mode === 'preview'\n ) {\n state.sections.table = {\n ...state.sections.table,\n topPlayers: sorted.slice(0, 10).map(toPreviewPlayer),\n currentUser: current\n ? toPreviewPlayer(current)\n : state.sections.table.currentUser,\n };\n return;\n }\n\n if (state.sections.table.mode === 'ledger') {\n const ledger = sorted.map(toLedgerPlayer);\n const top = ledger.slice(0, 8);\n const pinned =\n current &&\n !top.some((p) => p.id === (current.id ?? `player-${current.rank}`))\n ? toLedgerPlayer(current)\n : undefined;\n\n state.sections.table = {\n ...state.sections.table,\n players: top,\n currentUser: pinned,\n };\n }\n}\n\n/**\n * Resolve integration input into render state using the provided assets bundle.\n * Falls back to bundled `assets/fallback/fallback.json` when `assets` is omitted.\n */\nexport function resolveLeaderboardCasinoInput(\n input: LeaderboardCasinoInput,\n assets?: LeaderboardCasinoAssetsBundle | null,\n): OsLeaderboardCasinoState {\n const bundle = resolveAssetsBundle(assets);\n const presetId = input.preset ?? getBundleDefaultPresetId(bundle);\n const preset = getOsLeaderboardCasinoPreset(presetId, bundle);\n if (!preset) {\n throw new Error(\n `Unknown leaderboard preset \"${presetId}\". Check assets catalog.`,\n );\n }\n\n const themeId = resolveThemeId(\n input,\n preset.appearance,\n preset.themeId,\n bundle,\n );\n const state = resolvePresetState(presetId, bundle);\n\n state.config.themeId = themeId;\n state.config.labels = {\n ...getBundleLabels(bundle),\n ...preset.config.labels,\n ...input.branding?.labels,\n };\n\n state.config.themeVars = {\n ...getThemeVars(themeId, bundle),\n ...input.branding?.themeVars,\n };\n\n applyCampaign(state, input.campaign);\n applyPlayers(state, input.players);\n\n return state;\n}\n\nexport type LeaderboardCasinoHost = HTMLElement & {\n state: OsLeaderboardCasinoState;\n uuid?: string;\n finished?: boolean;\n input?: LeaderboardCasinoInput | null;\n assets?: LeaderboardCasinoAssetsBundle | null;\n assetsBaseUrl?: string;\n};\n\n/** Apply input (+ optional assets bundle) to a mounted element. */\nexport function applyLeaderboardCasinoInput(\n host: LeaderboardCasinoHost,\n input: LeaderboardCasinoInput,\n assets?: LeaderboardCasinoAssetsBundle | null,\n): void {\n if (assets !== undefined) {\n host.assets = assets;\n }\n host.input = input;\n host.uuid = input.campaign?.uuid ?? '';\n host.finished = input.campaign?.finished ?? false;\n host.state = resolveLeaderboardCasinoInput(input, host.assets);\n}\n"],"names":["resolveThemeId","input","appearance","fallback","bundle","requested","getTheme","toPreviewPlayer","player","toLedgerPlayer","winnings","applyCampaign","state","campaign","applyPlayers","players","sorted","a","b","current","p","top","pinned","resolveLeaderboardCasinoInput","assets","resolveAssetsBundle","presetId","getBundleDefaultPresetId","preset","getOsLeaderboardCasinoPreset","themeId","resolvePresetState","getBundleLabels","getThemeVars","applyLeaderboardCasinoInput","host"],"mappings":";;AAuBA,SAASA,EACPC,GACAC,GACAC,GACAC,GAC4B;AAC5B,QAAMC,IAAYJ,EAAM,UAAU;AAGlC,SAFI,CAACI,KACSC,EAASD,GAAyCD,CAAM,EAC5D,eAAeF,IAChBC,IACFE;AACT;AAEA,SAASE,EAAgBC,GAA2C;AAClE,SAAO;AAAA,IACL,UAAUA,EAAO;AAAA,IACjB,MAAMA,EAAO;AAAA,IACb,QAAQA,EAAO,UAAUA,EAAO,YAAY;AAAA,IAC5C,UAAUA,EAAO;AAAA,IACjB,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,KAAKA,EAAO,iBAAiB;AAAA,EAAA;AAEjC;AAEA,SAASC,EAAeD,GAAyC;AAC/D,QAAME,IAAWF,EAAO,YAAYA,EAAO,UAAU;AACrD,SAAO;AAAA,IACL,IAAIA,EAAO,MAAM,UAAUA,EAAO,IAAI;AAAA,IACtC,UAAUA,EAAO;AAAA,IACjB,MAAMA,EAAO;AAAA,IACb,eAAeE;AAAA,IACf,QAAQF,EAAO,UAAUE;AAAA,IACzB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ,CAAA;AAAA,EAAC;AAEb;AAEA,SAASC,EACPC,GACAC,GACM;AACN,EAAKA,MAEDD,EAAM,SAAS,SACjBA,EAAM,SAAS,OAAO;AAAA,IACpB,GAAGA,EAAM,SAAS;AAAA,IAClB,GAAIC,EAAS,SAAS,OAAO,EAAE,OAAOA,EAAS,MAAA,IAAU,CAAA;AAAA,IACzD,GAAIA,EAAS,eAAe,OACxB,EAAE,aAAaA,EAAS,YAAA,IACxB,CAAA;AAAA,IACJ,GAAIA,EAAS,SAAS,OAAO,EAAE,OAAOA,EAAS,MAAA,IAAU,CAAA;AAAA,IACzD,GAAIA,EAAS,WAAW,SAAS,OAC7B,EAAE,gBAAgBA,EAAS,UAAU,MAAA,IACrC,CAAA;AAAA,IACJ,GAAIA,EAAS,WAAW,YAAY,OAChC,EAAE,mBAAmBA,EAAS,UAAU,SAAA,IACxC,CAAA;AAAA,IACJ,GAAIA,EAAS,YAAY,OACrB,EAAE,QAAQA,EAAS,WAAW,cAAc,aAC5C,CAAA;AAAA,EAAC,IAILD,EAAM,SAAS,SAASC,EAAS,oBAAoB,SACvDD,EAAM,SAAS,QAAQ;AAAA,IACrB,GAAGA,EAAM,SAAS;AAAA,IAClB,mBAAmBC,EAAS;AAAA,EAAA,IAI5BD,EAAM,SAAS,UAAUC,EAAS,cAAc,SAClDD,EAAM,SAAS,SAAS;AAAA,IACtB,GAAGA,EAAM,SAAS;AAAA,IAClB,MAAMC,EAAS;AAAA,EAAA;AAGrB;AAEA,SAASC,EACPF,GACAG,GACM;AACN,MAAI,CAACA,GAAS,UAAU,CAACH,EAAM,SAAS,MAAO;AAE/C,QAAMI,IAAS,CAAC,GAAGD,CAAO,EAAE,KAAK,CAACE,GAAGC,MAAMD,EAAE,OAAOC,EAAE,IAAI,GACpDC,IACJH,EAAO,KAAK,CAACI,MAAMA,EAAE,aAAa,KAClCJ,EAAO,KAAK,CAACI,MAAMA,EAAE,SAAS,YAAA,MAAkB,KAAK;AAEvD,MACER,EAAM,OAAO,eAAe,UAC5BA,EAAM,SAAS,MAAM,SAAS,WAC9B;AACA,IAAAA,EAAM,SAAS,QAAQ;AAAA,MACrB,GAAGA,EAAM,SAAS;AAAA,MAClB,YAAYI,EAAO,MAAM,GAAG,EAAE,EAAE,IAAIT,CAAe;AAAA,MACnD,aAAaY,IACTZ,EAAgBY,CAAO,IACvBP,EAAM,SAAS,MAAM;AAAA,IAAA;AAE3B;AAAA,EACF;AAEA,MAAIA,EAAM,SAAS,MAAM,SAAS,UAAU;AAE1C,UAAMS,IADSL,EAAO,IAAIP,CAAc,EACrB,MAAM,GAAG,CAAC,GACvBa,IACJH,KACA,CAACE,EAAI,KAAK,CAACD,MAAMA,EAAE,QAAQD,EAAQ,MAAM,UAAUA,EAAQ,IAAI,GAAG,IAC9DV,EAAeU,CAAO,IACtB;AAEN,IAAAP,EAAM,SAAS,QAAQ;AAAA,MACrB,GAAGA,EAAM,SAAS;AAAA,MAClB,SAASS;AAAA,MACT,aAAaC;AAAA,IAAA;AAAA,EAEjB;AACF;AAMO,SAASC,EACdtB,GACAuB,GAC0B;AAC1B,QAAMpB,IAASqB,EAAoBD,CAAM,GACnCE,IAAWzB,EAAM,UAAU0B,EAAyBvB,CAAM,GAC1DwB,IAASC,EAA6BH,GAAUtB,CAAM;AAC5D,MAAI,CAACwB;AACH,UAAM,IAAI;AAAA,MACR,+BAA+BF,CAAQ;AAAA,IAAA;AAI3C,QAAMI,IAAU9B;AAAA,IACdC;AAAA,IACA2B,EAAO;AAAA,IACPA,EAAO;AAAA,IACPxB;AAAA,EAAA,GAEIQ,IAAQmB,EAAmBL,GAAUtB,CAAM;AAEjD,SAAAQ,EAAM,OAAO,UAAUkB,GACvBlB,EAAM,OAAO,SAAS;AAAA,IACpB,GAAGoB,EAAgB5B,CAAM;AAAA,IACzB,GAAGwB,EAAO,OAAO;AAAA,IACjB,GAAG3B,EAAM,UAAU;AAAA,EAAA,GAGrBW,EAAM,OAAO,YAAY;AAAA,IACvB,GAAGqB,EAAaH,GAAS1B,CAAM;AAAA,IAC/B,GAAGH,EAAM,UAAU;AAAA,EAAA,GAGrBU,EAAcC,GAAOX,EAAM,QAAQ,GACnCa,EAAaF,GAAOX,EAAM,OAAO,GAE1BW;AACT;AAYO,SAASsB,EACdC,GACAlC,GACAuB,GACM;AACN,EAAIA,MAAW,WACbW,EAAK,SAASX,IAEhBW,EAAK,QAAQlC,GACbkC,EAAK,OAAOlC,EAAM,UAAU,QAAQ,IACpCkC,EAAK,WAAWlC,EAAM,UAAU,YAAY,IAC5CkC,EAAK,QAAQZ,EAA8BtB,GAAOkC,EAAK,MAAM;AAC/D;"}
1
+ {"version":3,"file":"resolve-input.js","sources":["../../../../src/components/os-leaderboard-casino/integration/resolve-input.ts"],"sourcesContent":["import type { Player } from '../types/ledger.js';\nimport type { UserRank } from '@os-leaderboard-casino/types/data.js';\nimport type { LeaderboardCasinoAssetsBundle } from '../types/assets.js';\nimport type {\n LeaderboardCasinoCampaign,\n LeaderboardCasinoInput,\n LeaderboardCasinoPlayer,\n} from '../types/input.js';\nimport type { OsLeaderboardCasinoState } from '../types/state.js';\nimport {\n getBundleLabels,\n getBundleDefaultPresetId,\n getOsLeaderboardCasinoPreset,\n resolveAssetsBundle,\n resolvePresetState,\n getTheme,\n getThemeVars,\n type OsLeaderboardCasinoThemeId,\n LEADERBOARD_CASINO_PRESET_CATALOG,\n} from './assets-context.js';\nimport { resolveBackgroundVars } from '@os-leaderboard-casino/theme/background.js';\n\nexport { LEADERBOARD_CASINO_PRESET_CATALOG };\n\nfunction resolveThemeId(\n input: LeaderboardCasinoInput,\n appearance: OsLeaderboardCasinoState['config']['appearance'],\n fallback: string,\n bundle: LeaderboardCasinoAssetsBundle,\n): OsLeaderboardCasinoThemeId {\n const requested = input.branding?.themeId;\n if (!requested) return fallback as OsLeaderboardCasinoThemeId;\n const theme = getTheme(requested as OsLeaderboardCasinoThemeId, bundle);\n if (theme.appearance !== appearance)\n return fallback as OsLeaderboardCasinoThemeId;\n return requested as OsLeaderboardCasinoThemeId;\n}\n\nfunction toPreviewPlayer(player: LeaderboardCasinoPlayer): UserRank {\n return {\n username: player.username,\n rank: player.rank,\n points: player.points ?? player.winnings ?? 0,\n totalBet: player.winnings,\n prize: null,\n splitCount: 1,\n you: player.isCurrentUser ?? false,\n };\n}\n\nfunction toLedgerPlayer(player: LeaderboardCasinoPlayer): Player {\n const winnings = player.winnings ?? player.points ?? 0;\n return {\n id: player.id ?? `player-${player.rank}`,\n username: player.username,\n rank: player.rank,\n totalWinnings: winnings,\n points: player.points ?? winnings,\n winRate: 52,\n gamesPlayed: 120,\n streak: 2,\n level: 12,\n badges: [],\n };\n}\n\nfunction applyCampaign(\n state: OsLeaderboardCasinoState,\n campaign: LeaderboardCasinoCampaign | undefined,\n): void {\n if (!campaign) return;\n\n if (state.sections.hero) {\n state.sections.hero = {\n ...state.sections.hero,\n ...(campaign.title != null ? { title: campaign.title } : {}),\n ...(campaign.description != null\n ? { description: campaign.description }\n : {}),\n ...(campaign.endAt != null ? { endTs: campaign.endAt } : {}),\n ...(campaign.prizePool?.value != null\n ? { prizePoolValue: campaign.prizePool.value }\n : {}),\n ...(campaign.prizePool?.currency != null\n ? { prizePoolCurrency: campaign.prizePool.currency }\n : {}),\n ...(campaign.finished != null\n ? { status: campaign.finished ? 'completed' : 'active' }\n : {}),\n };\n }\n\n if (state.sections.stats && campaign.participantCount != null) {\n state.sections.stats = {\n ...state.sections.stats,\n totalParticipants: campaign.participantCount,\n };\n }\n\n if (state.sections.footer && campaign.footerText != null) {\n state.sections.footer = {\n ...state.sections.footer,\n text: campaign.footerText,\n };\n }\n}\n\nfunction applyPlayers(\n state: OsLeaderboardCasinoState,\n players: LeaderboardCasinoPlayer[] | undefined,\n): void {\n if (!players?.length || !state.sections.table) return;\n\n const sorted = [...players].sort((a, b) => a.rank - b.rank);\n const current =\n sorted.find((p) => p.isCurrentUser) ??\n sorted.find((p) => p.username.toLowerCase() === 'you');\n\n if (\n state.config.appearance === 'glam' &&\n state.sections.table.mode === 'preview'\n ) {\n state.sections.table = {\n ...state.sections.table,\n topPlayers: sorted.slice(0, 10).map(toPreviewPlayer),\n currentUser: current\n ? toPreviewPlayer(current)\n : state.sections.table.currentUser,\n };\n return;\n }\n\n if (state.sections.table.mode === 'ledger') {\n const ledger = sorted.map(toLedgerPlayer);\n const top = ledger.slice(0, 8);\n const pinned =\n current &&\n !top.some((p) => p.id === (current.id ?? `player-${current.rank}`))\n ? toLedgerPlayer(current)\n : undefined;\n\n state.sections.table = {\n ...state.sections.table,\n players: top,\n currentUser: pinned,\n };\n }\n}\n\n/**\n * Resolve integration input into render state using the provided assets bundle.\n * Falls back to bundled `assets/fallback/fallback.json` when `assets` is omitted.\n */\nexport function resolveLeaderboardCasinoInput(\n input: LeaderboardCasinoInput,\n assets?: LeaderboardCasinoAssetsBundle | null,\n): OsLeaderboardCasinoState {\n const bundle = resolveAssetsBundle(assets);\n const presetId = input.preset ?? getBundleDefaultPresetId(bundle);\n const preset = getOsLeaderboardCasinoPreset(presetId, bundle);\n if (!preset) {\n throw new Error(\n `Unknown leaderboard preset \"${presetId}\". Check assets catalog.`,\n );\n }\n\n const themeId = resolveThemeId(\n input,\n preset.appearance,\n preset.themeId,\n bundle,\n );\n const state = resolvePresetState(presetId, bundle);\n\n state.config.themeId = themeId;\n state.config.labels = {\n ...getBundleLabels(bundle),\n ...preset.config.labels,\n ...input.branding?.labels,\n };\n\n const backgroundVars = input.branding?.background\n ? resolveBackgroundVars(input.branding.background)\n : null;\n\n state.config.themeVars = {\n ...getThemeVars(themeId, bundle),\n ...(backgroundVars ?? {}),\n ...input.branding?.themeVars,\n };\n\n applyCampaign(state, input.campaign);\n applyPlayers(state, input.players);\n\n return state;\n}\n\nexport type LeaderboardCasinoHost = HTMLElement & {\n state: OsLeaderboardCasinoState;\n uuid?: string;\n finished?: boolean;\n input?: LeaderboardCasinoInput | null;\n assets?: LeaderboardCasinoAssetsBundle | null;\n assetsBaseUrl?: string;\n};\n\n/** Apply input (+ optional assets bundle) to a mounted element. */\nexport function applyLeaderboardCasinoInput(\n host: LeaderboardCasinoHost,\n input: LeaderboardCasinoInput,\n assets?: LeaderboardCasinoAssetsBundle | null,\n): void {\n if (assets !== undefined) {\n host.assets = assets;\n }\n host.input = input;\n host.uuid = input.campaign?.uuid ?? '';\n host.finished = input.campaign?.finished ?? false;\n host.state = resolveLeaderboardCasinoInput(input, host.assets);\n}\n"],"names":["resolveThemeId","input","appearance","fallback","bundle","requested","getTheme","toPreviewPlayer","player","toLedgerPlayer","winnings","applyCampaign","state","campaign","applyPlayers","players","sorted","a","b","current","p","top","pinned","resolveLeaderboardCasinoInput","assets","resolveAssetsBundle","presetId","getBundleDefaultPresetId","preset","getOsLeaderboardCasinoPreset","themeId","resolvePresetState","getBundleLabels","backgroundVars","resolveBackgroundVars","getThemeVars","applyLeaderboardCasinoInput","host"],"mappings":"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"}
@@ -12,7 +12,6 @@ export declare class OsLeaderboardCasinoClimb extends LitElement implements Clim
12
12
  get pointsToNextLabel(): string;
13
13
  get nextTierRank(): number;
14
14
  get nextTierLabel(): string;
15
- renderNextTierPrizeIcon(): TemplateResult;
16
15
  get progressPct(): number;
17
16
  renderName(): TemplateResult;
18
17
  render(): TemplateResult | typeof nothing;
@@ -11,5 +11,4 @@ export interface ClimbSectionHost {
11
11
  progressPct: number;
12
12
  renderName(): TemplateResult;
13
13
  renderTrend(): TemplateResult;
14
- renderNextTierPrizeIcon(): TemplateResult;
15
14
  }
@@ -1,6 +1,8 @@
1
- import { html as e } from "lit";
2
- function i(a) {
3
- return e`<section>
1
+ import "../../../../shared/vendor/lit-reactive-element-reactive-element.js";
2
+ import { html as s } from "../../../../shared/vendor/lit-html-lit-html.js";
3
+ import "../../../../shared/vendor/lit-element-lit-element.js";
4
+ function l(a) {
5
+ return s`<section>
4
6
  <div class="section-header">
5
7
  <h2 class="section-title">${a.climbTitle}</h2>
6
8
  </div>
@@ -23,7 +25,7 @@ function i(a) {
23
25
  </span>
24
26
  <span class="target">
25
27
  <span class="target-label">next:</span>
26
- <em>${a.renderNextTierPrizeIcon()} ${a.nextTierLabel}</em>
28
+ <em>${a.nextTierLabel}</em>
27
29
  </span>
28
30
  </div>
29
31
  <div
@@ -41,6 +43,6 @@ function i(a) {
41
43
  `;
42
44
  }
43
45
  export {
44
- i as default
46
+ l as default
45
47
  };
46
48
  //# sourceMappingURL=climb-section.html.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"climb-section.html.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/climb-section/climb-section.html?lit-html"],"sourcesContent":["\nimport { html } from 'lit';\n\nexport default function render(host) {\n return html`<section>\n <div class=\"section-header\">\n <h2 class=\"section-title\">${host.climbTitle}</h2>\n </div>\n\n <div class=\"card ${host.section.vip ? 'vip' : ''}\">\n <div class=\"top\">\n <div class=\"rank-ring\"><b>#${host.section.rank}</b></div>\n <div class=\"who\">\n <div class=\"name\">${host.renderName()}</div>\n <div class=\"pts\">${host.pointsLabel}</div>\n </div>\n <span class=\"trend ${host.trendClass}\">${host.renderTrend()}</span>\n </div>\n\n <div class=\"progress\">\n <div class=\"progress-labels\">\n <span class=\"goal\">\n <b>${host.pointsToNextLabel}</b>\n to reach top ${host.nextTierRank}\n </span>\n <span class=\"target\">\n <span class=\"target-label\">next:</span>\n <em>${host.renderNextTierPrizeIcon()} ${host.nextTierLabel}</em>\n </span>\n </div>\n <div\n class=\"bar\"\n role=\"progressbar\"\n aria-valuenow=\"${host.progressPct}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div class=\"fill\" style=\"width: ${host.progressPct}%\"></div>\n </div>\n </div>\n </div>\n</section>\n`;\n}\n"],"names":["render","host","html"],"mappings":";AAGe,SAASA,EAAOC,GAAM;AACnC,SAAOC;AAAA;AAAA,gCAEuBD,EAAK,UAAU;AAAA;AAAA;AAAA,qBAG1BA,EAAK,QAAQ,MAAM,QAAQ,EAAE;AAAA;AAAA,mCAEfA,EAAK,QAAQ,IAAI;AAAA;AAAA,4BAExBA,EAAK,YAAY;AAAA,2BAClBA,EAAK,WAAW;AAAA;AAAA,2BAEhBA,EAAK,UAAU,KAAKA,EAAK,YAAW,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMlDA,EAAK,iBAAiB;AAAA,yBACZA,EAAK,YAAY;AAAA;AAAA;AAAA;AAAA,gBAI1BA,EAAK,wBAAuB,CAAE,IAAIA,EAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAM3CA,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA,0CAICA,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1D;"}
1
+ {"version":3,"file":"climb-section.html.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/climb-section/climb-section.html?lit-html"],"sourcesContent":["\nimport { html } from 'lit';\n\nexport default function render(host) {\n return html`<section>\n <div class=\"section-header\">\n <h2 class=\"section-title\">${host.climbTitle}</h2>\n </div>\n\n <div class=\"card ${host.section.vip ? 'vip' : ''}\">\n <div class=\"top\">\n <div class=\"rank-ring\"><b>#${host.section.rank}</b></div>\n <div class=\"who\">\n <div class=\"name\">${host.renderName()}</div>\n <div class=\"pts\">${host.pointsLabel}</div>\n </div>\n <span class=\"trend ${host.trendClass}\">${host.renderTrend()}</span>\n </div>\n\n <div class=\"progress\">\n <div class=\"progress-labels\">\n <span class=\"goal\">\n <b>${host.pointsToNextLabel}</b>\n to reach top ${host.nextTierRank}\n </span>\n <span class=\"target\">\n <span class=\"target-label\">next:</span>\n <em>${host.nextTierLabel}</em>\n </span>\n </div>\n <div\n class=\"bar\"\n role=\"progressbar\"\n aria-valuenow=\"${host.progressPct}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div class=\"fill\" style=\"width: ${host.progressPct}%\"></div>\n </div>\n </div>\n </div>\n</section>\n`;\n}\n"],"names":["render","host","html"],"mappings":";;;AAGe,SAASA,EAAOC,GAAM;AACnC,SAAOC;AAAAA;AAAAA,gCAEuBD,EAAK,UAAU;AAAA;AAAA;AAAA,qBAG1BA,EAAK,QAAQ,MAAM,QAAQ,EAAE;AAAA;AAAA,mCAEfA,EAAK,QAAQ,IAAI;AAAA;AAAA,4BAExBA,EAAK,YAAY;AAAA,2BAClBA,EAAK,WAAW;AAAA;AAAA,2BAEhBA,EAAK,UAAU,KAAKA,EAAK,YAAW,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMlDA,EAAK,iBAAiB;AAAA,yBACZA,EAAK,YAAY;AAAA;AAAA;AAAA;AAAA,gBAI1BA,EAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAMTA,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA,0CAICA,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1D;"}
@@ -1,27 +1,28 @@
1
- import { LitElement as u, html as m, nothing as b } from "lit";
2
- import { property as d } from "lit/decorators.js";
3
- import { unsafeSVG as p } from "lit/directives/unsafe-svg.js";
1
+ import "../../../../shared/vendor/lit-reactive-element-reactive-element.js";
2
+ import { html as m, nothing as f } from "../../../../shared/vendor/lit-html-lit-html.js";
3
+ import { LitElement as u } from "../../../../shared/vendor/lit-element-lit-element.js";
4
+ import { property as b } from "../../../../shared/vendor/lit-reactive-element-property.js";
5
+ import { unsafeSVG as p } from "../../../../shared/vendor/lit-html-unsafe-svg.js";
4
6
  import g from "../../assets/icons/table.rank-up.svg.js";
5
7
  import h from "../../assets/icons/table.rank-down.svg.js";
6
- import v from "../../assets/icons/table.rank-neutral.svg.js";
7
- import { Component as x } from "../../../../shared/lib/lit/component.js";
8
- import { scss as L } from "../../../../shared/lib/lit/scss.js";
9
- import { OS_LEADERBOARD_CASINO_CLIMB as S } from "../../constants/tags.js";
10
- import { osLeaderboardCasinoTheme as T } from "../../theme/styles.js";
11
- import { renderPlayerName as N } from "../../theme/vip-mark.js";
12
- import { iconService as l } from "../../services/icon.service.js";
8
+ import d from "../../assets/icons/table.rank-neutral.svg.js";
9
+ import { Component as v } from "../../../../shared/lib/lit/component.js";
10
+ import { scss as x } from "../../../../shared/lib/lit/scss.js";
11
+ import { OS_LEADERBOARD_CASINO_CLIMB as L } from "../../constants/tags.js";
12
+ import { osLeaderboardCasinoTheme as S } from "../../theme/styles.js";
13
+ import { renderPlayerName as T } from "../../theme/vip-mark.js";
13
14
  import _ from "./climb-section.html.js";
14
15
  import C from "./climb-section.scss.js";
15
- var O = Object.defineProperty, P = Object.getOwnPropertyDescriptor, f = (e, t, i, n) => {
16
- for (var r = n > 1 ? void 0 : n ? P(t, i) : t, s = e.length - 1, a; s >= 0; s--)
17
- (a = e[s]) && (r = (n ? a(t, i, r) : a(r)) || r);
18
- return n && r && O(t, i, r), r;
16
+ var O = Object.defineProperty, w = Object.getOwnPropertyDescriptor, l = (t, e, s, o) => {
17
+ for (var r = o > 1 ? void 0 : o ? w(e, s) : e, i = t.length - 1, a; i >= 0; i--)
18
+ (a = t[i]) && (r = (o ? a(e, s, r) : a(r)) || r);
19
+ return o && r && O(e, s, r), r;
19
20
  };
20
- function c(e) {
21
- return e.replace("<svg ", '<svg viewBox="0 0 512 512" ');
21
+ function c(t) {
22
+ return t.replace("<svg ", '<svg viewBox="0 0 512 512" ');
22
23
  }
23
- const w = c(g), $ = c(h), y = c(v);
24
- let o = class extends u {
24
+ const N = c(g), $ = c(h), y = c(d);
25
+ let n = class extends u {
25
26
  get climbTitle() {
26
27
  return this.section?.title ?? "Your climb";
27
28
  }
@@ -29,12 +30,12 @@ let o = class extends u {
29
30
  return `${this.section.points.toLocaleString()} pts`;
30
31
  }
31
32
  get trendClass() {
32
- const e = this.section?.trend ?? 0;
33
- return e > 0 ? "up" : e < 0 ? "down" : "flat";
33
+ const t = this.section?.trend ?? 0;
34
+ return t > 0 ? "up" : t < 0 ? "down" : "flat";
34
35
  }
35
36
  renderTrend() {
36
- const e = this.section?.trend ?? 0;
37
- return e > 0 ? m`${p(w)}<b>${e}</b>` : e < 0 ? m`${p($)}<b>${Math.abs(e)}</b>` : m`${p(y)}<b>steady</b>`;
37
+ const t = this.section?.trend ?? 0;
38
+ return t > 0 ? m`${p(N)}<b>${t}</b>` : t < 0 ? m`${p($)}<b>${Math.abs(t)}</b>` : m`${p(y)}<b>steady</b>`;
38
39
  }
39
40
  get pointsToNextLabel() {
40
41
  return `${this.section.pointsToNextTier.toLocaleString()} pts`;
@@ -45,30 +46,24 @@ let o = class extends u {
45
46
  get nextTierLabel() {
46
47
  return this.section.nextTierLabel;
47
48
  }
48
- renderNextTierPrizeIcon() {
49
- const e = l.resolvePrizeIconName(this.section.nextTierLabel);
50
- return l.get(e).render({
51
- className: "prize-icon prize-icon--inline"
52
- });
53
- }
54
49
  get progressPct() {
55
50
  return Math.round(Math.min(1, Math.max(0, this.section.progress)) * 100);
56
51
  }
57
52
  renderName() {
58
- return N(this.section.username, { vip: this.section.vip });
53
+ return T(this.section.username, { vip: this.section.vip });
59
54
  }
60
55
  render() {
61
- return this.section ? _(this) : b;
56
+ return this.section ? _(this) : f;
62
57
  }
63
58
  };
64
- o.styles = [T, L(C)];
65
- f([
66
- d({ attribute: !1 })
67
- ], o.prototype, "section", 2);
68
- o = f([
69
- x({ selector: S })
70
- ], o);
59
+ n.styles = [S, x(C)];
60
+ l([
61
+ b({ attribute: !1 })
62
+ ], n.prototype, "section", 2);
63
+ n = l([
64
+ v({ selector: L })
65
+ ], n);
71
66
  export {
72
- o as OsLeaderboardCasinoClimb
67
+ n as OsLeaderboardCasinoClimb
73
68
  };
74
69
  //# sourceMappingURL=climb-section.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"climb-section.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/climb-section/climb-section.ts"],"sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport rankUpSvg from '../../assets/icons/table.rank-up.svg?raw';\nimport rankDownSvg from '../../assets/icons/table.rank-down.svg?raw';\nimport rankNeutralSvg from '../../assets/icons/table.rank-neutral.svg?raw';\nimport { Component } from '@oddsmith/lib/lit/component.js';\nimport { scss } from '@oddsmith/lib/lit/scss.js';\nimport { OS_LEADERBOARD_CASINO_CLIMB } from '@os-leaderboard-casino/constants/tags.js';\nimport { osLeaderboardCasinoTheme } from '@os-leaderboard-casino/theme/index.js';\nimport { renderPlayerName } from '@os-leaderboard-casino/theme/vip-mark.js';\nimport { iconService } from '@os-leaderboard-casino/services/icon.service.js';\nimport type { OsLeaderboardCasinoClimbSection } from '@os-leaderboard-casino/types/sections.js';\nimport type { ClimbSectionHost } from './climb-section.host.js';\nimport renderTemplate from './climb-section.html?lit-html';\nimport styles from './climb-section.scss?inline';\n\nfunction addViewBox(svg: string): string {\n return svg.replace('<svg ', '<svg viewBox=\"0 0 512 512\" ');\n}\nconst rankUpSvgVb = addViewBox(rankUpSvg);\nconst rankDownSvgVb = addViewBox(rankDownSvg);\nconst rankNeutralSvgVb = addViewBox(rankNeutralSvg);\n\n/** \"Your climb\" — progress towards the next prize tier with rank trend. */\n@Component({ selector: OS_LEADERBOARD_CASINO_CLIMB })\nexport class OsLeaderboardCasinoClimb\n extends LitElement\n implements ClimbSectionHost\n{\n static styles = [osLeaderboardCasinoTheme, scss(styles)];\n\n @property({ attribute: false })\n section!: OsLeaderboardCasinoClimbSection;\n\n get climbTitle(): string {\n return this.section?.title ?? 'Your climb';\n }\n\n get pointsLabel(): string {\n return `${this.section.points.toLocaleString()} pts`;\n }\n\n get trendClass(): string {\n const trend = this.section?.trend ?? 0;\n return trend > 0 ? 'up' : trend < 0 ? 'down' : 'flat';\n }\n\n renderTrend(): TemplateResult {\n const trend = this.section?.trend ?? 0;\n if (trend > 0) return html`${unsafeSVG(rankUpSvgVb)}<b>${trend}</b>`;\n if (trend < 0) return html`${unsafeSVG(rankDownSvgVb)}<b>${Math.abs(trend)}</b>`;\n return html`${unsafeSVG(rankNeutralSvgVb)}<b>steady</b>`;\n }\n\n get pointsToNextLabel(): string {\n return `${this.section.pointsToNextTier.toLocaleString()} pts`;\n }\n\n get nextTierRank(): number {\n return this.section.nextTierRank;\n }\n\n get nextTierLabel(): string {\n return this.section.nextTierLabel;\n }\n\n renderNextTierPrizeIcon() {\n const name = iconService.resolvePrizeIconName(this.section.nextTierLabel);\n return iconService.get(name).render({\n className: 'prize-icon prize-icon--inline',\n });\n }\n\n get progressPct(): number {\n return Math.round(Math.min(1, Math.max(0, this.section.progress)) * 100);\n }\n\n renderName() {\n return renderPlayerName(this.section.username, { vip: this.section.vip });\n }\n\n render() {\n if (!this.section) return nothing;\n return renderTemplate(this);\n }\n}\n"],"names":["addViewBox","svg","rankUpSvgVb","rankUpSvg","rankDownSvgVb","rankDownSvg","rankNeutralSvgVb","rankNeutralSvg","OsLeaderboardCasinoClimb","LitElement","trend","html","unsafeSVG","name","iconService","renderPlayerName","renderTemplate","nothing","osLeaderboardCasinoTheme","scss","styles","__decorateClass","property","Component","OS_LEADERBOARD_CASINO_CLIMB"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,SAASA,EAAWC,GAAqB;AACvC,SAAOA,EAAI,QAAQ,SAAS,6BAA6B;AAC3D;AACA,MAAMC,IAAcF,EAAWG,CAAS,GAClCC,IAAgBJ,EAAWK,CAAW,GACtCC,IAAmBN,EAAWO,CAAc;AAI3C,IAAMC,IAAN,cACGC,EAEV;AAAA,EAME,IAAI,aAAqB;AACvB,WAAO,KAAK,SAAS,SAAS;AAAA,EAChC;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,GAAG,KAAK,QAAQ,OAAO,gBAAgB;AAAA,EAChD;AAAA,EAEA,IAAI,aAAqB;AACvB,UAAMC,IAAQ,KAAK,SAAS,SAAS;AACrC,WAAOA,IAAQ,IAAI,OAAOA,IAAQ,IAAI,SAAS;AAAA,EACjD;AAAA,EAEA,cAA8B;AAC5B,UAAMA,IAAQ,KAAK,SAAS,SAAS;AACrC,WAAIA,IAAQ,IAAUC,IAAOC,EAAUV,CAAW,CAAC,MAAMQ,CAAK,SAC1DA,IAAQ,IAAUC,IAAOC,EAAUR,CAAa,CAAC,MAAM,KAAK,IAAIM,CAAK,CAAC,SACnEC,IAAOC,EAAUN,CAAgB,CAAC;AAAA,EAC3C;AAAA,EAEA,IAAI,oBAA4B;AAC9B,WAAO,GAAG,KAAK,QAAQ,iBAAiB,gBAAgB;AAAA,EAC1D;AAAA,EAEA,IAAI,eAAuB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,gBAAwB;AAC1B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,0BAA0B;AACxB,UAAMO,IAAOC,EAAY,qBAAqB,KAAK,QAAQ,aAAa;AACxE,WAAOA,EAAY,IAAID,CAAI,EAAE,OAAO;AAAA,MAClC,WAAW;AAAA,IAAA,CACZ;AAAA,EACH;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,QAAQ,QAAQ,CAAC,IAAI,GAAG;AAAA,EACzE;AAAA,EAEA,aAAa;AACX,WAAOE,EAAiB,KAAK,QAAQ,UAAU,EAAE,KAAK,KAAK,QAAQ,KAAK;AAAA,EAC1E;AAAA,EAEA,SAAS;AACP,WAAK,KAAK,UACHC,EAAe,IAAI,IADAC;AAAA,EAE5B;AACF;AA5DaT,EAIJ,SAAS,CAACU,GAA0BC,EAAKC,CAAM,CAAC;AAGvDC,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GANnBd,EAOX,WAAA,WAAA,CAAA;AAPWA,IAANa,EAAA;AAAA,EADNE,EAAU,EAAE,UAAUC,EAAA,CAA6B;AAAA,GACvChB,CAAA;"}
1
+ {"version":3,"file":"climb-section.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/climb-section/climb-section.ts"],"sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport rankUpSvg from '../../assets/icons/table.rank-up.svg?raw';\nimport rankDownSvg from '../../assets/icons/table.rank-down.svg?raw';\nimport rankNeutralSvg from '../../assets/icons/table.rank-neutral.svg?raw';\nimport { Component } from '@oddsmith/lib/lit/component.js';\nimport { scss } from '@oddsmith/lib/lit/scss.js';\nimport { OS_LEADERBOARD_CASINO_CLIMB } from '@os-leaderboard-casino/constants/tags.js';\nimport { osLeaderboardCasinoTheme } from '@os-leaderboard-casino/theme/index.js';\nimport { renderPlayerName } from '@os-leaderboard-casino/theme/vip-mark.js';\nimport type { OsLeaderboardCasinoClimbSection } from '@os-leaderboard-casino/types/sections.js';\nimport type { ClimbSectionHost } from './climb-section.host.js';\nimport renderTemplate from './climb-section.html?lit-html';\nimport styles from './climb-section.scss?inline';\n\nfunction addViewBox(svg: string): string {\n return svg.replace('<svg ', '<svg viewBox=\"0 0 512 512\" ');\n}\nconst rankUpSvgVb = addViewBox(rankUpSvg);\nconst rankDownSvgVb = addViewBox(rankDownSvg);\nconst rankNeutralSvgVb = addViewBox(rankNeutralSvg);\n\n/** \"Your climb\" — progress towards the next prize tier with rank trend. */\n@Component({ selector: OS_LEADERBOARD_CASINO_CLIMB })\nexport class OsLeaderboardCasinoClimb\n extends LitElement\n implements ClimbSectionHost\n{\n static styles = [osLeaderboardCasinoTheme, scss(styles)];\n\n @property({ attribute: false })\n section!: OsLeaderboardCasinoClimbSection;\n\n get climbTitle(): string {\n return this.section?.title ?? 'Your climb';\n }\n\n get pointsLabel(): string {\n return `${this.section.points.toLocaleString()} pts`;\n }\n\n get trendClass(): string {\n const trend = this.section?.trend ?? 0;\n return trend > 0 ? 'up' : trend < 0 ? 'down' : 'flat';\n }\n\n renderTrend(): TemplateResult {\n const trend = this.section?.trend ?? 0;\n if (trend > 0) return html`${unsafeSVG(rankUpSvgVb)}<b>${trend}</b>`;\n if (trend < 0) return html`${unsafeSVG(rankDownSvgVb)}<b>${Math.abs(trend)}</b>`;\n return html`${unsafeSVG(rankNeutralSvgVb)}<b>steady</b>`;\n }\n\n get pointsToNextLabel(): string {\n return `${this.section.pointsToNextTier.toLocaleString()} pts`;\n }\n\n get nextTierRank(): number {\n return this.section.nextTierRank;\n }\n\n get nextTierLabel(): string {\n return this.section.nextTierLabel;\n }\n\n get progressPct(): number {\n return Math.round(Math.min(1, Math.max(0, this.section.progress)) * 100);\n }\n\n renderName() {\n return renderPlayerName(this.section.username, { vip: this.section.vip });\n }\n\n render() {\n if (!this.section) return nothing;\n return renderTemplate(this);\n }\n}\n"],"names":["addViewBox","svg","rankUpSvgVb","rankUpSvg","rankDownSvgVb","rankDownSvg","rankNeutralSvgVb","rankNeutralSvg","OsLeaderboardCasinoClimb","LitElement","trend","html","unsafeSVG","renderPlayerName","renderTemplate","nothing","osLeaderboardCasinoTheme","scss","styles","__decorateClass","property","Component","OS_LEADERBOARD_CASINO_CLIMB"],"mappings":";;;;;;;;;;;;;;;;;;;;AAgBA,SAASA,EAAWC,GAAqB;AACvC,SAAOA,EAAI,QAAQ,SAAS,6BAA6B;AAC3D;AACA,MAAMC,IAAcF,EAAWG,CAAS,GAClCC,IAAgBJ,EAAWK,CAAW,GACtCC,IAAmBN,EAAWO,CAAc;AAI3C,IAAMC,IAAN,cACGC,EAEV;AAAA,EAME,IAAI,aAAqB;AACvB,WAAO,KAAK,SAAS,SAAS;AAAA,EAChC;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,GAAG,KAAK,QAAQ,OAAO,gBAAgB;AAAA,EAChD;AAAA,EAEA,IAAI,aAAqB;AACvB,UAAMC,IAAQ,KAAK,SAAS,SAAS;AACrC,WAAOA,IAAQ,IAAI,OAAOA,IAAQ,IAAI,SAAS;AAAA,EACjD;AAAA,EAEA,cAA8B;AAC5B,UAAMA,IAAQ,KAAK,SAAS,SAAS;AACrC,WAAIA,IAAQ,IAAUC,IAAOC,EAAUV,CAAW,CAAC,MAAMQ,CAAK,SAC1DA,IAAQ,IAAUC,IAAOC,EAAUR,CAAa,CAAC,MAAM,KAAK,IAAIM,CAAK,CAAC,SACnEC,IAAOC,EAAUN,CAAgB,CAAC;AAAA,EAC3C;AAAA,EAEA,IAAI,oBAA4B;AAC9B,WAAO,GAAG,KAAK,QAAQ,iBAAiB,gBAAgB;AAAA,EAC1D;AAAA,EAEA,IAAI,eAAuB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,gBAAwB;AAC1B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,QAAQ,QAAQ,CAAC,IAAI,GAAG;AAAA,EACzE;AAAA,EAEA,aAAa;AACX,WAAOO,EAAiB,KAAK,QAAQ,UAAU,EAAE,KAAK,KAAK,QAAQ,KAAK;AAAA,EAC1E;AAAA,EAEA,SAAS;AACP,WAAK,KAAK,UACHC,EAAe,IAAI,IADAC;AAAAA,EAE5B;AACF;AArDaP,EAIJ,SAAS,CAACQ,GAA0BC,EAAKC,CAAM,CAAC;AAGvDC,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GANnBZ,EAOX,WAAA,WAAA,CAAA;AAPWA,IAANW,EAAA;AAAA,EADNE,EAAU,EAAE,UAAUC,EAAA,CAA6B;AAAA,GACvCd,CAAA;"}
@@ -1,4 +1,6 @@
1
- import { html as o } from "lit";
1
+ import "../../../../../shared/vendor/lit-reactive-element-reactive-element.js";
2
+ import { html as o } from "../../../../../shared/vendor/lit-html-lit-html.js";
3
+ import "../../../../../shared/vendor/lit-element-lit-element.js";
2
4
  const t = (r) => {
3
5
  switch (r) {
4
6
  case "boost":
@@ -98,19 +100,19 @@ const t = (r) => {
98
100
  }, e = {
99
101
  "event-1": "bolt",
100
102
  "event-2": "boost"
101
- }, n = {
103
+ }, i = {
102
104
  gold: "bolt",
103
105
  violet: "boost",
104
106
  green: "star",
105
107
  red: "fire"
106
108
  };
107
- function l(r) {
109
+ function c(r) {
108
110
  return r.icon ? r.icon : t(
109
- e[r.id] ?? n[r.accent ?? "gold"] ?? "star"
111
+ e[r.id] ?? i[r.accent ?? "gold"] ?? "star"
110
112
  );
111
113
  }
112
114
  export {
113
115
  t as eventIcon,
114
- l as resolveEventIcon
116
+ c as resolveEventIcon
115
117
  };
116
118
  //# sourceMappingURL=event-icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-icons.js","sources":["../../../../../../src/components/os-leaderboard-casino/sections/events-banner/components/event-icons.ts"],"sourcesContent":["import { html, type TemplateResult } from 'lit';\nimport type { OsLeaderboardCasinoEventItem } from '@os-leaderboard-casino/types/sections.js';\n\nexport type EventIconName = 'boost' | 'gift' | 'bolt' | 'fire' | 'star' | 'clock';\n\nexport const eventIcon = (name: EventIconName): TemplateResult => {\n switch (name) {\n case 'boost':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M4 20 9 9l6 6-11 5Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M4 20 9 9l6 6-11 5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14 3v3M19 5l-2 2M21 10h-3\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <circle cx=\"15.5\" cy=\"8.5\" r=\"2.5\" fill=\"currentColor\" opacity=\".4\" />\n </svg>`;\n case 'gift':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <rect\n x=\"4\"\n y=\"9\"\n width=\"16\"\n height=\"11\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <path d=\"M4 9h16M12 9v11\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <path\n d=\"M12 9C9 9 7 4 9.5 4S12 7 12 9Zm0 0c3 0 5-5 2.5-5S12 7 12 9Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'bolt':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M13 2 4 14h6l-1 8 9-12h-6l1-8Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M13 2 4 14h6l-1 8 9-12h-6l1-8Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'fire':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M12 3c1 3 4 4 4 8a4 4 0 1 1-8 0c0-2 1-3 2-4 .5 1.5 2 2 2-4Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M12 3c1 3 4 4 4 8a4 4 0 1 1-8 0c0-2 1-3 2-4 .5 1.5 2 2 2-4Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'star':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"m12 3 2.6 5.5 6 .8-4.4 4.2 1.1 6L12 16.8 6.7 19.5l1.1-6L3.4 9.3l6-.8L12 3Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"m12 3 2.6 5.5 6 .8-4.4 4.2 1.1 6L12 16.8 6.7 19.5l1.1-6L3.4 9.3l6-.8L12 3Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'clock':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <path\n d=\"M12 7v5l3.5 2\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n }\n};\n\nconst ICON_BY_ID: Record<string, EventIconName> = {\n 'event-1': 'bolt',\n 'event-2': 'boost',\n};\n\nconst ICON_BY_ACCENT: Record<\n NonNullable<OsLeaderboardCasinoEventItem['accent']>,\n EventIconName\n> = {\n gold: 'bolt',\n violet: 'boost',\n green: 'star',\n red: 'fire',\n};\n\nexport function resolveEventIcon(\n event: OsLeaderboardCasinoEventItem,\n): TemplateResult | string {\n if (event.icon) return event.icon;\n return eventIcon(\n ICON_BY_ID[event.id] ??\n ICON_BY_ACCENT[event.accent ?? 'gold'] ??\n 'star',\n );\n}\n"],"names":["eventIcon","name","html","ICON_BY_ID","ICON_BY_ACCENT","resolveEventIcon","event"],"mappings":";AAKO,MAAMA,IAAY,CAACC,MAAwC;AAChE,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBT,KAAK;AACH,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkBT,KAAK;AACH,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaT,KAAK;AACH,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaT,KAAK;AACH,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaT,KAAK;AACH,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAWb,GAEMC,IAA4C;AAAA,EAChD,WAAW;AAAA,EACX,WAAW;AACb,GAEMC,IAGF;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,KAAK;AACP;AAEO,SAASC,EACdC,GACyB;AACzB,SAAIA,EAAM,OAAaA,EAAM,OACtBN;AAAA,IACLG,EAAWG,EAAM,EAAE,KACjBF,EAAeE,EAAM,UAAU,MAAM,KACrC;AAAA,EAAA;AAEN;"}
1
+ {"version":3,"file":"event-icons.js","sources":["../../../../../../src/components/os-leaderboard-casino/sections/events-banner/components/event-icons.ts"],"sourcesContent":["import { html, type TemplateResult } from 'lit';\nimport type { OsLeaderboardCasinoEventItem } from '@os-leaderboard-casino/types/sections.js';\n\nexport type EventIconName = 'boost' | 'gift' | 'bolt' | 'fire' | 'star' | 'clock';\n\nexport const eventIcon = (name: EventIconName): TemplateResult => {\n switch (name) {\n case 'boost':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M4 20 9 9l6 6-11 5Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M4 20 9 9l6 6-11 5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14 3v3M19 5l-2 2M21 10h-3\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <circle cx=\"15.5\" cy=\"8.5\" r=\"2.5\" fill=\"currentColor\" opacity=\".4\" />\n </svg>`;\n case 'gift':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <rect\n x=\"4\"\n y=\"9\"\n width=\"16\"\n height=\"11\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <path d=\"M4 9h16M12 9v11\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <path\n d=\"M12 9C9 9 7 4 9.5 4S12 7 12 9Zm0 0c3 0 5-5 2.5-5S12 7 12 9Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'bolt':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M13 2 4 14h6l-1 8 9-12h-6l1-8Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M13 2 4 14h6l-1 8 9-12h-6l1-8Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'fire':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M12 3c1 3 4 4 4 8a4 4 0 1 1-8 0c0-2 1-3 2-4 .5 1.5 2 2 2-4Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M12 3c1 3 4 4 4 8a4 4 0 1 1-8 0c0-2 1-3 2-4 .5 1.5 2 2 2-4Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'star':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"m12 3 2.6 5.5 6 .8-4.4 4.2 1.1 6L12 16.8 6.7 19.5l1.1-6L3.4 9.3l6-.8L12 3Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"m12 3 2.6 5.5 6 .8-4.4 4.2 1.1 6L12 16.8 6.7 19.5l1.1-6L3.4 9.3l6-.8L12 3Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n case 'clock':\n return html`<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <path\n d=\"M12 7v5l3.5 2\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n }\n};\n\nconst ICON_BY_ID: Record<string, EventIconName> = {\n 'event-1': 'bolt',\n 'event-2': 'boost',\n};\n\nconst ICON_BY_ACCENT: Record<\n NonNullable<OsLeaderboardCasinoEventItem['accent']>,\n EventIconName\n> = {\n gold: 'bolt',\n violet: 'boost',\n green: 'star',\n red: 'fire',\n};\n\nexport function resolveEventIcon(\n event: OsLeaderboardCasinoEventItem,\n): TemplateResult | string {\n if (event.icon) return event.icon;\n return eventIcon(\n ICON_BY_ID[event.id] ??\n ICON_BY_ACCENT[event.accent ?? 'gold'] ??\n 'star',\n );\n}\n"],"names":["eventIcon","name","html","ICON_BY_ID","ICON_BY_ACCENT","resolveEventIcon","event"],"mappings":";;;AAKO,MAAMA,IAAY,CAACC,MAAwC;AAChE,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAoBT,KAAK;AACH,aAAOA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAkBT,KAAK;AACH,aAAOA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAaT,KAAK;AACH,aAAOA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAaT,KAAK;AACH,aAAOA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAaT,KAAK;AACH,aAAOA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAAA;AAWb,GAEMC,IAA4C;AAAA,EAChD,WAAW;AAAA,EACX,WAAW;AACb,GAEMC,IAGF;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,KAAK;AACP;AAEO,SAASC,EACdC,GACyB;AACzB,SAAIA,EAAM,OAAaA,EAAM,OACtBN;AAAA,IACLG,EAAWG,EAAM,EAAE,KACjBF,EAAeE,EAAM,UAAU,MAAM,KACrC;AAAA,EAAA;AAEN;"}
@@ -1,18 +1,21 @@
1
- import { LitElement as d, nothing as l, html as r } from "lit";
2
- import { keyed as h } from "lit/directives/keyed.js";
3
- import { property as m, state as v } from "lit/decorators.js";
1
+ import "../../../../shared/vendor/lit-reactive-element-reactive-element.js";
2
+ import { nothing as l, html as n } from "../../../../shared/vendor/lit-html-lit-html.js";
3
+ import { LitElement as d } from "../../../../shared/vendor/lit-element-lit-element.js";
4
+ import { keyed as m } from "../../../../shared/vendor/lit-html-keyed.js";
5
+ import { property as h } from "../../../../shared/vendor/lit-reactive-element-property.js";
6
+ import { state as v } from "../../../../shared/vendor/lit-reactive-element-state.js";
4
7
  import { Component as f } from "../../../../shared/lib/lit/component.js";
5
8
  import { scss as u } from "../../../../shared/lib/lit/scss.js";
6
9
  import { DEFAULT_EVENTS_ROTATE_MS as b } from "../../constants/defaults.js";
7
- import { OS_LEADERBOARD_CASINO_EVENTS as _ } from "../../constants/tags.js";
8
- import { osLeaderboardCasinoTheme as $ } from "../../theme/styles.js";
9
- import "lit/directives/unsafe-svg.js";
10
+ import { OS_LEADERBOARD_CASINO_EVENTS as $ } from "../../constants/tags.js";
11
+ import { osLeaderboardCasinoTheme as _ } from "../../theme/styles.js";
12
+ import "../../../../shared/vendor/lit-html-unsafe-svg.js";
10
13
  import { resolveEventIcon as g } from "./components/event-icons.js";
11
14
  import E from "./events-banner.scss.js";
12
- var x = Object.defineProperty, R = Object.getOwnPropertyDescriptor, p = (t, e, n, s) => {
13
- for (var o = s > 1 ? void 0 : s ? R(e, n) : e, i = t.length - 1, c; i >= 0; i--)
14
- (c = t[i]) && (o = (s ? c(e, n, o) : c(o)) || o);
15
- return s && o && x(e, n, o), o;
15
+ var x = Object.defineProperty, R = Object.getOwnPropertyDescriptor, p = (t, e, r, s) => {
16
+ for (var o = s > 1 ? void 0 : s ? R(e, r) : e, i = t.length - 1, c; i >= 0; i--)
17
+ (c = t[i]) && (o = (s ? c(e, r, o) : c(o)) || o);
18
+ return s && o && x(e, r, o), o;
16
19
  };
17
20
  let a = class extends d {
18
21
  constructor() {
@@ -43,24 +46,24 @@ let a = class extends d {
43
46
  render() {
44
47
  const t = this.section?.events ?? [];
45
48
  if (!t.length) return l;
46
- const e = t[this.index], n = e.accent ?? "gold", s = g(e);
47
- return r`
49
+ const e = t[this.index], r = e.accent ?? "gold", s = g(e);
50
+ return n`
48
51
  <div class="banner" role="region" aria-label="Promotions" aria-live="polite">
49
- <div class="chip accent-${n}">
50
- ${typeof s == "string" ? r`${s}` : s}
52
+ <div class="chip accent-${r}">
53
+ ${typeof s == "string" ? n`${s}` : s}
51
54
  </div>
52
- ${h(
55
+ ${m(
53
56
  this.index,
54
- r`<div class="body">
57
+ n`<div class="body">
55
58
  <p class="title">${e.title}</p>
56
- ${e.subtitle ? r`<p class="sub">${e.subtitle}</p>` : l}
59
+ ${e.subtitle ? n`<p class="sub">${e.subtitle}</p>` : l}
57
60
  </div>`
58
61
  )}
59
62
  <div class="right">
60
- <span class="tag accent-${n}">Event</span>
61
- ${t.length > 1 ? r`<div class="dots">
63
+ <span class="tag accent-${r}">Event</span>
64
+ ${t.length > 1 ? n`<div class="dots">
62
65
  ${t.map(
63
- (o, i) => r`<button
66
+ (o, i) => n`<button
64
67
  type="button"
65
68
  class="dot"
66
69
  aria-current=${i === this.index ? "true" : "false"}
@@ -74,15 +77,15 @@ let a = class extends d {
74
77
  `;
75
78
  }
76
79
  };
77
- a.styles = [$, u(E)];
80
+ a.styles = [_, u(E)];
78
81
  p([
79
- m({ attribute: !1 })
82
+ h({ attribute: !1 })
80
83
  ], a.prototype, "section", 2);
81
84
  p([
82
85
  v()
83
86
  ], a.prototype, "index", 2);
84
87
  a = p([
85
- f({ selector: _ })
88
+ f({ selector: $ })
86
89
  ], a);
87
90
  export {
88
91
  a as OsLeaderboardCasinoEvents
@@ -1 +1 @@
1
- {"version":3,"file":"events-banner.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/events-banner/events-banner.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { keyed } from 'lit/directives/keyed.js';\nimport { property, state } from 'lit/decorators.js';\nimport { Component } from '@oddsmith/lib/lit/component.js';\nimport { scss } from '@oddsmith/lib/lit/scss.js';\nimport { DEFAULT_EVENTS_ROTATE_MS } from '@os-leaderboard-casino/constants/defaults.js';\nimport { OS_LEADERBOARD_CASINO_EVENTS } from '@os-leaderboard-casino/constants/tags.js';\nimport { osLeaderboardCasinoTheme } from '@os-leaderboard-casino/theme/index.js';\nimport type { OsLeaderboardCasinoEventsSection } from '@os-leaderboard-casino/types/sections.js';\nimport { resolveEventIcon } from './components/event-icons.js';\nimport styles from './events-banner.scss?inline';\n\n/** Promotional events — v0 Glass Glow (icon chip, fade rotation). */\n@Component({ selector: OS_LEADERBOARD_CASINO_EVENTS })\nexport class OsLeaderboardCasinoEvents extends LitElement {\n static styles = [osLeaderboardCasinoTheme, scss(styles)];\n\n @property({ attribute: false })\n section!: OsLeaderboardCasinoEventsSection;\n\n @state()\n private index = 0;\n\n private timer?: ReturnType<typeof setInterval>;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.startRotation();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.stopRotation();\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('section')) {\n this.index = 0;\n this.startRotation();\n }\n }\n\n private startRotation() {\n this.stopRotation();\n const count = this.section?.events?.length ?? 0;\n if (count < 2) return;\n this.timer = setInterval(() => {\n this.index = (this.index + 1) % count;\n }, this.section?.rotateMs ?? DEFAULT_EVENTS_ROTATE_MS);\n }\n\n private stopRotation() {\n if (this.timer) clearInterval(this.timer);\n this.timer = undefined;\n }\n\n private goTo(index: number) {\n this.index = index;\n this.startRotation();\n }\n\n render() {\n const events = this.section?.events ?? [];\n if (!events.length) return nothing;\n\n const event = events[this.index];\n const accent = event.accent ?? 'gold';\n const icon = resolveEventIcon(event);\n\n return html`\n <div class=\"banner\" role=\"region\" aria-label=\"Promotions\" aria-live=\"polite\">\n <div class=\"chip accent-${accent}\">\n ${typeof icon === 'string' ? html`${icon}` : icon}\n </div>\n ${keyed(\n this.index,\n html`<div class=\"body\">\n <p class=\"title\">${event.title}</p>\n ${event.subtitle\n ? html`<p class=\"sub\">${event.subtitle}</p>`\n : nothing}\n </div>`,\n )}\n <div class=\"right\">\n <span class=\"tag accent-${accent}\">Event</span>\n ${events.length > 1\n ? html`<div class=\"dots\">\n ${events.map(\n (_, i) => html`<button\n type=\"button\"\n class=\"dot\"\n aria-current=${i === this.index ? 'true' : 'false'}\n aria-label=\"Show event ${i + 1}\"\n @click=${() => this.goTo(i)}\n ></button>`,\n )}\n </div>`\n : nothing}\n </div>\n </div>\n `;\n }\n}\n"],"names":["OsLeaderboardCasinoEvents","LitElement","changed","count","DEFAULT_EVENTS_ROTATE_MS","index","events","nothing","event","accent","icon","resolveEventIcon","html","keyed","_","osLeaderboardCasinoTheme","scss","styles","__decorateClass","property","state","Component","OS_LEADERBOARD_CASINO_EVENTS"],"mappings":";;;;;;;;;;;;;;;;AAcO,IAAMA,IAAN,cAAwCC,EAAW;AAAA,EAAnD,cAAA;AAAA,UAAA,GAAA,SAAA,GAOL,KAAQ,QAAQ;AAAA,EAAA;AAAA,EAIhB,oBAA0B;AACxB,UAAM,kBAAA,GACN,KAAK,cAAA;AAAA,EACP;AAAA,EAEA,uBAA6B;AAC3B,UAAM,qBAAA,GACN,KAAK,aAAA;AAAA,EACP;AAAA,EAEA,QAAQC,GAA+B;AACrC,IAAIA,EAAQ,IAAI,SAAS,MACvB,KAAK,QAAQ,GACb,KAAK,cAAA;AAAA,EAET;AAAA,EAEQ,gBAAgB;AACtB,SAAK,aAAA;AACL,UAAMC,IAAQ,KAAK,SAAS,QAAQ,UAAU;AAC9C,IAAIA,IAAQ,MACZ,KAAK,QAAQ,YAAY,MAAM;AAC7B,WAAK,SAAS,KAAK,QAAQ,KAAKA;AAAA,IAClC,GAAG,KAAK,SAAS,YAAYC,CAAwB;AAAA,EACvD;AAAA,EAEQ,eAAe;AACrB,IAAI,KAAK,SAAO,cAAc,KAAK,KAAK,GACxC,KAAK,QAAQ;AAAA,EACf;AAAA,EAEQ,KAAKC,GAAe;AAC1B,SAAK,QAAQA,GACb,KAAK,cAAA;AAAA,EACP;AAAA,EAEA,SAAS;AACP,UAAMC,IAAS,KAAK,SAAS,UAAU,CAAA;AACvC,QAAI,CAACA,EAAO,OAAQ,QAAOC;AAE3B,UAAMC,IAAQF,EAAO,KAAK,KAAK,GACzBG,IAASD,EAAM,UAAU,QACzBE,IAAOC,EAAiBH,CAAK;AAEnC,WAAOI;AAAA;AAAA,kCAEuBH,CAAM;AAAA,YAC5B,OAAOC,KAAS,WAAWE,IAAOF,CAAI,KAAKA,CAAI;AAAA;AAAA,UAEjDG;AAAA,MACA,KAAK;AAAA,MACLD;AAAA,+BACqBJ,EAAM,KAAK;AAAA,cAC5BA,EAAM,WACJI,mBAAsBJ,EAAM,QAAQ,SACpCD,CAAO;AAAA;AAAA,IAAA,CAEd;AAAA;AAAA,oCAE2BE,CAAM;AAAA,YAC9BH,EAAO,SAAS,IACdM;AAAA,kBACIN,EAAO;AAAA,MACP,CAACQ,GAAG,MAAMF;AAAA;AAAA;AAAA,mCAGO,MAAM,KAAK,QAAQ,SAAS,OAAO;AAAA,6CACzB,IAAI,CAAC;AAAA,6BACrB,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA;AAAA,IAAA,CAE9B;AAAA,wBAEHL,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB;AACF;AAxFaP,EACJ,SAAS,CAACe,GAA0BC,EAAKC,CAAM,CAAC;AAGvDC,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GAHnBnB,EAIX,WAAA,WAAA,CAAA;AAGQkB,EAAA;AAAA,EADPE,EAAA;AAAM,GANIpB,EAOH,WAAA,SAAA,CAAA;AAPGA,IAANkB,EAAA;AAAA,EADNG,EAAU,EAAE,UAAUC,EAAA,CAA8B;AAAA,GACxCtB,CAAA;"}
1
+ {"version":3,"file":"events-banner.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/events-banner/events-banner.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { keyed } from 'lit/directives/keyed.js';\nimport { property, state } from 'lit/decorators.js';\nimport { Component } from '@oddsmith/lib/lit/component.js';\nimport { scss } from '@oddsmith/lib/lit/scss.js';\nimport { DEFAULT_EVENTS_ROTATE_MS } from '@os-leaderboard-casino/constants/defaults.js';\nimport { OS_LEADERBOARD_CASINO_EVENTS } from '@os-leaderboard-casino/constants/tags.js';\nimport { osLeaderboardCasinoTheme } from '@os-leaderboard-casino/theme/index.js';\nimport type { OsLeaderboardCasinoEventsSection } from '@os-leaderboard-casino/types/sections.js';\nimport { resolveEventIcon } from './components/event-icons.js';\nimport styles from './events-banner.scss?inline';\n\n/** Promotional events — v0 Glass Glow (icon chip, fade rotation). */\n@Component({ selector: OS_LEADERBOARD_CASINO_EVENTS })\nexport class OsLeaderboardCasinoEvents extends LitElement {\n static styles = [osLeaderboardCasinoTheme, scss(styles)];\n\n @property({ attribute: false })\n section!: OsLeaderboardCasinoEventsSection;\n\n @state()\n private index = 0;\n\n private timer?: ReturnType<typeof setInterval>;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.startRotation();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.stopRotation();\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('section')) {\n this.index = 0;\n this.startRotation();\n }\n }\n\n private startRotation() {\n this.stopRotation();\n const count = this.section?.events?.length ?? 0;\n if (count < 2) return;\n this.timer = setInterval(() => {\n this.index = (this.index + 1) % count;\n }, this.section?.rotateMs ?? DEFAULT_EVENTS_ROTATE_MS);\n }\n\n private stopRotation() {\n if (this.timer) clearInterval(this.timer);\n this.timer = undefined;\n }\n\n private goTo(index: number) {\n this.index = index;\n this.startRotation();\n }\n\n render() {\n const events = this.section?.events ?? [];\n if (!events.length) return nothing;\n\n const event = events[this.index];\n const accent = event.accent ?? 'gold';\n const icon = resolveEventIcon(event);\n\n return html`\n <div class=\"banner\" role=\"region\" aria-label=\"Promotions\" aria-live=\"polite\">\n <div class=\"chip accent-${accent}\">\n ${typeof icon === 'string' ? html`${icon}` : icon}\n </div>\n ${keyed(\n this.index,\n html`<div class=\"body\">\n <p class=\"title\">${event.title}</p>\n ${event.subtitle\n ? html`<p class=\"sub\">${event.subtitle}</p>`\n : nothing}\n </div>`,\n )}\n <div class=\"right\">\n <span class=\"tag accent-${accent}\">Event</span>\n ${events.length > 1\n ? html`<div class=\"dots\">\n ${events.map(\n (_, i) => html`<button\n type=\"button\"\n class=\"dot\"\n aria-current=${i === this.index ? 'true' : 'false'}\n aria-label=\"Show event ${i + 1}\"\n @click=${() => this.goTo(i)}\n ></button>`,\n )}\n </div>`\n : nothing}\n </div>\n </div>\n `;\n }\n}\n"],"names":["OsLeaderboardCasinoEvents","LitElement","changed","count","DEFAULT_EVENTS_ROTATE_MS","index","events","nothing","event","accent","icon","resolveEventIcon","html","keyed","_","osLeaderboardCasinoTheme","scss","styles","__decorateClass","property","state","Component","OS_LEADERBOARD_CASINO_EVENTS"],"mappings":";;;;;;;;;;;;;;;;;;;AAcO,IAAMA,IAAN,cAAwCC,EAAW;AAAA,EAAnD,cAAA;AAAA,UAAA,GAAA,SAAA,GAOL,KAAQ,QAAQ;AAAA,EAAA;AAAA,EAIhB,oBAA0B;AACxB,UAAM,kBAAA,GACN,KAAK,cAAA;AAAA,EACP;AAAA,EAEA,uBAA6B;AAC3B,UAAM,qBAAA,GACN,KAAK,aAAA;AAAA,EACP;AAAA,EAEA,QAAQC,GAA+B;AACrC,IAAIA,EAAQ,IAAI,SAAS,MACvB,KAAK,QAAQ,GACb,KAAK,cAAA;AAAA,EAET;AAAA,EAEQ,gBAAgB;AACtB,SAAK,aAAA;AACL,UAAMC,IAAQ,KAAK,SAAS,QAAQ,UAAU;AAC9C,IAAIA,IAAQ,MACZ,KAAK,QAAQ,YAAY,MAAM;AAC7B,WAAK,SAAS,KAAK,QAAQ,KAAKA;AAAA,IAClC,GAAG,KAAK,SAAS,YAAYC,CAAwB;AAAA,EACvD;AAAA,EAEQ,eAAe;AACrB,IAAI,KAAK,SAAO,cAAc,KAAK,KAAK,GACxC,KAAK,QAAQ;AAAA,EACf;AAAA,EAEQ,KAAKC,GAAe;AAC1B,SAAK,QAAQA,GACb,KAAK,cAAA;AAAA,EACP;AAAA,EAEA,SAAS;AACP,UAAMC,IAAS,KAAK,SAAS,UAAU,CAAA;AACvC,QAAI,CAACA,EAAO,OAAQ,QAAOC;AAE3B,UAAMC,IAAQF,EAAO,KAAK,KAAK,GACzBG,IAASD,EAAM,UAAU,QACzBE,IAAOC,EAAiBH,CAAK;AAEnC,WAAOI;AAAAA;AAAAA,kCAEuBH,CAAM;AAAA,YAC5B,OAAOC,KAAS,WAAWE,IAAOF,CAAI,KAAKA,CAAI;AAAA;AAAA,UAEjDG;AAAAA,MACA,KAAK;AAAA,MACLD;AAAAA,+BACqBJ,EAAM,KAAK;AAAA,cAC5BA,EAAM,WACJI,mBAAsBJ,EAAM,QAAQ,SACpCD,CAAO;AAAA;AAAA,IAAA,CAEd;AAAA;AAAA,oCAE2BE,CAAM;AAAA,YAC9BH,EAAO,SAAS,IACdM;AAAAA,kBACIN,EAAO;AAAA,MACP,CAACQ,GAAG,MAAMF;AAAAA;AAAAA;AAAAA,mCAGO,MAAM,KAAK,QAAQ,SAAS,OAAO;AAAA,6CACzB,IAAI,CAAC;AAAA,6BACrB,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA;AAAA,IAAA,CAE9B;AAAA,wBAEHL,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB;AACF;AAxFaP,EACJ,SAAS,CAACe,GAA0BC,EAAKC,CAAM,CAAC;AAGvDC,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GAHnBnB,EAIX,WAAA,WAAA,CAAA;AAGQkB,EAAA;AAAA,EADPE,EAAA;AAAM,GANIpB,EAOH,WAAA,SAAA,CAAA;AAPGA,IAANkB,EAAA;AAAA,EADNG,EAAU,EAAE,UAAUC,EAAA,CAA8B;AAAA,GACxCtB,CAAA;"}
@@ -1,7 +1,9 @@
1
- import { html as r } from "lit";
2
- function t(e) {
3
- return r`<footer class="page-footer">
4
- <!-- <p>${e.displayText}</p> -->
1
+ import "../../../../shared/vendor/lit-reactive-element-reactive-element.js";
2
+ import { html as e } from "../../../../shared/vendor/lit-html-lit-html.js";
3
+ import "../../../../shared/vendor/lit-element-lit-element.js";
4
+ function a(r) {
5
+ return e`<footer class="page-footer">
6
+ <!-- <p>${r.displayText}</p> -->
5
7
  <!-- TODO: hardcoded -->
6
8
  <p>
7
9
  Powered by
@@ -13,6 +15,6 @@ function t(e) {
13
15
  `;
14
16
  }
15
17
  export {
16
- t as default
18
+ a as default
17
19
  };
18
20
  //# sourceMappingURL=footer-section.html.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer-section.html.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/footer-section/footer-section.html?lit-html"],"sourcesContent":["\nimport { html } from 'lit';\n\nexport default function render(host) {\n return html`<footer class=\"page-footer\">\n <!-- <p>${host.displayText}</p> -->\n <!-- TODO: hardcoded -->\n <p>\n Powered by\n <a href=\"https://oddsmith.io\" target=\"_blank\" rel=\"noopener noreferrer\">\n Oddsmith.io\n </a>\n </p>\n</footer>\n`;\n}\n"],"names":["render","host","html"],"mappings":";AAGe,SAASA,EAAOC,GAAM;AACnC,SAAOC;AAAA,YACGD,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU5B;"}
1
+ {"version":3,"file":"footer-section.html.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/footer-section/footer-section.html?lit-html"],"sourcesContent":["\nimport { html } from 'lit';\n\nexport default function render(host) {\n return html`<footer class=\"page-footer\">\n <!-- <p>${host.displayText}</p> -->\n <!-- TODO: hardcoded -->\n <p>\n Powered by\n <a href=\"https://oddsmith.io\" target=\"_blank\" rel=\"noopener noreferrer\">\n Oddsmith.io\n </a>\n </p>\n</footer>\n`;\n}\n"],"names":["render","host","html"],"mappings":";;;AAGe,SAASA,EAAOC,GAAM;AACnC,SAAOC;AAAAA,YACGD,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU5B;"}