@everymatrix/lottery-oddsbom-bomb 0.7.9 → 0.7.16

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const lotteryOddsbomBomb = require('./lottery-oddsbom-bomb-1f8981ad.js');
5
+ const lotteryOddsbomBomb = require('./lottery-oddsbom-bomb-3ef3e529.js');
6
6
  require('./index-68db8b3b.js');
7
7
 
8
8
 
@@ -8,7 +8,7 @@ const appGlobals = require('./app-globals-3a1e7e63.js');
8
8
  const defineCustomElements = async (win, options) => {
9
9
  if (typeof window === 'undefined') return undefined;
10
10
  await appGlobals.globalScripts();
11
- return index.bootstrapLazy([["lottery-oddsbom-bomb.cjs",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
11
+ return index.bootstrapLazy([["lottery-oddsbom-bomb.cjs",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"gameId":[513,"game-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32],"isGameAvailable":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
12
12
  };
13
13
 
14
14
  exports.setNonce = index.setNonce;
@@ -126,6 +126,17 @@ var Bomb;
126
126
  Bomb["IceHockey"] = "IceHockey";
127
127
  Bomb["Mixed"] = "Mixed";
128
128
  })(Bomb || (Bomb = {}));
129
+ var GameTypeEnum;
130
+ (function (GameTypeEnum) {
131
+ GameTypeEnum["Lottery"] = "Lottery";
132
+ GameTypeEnum["PoolGame"] = "PoolGame";
133
+ })(GameTypeEnum || (GameTypeEnum = {}));
134
+ var BettingOjectEnum;
135
+ (function (BettingOjectEnum) {
136
+ BettingOjectEnum["CorrectScore"] = "CorrectScore";
137
+ BettingOjectEnum["HomeDrawAway"] = "HomeDrawAway";
138
+ BettingOjectEnum["Mix"] = "Mix";
139
+ })(BettingOjectEnum || (BettingOjectEnum = {}));
129
140
 
130
141
  function _typeof(o) {
131
142
  "@babel/helpers - typeof";
@@ -2921,6 +2932,26 @@ async function getTurnoverForAll({ endpoint, configs }) {
2921
2932
  const results = await Promise.allSettled(promises);
2922
2933
  return results.map((r) => (r.status === 'fulfilled' ? r.value : fallback));
2923
2934
  }
2935
+ async function fetchGameInfo(endpoint, gameId) {
2936
+ try {
2937
+ const response = await fetchRequest(`${endpoint}/games/${gameId}`, 'GET', {});
2938
+ return response;
2939
+ }
2940
+ catch (error) {
2941
+ console.error('Failed to fetch game info:', error);
2942
+ throw new Error('The game is currently not available. Please try again later.');
2943
+ }
2944
+ }
2945
+ async function fetchTicketMatch({ endpoint, gameId, drawId }) {
2946
+ try {
2947
+ const res = await fetchRequest(`${endpoint}/poolgames/${gameId}/draws/${drawId}/matchConfig`);
2948
+ return res || [];
2949
+ }
2950
+ catch (e) {
2951
+ console.error('Failed to fetch ticket match:', e);
2952
+ return [];
2953
+ }
2954
+ }
2924
2955
  function formattedTurnover(turnover, unit = '€') {
2925
2956
  if (turnover === null)
2926
2957
  return '';
@@ -2987,7 +3018,7 @@ const translate = (key, customLang) => {
2987
3018
  return TRANSLATIONS[lang !== undefined && SUPPORTED_LANGUAGES.includes(lang) ? lang : DEFAULT_LANGUAGE][key];
2988
3019
  };
2989
3020
 
2990
- const lotteryOddsbomBombCss = "/* --- Component: Bomb Card Grid --- */\n.lottery-oddsbom-bomb-wrapper {\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n height: 100%;\n}\n\n.bomb-grid-container {\n width: 100%;\n display: flex;\n justify-content: center;\n container-type: inline-size;\n container-name: bomb-grid;\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n /* --- Component: Bomb Card --- */\n}\n.bomb-grid-container .bomb-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.75rem;\n place-items: center;\n}\n.bomb-grid-container .bomb-card-wrapper {\n width: 100%;\n max-width: 30rem;\n height: 100%;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 1rem;\n border: 1px solid var(--emw--color-gray-100, #e6e6e6);\n}\n.bomb-grid-container .bomb-card {\n height: 100%;\n min-width: 24rem;\n transition: transform 0.3s;\n}\n.bomb-grid-container .bomb-card:hover {\n transform: scale(1.02);\n cursor: pointer;\n}\n.bomb-grid-container .card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n margin-bottom: 0.8rem;\n}\n.bomb-grid-container .card-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.bomb-grid-container .card-icon svg {\n width: 28px;\n height: 28px;\n}\n.bomb-grid-container .card-title {\n flex-grow: 1;\n word-break: break-all;\n}\n.bomb-grid-container .card-title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-title p {\n margin: 0;\n color: var(--emw--color-typography-secondary, #333);\n font-size: 0.9rem;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-info {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 0.8rem;\n flex-wrap: wrap;\n}\n.bomb-grid-container .card-tag {\n background-color: var(--emw--color-tertiary, #e3f2fd);\n padding: 0.3rem 0.75rem;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n max-width: 120px;\n}\n.bomb-grid-container .card-matches {\n max-height: 6.8rem;\n overflow-y: auto;\n}\n.bomb-grid-container .card-matches ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 0.85rem;\n line-height: 1.6;\n}\n.bomb-grid-container .card-matches li {\n padding-left: 0.2rem;\n word-wrap: break-word;\n}\n\n/* --- CONTAINER QUERIES FOR RESPONSIVENESS --- */\n@container bomb-grid (max-width: 768px) {\n .bomb-grid-container .bomb-grid {\n /* On smaller containers, switch to a single column */\n grid-template-columns: 1fr;\n }\n .bomb-card-wrapper .bomb-card {\n min-width: 200px;\n }\n}\n/* --- Component: Filter Controls --- */\n.OddsbomEntranceController__section {\n margin: 1.5rem 0;\n display: flex;\n gap: 12px;\n color: var(--emw--color-typography, #000);\n container-type: inline-size;\n container-name: controller;\n justify-content: center;\n}\n.OddsbomEntranceController__label {\n font-weight: 500;\n white-space: nowrap;\n width: 6rem;\n line-height: 2.2rem;\n}\n.OddsbomEntranceController__segmented-control {\n display: inline-flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.OddsbomEntranceController__segment {\n height: 2.2rem;\n border: none;\n padding: 0.3rem 0.8rem;\n cursor: pointer;\n font-weight: 500;\n border-radius: 2rem;\n outline: none;\n white-space: nowrap;\n background-color: var(--emw--color-background, #ffffff);\n color: var(--emw--color-typography, #000);\n}\n.OddsbomEntranceController__segment--active {\n background-color: var(--emw--color-primary-variant, #1367e7);\n color: var(--emw--color-typography-reverse, #fff);\n font-weight: 600;\n}\n.OddsbomEntranceController__segment--disabled:hover {\n cursor: not-allowed !important;\n}\n.OddsbomEntranceController__segment:not(.OddsbomEntranceController__segment--active):hover {\n background-color: var(--emw--color-background-tertiary, #ccc);\n}\n\n.skeleton-content {\n display: flex;\n flex-direction: column;\n gap: 29px;\n align-items: center;\n}\n\n.skeleton-item {\n background: var(--emw--color-background-secondary, #f5f5f5);\n border-radius: 4px;\n height: 40px;\n width: 200px;\n}\n\n.skeleton-animated {\n animation: skeleton-shimmer 1.5s infinite linear;\n background: linear-gradient(90deg, var(--emw--color-background-secondary, #f5f5f5) 25%, var(--emw--color-background-tertiary, #ccc) 37%, var(--emw--color-background-secondary, #f5f5f5) 63%);\n background-size: 200% 100%;\n}\n\n@keyframes skeleton-shimmer {\n to {\n background-position: 100% 0;\n }\n}\n.loading-icon.scale {\n animation: scale 1s infinite ease-in-out;\n}\n\n@keyframes scale {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.2);\n }\n}\n@container controller (max-width: 500px) {\n .OddsbomEntranceController__segmented-control {\n gap: 0rem;\n }\n .OddsbomEntranceController__segment {\n padding: 0.2rem 0.6rem;\n }\n .OddsbomEntranceController__label,\n .OddsbomEntranceController____segment {\n line-height: 1.8rem;\n }\n}\n.loading-wrap {\n margin: 20px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n}\n.loading-wrap .dots-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n}\n.loading-wrap .dot {\n height: 14px;\n width: 14px;\n margin-right: 14px;\n border-radius: 14px;\n background-color: var(--emw--color-gray-300, #333);\n animation: pulse 1.5s infinite ease-in-out;\n}\n.loading-wrap .dot:last-child {\n margin-right: 0;\n}\n.loading-wrap .dot:nth-child(1) {\n animation-delay: -0.3s;\n}\n.loading-wrap .dot:nth-child(2) {\n animation-delay: -0.1s;\n}\n.loading-wrap .dot:nth-child(3) {\n animation-delay: 0.1s;\n}\n@keyframes pulse {\n 0% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-300, #333);\n }\n 50% {\n transform: scale(1.2);\n background-color: var(--emw--color-gray-100, #e6e6e6);\n }\n 100% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-150, #6f6f6f);\n }\n}\n\n.empty-draw-wrap {\n padding-top: 100px;\n}\n.empty-draw-wrap .empty-draw {\n width: 240px;\n height: 160px;\n padding: 18px 12px 12px 12px;\n background: var(--emw--color-secondary-variant, #e3f2fd);\n position: relative;\n margin: 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n border-radius: 12px;\n}\n.empty-draw-wrap .empty-draw img {\n position: absolute;\n top: -64%;\n left: 50%;\n transform: translateX(-50%);\n width: 200px;\n}\n.empty-draw-wrap .empty-draw-content {\n display: flex;\n gap: 4px;\n}\n.empty-draw-wrap .empty-draw-text {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n}";
3021
+ const lotteryOddsbomBombCss = "/* --- Component: Bomb Card Grid --- */\n.lottery-oddsbom-bomb-wrapper {\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n height: 100%;\n}\n\n.bomb-grid-container {\n margin-top: 20px;\n width: 100%;\n display: flex;\n justify-content: center;\n container-type: inline-size;\n container-name: bomb-grid;\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n /* --- Component: Bomb Card --- */\n}\n.bomb-grid-container .bomb-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.75rem;\n place-items: center;\n}\n.bomb-grid-container .bomb-card-wrapper {\n width: 100%;\n max-width: 30rem;\n height: 100%;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 1rem;\n border: 1px solid var(--emw--color-gray-100, #e6e6e6);\n}\n.bomb-grid-container .bomb-card {\n height: 100%;\n min-width: 24rem;\n transition: transform 0.3s;\n}\n.bomb-grid-container .bomb-card:hover {\n transform: scale(1.02);\n cursor: pointer;\n}\n.bomb-grid-container .card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n margin-bottom: 0.8rem;\n}\n.bomb-grid-container .card-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.bomb-grid-container .card-icon svg {\n width: 28px;\n height: 28px;\n}\n.bomb-grid-container .card-title {\n flex-grow: 1;\n word-break: break-all;\n}\n.bomb-grid-container .card-title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-title p {\n margin: 0;\n color: var(--emw--color-typography-secondary, #333);\n font-size: 0.9rem;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-info {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 0.8rem;\n flex-wrap: wrap;\n}\n.bomb-grid-container .card-tag {\n background-color: var(--emw--color-tertiary, #e3f2fd);\n padding: 0.3rem 0.75rem;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n max-width: 120px;\n}\n.bomb-grid-container .card-matches {\n max-height: 6.8rem;\n overflow-y: auto;\n}\n.bomb-grid-container .card-matches ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 0.85rem;\n line-height: 1.6;\n}\n.bomb-grid-container .card-matches li {\n padding-left: 0.2rem;\n word-wrap: break-word;\n}\n\n/* --- CONTAINER QUERIES FOR RESPONSIVENESS --- */\n@container bomb-grid (max-width: 768px) {\n .bomb-grid-container .bomb-grid {\n /* On smaller containers, switch to a single column */\n grid-template-columns: 1fr;\n }\n .bomb-card-wrapper .bomb-card {\n min-width: 200px;\n }\n}\n/* --- Component: Filter Controls --- */\n.OddsbomEntranceController__section {\n margin-top: 1.5rem;\n display: flex;\n gap: 12px;\n color: var(--emw--color-typography, #000);\n container-type: inline-size;\n container-name: controller;\n justify-content: center;\n}\n.OddsbomEntranceController__label {\n font-weight: 500;\n white-space: nowrap;\n width: 6rem;\n line-height: 2.2rem;\n}\n.OddsbomEntranceController__segmented-control {\n display: inline-flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.OddsbomEntranceController__segment {\n height: 2.2rem;\n border: none;\n padding: 0.3rem 0.8rem;\n cursor: pointer;\n font-weight: 500;\n border-radius: 2rem;\n outline: none;\n white-space: nowrap;\n background-color: var(--emw--color-background, #ffffff);\n color: var(--emw--color-typography, #000);\n}\n.OddsbomEntranceController__segment--active {\n background-color: var(--emw--color-primary-variant, #1367e7);\n color: var(--emw--color-typography-reverse, #fff);\n font-weight: 600;\n}\n.OddsbomEntranceController__segment--disabled:hover {\n cursor: not-allowed !important;\n}\n.OddsbomEntranceController__segment:not(.OddsbomEntranceController__segment--active):hover {\n background-color: var(--emw--color-background-tertiary, #ccc);\n}\n\n.skeleton-content {\n display: flex;\n flex-direction: column;\n gap: 29px;\n align-items: center;\n}\n\n.skeleton-item {\n background: var(--emw--color-background-secondary, #f5f5f5);\n border-radius: 4px;\n height: 40px;\n width: 200px;\n}\n\n.skeleton-animated {\n animation: skeleton-shimmer 1.5s infinite linear;\n background: linear-gradient(90deg, var(--emw--color-background-secondary, #f5f5f5) 25%, var(--emw--color-background-tertiary, #ccc) 37%, var(--emw--color-background-secondary, #f5f5f5) 63%);\n background-size: 200% 100%;\n}\n\n@keyframes skeleton-shimmer {\n to {\n background-position: 100% 0;\n }\n}\n.loading-icon.scale {\n animation: scale 1s infinite ease-in-out;\n}\n\n@keyframes scale {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.2);\n }\n}\n@container controller (max-width: 500px) {\n .OddsbomEntranceController__segmented-control {\n gap: 0rem;\n }\n .OddsbomEntranceController__segment {\n padding: 0.2rem 0.6rem;\n }\n .OddsbomEntranceController__label,\n .OddsbomEntranceController____segment {\n line-height: 1.8rem;\n }\n}\n.loading-wrap {\n margin: 20px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n}\n.loading-wrap .dots-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n}\n.loading-wrap .dot {\n height: 14px;\n width: 14px;\n margin-right: 14px;\n border-radius: 14px;\n background-color: var(--emw--color-gray-300, #333);\n animation: pulse 1.5s infinite ease-in-out;\n}\n.loading-wrap .dot:last-child {\n margin-right: 0;\n}\n.loading-wrap .dot:nth-child(1) {\n animation-delay: -0.3s;\n}\n.loading-wrap .dot:nth-child(2) {\n animation-delay: -0.1s;\n}\n.loading-wrap .dot:nth-child(3) {\n animation-delay: 0.1s;\n}\n@keyframes pulse {\n 0% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-300, #333);\n }\n 50% {\n transform: scale(1.2);\n background-color: var(--emw--color-gray-100, #e6e6e6);\n }\n 100% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-150, #6f6f6f);\n }\n}\n\n.empty-draw-wrap {\n padding-top: 100px;\n}\n.empty-draw-wrap .empty-draw {\n width: 240px;\n height: 160px;\n padding: 18px 12px 12px 12px;\n background: var(--emw--color-secondary-variant, #e3f2fd);\n position: relative;\n margin: 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n border-radius: 12px;\n}\n.empty-draw-wrap .empty-draw img {\n position: absolute;\n top: -64%;\n left: 50%;\n transform: translateX(-50%);\n width: 200px;\n}\n.empty-draw-wrap .empty-draw-content {\n display: flex;\n gap: 4px;\n}\n.empty-draw-wrap .empty-draw-text {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n}";
2991
3022
  const LotteryOddsbomBombStyle0 = lotteryOddsbomBombCss;
2992
3023
 
2993
3024
  const BombIcons = {
@@ -3004,11 +3035,16 @@ const LotteryOddsbomBomb = class {
3004
3035
  this.language = 'en';
3005
3036
  this.endpoint = undefined;
3006
3037
  this.groupId = undefined;
3038
+ this.gameId = undefined;
3007
3039
  this.activeBomb = 'All';
3008
3040
  this.bombList = [];
3009
3041
  this.gameList = [];
3010
3042
  this.liveDrawsInfoByGroupId = {};
3011
3043
  this.isLoading = false;
3044
+ this.isGameAvailable = true;
3045
+ }
3046
+ get isSingleGameMode() {
3047
+ return !!this.gameId;
3012
3048
  }
3013
3049
  handleClientStylingChange(newValue, oldValue) {
3014
3050
  if (newValue != oldValue) {
@@ -3044,20 +3080,57 @@ const LotteryOddsbomBomb = class {
3044
3080
  async doFetchData(params = {}) {
3045
3081
  try {
3046
3082
  this.isLoading = true;
3047
- this.liveDrawsInfoByGroupId = await fetchData({
3048
- endpoint: this.endpoint,
3049
- groupId: this.groupId,
3050
- params
3051
- });
3052
- this.gameList = this.liveDrawsInfoByGroupId.liveDraws;
3053
- this.bombList = [DEFAULT_ALL_BOMB, ...this.liveDrawsInfoByGroupId.sportTags];
3054
- this.isLoading = false;
3055
- this.updateTurnoverForAll();
3083
+ if (this.isSingleGameMode) {
3084
+ await this.fetchSingleGameData();
3085
+ }
3086
+ else {
3087
+ await this.fetchGroupData(params);
3088
+ }
3089
+ if (this.gameList.length > 0) {
3090
+ this.updateTurnoverForAll();
3091
+ }
3056
3092
  }
3057
3093
  finally {
3058
3094
  this.isLoading = false;
3059
3095
  }
3060
3096
  }
3097
+ async fetchSingleGameData() {
3098
+ var _a, _b, _c;
3099
+ const { endpoint, gameId } = this;
3100
+ const gameInfo = await fetchGameInfo(endpoint, gameId);
3101
+ const wagerCloseTime = (_a = gameInfo === null || gameInfo === void 0 ? void 0 : gameInfo.currentDraw) === null || _a === void 0 ? void 0 : _a.wagerCloseTime;
3102
+ const drawId = (_b = gameInfo === null || gameInfo === void 0 ? void 0 : gameInfo.currentDraw) === null || _b === void 0 ? void 0 : _b.id;
3103
+ if (!wagerCloseTime || new Date() >= new Date(wagerCloseTime)) {
3104
+ this.isGameAvailable = false;
3105
+ this.gameList = [];
3106
+ }
3107
+ else {
3108
+ this.isGameAvailable = true;
3109
+ const matchInfo = await fetchTicketMatch({ endpoint, gameId: gameInfo.type, drawId });
3110
+ this.gameList = [
3111
+ {
3112
+ drawId,
3113
+ title: gameInfo.name,
3114
+ subTitle: ((_c = matchInfo === null || matchInfo === void 0 ? void 0 : matchInfo[0]) === null || _c === void 0 ? void 0 : _c.sportName) || '',
3115
+ icon: Bomb.Football,
3116
+ date: formattedTime(gameInfo.currentDraw.date),
3117
+ turnover: '0',
3118
+ matchList: (matchInfo || []).map((i) => i.eventName).slice(0, 3),
3119
+ gameId: gameInfo.type
3120
+ }
3121
+ ];
3122
+ }
3123
+ this.bombList = [];
3124
+ }
3125
+ async fetchGroupData(params) {
3126
+ this.liveDrawsInfoByGroupId = await fetchData({
3127
+ endpoint: this.endpoint,
3128
+ groupId: this.groupId,
3129
+ params
3130
+ });
3131
+ this.gameList = this.liveDrawsInfoByGroupId.liveDraws;
3132
+ this.bombList = [DEFAULT_ALL_BOMB, ...this.liveDrawsInfoByGroupId.sportTags];
3133
+ }
3061
3134
  async updateTurnoverForAll() {
3062
3135
  const turnovers = getTurnoverForAll({
3063
3136
  endpoint: this.endpoint,
@@ -3082,9 +3155,12 @@ const LotteryOddsbomBomb = class {
3082
3155
  }
3083
3156
  renderEmpty() {
3084
3157
  const infoImagePath = index.getAssetPath('../static/empty-info.svg');
3085
- return (index.h("div", { class: "empty-draw-wrap" }, index.h("div", { class: "empty-draw" }, index.h("img", { src: infoImagePath, class: "empty-draw-logo" }), index.h("div", { class: "empty-draw-content" }, index.h("div", { class: "empty-draw-text" }, "\u24D8 Sorry. The game is not available now.")))));
3158
+ const message = translate('gameNotAvailable', this.language);
3159
+ return (index.h("div", { class: "empty-draw-wrap" }, index.h("div", { class: "empty-draw" }, index.h("img", { src: infoImagePath, class: "empty-draw-logo" }), index.h("div", { class: "empty-draw-content" }, index.h("div", { class: "empty-draw-text" }, "\u24D8 ", message)))));
3086
3160
  }
3087
3161
  renderFilter() {
3162
+ if (this.isSingleGameMode || !this.gameList.length)
3163
+ return null;
3088
3164
  return (index.h("div", { class: "OddsbomEntranceController__section" }, index.h("span", { class: "OddsbomEntranceController__label" }, "Select Bomb:"), !!this.bombList.length ? (index.h("div", { class: "OddsbomEntranceController__segmented-control" }, this.bombList.map(({ name, code }) => (index.h("button", { class: {
3089
3165
  OddsbomEntranceController__segment: true,
3090
3166
  'OddsbomEntranceController__segment--active': this.activeBomb === code
@@ -3098,7 +3174,7 @@ const LotteryOddsbomBomb = class {
3098
3174
  } }, index.h("div", { class: "card-header" }, BombIcons[icon] && index.h("div", { class: "card-icon football" }, BombIcons[icon]), index.h("div", { class: "card-title" }, index.h("h2", null, title), index.h("p", null, subTitle)), index.h("div", { class: "card-jackpot" })), index.h("div", { class: "card-info" }, index.h("span", { class: "card-tag" }, date), index.h("span", { class: "card-tag" }, translate('turnover', this.language) + turnover)), index.h("div", { class: "card-matches" }, index.h("ol", null, matchList.map((item) => (index.h("li", null, item)))))))))));
3099
3175
  }
3100
3176
  render() {
3101
- return (index.h("div", { key: 'ae8252d8cb1374af9bb8189bcd9edac313c7bc6a', ref: (el) => (this.stylingContainer = el), class: "lottery-oddsbom-bomb-wrapper" }, this.renderFilter(), index.h("div", { key: '3f673f335248057370e7e57076cc387a86dc4099', class: "bomb-grid-container" }, this.isLoading ? this.renderLoading() : this.renderMain())));
3177
+ return (index.h("div", { key: '4a2641a511f0837649cfedeb4807069ce4051731', ref: (el) => (this.stylingContainer = el), class: "lottery-oddsbom-bomb-wrapper" }, this.renderFilter(), index.h("div", { key: '15f8dbeace39a87f87e4639b8082719023d6bed5', class: "bomb-grid-container" }, this.isLoading ? this.renderLoading() : this.renderMain())));
3102
3178
  }
3103
3179
  static get assetsDirs() { return ["../static"]; }
3104
3180
  static get watchers() { return {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const lotteryOddsbomBomb = require('./lottery-oddsbom-bomb-1f8981ad.js');
5
+ const lotteryOddsbomBomb = require('./lottery-oddsbom-bomb-3ef3e529.js');
6
6
  require('./index-68db8b3b.js');
7
7
 
8
8
 
@@ -19,7 +19,7 @@ var patchBrowser = () => {
19
19
 
20
20
  patchBrowser().then(async (options) => {
21
21
  await appGlobals.globalScripts();
22
- return index.bootstrapLazy([["lottery-oddsbom-bomb.cjs",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
22
+ return index.bootstrapLazy([["lottery-oddsbom-bomb.cjs",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"gameId":[513,"game-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32],"isGameAvailable":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
23
23
  });
24
24
 
25
25
  exports.setNonce = index.setNonce;
@@ -6,6 +6,7 @@
6
6
  }
7
7
 
8
8
  .bomb-grid-container {
9
+ margin-top: 20px;
9
10
  width: 100%;
10
11
  display: flex;
11
12
  justify-content: center;
@@ -114,7 +115,7 @@
114
115
  }
115
116
  /* --- Component: Filter Controls --- */
116
117
  .OddsbomEntranceController__section {
117
- margin: 1.5rem 0;
118
+ margin-top: 1.5rem;
118
119
  display: flex;
119
120
  gap: 12px;
120
121
  color: var(--emw--color-typography, #000);
@@ -1,8 +1,8 @@
1
1
  import { getAssetPath, h } from "@stencil/core";
2
2
  import { setClientStyling, setClientStylingURL, setStreamStyling } from "../../../../../../../../libs/common/src/styling/index";
3
3
  import { Bomb } from "../../models";
4
- import { fetchData, getTurnoverForAll } from "../../utils/api";
5
- import { DEFAULT_ALL_BOMB } from "../../utils/utils";
4
+ import { fetchGameInfo, fetchData, getTurnoverForAll, fetchTicketMatch } from "../../utils/api";
5
+ import { DEFAULT_ALL_BOMB, formattedTime } from "../../utils/utils";
6
6
  import { translate } from "../../utils/locale.utils";
7
7
  const BombIcons = {
8
8
  [Bomb.Football]: (h("svg", { height: "18px", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", class: "text-sm" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M19.063 19.072l-.81-.97-.117.083.385-2.43.136-.211 2.23-3.464.037-.057h1.075a9.964 9.964 0 01-2.936 7.049zM4.769 5.112l2.8.877-.072 3.246-2.427 2.95-1.561-.153L2.39 9.26a9.977 9.977 0 012.378-4.148zm7.745-3.086l-.72 1.645-3.798 1.404-2.395-.75A9.953 9.953 0 0112 2c.174 0 .343.017.514.026zm7.346 3.812l-1.128 1.29-3.402-.755-.033-.008-2.446-2.241.057.016.862-1.973a9.996 9.996 0 016.09 3.67zm-1.87 8.894l-3.385-.493-1.358-4.067 2.173-2.755 3.144.698 1.347 3.634-1.921 2.983zm-4.64 5.787l4.304-1.486.62.742a9.945 9.945 0 01-5.878 2.205l.954-1.461zm-6.314-2.84l3.91.873-.001.003 1.509 1.507-1.24 1.898a9.946 9.946 0 01-5.908-2.553l1.73-1.728zm1.16-7.72l4.168.725 1.302 3.9-2.552 2.98-3.97-.885-1.412-3.724L8.196 9.96zM2 12c0-.31.019-.615.047-.92l.485 1.203-.454.907A9.934 9.934 0 012 11.999zM12 1C5.934 1 1 5.935 1 12c0 6.067 4.935 11 11 11 6.066 0 11-4.933 11-11 0-6.065-4.934-11-11-11z", fill: "currentColor" })))
@@ -16,11 +16,16 @@ export class LotteryOddsbomBomb {
16
16
  this.language = 'en';
17
17
  this.endpoint = undefined;
18
18
  this.groupId = undefined;
19
+ this.gameId = undefined;
19
20
  this.activeBomb = 'All';
20
21
  this.bombList = [];
21
22
  this.gameList = [];
22
23
  this.liveDrawsInfoByGroupId = {};
23
24
  this.isLoading = false;
25
+ this.isGameAvailable = true;
26
+ }
27
+ get isSingleGameMode() {
28
+ return !!this.gameId;
24
29
  }
25
30
  handleClientStylingChange(newValue, oldValue) {
26
31
  if (newValue != oldValue) {
@@ -56,20 +61,57 @@ export class LotteryOddsbomBomb {
56
61
  async doFetchData(params = {}) {
57
62
  try {
58
63
  this.isLoading = true;
59
- this.liveDrawsInfoByGroupId = await fetchData({
60
- endpoint: this.endpoint,
61
- groupId: this.groupId,
62
- params
63
- });
64
- this.gameList = this.liveDrawsInfoByGroupId.liveDraws;
65
- this.bombList = [DEFAULT_ALL_BOMB, ...this.liveDrawsInfoByGroupId.sportTags];
66
- this.isLoading = false;
67
- this.updateTurnoverForAll();
64
+ if (this.isSingleGameMode) {
65
+ await this.fetchSingleGameData();
66
+ }
67
+ else {
68
+ await this.fetchGroupData(params);
69
+ }
70
+ if (this.gameList.length > 0) {
71
+ this.updateTurnoverForAll();
72
+ }
68
73
  }
69
74
  finally {
70
75
  this.isLoading = false;
71
76
  }
72
77
  }
78
+ async fetchSingleGameData() {
79
+ var _a, _b, _c;
80
+ const { endpoint, gameId } = this;
81
+ const gameInfo = await fetchGameInfo(endpoint, gameId);
82
+ const wagerCloseTime = (_a = gameInfo === null || gameInfo === void 0 ? void 0 : gameInfo.currentDraw) === null || _a === void 0 ? void 0 : _a.wagerCloseTime;
83
+ const drawId = (_b = gameInfo === null || gameInfo === void 0 ? void 0 : gameInfo.currentDraw) === null || _b === void 0 ? void 0 : _b.id;
84
+ if (!wagerCloseTime || new Date() >= new Date(wagerCloseTime)) {
85
+ this.isGameAvailable = false;
86
+ this.gameList = [];
87
+ }
88
+ else {
89
+ this.isGameAvailable = true;
90
+ const matchInfo = await fetchTicketMatch({ endpoint, gameId: gameInfo.type, drawId });
91
+ this.gameList = [
92
+ {
93
+ drawId,
94
+ title: gameInfo.name,
95
+ subTitle: ((_c = matchInfo === null || matchInfo === void 0 ? void 0 : matchInfo[0]) === null || _c === void 0 ? void 0 : _c.sportName) || '',
96
+ icon: Bomb.Football,
97
+ date: formattedTime(gameInfo.currentDraw.date),
98
+ turnover: '0',
99
+ matchList: (matchInfo || []).map((i) => i.eventName).slice(0, 3),
100
+ gameId: gameInfo.type
101
+ }
102
+ ];
103
+ }
104
+ this.bombList = [];
105
+ }
106
+ async fetchGroupData(params) {
107
+ this.liveDrawsInfoByGroupId = await fetchData({
108
+ endpoint: this.endpoint,
109
+ groupId: this.groupId,
110
+ params
111
+ });
112
+ this.gameList = this.liveDrawsInfoByGroupId.liveDraws;
113
+ this.bombList = [DEFAULT_ALL_BOMB, ...this.liveDrawsInfoByGroupId.sportTags];
114
+ }
73
115
  async updateTurnoverForAll() {
74
116
  const turnovers = getTurnoverForAll({
75
117
  endpoint: this.endpoint,
@@ -94,9 +136,12 @@ export class LotteryOddsbomBomb {
94
136
  }
95
137
  renderEmpty() {
96
138
  const infoImagePath = getAssetPath('../static/empty-info.svg');
97
- return (h("div", { class: "empty-draw-wrap" }, h("div", { class: "empty-draw" }, h("img", { src: infoImagePath, class: "empty-draw-logo" }), h("div", { class: "empty-draw-content" }, h("div", { class: "empty-draw-text" }, "\u24D8 Sorry. The game is not available now.")))));
139
+ const message = translate('gameNotAvailable', this.language);
140
+ return (h("div", { class: "empty-draw-wrap" }, h("div", { class: "empty-draw" }, h("img", { src: infoImagePath, class: "empty-draw-logo" }), h("div", { class: "empty-draw-content" }, h("div", { class: "empty-draw-text" }, "\u24D8 ", message)))));
98
141
  }
99
142
  renderFilter() {
143
+ if (this.isSingleGameMode || !this.gameList.length)
144
+ return null;
100
145
  return (h("div", { class: "OddsbomEntranceController__section" }, h("span", { class: "OddsbomEntranceController__label" }, "Select Bomb:"), !!this.bombList.length ? (h("div", { class: "OddsbomEntranceController__segmented-control" }, this.bombList.map(({ name, code }) => (h("button", { class: {
101
146
  OddsbomEntranceController__segment: true,
102
147
  'OddsbomEntranceController__segment--active': this.activeBomb === code
@@ -110,7 +155,7 @@ export class LotteryOddsbomBomb {
110
155
  } }, h("div", { class: "card-header" }, BombIcons[icon] && h("div", { class: "card-icon football" }, BombIcons[icon]), h("div", { class: "card-title" }, h("h2", null, title), h("p", null, subTitle)), h("div", { class: "card-jackpot" })), h("div", { class: "card-info" }, h("span", { class: "card-tag" }, date), h("span", { class: "card-tag" }, translate('turnover', this.language) + turnover)), h("div", { class: "card-matches" }, h("ol", null, matchList.map((item) => (h("li", null, item)))))))))));
111
156
  }
112
157
  render() {
113
- return (h("div", { key: 'ae8252d8cb1374af9bb8189bcd9edac313c7bc6a', ref: (el) => (this.stylingContainer = el), class: "lottery-oddsbom-bomb-wrapper" }, this.renderFilter(), h("div", { key: '3f673f335248057370e7e57076cc387a86dc4099', class: "bomb-grid-container" }, this.isLoading ? this.renderLoading() : this.renderMain())));
158
+ return (h("div", { key: '4a2641a511f0837649cfedeb4807069ce4051731', ref: (el) => (this.stylingContainer = el), class: "lottery-oddsbom-bomb-wrapper" }, this.renderFilter(), h("div", { key: '15f8dbeace39a87f87e4639b8082719023d6bed5', class: "bomb-grid-container" }, this.isLoading ? this.renderLoading() : this.renderMain())));
114
159
  }
115
160
  static get is() { return "lottery-oddsbom-bomb"; }
116
161
  static get encapsulation() { return "shadow"; }
@@ -247,6 +292,23 @@ export class LotteryOddsbomBomb {
247
292
  },
248
293
  "attribute": "group-id",
249
294
  "reflect": true
295
+ },
296
+ "gameId": {
297
+ "type": "string",
298
+ "mutable": false,
299
+ "complexType": {
300
+ "original": "string",
301
+ "resolved": "string",
302
+ "references": {}
303
+ },
304
+ "required": false,
305
+ "optional": false,
306
+ "docs": {
307
+ "tags": [],
308
+ "text": "GameID of the lottery game, for single game mode"
309
+ },
310
+ "attribute": "game-id",
311
+ "reflect": true
250
312
  }
251
313
  };
252
314
  }
@@ -256,7 +318,8 @@ export class LotteryOddsbomBomb {
256
318
  "bombList": {},
257
319
  "gameList": {},
258
320
  "liveDrawsInfoByGroupId": {},
259
- "isLoading": {}
321
+ "isLoading": {},
322
+ "isGameAvailable": {}
260
323
  };
261
324
  }
262
325
  static get events() {
@@ -4,3 +4,14 @@ export var Bomb;
4
4
  Bomb["IceHockey"] = "IceHockey";
5
5
  Bomb["Mixed"] = "Mixed";
6
6
  })(Bomb || (Bomb = {}));
7
+ export var GameTypeEnum;
8
+ (function (GameTypeEnum) {
9
+ GameTypeEnum["Lottery"] = "Lottery";
10
+ GameTypeEnum["PoolGame"] = "PoolGame";
11
+ })(GameTypeEnum || (GameTypeEnum = {}));
12
+ export var BettingOjectEnum;
13
+ (function (BettingOjectEnum) {
14
+ BettingOjectEnum["CorrectScore"] = "CorrectScore";
15
+ BettingOjectEnum["HomeDrawAway"] = "HomeDrawAway";
16
+ BettingOjectEnum["Mix"] = "Mix";
17
+ })(BettingOjectEnum || (BettingOjectEnum = {}));
@@ -60,6 +60,26 @@ export async function getTurnoverForAll({ endpoint, configs }) {
60
60
  const results = await Promise.allSettled(promises);
61
61
  return results.map((r) => (r.status === 'fulfilled' ? r.value : fallback));
62
62
  }
63
+ export async function fetchGameInfo(endpoint, gameId) {
64
+ try {
65
+ const response = await fetchRequest(`${endpoint}/games/${gameId}`, 'GET', {});
66
+ return response;
67
+ }
68
+ catch (error) {
69
+ console.error('Failed to fetch game info:', error);
70
+ throw new Error('The game is currently not available. Please try again later.');
71
+ }
72
+ }
73
+ export async function fetchTicketMatch({ endpoint, gameId, drawId }) {
74
+ try {
75
+ const res = await fetchRequest(`${endpoint}/poolgames/${gameId}/draws/${drawId}/matchConfig`);
76
+ return res || [];
77
+ }
78
+ catch (e) {
79
+ console.error('Failed to fetch ticket match:', e);
80
+ return [];
81
+ }
82
+ }
63
83
  function formattedTurnover(turnover, unit = '€') {
64
84
  if (turnover === null)
65
85
  return '';
package/dist/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { L as LotteryOddsbomBomb } from './lottery-oddsbom-bomb-37ea28d6.js';
1
+ export { L as LotteryOddsbomBomb } from './lottery-oddsbom-bomb-c5cc49c2.js';
2
2
  import './index-f361862f.js';
@@ -5,7 +5,7 @@ import { g as globalScripts } from './app-globals-0f993ce5.js';
5
5
  const defineCustomElements = async (win, options) => {
6
6
  if (typeof window === 'undefined') return undefined;
7
7
  await globalScripts();
8
- return bootstrapLazy([["lottery-oddsbom-bomb",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
8
+ return bootstrapLazy([["lottery-oddsbom-bomb",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"gameId":[513,"game-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32],"isGameAvailable":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
9
9
  };
10
10
 
11
11
  export { defineCustomElements };
@@ -124,6 +124,17 @@ var Bomb;
124
124
  Bomb["IceHockey"] = "IceHockey";
125
125
  Bomb["Mixed"] = "Mixed";
126
126
  })(Bomb || (Bomb = {}));
127
+ var GameTypeEnum;
128
+ (function (GameTypeEnum) {
129
+ GameTypeEnum["Lottery"] = "Lottery";
130
+ GameTypeEnum["PoolGame"] = "PoolGame";
131
+ })(GameTypeEnum || (GameTypeEnum = {}));
132
+ var BettingOjectEnum;
133
+ (function (BettingOjectEnum) {
134
+ BettingOjectEnum["CorrectScore"] = "CorrectScore";
135
+ BettingOjectEnum["HomeDrawAway"] = "HomeDrawAway";
136
+ BettingOjectEnum["Mix"] = "Mix";
137
+ })(BettingOjectEnum || (BettingOjectEnum = {}));
127
138
 
128
139
  function _typeof(o) {
129
140
  "@babel/helpers - typeof";
@@ -2919,6 +2930,26 @@ async function getTurnoverForAll({ endpoint, configs }) {
2919
2930
  const results = await Promise.allSettled(promises);
2920
2931
  return results.map((r) => (r.status === 'fulfilled' ? r.value : fallback));
2921
2932
  }
2933
+ async function fetchGameInfo(endpoint, gameId) {
2934
+ try {
2935
+ const response = await fetchRequest(`${endpoint}/games/${gameId}`, 'GET', {});
2936
+ return response;
2937
+ }
2938
+ catch (error) {
2939
+ console.error('Failed to fetch game info:', error);
2940
+ throw new Error('The game is currently not available. Please try again later.');
2941
+ }
2942
+ }
2943
+ async function fetchTicketMatch({ endpoint, gameId, drawId }) {
2944
+ try {
2945
+ const res = await fetchRequest(`${endpoint}/poolgames/${gameId}/draws/${drawId}/matchConfig`);
2946
+ return res || [];
2947
+ }
2948
+ catch (e) {
2949
+ console.error('Failed to fetch ticket match:', e);
2950
+ return [];
2951
+ }
2952
+ }
2922
2953
  function formattedTurnover(turnover, unit = '€') {
2923
2954
  if (turnover === null)
2924
2955
  return '';
@@ -2985,7 +3016,7 @@ const translate = (key, customLang) => {
2985
3016
  return TRANSLATIONS[lang !== undefined && SUPPORTED_LANGUAGES.includes(lang) ? lang : DEFAULT_LANGUAGE][key];
2986
3017
  };
2987
3018
 
2988
- const lotteryOddsbomBombCss = "/* --- Component: Bomb Card Grid --- */\n.lottery-oddsbom-bomb-wrapper {\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n height: 100%;\n}\n\n.bomb-grid-container {\n width: 100%;\n display: flex;\n justify-content: center;\n container-type: inline-size;\n container-name: bomb-grid;\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n /* --- Component: Bomb Card --- */\n}\n.bomb-grid-container .bomb-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.75rem;\n place-items: center;\n}\n.bomb-grid-container .bomb-card-wrapper {\n width: 100%;\n max-width: 30rem;\n height: 100%;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 1rem;\n border: 1px solid var(--emw--color-gray-100, #e6e6e6);\n}\n.bomb-grid-container .bomb-card {\n height: 100%;\n min-width: 24rem;\n transition: transform 0.3s;\n}\n.bomb-grid-container .bomb-card:hover {\n transform: scale(1.02);\n cursor: pointer;\n}\n.bomb-grid-container .card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n margin-bottom: 0.8rem;\n}\n.bomb-grid-container .card-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.bomb-grid-container .card-icon svg {\n width: 28px;\n height: 28px;\n}\n.bomb-grid-container .card-title {\n flex-grow: 1;\n word-break: break-all;\n}\n.bomb-grid-container .card-title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-title p {\n margin: 0;\n color: var(--emw--color-typography-secondary, #333);\n font-size: 0.9rem;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-info {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 0.8rem;\n flex-wrap: wrap;\n}\n.bomb-grid-container .card-tag {\n background-color: var(--emw--color-tertiary, #e3f2fd);\n padding: 0.3rem 0.75rem;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n max-width: 120px;\n}\n.bomb-grid-container .card-matches {\n max-height: 6.8rem;\n overflow-y: auto;\n}\n.bomb-grid-container .card-matches ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 0.85rem;\n line-height: 1.6;\n}\n.bomb-grid-container .card-matches li {\n padding-left: 0.2rem;\n word-wrap: break-word;\n}\n\n/* --- CONTAINER QUERIES FOR RESPONSIVENESS --- */\n@container bomb-grid (max-width: 768px) {\n .bomb-grid-container .bomb-grid {\n /* On smaller containers, switch to a single column */\n grid-template-columns: 1fr;\n }\n .bomb-card-wrapper .bomb-card {\n min-width: 200px;\n }\n}\n/* --- Component: Filter Controls --- */\n.OddsbomEntranceController__section {\n margin: 1.5rem 0;\n display: flex;\n gap: 12px;\n color: var(--emw--color-typography, #000);\n container-type: inline-size;\n container-name: controller;\n justify-content: center;\n}\n.OddsbomEntranceController__label {\n font-weight: 500;\n white-space: nowrap;\n width: 6rem;\n line-height: 2.2rem;\n}\n.OddsbomEntranceController__segmented-control {\n display: inline-flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.OddsbomEntranceController__segment {\n height: 2.2rem;\n border: none;\n padding: 0.3rem 0.8rem;\n cursor: pointer;\n font-weight: 500;\n border-radius: 2rem;\n outline: none;\n white-space: nowrap;\n background-color: var(--emw--color-background, #ffffff);\n color: var(--emw--color-typography, #000);\n}\n.OddsbomEntranceController__segment--active {\n background-color: var(--emw--color-primary-variant, #1367e7);\n color: var(--emw--color-typography-reverse, #fff);\n font-weight: 600;\n}\n.OddsbomEntranceController__segment--disabled:hover {\n cursor: not-allowed !important;\n}\n.OddsbomEntranceController__segment:not(.OddsbomEntranceController__segment--active):hover {\n background-color: var(--emw--color-background-tertiary, #ccc);\n}\n\n.skeleton-content {\n display: flex;\n flex-direction: column;\n gap: 29px;\n align-items: center;\n}\n\n.skeleton-item {\n background: var(--emw--color-background-secondary, #f5f5f5);\n border-radius: 4px;\n height: 40px;\n width: 200px;\n}\n\n.skeleton-animated {\n animation: skeleton-shimmer 1.5s infinite linear;\n background: linear-gradient(90deg, var(--emw--color-background-secondary, #f5f5f5) 25%, var(--emw--color-background-tertiary, #ccc) 37%, var(--emw--color-background-secondary, #f5f5f5) 63%);\n background-size: 200% 100%;\n}\n\n@keyframes skeleton-shimmer {\n to {\n background-position: 100% 0;\n }\n}\n.loading-icon.scale {\n animation: scale 1s infinite ease-in-out;\n}\n\n@keyframes scale {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.2);\n }\n}\n@container controller (max-width: 500px) {\n .OddsbomEntranceController__segmented-control {\n gap: 0rem;\n }\n .OddsbomEntranceController__segment {\n padding: 0.2rem 0.6rem;\n }\n .OddsbomEntranceController__label,\n .OddsbomEntranceController____segment {\n line-height: 1.8rem;\n }\n}\n.loading-wrap {\n margin: 20px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n}\n.loading-wrap .dots-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n}\n.loading-wrap .dot {\n height: 14px;\n width: 14px;\n margin-right: 14px;\n border-radius: 14px;\n background-color: var(--emw--color-gray-300, #333);\n animation: pulse 1.5s infinite ease-in-out;\n}\n.loading-wrap .dot:last-child {\n margin-right: 0;\n}\n.loading-wrap .dot:nth-child(1) {\n animation-delay: -0.3s;\n}\n.loading-wrap .dot:nth-child(2) {\n animation-delay: -0.1s;\n}\n.loading-wrap .dot:nth-child(3) {\n animation-delay: 0.1s;\n}\n@keyframes pulse {\n 0% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-300, #333);\n }\n 50% {\n transform: scale(1.2);\n background-color: var(--emw--color-gray-100, #e6e6e6);\n }\n 100% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-150, #6f6f6f);\n }\n}\n\n.empty-draw-wrap {\n padding-top: 100px;\n}\n.empty-draw-wrap .empty-draw {\n width: 240px;\n height: 160px;\n padding: 18px 12px 12px 12px;\n background: var(--emw--color-secondary-variant, #e3f2fd);\n position: relative;\n margin: 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n border-radius: 12px;\n}\n.empty-draw-wrap .empty-draw img {\n position: absolute;\n top: -64%;\n left: 50%;\n transform: translateX(-50%);\n width: 200px;\n}\n.empty-draw-wrap .empty-draw-content {\n display: flex;\n gap: 4px;\n}\n.empty-draw-wrap .empty-draw-text {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n}";
3019
+ const lotteryOddsbomBombCss = "/* --- Component: Bomb Card Grid --- */\n.lottery-oddsbom-bomb-wrapper {\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n height: 100%;\n}\n\n.bomb-grid-container {\n margin-top: 20px;\n width: 100%;\n display: flex;\n justify-content: center;\n container-type: inline-size;\n container-name: bomb-grid;\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n /* --- Component: Bomb Card --- */\n}\n.bomb-grid-container .bomb-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.75rem;\n place-items: center;\n}\n.bomb-grid-container .bomb-card-wrapper {\n width: 100%;\n max-width: 30rem;\n height: 100%;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 1rem;\n border: 1px solid var(--emw--color-gray-100, #e6e6e6);\n}\n.bomb-grid-container .bomb-card {\n height: 100%;\n min-width: 24rem;\n transition: transform 0.3s;\n}\n.bomb-grid-container .bomb-card:hover {\n transform: scale(1.02);\n cursor: pointer;\n}\n.bomb-grid-container .card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n margin-bottom: 0.8rem;\n}\n.bomb-grid-container .card-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.bomb-grid-container .card-icon svg {\n width: 28px;\n height: 28px;\n}\n.bomb-grid-container .card-title {\n flex-grow: 1;\n word-break: break-all;\n}\n.bomb-grid-container .card-title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-title p {\n margin: 0;\n color: var(--emw--color-typography-secondary, #333);\n font-size: 0.9rem;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-info {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 0.8rem;\n flex-wrap: wrap;\n}\n.bomb-grid-container .card-tag {\n background-color: var(--emw--color-tertiary, #e3f2fd);\n padding: 0.3rem 0.75rem;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n max-width: 120px;\n}\n.bomb-grid-container .card-matches {\n max-height: 6.8rem;\n overflow-y: auto;\n}\n.bomb-grid-container .card-matches ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 0.85rem;\n line-height: 1.6;\n}\n.bomb-grid-container .card-matches li {\n padding-left: 0.2rem;\n word-wrap: break-word;\n}\n\n/* --- CONTAINER QUERIES FOR RESPONSIVENESS --- */\n@container bomb-grid (max-width: 768px) {\n .bomb-grid-container .bomb-grid {\n /* On smaller containers, switch to a single column */\n grid-template-columns: 1fr;\n }\n .bomb-card-wrapper .bomb-card {\n min-width: 200px;\n }\n}\n/* --- Component: Filter Controls --- */\n.OddsbomEntranceController__section {\n margin-top: 1.5rem;\n display: flex;\n gap: 12px;\n color: var(--emw--color-typography, #000);\n container-type: inline-size;\n container-name: controller;\n justify-content: center;\n}\n.OddsbomEntranceController__label {\n font-weight: 500;\n white-space: nowrap;\n width: 6rem;\n line-height: 2.2rem;\n}\n.OddsbomEntranceController__segmented-control {\n display: inline-flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.OddsbomEntranceController__segment {\n height: 2.2rem;\n border: none;\n padding: 0.3rem 0.8rem;\n cursor: pointer;\n font-weight: 500;\n border-radius: 2rem;\n outline: none;\n white-space: nowrap;\n background-color: var(--emw--color-background, #ffffff);\n color: var(--emw--color-typography, #000);\n}\n.OddsbomEntranceController__segment--active {\n background-color: var(--emw--color-primary-variant, #1367e7);\n color: var(--emw--color-typography-reverse, #fff);\n font-weight: 600;\n}\n.OddsbomEntranceController__segment--disabled:hover {\n cursor: not-allowed !important;\n}\n.OddsbomEntranceController__segment:not(.OddsbomEntranceController__segment--active):hover {\n background-color: var(--emw--color-background-tertiary, #ccc);\n}\n\n.skeleton-content {\n display: flex;\n flex-direction: column;\n gap: 29px;\n align-items: center;\n}\n\n.skeleton-item {\n background: var(--emw--color-background-secondary, #f5f5f5);\n border-radius: 4px;\n height: 40px;\n width: 200px;\n}\n\n.skeleton-animated {\n animation: skeleton-shimmer 1.5s infinite linear;\n background: linear-gradient(90deg, var(--emw--color-background-secondary, #f5f5f5) 25%, var(--emw--color-background-tertiary, #ccc) 37%, var(--emw--color-background-secondary, #f5f5f5) 63%);\n background-size: 200% 100%;\n}\n\n@keyframes skeleton-shimmer {\n to {\n background-position: 100% 0;\n }\n}\n.loading-icon.scale {\n animation: scale 1s infinite ease-in-out;\n}\n\n@keyframes scale {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.2);\n }\n}\n@container controller (max-width: 500px) {\n .OddsbomEntranceController__segmented-control {\n gap: 0rem;\n }\n .OddsbomEntranceController__segment {\n padding: 0.2rem 0.6rem;\n }\n .OddsbomEntranceController__label,\n .OddsbomEntranceController____segment {\n line-height: 1.8rem;\n }\n}\n.loading-wrap {\n margin: 20px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n}\n.loading-wrap .dots-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n}\n.loading-wrap .dot {\n height: 14px;\n width: 14px;\n margin-right: 14px;\n border-radius: 14px;\n background-color: var(--emw--color-gray-300, #333);\n animation: pulse 1.5s infinite ease-in-out;\n}\n.loading-wrap .dot:last-child {\n margin-right: 0;\n}\n.loading-wrap .dot:nth-child(1) {\n animation-delay: -0.3s;\n}\n.loading-wrap .dot:nth-child(2) {\n animation-delay: -0.1s;\n}\n.loading-wrap .dot:nth-child(3) {\n animation-delay: 0.1s;\n}\n@keyframes pulse {\n 0% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-300, #333);\n }\n 50% {\n transform: scale(1.2);\n background-color: var(--emw--color-gray-100, #e6e6e6);\n }\n 100% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-150, #6f6f6f);\n }\n}\n\n.empty-draw-wrap {\n padding-top: 100px;\n}\n.empty-draw-wrap .empty-draw {\n width: 240px;\n height: 160px;\n padding: 18px 12px 12px 12px;\n background: var(--emw--color-secondary-variant, #e3f2fd);\n position: relative;\n margin: 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n border-radius: 12px;\n}\n.empty-draw-wrap .empty-draw img {\n position: absolute;\n top: -64%;\n left: 50%;\n transform: translateX(-50%);\n width: 200px;\n}\n.empty-draw-wrap .empty-draw-content {\n display: flex;\n gap: 4px;\n}\n.empty-draw-wrap .empty-draw-text {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n}";
2989
3020
  const LotteryOddsbomBombStyle0 = lotteryOddsbomBombCss;
2990
3021
 
2991
3022
  const BombIcons = {
@@ -3002,11 +3033,16 @@ const LotteryOddsbomBomb = class {
3002
3033
  this.language = 'en';
3003
3034
  this.endpoint = undefined;
3004
3035
  this.groupId = undefined;
3036
+ this.gameId = undefined;
3005
3037
  this.activeBomb = 'All';
3006
3038
  this.bombList = [];
3007
3039
  this.gameList = [];
3008
3040
  this.liveDrawsInfoByGroupId = {};
3009
3041
  this.isLoading = false;
3042
+ this.isGameAvailable = true;
3043
+ }
3044
+ get isSingleGameMode() {
3045
+ return !!this.gameId;
3010
3046
  }
3011
3047
  handleClientStylingChange(newValue, oldValue) {
3012
3048
  if (newValue != oldValue) {
@@ -3042,20 +3078,57 @@ const LotteryOddsbomBomb = class {
3042
3078
  async doFetchData(params = {}) {
3043
3079
  try {
3044
3080
  this.isLoading = true;
3045
- this.liveDrawsInfoByGroupId = await fetchData({
3046
- endpoint: this.endpoint,
3047
- groupId: this.groupId,
3048
- params
3049
- });
3050
- this.gameList = this.liveDrawsInfoByGroupId.liveDraws;
3051
- this.bombList = [DEFAULT_ALL_BOMB, ...this.liveDrawsInfoByGroupId.sportTags];
3052
- this.isLoading = false;
3053
- this.updateTurnoverForAll();
3081
+ if (this.isSingleGameMode) {
3082
+ await this.fetchSingleGameData();
3083
+ }
3084
+ else {
3085
+ await this.fetchGroupData(params);
3086
+ }
3087
+ if (this.gameList.length > 0) {
3088
+ this.updateTurnoverForAll();
3089
+ }
3054
3090
  }
3055
3091
  finally {
3056
3092
  this.isLoading = false;
3057
3093
  }
3058
3094
  }
3095
+ async fetchSingleGameData() {
3096
+ var _a, _b, _c;
3097
+ const { endpoint, gameId } = this;
3098
+ const gameInfo = await fetchGameInfo(endpoint, gameId);
3099
+ const wagerCloseTime = (_a = gameInfo === null || gameInfo === void 0 ? void 0 : gameInfo.currentDraw) === null || _a === void 0 ? void 0 : _a.wagerCloseTime;
3100
+ const drawId = (_b = gameInfo === null || gameInfo === void 0 ? void 0 : gameInfo.currentDraw) === null || _b === void 0 ? void 0 : _b.id;
3101
+ if (!wagerCloseTime || new Date() >= new Date(wagerCloseTime)) {
3102
+ this.isGameAvailable = false;
3103
+ this.gameList = [];
3104
+ }
3105
+ else {
3106
+ this.isGameAvailable = true;
3107
+ const matchInfo = await fetchTicketMatch({ endpoint, gameId: gameInfo.type, drawId });
3108
+ this.gameList = [
3109
+ {
3110
+ drawId,
3111
+ title: gameInfo.name,
3112
+ subTitle: ((_c = matchInfo === null || matchInfo === void 0 ? void 0 : matchInfo[0]) === null || _c === void 0 ? void 0 : _c.sportName) || '',
3113
+ icon: Bomb.Football,
3114
+ date: formattedTime(gameInfo.currentDraw.date),
3115
+ turnover: '0',
3116
+ matchList: (matchInfo || []).map((i) => i.eventName).slice(0, 3),
3117
+ gameId: gameInfo.type
3118
+ }
3119
+ ];
3120
+ }
3121
+ this.bombList = [];
3122
+ }
3123
+ async fetchGroupData(params) {
3124
+ this.liveDrawsInfoByGroupId = await fetchData({
3125
+ endpoint: this.endpoint,
3126
+ groupId: this.groupId,
3127
+ params
3128
+ });
3129
+ this.gameList = this.liveDrawsInfoByGroupId.liveDraws;
3130
+ this.bombList = [DEFAULT_ALL_BOMB, ...this.liveDrawsInfoByGroupId.sportTags];
3131
+ }
3059
3132
  async updateTurnoverForAll() {
3060
3133
  const turnovers = getTurnoverForAll({
3061
3134
  endpoint: this.endpoint,
@@ -3080,9 +3153,12 @@ const LotteryOddsbomBomb = class {
3080
3153
  }
3081
3154
  renderEmpty() {
3082
3155
  const infoImagePath = getAssetPath('../static/empty-info.svg');
3083
- return (h("div", { class: "empty-draw-wrap" }, h("div", { class: "empty-draw" }, h("img", { src: infoImagePath, class: "empty-draw-logo" }), h("div", { class: "empty-draw-content" }, h("div", { class: "empty-draw-text" }, "\u24D8 Sorry. The game is not available now.")))));
3156
+ const message = translate('gameNotAvailable', this.language);
3157
+ return (h("div", { class: "empty-draw-wrap" }, h("div", { class: "empty-draw" }, h("img", { src: infoImagePath, class: "empty-draw-logo" }), h("div", { class: "empty-draw-content" }, h("div", { class: "empty-draw-text" }, "\u24D8 ", message)))));
3084
3158
  }
3085
3159
  renderFilter() {
3160
+ if (this.isSingleGameMode || !this.gameList.length)
3161
+ return null;
3086
3162
  return (h("div", { class: "OddsbomEntranceController__section" }, h("span", { class: "OddsbomEntranceController__label" }, "Select Bomb:"), !!this.bombList.length ? (h("div", { class: "OddsbomEntranceController__segmented-control" }, this.bombList.map(({ name, code }) => (h("button", { class: {
3087
3163
  OddsbomEntranceController__segment: true,
3088
3164
  'OddsbomEntranceController__segment--active': this.activeBomb === code
@@ -3096,7 +3172,7 @@ const LotteryOddsbomBomb = class {
3096
3172
  } }, h("div", { class: "card-header" }, BombIcons[icon] && h("div", { class: "card-icon football" }, BombIcons[icon]), h("div", { class: "card-title" }, h("h2", null, title), h("p", null, subTitle)), h("div", { class: "card-jackpot" })), h("div", { class: "card-info" }, h("span", { class: "card-tag" }, date), h("span", { class: "card-tag" }, translate('turnover', this.language) + turnover)), h("div", { class: "card-matches" }, h("ol", null, matchList.map((item) => (h("li", null, item)))))))))));
3097
3173
  }
3098
3174
  render() {
3099
- return (h("div", { key: 'ae8252d8cb1374af9bb8189bcd9edac313c7bc6a', ref: (el) => (this.stylingContainer = el), class: "lottery-oddsbom-bomb-wrapper" }, this.renderFilter(), h("div", { key: '3f673f335248057370e7e57076cc387a86dc4099', class: "bomb-grid-container" }, this.isLoading ? this.renderLoading() : this.renderMain())));
3175
+ return (h("div", { key: '4a2641a511f0837649cfedeb4807069ce4051731', ref: (el) => (this.stylingContainer = el), class: "lottery-oddsbom-bomb-wrapper" }, this.renderFilter(), h("div", { key: '15f8dbeace39a87f87e4639b8082719023d6bed5', class: "bomb-grid-container" }, this.isLoading ? this.renderLoading() : this.renderMain())));
3100
3176
  }
3101
3177
  static get assetsDirs() { return ["../static"]; }
3102
3178
  static get watchers() { return {
@@ -1,2 +1,2 @@
1
- export { L as lottery_oddsbom_bomb } from './lottery-oddsbom-bomb-37ea28d6.js';
1
+ export { L as lottery_oddsbom_bomb } from './lottery-oddsbom-bomb-c5cc49c2.js';
2
2
  import './index-f361862f.js';
@@ -16,5 +16,5 @@ var patchBrowser = () => {
16
16
 
17
17
  patchBrowser().then(async (options) => {
18
18
  await globalScripts();
19
- return bootstrapLazy([["lottery-oddsbom-bomb",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
19
+ return bootstrapLazy([["lottery-oddsbom-bomb",[[1,"lottery-oddsbom-bomb",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"groupId":[513,"group-id"],"gameId":[513,"game-id"],"activeBomb":[32],"bombList":[32],"gameList":[32],"liveDrawsInfoByGroupId":[32],"isLoading":[32],"isGameAvailable":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
20
20
  });
@@ -1 +1 @@
1
- export{L as LotteryOddsbomBomb}from"./lottery-oddsbom-bomb-37ea28d6.js";import"./index-f361862f.js";
1
+ export{L as LotteryOddsbomBomb}from"./lottery-oddsbom-bomb-c5cc49c2.js";import"./index-f361862f.js";
@@ -0,0 +1 @@
1
+ import{h as n,r as t,c as e,g as r}from"./index-f361862f.js";const a="__WIDGET_GLOBAL_STYLE_CACHE__";function i(n,t){if(n){const e=document.createElement("style");e.innerHTML=t,n.appendChild(e)}}function o(n,t){if(!n||!t)return;const e=new URL(t);fetch(e.href).then((n=>n.text())).then((t=>{const e=document.createElement("style");e.innerHTML=t,n&&n.appendChild(e)})).catch((n=>{console.error("There was an error while trying to load client styling from URL",n)}))}function s(n,t,e,r=!1){if(!window.emMessageBus)return;if(!("adoptedStyleSheets"in Document.prototype)||!r)return e=function(n,t){const e=document.createElement("style");return window.emMessageBus.subscribe(t,(t=>{n&&(e.innerHTML=t,n.appendChild(e))}))}(n,t),e;window[a]||(window[a]={}),e=function(n,t){return window.emMessageBus.subscribe(t,(e=>{if(!n)return;const r=n.getRootNode(),i=window[a];let o=i[t]&&i[t].sheet;o?i[t].refCount=i[t].refCount+1:(o=new CSSStyleSheet,o.replaceSync(e),i[t]={sheet:o,refCount:1});const s=r.adoptedStyleSheets||[];s.includes(o)||(r.adoptedStyleSheets=[...s,o])}))}(n,t);const i=e.unsubscribe.bind(e);return e.unsubscribe=()=>{if(window[a][t]){const n=window[a][t];n.refCount>1?n.refCount=n.refCount-1:delete window[a][t]}i()},e}var d,u,c;function l(n){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},l(n)}function m(n){if(null===n||!0===n||!1===n)return NaN;var t=Number(n);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function h(n,t){if(t.length<n)throw new TypeError(n+" argument"+(n>1?"s":"")+" required, but only "+t.length+" present")}function f(n){h(1,arguments);var t=Object.prototype.toString.call(n);return n instanceof Date||"object"===l(n)&&"[object Date]"===t?new Date(n.getTime()):"number"==typeof n||"[object Number]"===t?new Date(n):("string"!=typeof n&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}!function(n){n.Football="Football",n.IceHockey="IceHockey",n.Mixed="Mixed"}(d||(d={})),function(n){n.Lottery="Lottery",n.PoolGame="PoolGame"}(u||(u={})),function(n){n.CorrectScore="CorrectScore",n.HomeDrawAway="HomeDrawAway",n.Mix="Mix"}(c||(c={}));var g={};function w(){return g}function v(n){h(1,arguments);var t=f(n);return t.setHours(0,0,0,0),t}var b=6e4,p=36e5;function y(n,t){h(2,arguments);var e=v(n),r=v(t);return e.getTime()===r.getTime()}function x(n){h(1,arguments);var t=f(n),e=t.getUTCDay(),r=(e<1?7:0)+e-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function S(n){h(1,arguments);var t=f(n),e=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(e+1,0,4),r.setUTCHours(0,0,0,0);var a=x(r),i=new Date(0);i.setUTCFullYear(e,0,4),i.setUTCHours(0,0,0,0);var o=x(i);return t.getTime()>=a.getTime()?e+1:t.getTime()>=o.getTime()?e:e-1}function E(n,t){var e,r,a,i,o,s,d,u;h(1,arguments);var c=w(),l=m(null!==(e=null!==(r=null!==(a=null!==(i=null==t?void 0:t.weekStartsOn)&&void 0!==i?i:null==t||null===(o=t.locale)||void 0===o||null===(s=o.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==a?a:c.weekStartsOn)&&void 0!==r?r:null===(d=c.locale)||void 0===d||null===(u=d.options)||void 0===u?void 0:u.weekStartsOn)&&void 0!==e?e:0);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var g=f(n),v=g.getUTCDay(),b=(v<l?7:0)+v-l;return g.setUTCDate(g.getUTCDate()-b),g.setUTCHours(0,0,0,0),g}function D(n,t){var e,r,a,i,o,s,d,u;h(1,arguments);var c=f(n),l=c.getUTCFullYear(),g=w(),v=m(null!==(e=null!==(r=null!==(a=null!==(i=null==t?void 0:t.firstWeekContainsDate)&&void 0!==i?i:null==t||null===(o=t.locale)||void 0===o||null===(s=o.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==a?a:g.firstWeekContainsDate)&&void 0!==r?r:null===(d=g.locale)||void 0===d||null===(u=d.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==e?e:1);if(!(v>=1&&v<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var b=new Date(0);b.setUTCFullYear(l+1,0,v),b.setUTCHours(0,0,0,0);var p=E(b,t),y=new Date(0);y.setUTCFullYear(l,0,v),y.setUTCHours(0,0,0,0);var x=E(y,t);return c.getTime()>=p.getTime()?l+1:c.getTime()>=x.getTime()?l:l-1}function M(n,t){for(var e=n<0?"-":"",r=Math.abs(n).toString();r.length<t;)r="0"+r;return e+r}const k=function(n,t){var e=n.getUTCFullYear(),r=e>0?e:1-e;return M("yy"===t?r%100:r,t.length)},N=function(n,t){var e=n.getUTCMonth();return"M"===t?String(e+1):M(e+1,2)},T=function(n,t){return M(n.getUTCDate(),t.length)},C=function(n,t){return M(n.getUTCHours()%12||12,t.length)},I=function(n,t){return M(n.getUTCHours(),t.length)},O=function(n,t){return M(n.getUTCMinutes(),t.length)},R=function(n,t){return M(n.getUTCSeconds(),t.length)},j=function(n,t){var e=t.length,r=n.getUTCMilliseconds();return M(Math.floor(r*Math.pow(10,e-3)),t.length)};var P={G:function(n,t,e){var r=n.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(r,{width:"abbreviated"});case"GGGGG":return e.era(r,{width:"narrow"});default:return e.era(r,{width:"wide"})}},y:function(n,t,e){if("yo"===t){var r=n.getUTCFullYear();return e.ordinalNumber(r>0?r:1-r,{unit:"year"})}return k(n,t)},Y:function(n,t,e,r){var a=D(n,r),i=a>0?a:1-a;return"YY"===t?M(i%100,2):"Yo"===t?e.ordinalNumber(i,{unit:"year"}):M(i,t.length)},R:function(n,t){return M(S(n),t.length)},u:function(n,t){return M(n.getUTCFullYear(),t.length)},Q:function(n,t,e){var r=Math.ceil((n.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return M(r,2);case"Qo":return e.ordinalNumber(r,{unit:"quarter"});case"QQQ":return e.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(r,{width:"narrow",context:"formatting"});default:return e.quarter(r,{width:"wide",context:"formatting"})}},q:function(n,t,e){var r=Math.ceil((n.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return M(r,2);case"qo":return e.ordinalNumber(r,{unit:"quarter"});case"qqq":return e.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(r,{width:"narrow",context:"standalone"});default:return e.quarter(r,{width:"wide",context:"standalone"})}},M:function(n,t,e){var r=n.getUTCMonth();switch(t){case"M":case"MM":return N(n,t);case"Mo":return e.ordinalNumber(r+1,{unit:"month"});case"MMM":return e.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(r,{width:"narrow",context:"formatting"});default:return e.month(r,{width:"wide",context:"formatting"})}},L:function(n,t,e){var r=n.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return M(r+1,2);case"Lo":return e.ordinalNumber(r+1,{unit:"month"});case"LLL":return e.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(r,{width:"narrow",context:"standalone"});default:return e.month(r,{width:"wide",context:"standalone"})}},w:function(n,t,e,r){var a=function(n,t){h(1,arguments);var e=f(n),r=E(e,t).getTime()-function(n,t){var e,r,a,i,o,s,d,u;h(1,arguments);var c=w(),l=m(null!==(e=null!==(r=null!==(a=null!==(i=null==t?void 0:t.firstWeekContainsDate)&&void 0!==i?i:null==t||null===(o=t.locale)||void 0===o||null===(s=o.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==a?a:c.firstWeekContainsDate)&&void 0!==r?r:null===(d=c.locale)||void 0===d||null===(u=d.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==e?e:1),f=D(n,t),g=new Date(0);return g.setUTCFullYear(f,0,l),g.setUTCHours(0,0,0,0),E(g,t)}(e,t).getTime();return Math.round(r/6048e5)+1}(n,r);return"wo"===t?e.ordinalNumber(a,{unit:"week"}):M(a,t.length)},I:function(n,t,e){var r=function(n){h(1,arguments);var t=f(n),e=x(t).getTime()-function(n){h(1,arguments);var t=S(n),e=new Date(0);return e.setUTCFullYear(t,0,4),e.setUTCHours(0,0,0,0),x(e)}(t).getTime();return Math.round(e/6048e5)+1}(n);return"Io"===t?e.ordinalNumber(r,{unit:"week"}):M(r,t.length)},d:function(n,t,e){return"do"===t?e.ordinalNumber(n.getUTCDate(),{unit:"date"}):T(n,t)},D:function(n,t,e){var r=function(n){h(1,arguments);var t=f(n),e=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=t.getTime();return Math.floor((e-r)/864e5)+1}(n);return"Do"===t?e.ordinalNumber(r,{unit:"dayOfYear"}):M(r,t.length)},E:function(n,t,e){var r=n.getUTCDay();switch(t){case"E":case"EE":case"EEE":return e.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(r,{width:"short",context:"formatting"});default:return e.day(r,{width:"wide",context:"formatting"})}},e:function(n,t,e,r){var a=n.getUTCDay(),i=(a-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return M(i,2);case"eo":return e.ordinalNumber(i,{unit:"day"});case"eee":return e.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(a,{width:"short",context:"formatting"});default:return e.day(a,{width:"wide",context:"formatting"})}},c:function(n,t,e,r){var a=n.getUTCDay(),i=(a-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return M(i,t.length);case"co":return e.ordinalNumber(i,{unit:"day"});case"ccc":return e.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(a,{width:"narrow",context:"standalone"});case"cccccc":return e.day(a,{width:"short",context:"standalone"});default:return e.day(a,{width:"wide",context:"standalone"})}},i:function(n,t,e){var r=n.getUTCDay(),a=0===r?7:r;switch(t){case"i":return String(a);case"ii":return M(a,t.length);case"io":return e.ordinalNumber(a,{unit:"day"});case"iii":return e.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(r,{width:"short",context:"formatting"});default:return e.day(r,{width:"wide",context:"formatting"})}},a:function(n,t,e){var r=n.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(n,t,e){var r,a=n.getUTCHours();switch(r=12===a?"noon":0===a?"midnight":a/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){var r,a=n.getUTCHours();switch(r=a>=17?"evening":a>=12?"afternoon":a>=4?"morning":"night",t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if("ho"===t){var r=n.getUTCHours()%12;return 0===r&&(r=12),e.ordinalNumber(r,{unit:"hour"})}return C(n,t)},H:function(n,t,e){return"Ho"===t?e.ordinalNumber(n.getUTCHours(),{unit:"hour"}):I(n,t)},K:function(n,t,e){var r=n.getUTCHours()%12;return"Ko"===t?e.ordinalNumber(r,{unit:"hour"}):M(r,t.length)},k:function(n,t,e){var r=n.getUTCHours();return 0===r&&(r=24),"ko"===t?e.ordinalNumber(r,{unit:"hour"}):M(r,t.length)},m:function(n,t,e){return"mo"===t?e.ordinalNumber(n.getUTCMinutes(),{unit:"minute"}):O(n,t)},s:function(n,t,e){return"so"===t?e.ordinalNumber(n.getUTCSeconds(),{unit:"second"}):R(n,t)},S:function(n,t){return j(n,t)},X:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return _(a);case"XXXX":case"XX":return W(a);default:return W(a,":")}},x:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();switch(t){case"x":return _(a);case"xxxx":case"xx":return W(a);default:return W(a,":")}},O:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+A(a,":");default:return"GMT"+W(a,":")}},z:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+A(a,":");default:return"GMT"+W(a,":")}},t:function(n,t,e,r){return M(Math.floor((r._originalDate||n).getTime()/1e3),t.length)},T:function(n,t,e,r){return M((r._originalDate||n).getTime(),t.length)}};function A(n,t){var e=n>0?"-":"+",r=Math.abs(n),a=Math.floor(r/60),i=r%60;if(0===i)return e+String(a);var o=t||"";return e+String(a)+o+M(i,2)}function _(n,t){return n%60==0?(n>0?"-":"+")+M(Math.abs(n)/60,2):W(n,t)}function W(n,t){var e=t||"",r=n>0?"-":"+",a=Math.abs(n);return r+M(Math.floor(a/60),2)+e+M(a%60,2)}const L=P;var z=function(n,t){switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},G=function(n,t){switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},$={p:G,P:function(n,t){var e,r=n.match(/(P+)(p+)?/)||[],a=r[1],i=r[2];if(!i)return z(n,t);switch(a){case"P":e=t.dateTime({width:"short"});break;case"PP":e=t.dateTime({width:"medium"});break;case"PPP":e=t.dateTime({width:"long"});break;default:e=t.dateTime({width:"full"})}return e.replace("{{date}}",z(a,t)).replace("{{time}}",G(i,t))}};const Y=$;var U=["D","DD"],q=["YY","YYYY"];function B(n,t,e){if("YYYY"===n)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===n)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===n)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===n)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var F={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Q(n){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}var X,J={date:Q({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Q({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Q({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},H={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function Z(n){return function(t,e){var r;if("formatting"===(null!=e&&e.context?String(e.context):"standalone")&&n.formattingValues){var a=n.defaultFormattingWidth||n.defaultWidth,i=null!=e&&e.width?String(e.width):a;r=n.formattingValues[i]||n.formattingValues[a]}else{var o=n.defaultWidth,s=null!=e&&e.width?String(e.width):n.defaultWidth;r=n.values[s]||n.values[o]}return r[n.argumentCallback?n.argumentCallback(t):t]}}function K(n){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.width,a=t.match(r&&n.matchPatterns[r]||n.matchPatterns[n.defaultMatchWidth]);if(!a)return null;var i,o=a[0],s=r&&n.parsePatterns[r]||n.parsePatterns[n.defaultParseWidth],d=Array.isArray(s)?function(n){for(var t=0;t<n.length;t++)if(n[t].test(o))return t}(s):function(n){for(var t in n)if(n.hasOwnProperty(t)&&n[t].test(o))return t}(s);return i=n.valueCallback?n.valueCallback(d):d,{value:i=e.valueCallback?e.valueCallback(i):i,rest:t.slice(o.length)}}}const V={code:"en-US",formatDistance:function(n,t,e){var r,a=F[n];return r="string"==typeof a?a:1===t?a.one:a.other.replace("{{count}}",t.toString()),null!=e&&e.addSuffix?e.comparison&&e.comparison>0?"in "+r:r+" ago":r},formatLong:J,formatRelative:function(n){return H[n]},localize:{ordinalNumber:function(n){var t=Number(n),e=t%100;if(e>20||e<10)switch(e%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},era:Z({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:Z({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(n){return n-1}}),month:Z({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:Z({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:Z({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(X={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(n){return parseInt(n,10)}},function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.match(X.matchPattern);if(!e)return null;var r=e[0],a=n.match(X.parsePattern);if(!a)return null;var i=X.valueCallback?X.valueCallback(a[0]):a[0];return{value:i=t.valueCallback?t.valueCallback(i):i,rest:n.slice(r.length)}}),era:K({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:K({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(n){return n+1}}),month:K({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:K({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:K({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};var nn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,tn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,en=/^'([^]*?)'?$/,rn=/''/g,an=/[a-zA-Z]/;function on(n,t,e){var r,a,i,o,s,d,u,c,g,v,b,p,y,x,S,E,D,M;h(2,arguments);var k=String(t),N=w(),T=null!==(r=null!==(a=null==e?void 0:e.locale)&&void 0!==a?a:N.locale)&&void 0!==r?r:V,C=m(null!==(i=null!==(o=null!==(s=null!==(d=null==e?void 0:e.firstWeekContainsDate)&&void 0!==d?d:null==e||null===(u=e.locale)||void 0===u||null===(c=u.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==s?s:N.firstWeekContainsDate)&&void 0!==o?o:null===(g=N.locale)||void 0===g||null===(v=g.options)||void 0===v?void 0:v.firstWeekContainsDate)&&void 0!==i?i:1);if(!(C>=1&&C<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var I=m(null!==(b=null!==(p=null!==(y=null!==(x=null==e?void 0:e.weekStartsOn)&&void 0!==x?x:null==e||null===(S=e.locale)||void 0===S||null===(E=S.options)||void 0===E?void 0:E.weekStartsOn)&&void 0!==y?y:N.weekStartsOn)&&void 0!==p?p:null===(D=N.locale)||void 0===D||null===(M=D.options)||void 0===M?void 0:M.weekStartsOn)&&void 0!==b?b:0);if(!(I>=0&&I<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!T.localize)throw new RangeError("locale must contain localize property");if(!T.formatLong)throw new RangeError("locale must contain formatLong property");var O=f(n);if(!function(n){if(h(1,arguments),!function(n){return h(1,arguments),n instanceof Date||"object"===l(n)&&"[object Date]"===Object.prototype.toString.call(n)}(n)&&"number"!=typeof n)return!1;var t=f(n);return!isNaN(Number(t))}(O))throw new RangeError("Invalid time value");var R=function(n){var t=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return t.setUTCFullYear(n.getFullYear()),n.getTime()-t.getTime()}(O),j=function(n,t){return h(2,arguments),function(n,t){h(2,arguments);var e=f(n).getTime(),r=m(t);return new Date(e+r)}(n,-m(t))}(O,R),P={firstWeekContainsDate:C,weekStartsOn:I,locale:T,_originalDate:O};return k.match(tn).map((function(n){var t=n[0];return"p"===t||"P"===t?(0,Y[t])(n,T.formatLong):n})).join("").match(nn).map((function(r){if("''"===r)return"'";var a,i,o=r[0];if("'"===o)return(i=(a=r).match(en))?i[1].replace(rn,"'"):a;var s=L[o];if(s)return null!=e&&e.useAdditionalWeekYearTokens||-1===q.indexOf(r)||B(r,t,String(n)),null!=e&&e.useAdditionalDayOfYearTokens||!(-1!==U.indexOf(r))||B(r,t,String(n)),s(j,r,T.localize,P);if(o.match(an))throw new RangeError("Format string contains an unescaped latin alphabet character `"+o+"`");return r})).join("")}var sn={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},dn=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,un=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,cn=/^([+-])(\d{2})(?::?(\d{2}))?$/;function ln(n){return n?parseInt(n):1}function mn(n){return n&&parseFloat(n.replace(",","."))||0}var hn=[31,null,31,30,31,30,31,31,30,31,30,31];function fn(n){return n%400==0||n%4==0&&n%100!=0}function gn(n,t="GET",e=null,r={}){return new Promise(((a,i)=>{const o=Object.assign({"Content-Type":"application/json"},r),s={method:t,headers:o,body:null};e&&"GET"!==t&&"HEAD"!==t?s.body=JSON.stringify(e):delete s.body,fetch(n,s).then((n=>n.ok?n.json():n.json().then((t=>{i({status:n.status,statusText:n.statusText,code:t.code||"UNKNOWN_ERROR",message:t.message||"An unknown error occurred",data:t.data||null})}),(()=>i({status:n.status,statusText:n.statusText,code:"PARSE_ERROR",message:"Failed to parse error response"}))))).then((n=>a(n)),(n=>i(n)))}))}function wn(n){if(!n)return"";const t=function(n,t){var e;h(1,arguments);var r=m(null!==(e=null==t?void 0:t.additionalDigits)&&void 0!==e?e:2);if(2!==r&&1!==r&&0!==r)throw new RangeError("additionalDigits must be 0, 1 or 2");if("string"!=typeof n&&"[object String]"!==Object.prototype.toString.call(n))return new Date(NaN);var a,i=function(n){var t,e={},r=n.split(sn.dateTimeDelimiter);if(r.length>2)return e;if(/:/.test(r[0])?t=r[0]:(e.date=r[0],t=r[1],sn.timeZoneDelimiter.test(e.date)&&(e.date=n.split(sn.timeZoneDelimiter)[0],t=n.substr(e.date.length,n.length))),t){var a=sn.timezone.exec(t);a?(e.time=t.replace(a[1],""),e.timezone=a[1]):e.time=t}return e}(n);if(i.date){var o=function(n,t){var e=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),r=n.match(e);if(!r)return{year:NaN,restDateString:""};var a=r[1]?parseInt(r[1]):null,i=r[2]?parseInt(r[2]):null;return{year:null===i?a:100*i,restDateString:n.slice((r[1]||r[2]).length)}}(i.date,r);a=function(n,t){if(null===t)return new Date(NaN);var e=n.match(dn);if(!e)return new Date(NaN);var r=!!e[4],a=ln(e[1]),i=ln(e[2])-1,o=ln(e[3]),s=ln(e[4]),d=ln(e[5])-1;if(r)return function(n,t,e){return t>=1&&t<=53&&e>=0&&e<=6}(0,s,d)?function(n,t,e){var r=new Date(0);r.setUTCFullYear(n,0,4);var a=7*(t-1)+e+1-(r.getUTCDay()||7);return r.setUTCDate(r.getUTCDate()+a),r}(t,s,d):new Date(NaN);var u=new Date(0);return function(n,t,e){return t>=0&&t<=11&&e>=1&&e<=(hn[t]||(fn(n)?29:28))}(t,i,o)&&function(n,t){return t>=1&&t<=(fn(n)?366:365)}(t,a)?(u.setUTCFullYear(t,i,Math.max(a,o)),u):new Date(NaN)}(o.restDateString,o.year)}if(!a||isNaN(a.getTime()))return new Date(NaN);var s,d=a.getTime(),u=0;if(i.time&&(u=function(n){var t=n.match(un);if(!t)return NaN;var e=mn(t[1]),r=mn(t[2]),a=mn(t[3]);return function(n,t,e){return 24===n?0===t&&0===e:e>=0&&e<60&&t>=0&&t<60&&n>=0&&n<25}(e,r,a)?e*p+r*b+1e3*a:NaN}(i.time),isNaN(u)))return new Date(NaN);if(!i.timezone){var c=new Date(d+u),l=new Date(0);return l.setFullYear(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()),l.setHours(c.getUTCHours(),c.getUTCMinutes(),c.getUTCSeconds(),c.getUTCMilliseconds()),l}return s=function(n){if("Z"===n)return 0;var t=n.match(cn);if(!t)return 0;var e="+"===t[1]?-1:1,r=parseInt(t[2]),a=t[3]&&parseInt(t[3])||0;return function(n,t){return t>=0&&t<=59}(0,a)?e*(r*p+a*b):NaN}(i.timezone),isNaN(s)?new Date(NaN):new Date(d+u+s)}(n);if(isNaN(t.getTime()))return"";const e=on(t,"HH:mm");return function(n){return h(1,arguments),y(n,Date.now())}(t)?`Today at ${e}`:function(n){return h(1,arguments),y(n,function(n,t){h(2,arguments);var e=f(n),r=m(t);return isNaN(r)?new Date(NaN):r?(e.setDate(e.getDate()+r),e):e}(Date.now(),1))}(t)?`Tomorrow at ${e}`:`${on(t,"EEEE")} at ${e}`}function vn(n,t){return null==n||""===n||(0!==n||!t)&&(Array.isArray(n)?function(n){if(0===n.length)return!0;const t=n.length;let e=0;for(let r=0;r<t;r++){if(!vn(n[r]))return!1;e++}return e===t}(n):"[object Object]"===Object.prototype.toString.call(n)?function(n){if(0===Object.keys(n).length)return!0;const t=Object.keys(n).length;let e=0;for(const t of Object.values(n)){if(!vn(t))return!1;e++}return e===t}(n):!n)}const bn={name:"All",code:"All"};async function pn({endpoint:n,groupId:t,params:e={}}){try{const r=await gn(`${n}/groups/${t}/liveDraws${function(n){const t={};Object.entries(n).forEach((([n,e])=>{vn(e,!0)||(t[n]=e)}));const e=Object.entries(t).map((([n,t])=>`${encodeURIComponent(n)}=${encodeURIComponent(t)}`)).join("&");return e?`?${e}`:""}(e)}`);return r}catch(n){return console.error("Failed to fetch game info:",n),{}}}function yn(n,t="€"){return null===n?"":`${t}${n?function(n){if(0===n)return"0";if(!n)return"";const t=(n=n.toString()).split(".");return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),t.join(".")}(n):0}`}const xn=["ro","en","fr","ar","hr"],Sn={en:{logout:"Log out",draws:"DRAWS",latestResults:"LATEST RESULTS",instruction:"INSTRUCTION",howToWin:"HOW TO WIN",selectDraws:"Select Draws from the following bars:",gameNotAvailable:"Sorry. The Game is not available now.",instructionContent:"Instruction content goes here.",turnover:"Turnover: "},ro:{logout:"Deconectare",draws:"EXTRAGERI",latestResults:"ULTIMELE REZULTATE",instruction:"INSTRUCȚIUNI",howToWin:"CUM SĂ CÂȘTIGI",selectDraws:"Selectați extrageri din barele următoare:",gameNotAvailable:"Ne pare rău. Jocul nu este disponibil acum.",instructionContent:"Conținutul instrucțiunilor se afișează aici."},fr:{logout:"Se déconnecter",draws:"TIRAGES",latestResults:"DERNIERS RÉSULTATS",instruction:"INSTRUCTION",howToWin:"COMMENT GAGNER",selectDraws:"Sélectionnez les tirages dans les barres suivantes:",gameNotAvailable:"Désolé. Le jeu nest pas disponible pour le moment.",instructionContent:"Le contenu des instructions va ici."},ar:{logout:"تسجيل الخروج",draws:"السحوبات",latestResults:"أحدث النتائج",instruction:"التعليمات",howToWin:"كيفية الفوز",selectDraws:"حدد السحوبات من الأشرطة التالية:",gameNotAvailable:"آسف. اللعبة غير متوفرة الآن.",instructionContent:"محتوى التعليمات يذهب هنا."},hr:{logout:"Odjava",draws:"IZVLAČENJA",latestResults:"NAJNOVIJI REZULTATI",instruction:"UPUTE",howToWin:"KAKO POBIJEDITI",selectDraws:"Odaberite izvlačenja sa sljedećih traka:",gameNotAvailable:"Žao nam je. Igra trenutno nije dostupna.",instructionContent:"Sadržaj uputa ide ovdje."}},En=(n,t)=>{const e=t;return Sn[void 0!==e&&xn.includes(e)?e:"en"][n]},Dn={[d.Football]:n("svg",{height:"18px",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",class:"text-sm"},n("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M19.063 19.072l-.81-.97-.117.083.385-2.43.136-.211 2.23-3.464.037-.057h1.075a9.964 9.964 0 01-2.936 7.049zM4.769 5.112l2.8.877-.072 3.246-2.427 2.95-1.561-.153L2.39 9.26a9.977 9.977 0 012.378-4.148zm7.745-3.086l-.72 1.645-3.798 1.404-2.395-.75A9.953 9.953 0 0112 2c.174 0 .343.017.514.026zm7.346 3.812l-1.128 1.29-3.402-.755-.033-.008-2.446-2.241.057.016.862-1.973a9.996 9.996 0 016.09 3.67zm-1.87 8.894l-3.385-.493-1.358-4.067 2.173-2.755 3.144.698 1.347 3.634-1.921 2.983zm-4.64 5.787l4.304-1.486.62.742a9.945 9.945 0 01-5.878 2.205l.954-1.461zm-6.314-2.84l3.91.873-.001.003 1.509 1.507-1.24 1.898a9.946 9.946 0 01-5.908-2.553l1.73-1.728zm1.16-7.72l4.168.725 1.302 3.9-2.552 2.98-3.97-.885-1.412-3.724L8.196 9.96zM2 12c0-.31.019-.615.047-.92l.485 1.203-.454.907A9.934 9.934 0 012 11.999zM12 1C5.934 1 1 5.935 1 12c0 6.067 4.935 11 11 11 6.066 0 11-4.933 11-11 0-6.065-4.934-11-11-11z",fill:"currentColor"}))},Mn=class{constructor(n){t(this,n),this.handleBombItemClick=e(this,"handleBombItemClick",7),this.mbSource=void 0,this.clientStyling=void 0,this.clientStylingUrl=void 0,this.translationUrl="",this.language="en",this.endpoint=void 0,this.groupId=void 0,this.gameId=void 0,this.activeBomb="All",this.bombList=[],this.gameList=[],this.liveDrawsInfoByGroupId={},this.isLoading=!1,this.isGameAvailable=!0}get isSingleGameMode(){return!!this.gameId}handleClientStylingChange(n,t){n!=t&&i(this.stylingContainer,this.clientStyling)}handleClientStylingUrlChange(n,t){n!=t&&o(this.stylingContainer,this.clientStylingUrl)}handleMbSourceChange(n,t){n!=t&&s(this.stylingContainer,`${this.mbSource}.Style`,this.stylingSubscription)}componentDidLoad(){this.stylingContainer&&(this.mbSource&&s(this.stylingContainer,`${this.mbSource}.Style`,this.stylingSubscription),this.clientStyling&&i(this.stylingContainer,this.clientStyling),this.clientStylingUrl&&o(this.stylingContainer,this.clientStylingUrl))}disconnectedCallback(){this.stylingSubscription&&this.stylingSubscription.unsubscribe()}connectedCallback(){this.doFetchData()}async doFetchData(n={}){try{this.isLoading=!0,this.isSingleGameMode?await this.fetchSingleGameData():await this.fetchGroupData(n),this.gameList.length>0&&this.updateTurnoverForAll()}finally{this.isLoading=!1}}async fetchSingleGameData(){var n,t,e;const{endpoint:r,gameId:a}=this,i=await async function(n,t){try{return await gn(`${n}/games/${t}`,"GET",{})}catch(n){throw console.error("Failed to fetch game info:",n),new Error("The game is currently not available. Please try again later.")}}(r,a),o=null===(n=null==i?void 0:i.currentDraw)||void 0===n?void 0:n.wagerCloseTime,s=null===(t=null==i?void 0:i.currentDraw)||void 0===t?void 0:t.id;if(!o||new Date>=new Date(o))this.isGameAvailable=!1,this.gameList=[];else{this.isGameAvailable=!0;const n=await async function({endpoint:n,gameId:t,drawId:e}){try{return await gn(`${n}/poolgames/${t}/draws/${e}/matchConfig`)||[]}catch(n){return console.error("Failed to fetch ticket match:",n),[]}}({endpoint:r,gameId:i.type,drawId:s});this.gameList=[{drawId:s,title:i.name,subTitle:(null===(e=null==n?void 0:n[0])||void 0===e?void 0:e.sportName)||"",icon:d.Football,date:wn(i.currentDraw.date),turnover:"0",matchList:(n||[]).map((n=>n.eventName)).slice(0,3),gameId:i.type}]}this.bombList=[]}async fetchGroupData(n){this.liveDrawsInfoByGroupId=await async function({endpoint:n,groupId:t,params:e}){try{const{sportTags:r=[],liveDraws:a=[]}=await pn({endpoint:n,groupId:t,params:e});return{sportTags:r.map((n=>({name:n,code:n}))),liveDraws:a.map((n=>({title:n.gameName,subTitle:n.sportTag,icon:n.sportTag,date:wn(n.drawCloseTime),turnover:yn(null),matchList:n.matchs.map((n=>n.eventName)),drawId:n.drawId,gameId:n.gameId})))}}catch(n){return{sportTags:[],liveDraws:[]}}}({endpoint:this.endpoint,groupId:this.groupId,params:n}),this.gameList=this.liveDrawsInfoByGroupId.liveDraws,this.bombList=[bn,...this.liveDrawsInfoByGroupId.sportTags]}async updateTurnoverForAll(){const n=async function({endpoint:n,configs:t}){const e={turnover:yn(null)},r=t.map((async({gameId:t,drawId:e})=>{var r;const a=await async function({endpoint:n,gameId:t,drawId:e}){try{return await gn(`${n}/games/${t}/draws/${e}/saleStatistics`)}catch(n){return Promise.reject(n)}}({endpoint:n,gameId:t,drawId:e});return{turnover:yn(null===(r=null==a?void 0:a.wagerSegment)||void 0===r?void 0:r.totalSalesCrossDraw)}}));return(await Promise.allSettled(r)).map((n=>"fulfilled"===n.status?n.value:e))}({endpoint:this.endpoint,configs:this.gameList.map((n=>({gameId:n.gameId,drawId:n.drawId})))});for(let t=0;t<this.gameList.length;t++)this.gameList[t].turnover=(await n)[t].turnover;this.gameList=[...this.gameList]}handleBombChange(n){this.activeBomb=n,n===bn.code?this.doFetchData():this.doFetchData({sportTag:n})}renderLoading(){return n("div",{class:"loading-wrap"},n("section",{class:"dots-container"},n("div",{class:"dot"}),n("div",{class:"dot"}),n("div",{class:"dot"}),n("div",{class:"dot"}),n("div",{class:"dot"})))}renderEmpty(){const t=r("../static/empty-info.svg"),e=En("gameNotAvailable",this.language);return n("div",{class:"empty-draw-wrap"},n("div",{class:"empty-draw"},n("img",{src:t,class:"empty-draw-logo"}),n("div",{class:"empty-draw-content"},n("div",{class:"empty-draw-text"},"ⓘ ",e))))}renderFilter(){return this.isSingleGameMode||!this.gameList.length?null:n("div",{class:"OddsbomEntranceController__section"},n("span",{class:"OddsbomEntranceController__label"},"Select Bomb:"),this.bombList.length?n("div",{class:"OddsbomEntranceController__segmented-control"},this.bombList.map((({name:t,code:e})=>n("button",{class:{OddsbomEntranceController__segment:!0,"OddsbomEntranceController__segment--active":this.activeBomb===e},onClick:this.handleBombChange.bind(this,e)},t)))):n("div",{class:"skeleton-content"},n("div",{class:"skeleton-item skeleton-animated"})))}renderMain(){return this.gameList.length?n("div",{class:"bomb-grid"},this.gameList.map((({title:t,subTitle:e,icon:r,date:a,turnover:i,matchList:o,drawId:s,gameId:d})=>n("div",{class:"bomb-card-wrapper"},n("div",{class:"bomb-card",onClick:()=>{this.handleBombItemClick.emit({drawId:s,gameId:d})}},n("div",{class:"card-header"},Dn[r]&&n("div",{class:"card-icon football"},Dn[r]),n("div",{class:"card-title"},n("h2",null,t),n("p",null,e)),n("div",{class:"card-jackpot"})),n("div",{class:"card-info"},n("span",{class:"card-tag"},a),n("span",{class:"card-tag"},En("turnover",this.language)+i)),n("div",{class:"card-matches"},n("ol",null,o.map((t=>n("li",null,t)))))))))):this.renderEmpty()}render(){return n("div",{key:"4a2641a511f0837649cfedeb4807069ce4051731",ref:n=>this.stylingContainer=n,class:"lottery-oddsbom-bomb-wrapper"},this.renderFilter(),n("div",{key:"15f8dbeace39a87f87e4639b8082719023d6bed5",class:"bomb-grid-container"},this.isLoading?this.renderLoading():this.renderMain()))}static get assetsDirs(){return["../static"]}static get watchers(){return{clientStyling:["handleClientStylingChange"],clientStylingUrl:["handleClientStylingUrlChange"],mbSource:["handleMbSourceChange"]}}};Mn.style="/* --- Component: Bomb Card Grid --- */\n.lottery-oddsbom-bomb-wrapper {\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n height: 100%;\n}\n\n.bomb-grid-container {\n margin-top: 20px;\n width: 100%;\n display: flex;\n justify-content: center;\n container-type: inline-size;\n container-name: bomb-grid;\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n /* --- Component: Bomb Card --- */\n}\n.bomb-grid-container .bomb-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.75rem;\n place-items: center;\n}\n.bomb-grid-container .bomb-card-wrapper {\n width: 100%;\n max-width: 30rem;\n height: 100%;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 1rem;\n border: 1px solid var(--emw--color-gray-100, #e6e6e6);\n}\n.bomb-grid-container .bomb-card {\n height: 100%;\n min-width: 24rem;\n transition: transform 0.3s;\n}\n.bomb-grid-container .bomb-card:hover {\n transform: scale(1.02);\n cursor: pointer;\n}\n.bomb-grid-container .card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n margin-bottom: 0.8rem;\n}\n.bomb-grid-container .card-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.bomb-grid-container .card-icon svg {\n width: 28px;\n height: 28px;\n}\n.bomb-grid-container .card-title {\n flex-grow: 1;\n word-break: break-all;\n}\n.bomb-grid-container .card-title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-title p {\n margin: 0;\n color: var(--emw--color-typography-secondary, #333);\n font-size: 0.9rem;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-info {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 0.8rem;\n flex-wrap: wrap;\n}\n.bomb-grid-container .card-tag {\n background-color: var(--emw--color-tertiary, #e3f2fd);\n padding: 0.3rem 0.75rem;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n max-width: 120px;\n}\n.bomb-grid-container .card-matches {\n max-height: 6.8rem;\n overflow-y: auto;\n}\n.bomb-grid-container .card-matches ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 0.85rem;\n line-height: 1.6;\n}\n.bomb-grid-container .card-matches li {\n padding-left: 0.2rem;\n word-wrap: break-word;\n}\n\n/* --- CONTAINER QUERIES FOR RESPONSIVENESS --- */\n@container bomb-grid (max-width: 768px) {\n .bomb-grid-container .bomb-grid {\n /* On smaller containers, switch to a single column */\n grid-template-columns: 1fr;\n }\n .bomb-card-wrapper .bomb-card {\n min-width: 200px;\n }\n}\n/* --- Component: Filter Controls --- */\n.OddsbomEntranceController__section {\n margin-top: 1.5rem;\n display: flex;\n gap: 12px;\n color: var(--emw--color-typography, #000);\n container-type: inline-size;\n container-name: controller;\n justify-content: center;\n}\n.OddsbomEntranceController__label {\n font-weight: 500;\n white-space: nowrap;\n width: 6rem;\n line-height: 2.2rem;\n}\n.OddsbomEntranceController__segmented-control {\n display: inline-flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.OddsbomEntranceController__segment {\n height: 2.2rem;\n border: none;\n padding: 0.3rem 0.8rem;\n cursor: pointer;\n font-weight: 500;\n border-radius: 2rem;\n outline: none;\n white-space: nowrap;\n background-color: var(--emw--color-background, #ffffff);\n color: var(--emw--color-typography, #000);\n}\n.OddsbomEntranceController__segment--active {\n background-color: var(--emw--color-primary-variant, #1367e7);\n color: var(--emw--color-typography-reverse, #fff);\n font-weight: 600;\n}\n.OddsbomEntranceController__segment--disabled:hover {\n cursor: not-allowed !important;\n}\n.OddsbomEntranceController__segment:not(.OddsbomEntranceController__segment--active):hover {\n background-color: var(--emw--color-background-tertiary, #ccc);\n}\n\n.skeleton-content {\n display: flex;\n flex-direction: column;\n gap: 29px;\n align-items: center;\n}\n\n.skeleton-item {\n background: var(--emw--color-background-secondary, #f5f5f5);\n border-radius: 4px;\n height: 40px;\n width: 200px;\n}\n\n.skeleton-animated {\n animation: skeleton-shimmer 1.5s infinite linear;\n background: linear-gradient(90deg, var(--emw--color-background-secondary, #f5f5f5) 25%, var(--emw--color-background-tertiary, #ccc) 37%, var(--emw--color-background-secondary, #f5f5f5) 63%);\n background-size: 200% 100%;\n}\n\n@keyframes skeleton-shimmer {\n to {\n background-position: 100% 0;\n }\n}\n.loading-icon.scale {\n animation: scale 1s infinite ease-in-out;\n}\n\n@keyframes scale {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.2);\n }\n}\n@container controller (max-width: 500px) {\n .OddsbomEntranceController__segmented-control {\n gap: 0rem;\n }\n .OddsbomEntranceController__segment {\n padding: 0.2rem 0.6rem;\n }\n .OddsbomEntranceController__label,\n .OddsbomEntranceController____segment {\n line-height: 1.8rem;\n }\n}\n.loading-wrap {\n margin: 20px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n}\n.loading-wrap .dots-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n}\n.loading-wrap .dot {\n height: 14px;\n width: 14px;\n margin-right: 14px;\n border-radius: 14px;\n background-color: var(--emw--color-gray-300, #333);\n animation: pulse 1.5s infinite ease-in-out;\n}\n.loading-wrap .dot:last-child {\n margin-right: 0;\n}\n.loading-wrap .dot:nth-child(1) {\n animation-delay: -0.3s;\n}\n.loading-wrap .dot:nth-child(2) {\n animation-delay: -0.1s;\n}\n.loading-wrap .dot:nth-child(3) {\n animation-delay: 0.1s;\n}\n@keyframes pulse {\n 0% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-300, #333);\n }\n 50% {\n transform: scale(1.2);\n background-color: var(--emw--color-gray-100, #e6e6e6);\n }\n 100% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-150, #6f6f6f);\n }\n}\n\n.empty-draw-wrap {\n padding-top: 100px;\n}\n.empty-draw-wrap .empty-draw {\n width: 240px;\n height: 160px;\n padding: 18px 12px 12px 12px;\n background: var(--emw--color-secondary-variant, #e3f2fd);\n position: relative;\n margin: 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n border-radius: 12px;\n}\n.empty-draw-wrap .empty-draw img {\n position: absolute;\n top: -64%;\n left: 50%;\n transform: translateX(-50%);\n width: 200px;\n}\n.empty-draw-wrap .empty-draw-content {\n display: flex;\n gap: 4px;\n}\n.empty-draw-wrap .empty-draw-text {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n}";export{Mn as L}
@@ -1 +1 @@
1
- export{L as lottery_oddsbom_bomb}from"./lottery-oddsbom-bomb-37ea28d6.js";import"./index-f361862f.js";
1
+ export{L as lottery_oddsbom_bomb}from"./lottery-oddsbom-bomb-c5cc49c2.js";import"./index-f361862f.js";
@@ -1 +1 @@
1
- import{p as n,b as t}from"./index-f361862f.js";export{s as setNonce}from"./index-f361862f.js";import{g as l}from"./app-globals-0f993ce5.js";(()=>{const t=import.meta.url,l={};return""!==t&&(l.resourcesUrl=new URL(".",t).href),n(l)})().then((async n=>(await l(),t([["lottery-oddsbom-bomb",[[1,"lottery-oddsbom-bomb",{mbSource:[513,"mb-source"],clientStyling:[513,"client-styling"],clientStylingUrl:[513,"client-styling-url"],translationUrl:[513,"translation-url"],language:[513],endpoint:[513],groupId:[513,"group-id"],activeBomb:[32],bombList:[32],gameList:[32],liveDrawsInfoByGroupId:[32],isLoading:[32]},null,{clientStyling:["handleClientStylingChange"],clientStylingUrl:["handleClientStylingUrlChange"],mbSource:["handleMbSourceChange"]}]]]],n))));
1
+ import{p as n,b as e}from"./index-f361862f.js";export{s as setNonce}from"./index-f361862f.js";import{g as l}from"./app-globals-0f993ce5.js";(()=>{const e=import.meta.url,l={};return""!==e&&(l.resourcesUrl=new URL(".",e).href),n(l)})().then((async n=>(await l(),e([["lottery-oddsbom-bomb",[[1,"lottery-oddsbom-bomb",{mbSource:[513,"mb-source"],clientStyling:[513,"client-styling"],clientStylingUrl:[513,"client-styling-url"],translationUrl:[513,"translation-url"],language:[513],endpoint:[513],groupId:[513,"group-id"],gameId:[513,"game-id"],activeBomb:[32],bombList:[32],gameList:[32],liveDrawsInfoByGroupId:[32],isLoading:[32],isGameAvailable:[32]},null,{clientStyling:["handleClientStylingChange"],clientStylingUrl:["handleClientStylingUrlChange"],mbSource:["handleMbSourceChange"]}]]]],n))));
@@ -26,6 +26,11 @@ export declare class LotteryOddsbomBomb {
26
26
  * GameID of the lottery game
27
27
  */
28
28
  groupId: string;
29
+ /**
30
+ * GameID of the lottery game, for single game mode
31
+ */
32
+ gameId: string;
33
+ private get isSingleGameMode();
29
34
  private stylingContainer;
30
35
  private stylingSubscription;
31
36
  activeBomb: string;
@@ -33,6 +38,7 @@ export declare class LotteryOddsbomBomb {
33
38
  gameList: GameListItem[];
34
39
  liveDrawsInfoByGroupId: LiveDrawsInfoByGroupId;
35
40
  isLoading: boolean;
41
+ isGameAvailable: boolean;
36
42
  handleBombItemClick: EventEmitter<{
37
43
  drawId: string;
38
44
  gameId: string;
@@ -44,6 +50,8 @@ export declare class LotteryOddsbomBomb {
44
50
  disconnectedCallback(): void;
45
51
  connectedCallback(): void;
46
52
  private doFetchData;
53
+ private fetchSingleGameData;
54
+ private fetchGroupData;
47
55
  private updateTurnoverForAll;
48
56
  handleBombChange(code: string): void;
49
57
  private renderLoading;
@@ -16,6 +16,10 @@ export namespace Components {
16
16
  */
17
17
  "clientStylingUrl": string;
18
18
  "endpoint": string;
19
+ /**
20
+ * GameID of the lottery game, for single game mode
21
+ */
22
+ "gameId": string;
19
23
  /**
20
24
  * GameID of the lottery game
21
25
  */
@@ -71,6 +75,10 @@ declare namespace LocalJSX {
71
75
  */
72
76
  "clientStylingUrl"?: string;
73
77
  "endpoint"?: string;
78
+ /**
79
+ * GameID of the lottery game, for single game mode
80
+ */
81
+ "gameId"?: string;
74
82
  /**
75
83
  * GameID of the lottery game
76
84
  */
@@ -73,3 +73,36 @@ export interface SaleStatisticsRes {
73
73
  gameId?: string;
74
74
  wagerSegment?: WagerSegment;
75
75
  }
76
+ export interface DrawInfo {
77
+ date: string;
78
+ id: string;
79
+ status: string;
80
+ wagerAvailable: boolean;
81
+ wagerCloseTime: string;
82
+ breakEndTime: string;
83
+ openTime: string;
84
+ closeTime: string;
85
+ }
86
+ export interface GameInfo {
87
+ id: string;
88
+ name: string;
89
+ type: string;
90
+ vendorGameType: GameTypeEnum;
91
+ vendorGameBettingObject: BettingOjectEnum;
92
+ href: string;
93
+ launchId: string;
94
+ launchSlug: string;
95
+ vendorId: string;
96
+ wasiId: string;
97
+ currentDraw: DrawInfo | null;
98
+ nextDraw: DrawInfo | null;
99
+ }
100
+ export declare enum GameTypeEnum {
101
+ Lottery = "Lottery",
102
+ PoolGame = "PoolGame"
103
+ }
104
+ export declare enum BettingOjectEnum {
105
+ CorrectScore = "CorrectScore",
106
+ HomeDrawAway = "HomeDrawAway",
107
+ Mix = "Mix"
108
+ }
@@ -1,4 +1,4 @@
1
- import { Bomb } from '../models';
1
+ import { Bomb, GameInfo } from '../models';
2
2
  export declare function fetchData({ endpoint, groupId, params }: {
3
3
  endpoint: any;
4
4
  groupId: any;
@@ -28,3 +28,9 @@ export declare function getTurnoverForAll({ endpoint, configs }: {
28
28
  }): Promise<{
29
29
  turnover: string;
30
30
  }[]>;
31
+ export declare function fetchGameInfo(endpoint: string, gameId: string): Promise<GameInfo>;
32
+ export declare function fetchTicketMatch({ endpoint, gameId, drawId }: {
33
+ endpoint: any;
34
+ gameId: any;
35
+ drawId: any;
36
+ }): Promise<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everymatrix/lottery-oddsbom-bomb",
3
- "version": "0.7.9",
3
+ "version": "0.7.16",
4
4
  "main": "./dist/index.cjs.js",
5
5
  "module": "./dist/index.js",
6
6
  "es2015": "./dist/esm/index.mjs",
@@ -1 +0,0 @@
1
- import{h as n,r as t,c as e,g as r}from"./index-f361862f.js";const a="__WIDGET_GLOBAL_STYLE_CACHE__";function o(n,t){if(n){const e=document.createElement("style");e.innerHTML=t,n.appendChild(e)}}function i(n,t){if(!n||!t)return;const e=new URL(t);fetch(e.href).then((n=>n.text())).then((t=>{const e=document.createElement("style");e.innerHTML=t,n&&n.appendChild(e)})).catch((n=>{console.error("There was an error while trying to load client styling from URL",n)}))}function s(n,t,e,r=!1){if(!window.emMessageBus)return;if(!("adoptedStyleSheets"in Document.prototype)||!r)return e=function(n,t){const e=document.createElement("style");return window.emMessageBus.subscribe(t,(t=>{n&&(e.innerHTML=t,n.appendChild(e))}))}(n,t),e;window[a]||(window[a]={}),e=function(n,t){return window.emMessageBus.subscribe(t,(e=>{if(!n)return;const r=n.getRootNode(),o=window[a];let i=o[t]&&o[t].sheet;i?o[t].refCount=o[t].refCount+1:(i=new CSSStyleSheet,i.replaceSync(e),o[t]={sheet:i,refCount:1});const s=r.adoptedStyleSheets||[];s.includes(i)||(r.adoptedStyleSheets=[...s,i])}))}(n,t);const o=e.unsubscribe.bind(e);return e.unsubscribe=()=>{if(window[a][t]){const n=window[a][t];n.refCount>1?n.refCount=n.refCount-1:delete window[a][t]}o()},e}var d;function u(n){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(n)}function c(n){if(null===n||!0===n||!1===n)return NaN;var t=Number(n);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function l(n,t){if(t.length<n)throw new TypeError(n+" argument"+(n>1?"s":"")+" required, but only "+t.length+" present")}function m(n){l(1,arguments);var t=Object.prototype.toString.call(n);return n instanceof Date||"object"===u(n)&&"[object Date]"===t?new Date(n.getTime()):"number"==typeof n||"[object Number]"===t?new Date(n):("string"!=typeof n&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}!function(n){n.Football="Football",n.IceHockey="IceHockey",n.Mixed="Mixed"}(d||(d={}));var h={};function f(){return h}function g(n){l(1,arguments);var t=m(n);return t.setHours(0,0,0,0),t}var w=6e4,v=36e5;function b(n,t){l(2,arguments);var e=g(n),r=g(t);return e.getTime()===r.getTime()}function p(n){l(1,arguments);var t=m(n),e=t.getUTCDay(),r=(e<1?7:0)+e-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function y(n){l(1,arguments);var t=m(n),e=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(e+1,0,4),r.setUTCHours(0,0,0,0);var a=p(r),o=new Date(0);o.setUTCFullYear(e,0,4),o.setUTCHours(0,0,0,0);var i=p(o);return t.getTime()>=a.getTime()?e+1:t.getTime()>=i.getTime()?e:e-1}function x(n,t){var e,r,a,o,i,s,d,u;l(1,arguments);var h=f(),g=c(null!==(e=null!==(r=null!==(a=null!==(o=null==t?void 0:t.weekStartsOn)&&void 0!==o?o:null==t||null===(i=t.locale)||void 0===i||null===(s=i.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==a?a:h.weekStartsOn)&&void 0!==r?r:null===(d=h.locale)||void 0===d||null===(u=d.options)||void 0===u?void 0:u.weekStartsOn)&&void 0!==e?e:0);if(!(g>=0&&g<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var w=m(n),v=w.getUTCDay(),b=(v<g?7:0)+v-g;return w.setUTCDate(w.getUTCDate()-b),w.setUTCHours(0,0,0,0),w}function S(n,t){var e,r,a,o,i,s,d,u;l(1,arguments);var h=m(n),g=h.getUTCFullYear(),w=f(),v=c(null!==(e=null!==(r=null!==(a=null!==(o=null==t?void 0:t.firstWeekContainsDate)&&void 0!==o?o:null==t||null===(i=t.locale)||void 0===i||null===(s=i.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==a?a:w.firstWeekContainsDate)&&void 0!==r?r:null===(d=w.locale)||void 0===d||null===(u=d.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==e?e:1);if(!(v>=1&&v<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var b=new Date(0);b.setUTCFullYear(g+1,0,v),b.setUTCHours(0,0,0,0);var p=x(b,t),y=new Date(0);y.setUTCFullYear(g,0,v),y.setUTCHours(0,0,0,0);var S=x(y,t);return h.getTime()>=p.getTime()?g+1:h.getTime()>=S.getTime()?g:g-1}function E(n,t){for(var e=n<0?"-":"",r=Math.abs(n).toString();r.length<t;)r="0"+r;return e+r}const M=function(n,t){var e=n.getUTCFullYear(),r=e>0?e:1-e;return E("yy"===t?r%100:r,t.length)},D=function(n,t){var e=n.getUTCMonth();return"M"===t?String(e+1):E(e+1,2)},k=function(n,t){return E(n.getUTCDate(),t.length)},N=function(n,t){return E(n.getUTCHours()%12||12,t.length)},T=function(n,t){return E(n.getUTCHours(),t.length)},C=function(n,t){return E(n.getUTCMinutes(),t.length)},O=function(n,t){return E(n.getUTCSeconds(),t.length)},I=function(n,t){var e=t.length,r=n.getUTCMilliseconds();return E(Math.floor(r*Math.pow(10,e-3)),t.length)};var R={G:function(n,t,e){var r=n.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(r,{width:"abbreviated"});case"GGGGG":return e.era(r,{width:"narrow"});default:return e.era(r,{width:"wide"})}},y:function(n,t,e){if("yo"===t){var r=n.getUTCFullYear();return e.ordinalNumber(r>0?r:1-r,{unit:"year"})}return M(n,t)},Y:function(n,t,e,r){var a=S(n,r),o=a>0?a:1-a;return"YY"===t?E(o%100,2):"Yo"===t?e.ordinalNumber(o,{unit:"year"}):E(o,t.length)},R:function(n,t){return E(y(n),t.length)},u:function(n,t){return E(n.getUTCFullYear(),t.length)},Q:function(n,t,e){var r=Math.ceil((n.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return E(r,2);case"Qo":return e.ordinalNumber(r,{unit:"quarter"});case"QQQ":return e.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(r,{width:"narrow",context:"formatting"});default:return e.quarter(r,{width:"wide",context:"formatting"})}},q:function(n,t,e){var r=Math.ceil((n.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return E(r,2);case"qo":return e.ordinalNumber(r,{unit:"quarter"});case"qqq":return e.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(r,{width:"narrow",context:"standalone"});default:return e.quarter(r,{width:"wide",context:"standalone"})}},M:function(n,t,e){var r=n.getUTCMonth();switch(t){case"M":case"MM":return D(n,t);case"Mo":return e.ordinalNumber(r+1,{unit:"month"});case"MMM":return e.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(r,{width:"narrow",context:"formatting"});default:return e.month(r,{width:"wide",context:"formatting"})}},L:function(n,t,e){var r=n.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return E(r+1,2);case"Lo":return e.ordinalNumber(r+1,{unit:"month"});case"LLL":return e.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(r,{width:"narrow",context:"standalone"});default:return e.month(r,{width:"wide",context:"standalone"})}},w:function(n,t,e,r){var a=function(n,t){l(1,arguments);var e=m(n),r=x(e,t).getTime()-function(n,t){var e,r,a,o,i,s,d,u;l(1,arguments);var m=f(),h=c(null!==(e=null!==(r=null!==(a=null!==(o=null==t?void 0:t.firstWeekContainsDate)&&void 0!==o?o:null==t||null===(i=t.locale)||void 0===i||null===(s=i.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==a?a:m.firstWeekContainsDate)&&void 0!==r?r:null===(d=m.locale)||void 0===d||null===(u=d.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==e?e:1),g=S(n,t),w=new Date(0);return w.setUTCFullYear(g,0,h),w.setUTCHours(0,0,0,0),x(w,t)}(e,t).getTime();return Math.round(r/6048e5)+1}(n,r);return"wo"===t?e.ordinalNumber(a,{unit:"week"}):E(a,t.length)},I:function(n,t,e){var r=function(n){l(1,arguments);var t=m(n),e=p(t).getTime()-function(n){l(1,arguments);var t=y(n),e=new Date(0);return e.setUTCFullYear(t,0,4),e.setUTCHours(0,0,0,0),p(e)}(t).getTime();return Math.round(e/6048e5)+1}(n);return"Io"===t?e.ordinalNumber(r,{unit:"week"}):E(r,t.length)},d:function(n,t,e){return"do"===t?e.ordinalNumber(n.getUTCDate(),{unit:"date"}):k(n,t)},D:function(n,t,e){var r=function(n){l(1,arguments);var t=m(n),e=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=t.getTime();return Math.floor((e-r)/864e5)+1}(n);return"Do"===t?e.ordinalNumber(r,{unit:"dayOfYear"}):E(r,t.length)},E:function(n,t,e){var r=n.getUTCDay();switch(t){case"E":case"EE":case"EEE":return e.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(r,{width:"short",context:"formatting"});default:return e.day(r,{width:"wide",context:"formatting"})}},e:function(n,t,e,r){var a=n.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return E(o,2);case"eo":return e.ordinalNumber(o,{unit:"day"});case"eee":return e.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(a,{width:"short",context:"formatting"});default:return e.day(a,{width:"wide",context:"formatting"})}},c:function(n,t,e,r){var a=n.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return E(o,t.length);case"co":return e.ordinalNumber(o,{unit:"day"});case"ccc":return e.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(a,{width:"narrow",context:"standalone"});case"cccccc":return e.day(a,{width:"short",context:"standalone"});default:return e.day(a,{width:"wide",context:"standalone"})}},i:function(n,t,e){var r=n.getUTCDay(),a=0===r?7:r;switch(t){case"i":return String(a);case"ii":return E(a,t.length);case"io":return e.ordinalNumber(a,{unit:"day"});case"iii":return e.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(r,{width:"short",context:"formatting"});default:return e.day(r,{width:"wide",context:"formatting"})}},a:function(n,t,e){var r=n.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(n,t,e){var r,a=n.getUTCHours();switch(r=12===a?"noon":0===a?"midnight":a/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){var r,a=n.getUTCHours();switch(r=a>=17?"evening":a>=12?"afternoon":a>=4?"morning":"night",t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if("ho"===t){var r=n.getUTCHours()%12;return 0===r&&(r=12),e.ordinalNumber(r,{unit:"hour"})}return N(n,t)},H:function(n,t,e){return"Ho"===t?e.ordinalNumber(n.getUTCHours(),{unit:"hour"}):T(n,t)},K:function(n,t,e){var r=n.getUTCHours()%12;return"Ko"===t?e.ordinalNumber(r,{unit:"hour"}):E(r,t.length)},k:function(n,t,e){var r=n.getUTCHours();return 0===r&&(r=24),"ko"===t?e.ordinalNumber(r,{unit:"hour"}):E(r,t.length)},m:function(n,t,e){return"mo"===t?e.ordinalNumber(n.getUTCMinutes(),{unit:"minute"}):C(n,t)},s:function(n,t,e){return"so"===t?e.ordinalNumber(n.getUTCSeconds(),{unit:"second"}):O(n,t)},S:function(n,t){return I(n,t)},X:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return P(a);case"XXXX":case"XX":return _(a);default:return _(a,":")}},x:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();switch(t){case"x":return P(a);case"xxxx":case"xx":return _(a);default:return _(a,":")}},O:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+j(a,":");default:return"GMT"+_(a,":")}},z:function(n,t,e,r){var a=(r._originalDate||n).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+j(a,":");default:return"GMT"+_(a,":")}},t:function(n,t,e,r){return E(Math.floor((r._originalDate||n).getTime()/1e3),t.length)},T:function(n,t,e,r){return E((r._originalDate||n).getTime(),t.length)}};function j(n,t){var e=n>0?"-":"+",r=Math.abs(n),a=Math.floor(r/60),o=r%60;if(0===o)return e+String(a);var i=t||"";return e+String(a)+i+E(o,2)}function P(n,t){return n%60==0?(n>0?"-":"+")+E(Math.abs(n)/60,2):_(n,t)}function _(n,t){var e=t||"",r=n>0?"-":"+",a=Math.abs(n);return r+E(Math.floor(a/60),2)+e+E(a%60,2)}const A=R;var W=function(n,t){switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},L=function(n,t){switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},z={p:L,P:function(n,t){var e,r=n.match(/(P+)(p+)?/)||[],a=r[1],o=r[2];if(!o)return W(n,t);switch(a){case"P":e=t.dateTime({width:"short"});break;case"PP":e=t.dateTime({width:"medium"});break;case"PPP":e=t.dateTime({width:"long"});break;default:e=t.dateTime({width:"full"})}return e.replace("{{date}}",W(a,t)).replace("{{time}}",L(o,t))}};const Y=z;var G=["D","DD"],U=["YY","YYYY"];function q(n,t,e){if("YYYY"===n)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===n)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===n)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===n)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(e,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var $={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function B(n){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}var Q,F={date:B({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:B({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:B({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},X={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function J(n){return function(t,e){var r;if("formatting"===(null!=e&&e.context?String(e.context):"standalone")&&n.formattingValues){var a=n.defaultFormattingWidth||n.defaultWidth,o=null!=e&&e.width?String(e.width):a;r=n.formattingValues[o]||n.formattingValues[a]}else{var i=n.defaultWidth,s=null!=e&&e.width?String(e.width):n.defaultWidth;r=n.values[s]||n.values[i]}return r[n.argumentCallback?n.argumentCallback(t):t]}}function H(n){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.width,a=t.match(r&&n.matchPatterns[r]||n.matchPatterns[n.defaultMatchWidth]);if(!a)return null;var o,i=a[0],s=r&&n.parsePatterns[r]||n.parsePatterns[n.defaultParseWidth],d=Array.isArray(s)?function(n){for(var t=0;t<n.length;t++)if(n[t].test(i))return t}(s):function(n){for(var t in n)if(n.hasOwnProperty(t)&&n[t].test(i))return t}(s);return o=n.valueCallback?n.valueCallback(d):d,{value:o=e.valueCallback?e.valueCallback(o):o,rest:t.slice(i.length)}}}const Z={code:"en-US",formatDistance:function(n,t,e){var r,a=$[n];return r="string"==typeof a?a:1===t?a.one:a.other.replace("{{count}}",t.toString()),null!=e&&e.addSuffix?e.comparison&&e.comparison>0?"in "+r:r+" ago":r},formatLong:F,formatRelative:function(n){return X[n]},localize:{ordinalNumber:function(n){var t=Number(n),e=t%100;if(e>20||e<10)switch(e%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},era:J({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:J({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(n){return n-1}}),month:J({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:J({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:J({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(Q={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(n){return parseInt(n,10)}},function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.match(Q.matchPattern);if(!e)return null;var r=e[0],a=n.match(Q.parsePattern);if(!a)return null;var o=Q.valueCallback?Q.valueCallback(a[0]):a[0];return{value:o=t.valueCallback?t.valueCallback(o):o,rest:n.slice(r.length)}}),era:H({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:H({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(n){return n+1}}),month:H({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:H({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:H({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};var K=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,V=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,nn=/^'([^]*?)'?$/,tn=/''/g,en=/[a-zA-Z]/;function rn(n,t,e){var r,a,o,i,s,d,h,g,w,v,b,p,y,x,S,E,M,D;l(2,arguments);var k=String(t),N=f(),T=null!==(r=null!==(a=null==e?void 0:e.locale)&&void 0!==a?a:N.locale)&&void 0!==r?r:Z,C=c(null!==(o=null!==(i=null!==(s=null!==(d=null==e?void 0:e.firstWeekContainsDate)&&void 0!==d?d:null==e||null===(h=e.locale)||void 0===h||null===(g=h.options)||void 0===g?void 0:g.firstWeekContainsDate)&&void 0!==s?s:N.firstWeekContainsDate)&&void 0!==i?i:null===(w=N.locale)||void 0===w||null===(v=w.options)||void 0===v?void 0:v.firstWeekContainsDate)&&void 0!==o?o:1);if(!(C>=1&&C<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var O=c(null!==(b=null!==(p=null!==(y=null!==(x=null==e?void 0:e.weekStartsOn)&&void 0!==x?x:null==e||null===(S=e.locale)||void 0===S||null===(E=S.options)||void 0===E?void 0:E.weekStartsOn)&&void 0!==y?y:N.weekStartsOn)&&void 0!==p?p:null===(M=N.locale)||void 0===M||null===(D=M.options)||void 0===D?void 0:D.weekStartsOn)&&void 0!==b?b:0);if(!(O>=0&&O<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!T.localize)throw new RangeError("locale must contain localize property");if(!T.formatLong)throw new RangeError("locale must contain formatLong property");var I=m(n);if(!function(n){if(l(1,arguments),!function(n){return l(1,arguments),n instanceof Date||"object"===u(n)&&"[object Date]"===Object.prototype.toString.call(n)}(n)&&"number"!=typeof n)return!1;var t=m(n);return!isNaN(Number(t))}(I))throw new RangeError("Invalid time value");var R=function(n){var t=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return t.setUTCFullYear(n.getFullYear()),n.getTime()-t.getTime()}(I),j=function(n,t){return l(2,arguments),function(n,t){l(2,arguments);var e=m(n).getTime(),r=c(t);return new Date(e+r)}(n,-c(t))}(I,R),P={firstWeekContainsDate:C,weekStartsOn:O,locale:T,_originalDate:I};return k.match(V).map((function(n){var t=n[0];return"p"===t||"P"===t?(0,Y[t])(n,T.formatLong):n})).join("").match(K).map((function(r){if("''"===r)return"'";var a,o,i=r[0];if("'"===i)return(o=(a=r).match(nn))?o[1].replace(tn,"'"):a;var s=A[i];if(s)return null!=e&&e.useAdditionalWeekYearTokens||-1===U.indexOf(r)||q(r,t,String(n)),null!=e&&e.useAdditionalDayOfYearTokens||!(-1!==G.indexOf(r))||q(r,t,String(n)),s(j,r,T.localize,P);if(i.match(en))throw new RangeError("Format string contains an unescaped latin alphabet character `"+i+"`");return r})).join("")}var an={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},on=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,sn=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,dn=/^([+-])(\d{2})(?::?(\d{2}))?$/;function un(n){return n?parseInt(n):1}function cn(n){return n&&parseFloat(n.replace(",","."))||0}var ln=[31,null,31,30,31,30,31,31,30,31,30,31];function mn(n){return n%400==0||n%4==0&&n%100!=0}function hn(n,t="GET",e=null,r={}){return new Promise(((a,o)=>{const i=Object.assign({"Content-Type":"application/json"},r),s={method:t,headers:i,body:null};e&&"GET"!==t&&"HEAD"!==t?s.body=JSON.stringify(e):delete s.body,fetch(n,s).then((n=>n.ok?n.json():n.json().then((t=>{o({status:n.status,statusText:n.statusText,code:t.code||"UNKNOWN_ERROR",message:t.message||"An unknown error occurred",data:t.data||null})}),(()=>o({status:n.status,statusText:n.statusText,code:"PARSE_ERROR",message:"Failed to parse error response"}))))).then((n=>a(n)),(n=>o(n)))}))}function fn(n){if(!n)return"";const t=function(n,t){var e;l(1,arguments);var r=c(null!==(e=null==t?void 0:t.additionalDigits)&&void 0!==e?e:2);if(2!==r&&1!==r&&0!==r)throw new RangeError("additionalDigits must be 0, 1 or 2");if("string"!=typeof n&&"[object String]"!==Object.prototype.toString.call(n))return new Date(NaN);var a,o=function(n){var t,e={},r=n.split(an.dateTimeDelimiter);if(r.length>2)return e;if(/:/.test(r[0])?t=r[0]:(e.date=r[0],t=r[1],an.timeZoneDelimiter.test(e.date)&&(e.date=n.split(an.timeZoneDelimiter)[0],t=n.substr(e.date.length,n.length))),t){var a=an.timezone.exec(t);a?(e.time=t.replace(a[1],""),e.timezone=a[1]):e.time=t}return e}(n);if(o.date){var i=function(n,t){var e=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),r=n.match(e);if(!r)return{year:NaN,restDateString:""};var a=r[1]?parseInt(r[1]):null,o=r[2]?parseInt(r[2]):null;return{year:null===o?a:100*o,restDateString:n.slice((r[1]||r[2]).length)}}(o.date,r);a=function(n,t){if(null===t)return new Date(NaN);var e=n.match(on);if(!e)return new Date(NaN);var r=!!e[4],a=un(e[1]),o=un(e[2])-1,i=un(e[3]),s=un(e[4]),d=un(e[5])-1;if(r)return function(n,t,e){return t>=1&&t<=53&&e>=0&&e<=6}(0,s,d)?function(n,t,e){var r=new Date(0);r.setUTCFullYear(n,0,4);var a=7*(t-1)+e+1-(r.getUTCDay()||7);return r.setUTCDate(r.getUTCDate()+a),r}(t,s,d):new Date(NaN);var u=new Date(0);return function(n,t,e){return t>=0&&t<=11&&e>=1&&e<=(ln[t]||(mn(n)?29:28))}(t,o,i)&&function(n,t){return t>=1&&t<=(mn(n)?366:365)}(t,a)?(u.setUTCFullYear(t,o,Math.max(a,i)),u):new Date(NaN)}(i.restDateString,i.year)}if(!a||isNaN(a.getTime()))return new Date(NaN);var s,d=a.getTime(),u=0;if(o.time&&(u=function(n){var t=n.match(sn);if(!t)return NaN;var e=cn(t[1]),r=cn(t[2]),a=cn(t[3]);return function(n,t,e){return 24===n?0===t&&0===e:e>=0&&e<60&&t>=0&&t<60&&n>=0&&n<25}(e,r,a)?e*v+r*w+1e3*a:NaN}(o.time),isNaN(u)))return new Date(NaN);if(!o.timezone){var m=new Date(d+u),h=new Date(0);return h.setFullYear(m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()),h.setHours(m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()),h}return s=function(n){if("Z"===n)return 0;var t=n.match(dn);if(!t)return 0;var e="+"===t[1]?-1:1,r=parseInt(t[2]),a=t[3]&&parseInt(t[3])||0;return function(n,t){return t>=0&&t<=59}(0,a)?e*(r*v+a*w):NaN}(o.timezone),isNaN(s)?new Date(NaN):new Date(d+u+s)}(n);if(isNaN(t.getTime()))return"";const e=rn(t,"HH:mm");return function(n){return l(1,arguments),b(n,Date.now())}(t)?`Today at ${e}`:function(n){return l(1,arguments),b(n,function(n,t){l(2,arguments);var e=m(n),r=c(t);return isNaN(r)?new Date(NaN):r?(e.setDate(e.getDate()+r),e):e}(Date.now(),1))}(t)?`Tomorrow at ${e}`:`${rn(t,"EEEE")} at ${e}`}function gn(n,t){return null==n||""===n||(0!==n||!t)&&(Array.isArray(n)?function(n){if(0===n.length)return!0;const t=n.length;let e=0;for(let r=0;r<t;r++){if(!gn(n[r]))return!1;e++}return e===t}(n):"[object Object]"===Object.prototype.toString.call(n)?function(n){if(0===Object.keys(n).length)return!0;const t=Object.keys(n).length;let e=0;for(const t of Object.values(n)){if(!gn(t))return!1;e++}return e===t}(n):!n)}const wn={name:"All",code:"All"};async function vn({endpoint:n,groupId:t,params:e={}}){try{const r=await hn(`${n}/groups/${t}/liveDraws${function(n){const t={};Object.entries(n).forEach((([n,e])=>{gn(e,!0)||(t[n]=e)}));const e=Object.entries(t).map((([n,t])=>`${encodeURIComponent(n)}=${encodeURIComponent(t)}`)).join("&");return e?`?${e}`:""}(e)}`);return r}catch(n){return console.error("Failed to fetch game info:",n),{}}}function bn(n,t="€"){return null===n?"":`${t}${n?function(n){if(0===n)return"0";if(!n)return"";const t=(n=n.toString()).split(".");return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),t.join(".")}(n):0}`}const pn=["ro","en","fr","ar","hr"],yn={en:{logout:"Log out",draws:"DRAWS",latestResults:"LATEST RESULTS",instruction:"INSTRUCTION",howToWin:"HOW TO WIN",selectDraws:"Select Draws from the following bars:",gameNotAvailable:"Sorry. The Game is not available now.",instructionContent:"Instruction content goes here.",turnover:"Turnover: "},ro:{logout:"Deconectare",draws:"EXTRAGERI",latestResults:"ULTIMELE REZULTATE",instruction:"INSTRUCȚIUNI",howToWin:"CUM SĂ CÂȘTIGI",selectDraws:"Selectați extrageri din barele următoare:",gameNotAvailable:"Ne pare rău. Jocul nu este disponibil acum.",instructionContent:"Conținutul instrucțiunilor se afișează aici."},fr:{logout:"Se déconnecter",draws:"TIRAGES",latestResults:"DERNIERS RÉSULTATS",instruction:"INSTRUCTION",howToWin:"COMMENT GAGNER",selectDraws:"Sélectionnez les tirages dans les barres suivantes:",gameNotAvailable:"Désolé. Le jeu nest pas disponible pour le moment.",instructionContent:"Le contenu des instructions va ici."},ar:{logout:"تسجيل الخروج",draws:"السحوبات",latestResults:"أحدث النتائج",instruction:"التعليمات",howToWin:"كيفية الفوز",selectDraws:"حدد السحوبات من الأشرطة التالية:",gameNotAvailable:"آسف. اللعبة غير متوفرة الآن.",instructionContent:"محتوى التعليمات يذهب هنا."},hr:{logout:"Odjava",draws:"IZVLAČENJA",latestResults:"NAJNOVIJI REZULTATI",instruction:"UPUTE",howToWin:"KAKO POBIJEDITI",selectDraws:"Odaberite izvlačenja sa sljedećih traka:",gameNotAvailable:"Žao nam je. Igra trenutno nije dostupna.",instructionContent:"Sadržaj uputa ide ovdje."}},xn={[d.Football]:n("svg",{height:"18px",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",class:"text-sm"},n("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M19.063 19.072l-.81-.97-.117.083.385-2.43.136-.211 2.23-3.464.037-.057h1.075a9.964 9.964 0 01-2.936 7.049zM4.769 5.112l2.8.877-.072 3.246-2.427 2.95-1.561-.153L2.39 9.26a9.977 9.977 0 012.378-4.148zm7.745-3.086l-.72 1.645-3.798 1.404-2.395-.75A9.953 9.953 0 0112 2c.174 0 .343.017.514.026zm7.346 3.812l-1.128 1.29-3.402-.755-.033-.008-2.446-2.241.057.016.862-1.973a9.996 9.996 0 016.09 3.67zm-1.87 8.894l-3.385-.493-1.358-4.067 2.173-2.755 3.144.698 1.347 3.634-1.921 2.983zm-4.64 5.787l4.304-1.486.62.742a9.945 9.945 0 01-5.878 2.205l.954-1.461zm-6.314-2.84l3.91.873-.001.003 1.509 1.507-1.24 1.898a9.946 9.946 0 01-5.908-2.553l1.73-1.728zm1.16-7.72l4.168.725 1.302 3.9-2.552 2.98-3.97-.885-1.412-3.724L8.196 9.96zM2 12c0-.31.019-.615.047-.92l.485 1.203-.454.907A9.934 9.934 0 012 11.999zM12 1C5.934 1 1 5.935 1 12c0 6.067 4.935 11 11 11 6.066 0 11-4.933 11-11 0-6.065-4.934-11-11-11z",fill:"currentColor"}))},Sn=class{constructor(n){t(this,n),this.handleBombItemClick=e(this,"handleBombItemClick",7),this.mbSource=void 0,this.clientStyling=void 0,this.clientStylingUrl=void 0,this.translationUrl="",this.language="en",this.endpoint=void 0,this.groupId=void 0,this.activeBomb="All",this.bombList=[],this.gameList=[],this.liveDrawsInfoByGroupId={},this.isLoading=!1}handleClientStylingChange(n,t){n!=t&&o(this.stylingContainer,this.clientStyling)}handleClientStylingUrlChange(n,t){n!=t&&i(this.stylingContainer,this.clientStylingUrl)}handleMbSourceChange(n,t){n!=t&&s(this.stylingContainer,`${this.mbSource}.Style`,this.stylingSubscription)}componentDidLoad(){this.stylingContainer&&(this.mbSource&&s(this.stylingContainer,`${this.mbSource}.Style`,this.stylingSubscription),this.clientStyling&&o(this.stylingContainer,this.clientStyling),this.clientStylingUrl&&i(this.stylingContainer,this.clientStylingUrl))}disconnectedCallback(){this.stylingSubscription&&this.stylingSubscription.unsubscribe()}connectedCallback(){this.doFetchData()}async doFetchData(n={}){try{this.isLoading=!0,this.liveDrawsInfoByGroupId=await async function({endpoint:n,groupId:t,params:e}){try{const{sportTags:r=[],liveDraws:a=[]}=await vn({endpoint:n,groupId:t,params:e});return{sportTags:r.map((n=>({name:n,code:n}))),liveDraws:a.map((n=>({title:n.gameName,subTitle:n.sportTag,icon:n.sportTag,date:fn(n.drawCloseTime),turnover:bn(null),matchList:n.matchs.map((n=>n.eventName)),drawId:n.drawId,gameId:n.gameId})))}}catch(n){return{sportTags:[],liveDraws:[]}}}({endpoint:this.endpoint,groupId:this.groupId,params:n}),this.gameList=this.liveDrawsInfoByGroupId.liveDraws,this.bombList=[wn,...this.liveDrawsInfoByGroupId.sportTags],this.isLoading=!1,this.updateTurnoverForAll()}finally{this.isLoading=!1}}async updateTurnoverForAll(){const n=async function({endpoint:n,configs:t}){const e={turnover:bn(null)},r=t.map((async({gameId:t,drawId:e})=>{var r;const a=await async function({endpoint:n,gameId:t,drawId:e}){try{return await hn(`${n}/games/${t}/draws/${e}/saleStatistics`)}catch(n){return Promise.reject(n)}}({endpoint:n,gameId:t,drawId:e});return{turnover:bn(null===(r=null==a?void 0:a.wagerSegment)||void 0===r?void 0:r.totalSalesCrossDraw)}}));return(await Promise.allSettled(r)).map((n=>"fulfilled"===n.status?n.value:e))}({endpoint:this.endpoint,configs:this.gameList.map((n=>({gameId:n.gameId,drawId:n.drawId})))});for(let t=0;t<this.gameList.length;t++)this.gameList[t].turnover=(await n)[t].turnover;this.gameList=[...this.gameList]}handleBombChange(n){this.activeBomb=n,n===wn.code?this.doFetchData():this.doFetchData({sportTag:n})}renderLoading(){return n("div",{class:"loading-wrap"},n("section",{class:"dots-container"},n("div",{class:"dot"}),n("div",{class:"dot"}),n("div",{class:"dot"}),n("div",{class:"dot"}),n("div",{class:"dot"})))}renderEmpty(){const t=r("../static/empty-info.svg");return n("div",{class:"empty-draw-wrap"},n("div",{class:"empty-draw"},n("img",{src:t,class:"empty-draw-logo"}),n("div",{class:"empty-draw-content"},n("div",{class:"empty-draw-text"},"ⓘ Sorry. The game is not available now."))))}renderFilter(){return n("div",{class:"OddsbomEntranceController__section"},n("span",{class:"OddsbomEntranceController__label"},"Select Bomb:"),this.bombList.length?n("div",{class:"OddsbomEntranceController__segmented-control"},this.bombList.map((({name:t,code:e})=>n("button",{class:{OddsbomEntranceController__segment:!0,"OddsbomEntranceController__segment--active":this.activeBomb===e},onClick:this.handleBombChange.bind(this,e)},t)))):n("div",{class:"skeleton-content"},n("div",{class:"skeleton-item skeleton-animated"})))}renderMain(){return this.gameList.length?n("div",{class:"bomb-grid"},this.gameList.map((({title:t,subTitle:e,icon:r,date:a,turnover:o,matchList:i,drawId:s,gameId:d})=>n("div",{class:"bomb-card-wrapper"},n("div",{class:"bomb-card",onClick:()=>{this.handleBombItemClick.emit({drawId:s,gameId:d})}},n("div",{class:"card-header"},xn[r]&&n("div",{class:"card-icon football"},xn[r]),n("div",{class:"card-title"},n("h2",null,t),n("p",null,e)),n("div",{class:"card-jackpot"})),n("div",{class:"card-info"},n("span",{class:"card-tag"},a),n("span",{class:"card-tag"},(()=>{const n=this.language;return yn[void 0!==n&&pn.includes(n)?n:"en"].turnover})()+o)),n("div",{class:"card-matches"},n("ol",null,i.map((t=>n("li",null,t)))))))))):this.renderEmpty()}render(){return n("div",{key:"ae8252d8cb1374af9bb8189bcd9edac313c7bc6a",ref:n=>this.stylingContainer=n,class:"lottery-oddsbom-bomb-wrapper"},this.renderFilter(),n("div",{key:"3f673f335248057370e7e57076cc387a86dc4099",class:"bomb-grid-container"},this.isLoading?this.renderLoading():this.renderMain()))}static get assetsDirs(){return["../static"]}static get watchers(){return{clientStyling:["handleClientStylingChange"],clientStylingUrl:["handleClientStylingUrlChange"],mbSource:["handleMbSourceChange"]}}};Sn.style="/* --- Component: Bomb Card Grid --- */\n.lottery-oddsbom-bomb-wrapper {\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n height: 100%;\n}\n\n.bomb-grid-container {\n width: 100%;\n display: flex;\n justify-content: center;\n container-type: inline-size;\n container-name: bomb-grid;\n background: var(--emw--color-background, #fff);\n color: var(--emw--color-typography, #000);\n /* --- Component: Bomb Card --- */\n}\n.bomb-grid-container .bomb-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.75rem;\n place-items: center;\n}\n.bomb-grid-container .bomb-card-wrapper {\n width: 100%;\n max-width: 30rem;\n height: 100%;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 1rem;\n border: 1px solid var(--emw--color-gray-100, #e6e6e6);\n}\n.bomb-grid-container .bomb-card {\n height: 100%;\n min-width: 24rem;\n transition: transform 0.3s;\n}\n.bomb-grid-container .bomb-card:hover {\n transform: scale(1.02);\n cursor: pointer;\n}\n.bomb-grid-container .card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n margin-bottom: 0.8rem;\n}\n.bomb-grid-container .card-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.bomb-grid-container .card-icon svg {\n width: 28px;\n height: 28px;\n}\n.bomb-grid-container .card-title {\n flex-grow: 1;\n word-break: break-all;\n}\n.bomb-grid-container .card-title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-title p {\n margin: 0;\n color: var(--emw--color-typography-secondary, #333);\n font-size: 0.9rem;\n word-wrap: break-word;\n}\n.bomb-grid-container .card-info {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 0.8rem;\n flex-wrap: wrap;\n}\n.bomb-grid-container .card-tag {\n background-color: var(--emw--color-tertiary, #e3f2fd);\n padding: 0.3rem 0.75rem;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n max-width: 120px;\n}\n.bomb-grid-container .card-matches {\n max-height: 6.8rem;\n overflow-y: auto;\n}\n.bomb-grid-container .card-matches ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 0.85rem;\n line-height: 1.6;\n}\n.bomb-grid-container .card-matches li {\n padding-left: 0.2rem;\n word-wrap: break-word;\n}\n\n/* --- CONTAINER QUERIES FOR RESPONSIVENESS --- */\n@container bomb-grid (max-width: 768px) {\n .bomb-grid-container .bomb-grid {\n /* On smaller containers, switch to a single column */\n grid-template-columns: 1fr;\n }\n .bomb-card-wrapper .bomb-card {\n min-width: 200px;\n }\n}\n/* --- Component: Filter Controls --- */\n.OddsbomEntranceController__section {\n margin: 1.5rem 0;\n display: flex;\n gap: 12px;\n color: var(--emw--color-typography, #000);\n container-type: inline-size;\n container-name: controller;\n justify-content: center;\n}\n.OddsbomEntranceController__label {\n font-weight: 500;\n white-space: nowrap;\n width: 6rem;\n line-height: 2.2rem;\n}\n.OddsbomEntranceController__segmented-control {\n display: inline-flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.OddsbomEntranceController__segment {\n height: 2.2rem;\n border: none;\n padding: 0.3rem 0.8rem;\n cursor: pointer;\n font-weight: 500;\n border-radius: 2rem;\n outline: none;\n white-space: nowrap;\n background-color: var(--emw--color-background, #ffffff);\n color: var(--emw--color-typography, #000);\n}\n.OddsbomEntranceController__segment--active {\n background-color: var(--emw--color-primary-variant, #1367e7);\n color: var(--emw--color-typography-reverse, #fff);\n font-weight: 600;\n}\n.OddsbomEntranceController__segment--disabled:hover {\n cursor: not-allowed !important;\n}\n.OddsbomEntranceController__segment:not(.OddsbomEntranceController__segment--active):hover {\n background-color: var(--emw--color-background-tertiary, #ccc);\n}\n\n.skeleton-content {\n display: flex;\n flex-direction: column;\n gap: 29px;\n align-items: center;\n}\n\n.skeleton-item {\n background: var(--emw--color-background-secondary, #f5f5f5);\n border-radius: 4px;\n height: 40px;\n width: 200px;\n}\n\n.skeleton-animated {\n animation: skeleton-shimmer 1.5s infinite linear;\n background: linear-gradient(90deg, var(--emw--color-background-secondary, #f5f5f5) 25%, var(--emw--color-background-tertiary, #ccc) 37%, var(--emw--color-background-secondary, #f5f5f5) 63%);\n background-size: 200% 100%;\n}\n\n@keyframes skeleton-shimmer {\n to {\n background-position: 100% 0;\n }\n}\n.loading-icon.scale {\n animation: scale 1s infinite ease-in-out;\n}\n\n@keyframes scale {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.2);\n }\n}\n@container controller (max-width: 500px) {\n .OddsbomEntranceController__segmented-control {\n gap: 0rem;\n }\n .OddsbomEntranceController__segment {\n padding: 0.2rem 0.6rem;\n }\n .OddsbomEntranceController__label,\n .OddsbomEntranceController____segment {\n line-height: 1.8rem;\n }\n}\n.loading-wrap {\n margin: 20px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n}\n.loading-wrap .dots-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n}\n.loading-wrap .dot {\n height: 14px;\n width: 14px;\n margin-right: 14px;\n border-radius: 14px;\n background-color: var(--emw--color-gray-300, #333);\n animation: pulse 1.5s infinite ease-in-out;\n}\n.loading-wrap .dot:last-child {\n margin-right: 0;\n}\n.loading-wrap .dot:nth-child(1) {\n animation-delay: -0.3s;\n}\n.loading-wrap .dot:nth-child(2) {\n animation-delay: -0.1s;\n}\n.loading-wrap .dot:nth-child(3) {\n animation-delay: 0.1s;\n}\n@keyframes pulse {\n 0% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-300, #333);\n }\n 50% {\n transform: scale(1.2);\n background-color: var(--emw--color-gray-100, #e6e6e6);\n }\n 100% {\n transform: scale(0.8);\n background-color: var(--emw--color-gray-150, #6f6f6f);\n }\n}\n\n.empty-draw-wrap {\n padding-top: 100px;\n}\n.empty-draw-wrap .empty-draw {\n width: 240px;\n height: 160px;\n padding: 18px 12px 12px 12px;\n background: var(--emw--color-secondary-variant, #e3f2fd);\n position: relative;\n margin: 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n border-radius: 12px;\n}\n.empty-draw-wrap .empty-draw img {\n position: absolute;\n top: -64%;\n left: 50%;\n transform: translateX(-50%);\n width: 200px;\n}\n.empty-draw-wrap .empty-draw-content {\n display: flex;\n gap: 4px;\n}\n.empty-draw-wrap .empty-draw-text {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n}";export{Sn as L}