@everymatrix/casino-challenge-card 1.77.5 → 1.77.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/casino-challenge-card/casino-challenge-card-f02ce133.js +1 -0
  2. package/dist/casino-challenge-card/casino-challenge-card.entry.js +1 -1
  3. package/dist/casino-challenge-card/casino-challenge-card.esm.js +1 -1
  4. package/dist/casino-challenge-card/index-98abeec4.js +2 -0
  5. package/dist/casino-challenge-card/index.esm.js +1 -1
  6. package/dist/cjs/casino-challenge-card-1f059b3e.js +505 -0
  7. package/dist/cjs/casino-challenge-card.cjs.entry.js +2 -2
  8. package/dist/cjs/casino-challenge-card.cjs.js +2 -2
  9. package/dist/cjs/{index-4b50b479.js → index-c337b778.js} +25 -1
  10. package/dist/cjs/index.cjs.js +2 -2
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/collection/assets/finish.svg +7 -0
  13. package/dist/collection/assets/trophy.svg +14 -0
  14. package/dist/collection/components/casino-challenge-card/casino-challenge-card.css +129 -5
  15. package/dist/collection/components/casino-challenge-card/casino-challenge-card.js +193 -14
  16. package/dist/collection/utils/locale.utils.js +35 -5
  17. package/dist/collection/utils/types.js +25 -5
  18. package/dist/esm/casino-challenge-card-f02ce133.js +503 -0
  19. package/dist/esm/casino-challenge-card.entry.js +2 -2
  20. package/dist/esm/casino-challenge-card.js +3 -3
  21. package/dist/esm/{index-d72835d2.js → index-98abeec4.js} +25 -1
  22. package/dist/esm/index.js +2 -2
  23. package/dist/esm/loader.js +3 -3
  24. package/dist/types/components/casino-challenge-card/casino-challenge-card.d.ts +26 -1
  25. package/dist/types/components.d.ts +32 -0
  26. package/dist/types/utils/types.d.ts +17 -7
  27. package/package.json +1 -1
  28. package/dist/casino-challenge-card/casino-challenge-card-1c0b899b.js +0 -1
  29. package/dist/casino-challenge-card/index-d72835d2.js +0 -2
  30. package/dist/cjs/casino-challenge-card-e1c638cc.js +0 -349
  31. package/dist/esm/casino-challenge-card-1c0b899b.js +0 -347
@@ -12,7 +12,13 @@ const TRANSLATIONS = {
12
12
  place: 'Place',
13
13
  bet: 'bet',
14
14
  bets: 'bets',
15
- minBet: 'min bet'
15
+ minBet: 'min bet',
16
+ forfeited: 'Forfeited',
17
+ finished: 'Finished',
18
+ suspended: 'Suspended',
19
+ start: 'Start',
20
+ resume: 'Resume',
21
+ pause: 'Pause'
16
22
  },
17
23
  ro: {
18
24
  totalLevels: 'Niveluri totale:',
@@ -25,7 +31,13 @@ const TRANSLATIONS = {
25
31
  place: 'Plasare',
26
32
  bet: 'pariu',
27
33
  bets: 'pariuri',
28
- minBet: 'pariu minim'
34
+ minBet: 'pariu minim',
35
+ forfeited: 'Pierdut',
36
+ finished: 'Terminat',
37
+ suspended: 'Suspendat',
38
+ start: 'Start',
39
+ resume: 'Reia',
40
+ pause: 'Pauză'
29
41
  },
30
42
  fr: {
31
43
  totalLevels: 'Niveaux totaux :',
@@ -38,7 +50,13 @@ const TRANSLATIONS = {
38
50
  place: 'Placer',
39
51
  bet: 'pari',
40
52
  bets: 'paris',
41
- minBet: 'mise minimale'
53
+ minBet: 'mise minimale',
54
+ forfeited: 'Forfait',
55
+ finished: 'Terminé',
56
+ suspended: 'Suspendu',
57
+ start: 'Démarrer',
58
+ resume: 'Reprendre',
59
+ pause: 'Pause'
42
60
  },
43
61
  ar: {
44
62
  totalLevels: 'إجمالي المستويات:',
@@ -51,7 +69,13 @@ const TRANSLATIONS = {
51
69
  place: 'ضع',
52
70
  bet: 'رهان',
53
71
  bets: 'رهانات',
54
- minBet: 'الحد الأدنى للرهان'
72
+ minBet: 'الحد الأدنى للرهان',
73
+ forfeited: 'خاسر',
74
+ finished: 'منتهي',
75
+ suspended: 'معلق',
76
+ start: 'ابدأ',
77
+ resume: 'استئناف',
78
+ pause: 'إيقاف مؤقت'
55
79
  },
56
80
  hr: {
57
81
  totalLevels: 'Ukupno razina:',
@@ -64,7 +88,13 @@ const TRANSLATIONS = {
64
88
  place: 'Postavi',
65
89
  bet: 'kladnja',
66
90
  bets: 'kladnje',
67
- minBet: 'minimalna oklada'
91
+ minBet: 'minimalna oklada',
92
+ forfeited: 'Oduzeto',
93
+ finished: 'Završeno',
94
+ suspended: 'Suspendirano',
95
+ start: 'Počni',
96
+ resume: 'Nastavi',
97
+ pause: 'Pauza'
68
98
  }
69
99
  };
70
100
  export const translate = (key, customLang) => {
@@ -19,14 +19,34 @@ export var EChallengeRewardType;
19
19
  EChallengeRewardType[EChallengeRewardType["Challenge"] = 3] = "Challenge";
20
20
  EChallengeRewardType[EChallengeRewardType["Custom"] = 4] = "Custom";
21
21
  })(EChallengeRewardType || (EChallengeRewardType = {}));
22
+ export var EChallengeProgressStatus;
23
+ (function (EChallengeProgressStatus) {
24
+ EChallengeProgressStatus[EChallengeProgressStatus["Closed"] = 0] = "Closed";
25
+ EChallengeProgressStatus[EChallengeProgressStatus["InProgress"] = 1] = "InProgress";
26
+ EChallengeProgressStatus[EChallengeProgressStatus["Fillup"] = 2] = "Fillup";
27
+ EChallengeProgressStatus[EChallengeProgressStatus["Completed"] = 3] = "Completed";
28
+ })(EChallengeProgressStatus || (EChallengeProgressStatus = {}));
22
29
  export var EChallengeStatus;
23
30
  (function (EChallengeStatus) {
24
- EChallengeStatus[EChallengeStatus["Setup"] = 0] = "Setup";
25
- EChallengeStatus[EChallengeStatus["Active"] = 1] = "Active";
26
- EChallengeStatus[EChallengeStatus["Paused"] = 2] = "Paused";
27
- EChallengeStatus[EChallengeStatus["Closed"] = 3] = "Closed";
28
- EChallengeStatus[EChallengeStatus["Deleted"] = 4] = "Deleted";
31
+ EChallengeStatus[EChallengeStatus["Started"] = 0] = "Started";
32
+ EChallengeStatus[EChallengeStatus["InProgress"] = 1] = "InProgress";
33
+ EChallengeStatus[EChallengeStatus["PendingLevelReward"] = 2] = "PendingLevelReward";
34
+ EChallengeStatus[EChallengeStatus["Completed"] = 3] = "Completed";
35
+ EChallengeStatus[EChallengeStatus["Expired"] = 4] = "Expired";
36
+ EChallengeStatus[EChallengeStatus["Forfeited"] = 5] = "Forfeited";
37
+ EChallengeStatus[EChallengeStatus["Awaiting"] = 6] = "Awaiting";
38
+ EChallengeStatus[EChallengeStatus["Paused"] = 7] = "Paused";
29
39
  })(EChallengeStatus || (EChallengeStatus = {}));
40
+ export const ChallengeStatusDictionary = [
41
+ 'started',
42
+ 'inProgress',
43
+ 'pendingLevelReward',
44
+ 'completed',
45
+ 'expired',
46
+ 'forfeited',
47
+ 'awaiting',
48
+ 'paused'
49
+ ];
30
50
  export var EChallengeTriggerType;
31
51
  (function (EChallengeTriggerType) {
32
52
  EChallengeTriggerType[EChallengeTriggerType["GameLaunch"] = 0] = "GameLaunch";
@@ -0,0 +1,503 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-98abeec4.js';
2
+
3
+ const DEFAULT_LANGUAGE = 'en';
4
+ const SUPPORTED_LANGUAGES = ['ro', 'en', 'fr', 'ar', 'hr'];
5
+ const TRANSLATIONS = {
6
+ en: {
7
+ totalLevels: 'Total levels:',
8
+ level1: 'Level 1:',
9
+ get: 'Get:',
10
+ endsIn: 'Ends In',
11
+ expired: 'Expired',
12
+ viewDetails: 'View details',
13
+ placeBetsOf: 'Place bets of',
14
+ place: 'Place',
15
+ bet: 'bet',
16
+ bets: 'bets',
17
+ minBet: 'min bet',
18
+ forfeited: 'Forfeited',
19
+ finished: 'Finished',
20
+ suspended: 'Suspended',
21
+ start: 'Start',
22
+ resume: 'Resume',
23
+ pause: 'Pause'
24
+ },
25
+ ro: {
26
+ totalLevels: 'Niveluri totale:',
27
+ level1: 'Nivel 1:',
28
+ get: 'Obține:',
29
+ endsIn: 'Se termină în',
30
+ expired: 'Expirat',
31
+ viewDetails: 'Vezi detalii',
32
+ placeBetsOf: 'Plasează pariuri de',
33
+ place: 'Plasare',
34
+ bet: 'pariu',
35
+ bets: 'pariuri',
36
+ minBet: 'pariu minim',
37
+ forfeited: 'Pierdut',
38
+ finished: 'Terminat',
39
+ suspended: 'Suspendat',
40
+ start: 'Start',
41
+ resume: 'Reia',
42
+ pause: 'Pauză'
43
+ },
44
+ fr: {
45
+ totalLevels: 'Niveaux totaux :',
46
+ level1: 'Niveau 1 :',
47
+ get: 'Obtenir :',
48
+ endsIn: 'Se termine dans',
49
+ expired: 'Expiré',
50
+ viewDetails: 'Voir les détails',
51
+ placeBetsOf: 'Placez des paris de',
52
+ place: 'Placer',
53
+ bet: 'pari',
54
+ bets: 'paris',
55
+ minBet: 'mise minimale',
56
+ forfeited: 'Forfait',
57
+ finished: 'Terminé',
58
+ suspended: 'Suspendu',
59
+ start: 'Démarrer',
60
+ resume: 'Reprendre',
61
+ pause: 'Pause'
62
+ },
63
+ ar: {
64
+ totalLevels: 'إجمالي المستويات:',
65
+ level1: 'المستوى 1:',
66
+ get: 'احصل على:',
67
+ endsIn: 'ينتهي في',
68
+ expired: 'منتهي الصلاحية',
69
+ viewDetails: 'عرض التفاصيل',
70
+ placeBetsOf: 'قم بوضع رهانات بقيمة',
71
+ place: 'ضع',
72
+ bet: 'رهان',
73
+ bets: 'رهانات',
74
+ minBet: 'الحد الأدنى للرهان',
75
+ forfeited: 'خاسر',
76
+ finished: 'منتهي',
77
+ suspended: 'معلق',
78
+ start: 'ابدأ',
79
+ resume: 'استئناف',
80
+ pause: 'إيقاف مؤقت'
81
+ },
82
+ hr: {
83
+ totalLevels: 'Ukupno razina:',
84
+ level1: 'Razina 1:',
85
+ get: 'Dobiti:',
86
+ endsIn: 'Završava za',
87
+ expired: 'Isteklo',
88
+ viewDetails: 'Pogledaj detalje',
89
+ placeBetsOf: 'Postavite oklade od',
90
+ place: 'Postavi',
91
+ bet: 'kladnja',
92
+ bets: 'kladnje',
93
+ minBet: 'minimalna oklada',
94
+ forfeited: 'Oduzeto',
95
+ finished: 'Završeno',
96
+ suspended: 'Suspendirano',
97
+ start: 'Počni',
98
+ resume: 'Nastavi',
99
+ pause: 'Pauza'
100
+ }
101
+ };
102
+ const translate = (key, customLang) => {
103
+ const lang = customLang;
104
+ return TRANSLATIONS[lang !== undefined && SUPPORTED_LANGUAGES.includes(lang) ? lang : DEFAULT_LANGUAGE][key];
105
+ };
106
+ const getTranslations = (data) => {
107
+ Object.keys(data).forEach((item) => {
108
+ for (let key in data[item]) {
109
+ TRANSLATIONS[item][key] = data[item][key];
110
+ }
111
+ });
112
+ };
113
+ const resolveTranslationUrl = async (translationUrl) => {
114
+ if (translationUrl) {
115
+ try {
116
+ const response = await fetch(translationUrl);
117
+ if (!response.ok) {
118
+ throw new Error(`HTTP error! status: ${response.status}`);
119
+ }
120
+ const translations = await response.json();
121
+ getTranslations(translations);
122
+ }
123
+ catch (error) {
124
+ console.error('Failed to fetch or parse translations from URL:', error);
125
+ }
126
+ }
127
+ };
128
+
129
+ var EChallengeLevelTargetType;
130
+ (function (EChallengeLevelTargetType) {
131
+ EChallengeLevelTargetType[EChallengeLevelTargetType["Accumulative"] = 0] = "Accumulative";
132
+ EChallengeLevelTargetType[EChallengeLevelTargetType["SingleBet"] = 1] = "SingleBet";
133
+ EChallengeLevelTargetType[EChallengeLevelTargetType["MultipleOneBetSize"] = 2] = "MultipleOneBetSize";
134
+ })(EChallengeLevelTargetType || (EChallengeLevelTargetType = {}));
135
+ var EChallengeRecurrenceType;
136
+ (function (EChallengeRecurrenceType) {
137
+ EChallengeRecurrenceType[EChallengeRecurrenceType["Single"] = 0] = "Single";
138
+ EChallengeRecurrenceType[EChallengeRecurrenceType["Daily"] = 1] = "Daily";
139
+ EChallengeRecurrenceType[EChallengeRecurrenceType["Weekly"] = 2] = "Weekly";
140
+ EChallengeRecurrenceType[EChallengeRecurrenceType["Monthly"] = 3] = "Monthly";
141
+ })(EChallengeRecurrenceType || (EChallengeRecurrenceType = {}));
142
+ var EChallengeRewardType;
143
+ (function (EChallengeRewardType) {
144
+ EChallengeRewardType[EChallengeRewardType["FreeSpins"] = 0] = "FreeSpins";
145
+ EChallengeRewardType[EChallengeRewardType["LuckyWheel"] = 1] = "LuckyWheel";
146
+ EChallengeRewardType[EChallengeRewardType["Leaderboard"] = 2] = "Leaderboard";
147
+ EChallengeRewardType[EChallengeRewardType["Challenge"] = 3] = "Challenge";
148
+ EChallengeRewardType[EChallengeRewardType["Custom"] = 4] = "Custom";
149
+ })(EChallengeRewardType || (EChallengeRewardType = {}));
150
+ var EChallengeProgressStatus;
151
+ (function (EChallengeProgressStatus) {
152
+ EChallengeProgressStatus[EChallengeProgressStatus["Closed"] = 0] = "Closed";
153
+ EChallengeProgressStatus[EChallengeProgressStatus["InProgress"] = 1] = "InProgress";
154
+ EChallengeProgressStatus[EChallengeProgressStatus["Fillup"] = 2] = "Fillup";
155
+ EChallengeProgressStatus[EChallengeProgressStatus["Completed"] = 3] = "Completed";
156
+ })(EChallengeProgressStatus || (EChallengeProgressStatus = {}));
157
+ var EChallengeStatus;
158
+ (function (EChallengeStatus) {
159
+ EChallengeStatus[EChallengeStatus["Started"] = 0] = "Started";
160
+ EChallengeStatus[EChallengeStatus["InProgress"] = 1] = "InProgress";
161
+ EChallengeStatus[EChallengeStatus["PendingLevelReward"] = 2] = "PendingLevelReward";
162
+ EChallengeStatus[EChallengeStatus["Completed"] = 3] = "Completed";
163
+ EChallengeStatus[EChallengeStatus["Expired"] = 4] = "Expired";
164
+ EChallengeStatus[EChallengeStatus["Forfeited"] = 5] = "Forfeited";
165
+ EChallengeStatus[EChallengeStatus["Awaiting"] = 6] = "Awaiting";
166
+ EChallengeStatus[EChallengeStatus["Paused"] = 7] = "Paused";
167
+ })(EChallengeStatus || (EChallengeStatus = {}));
168
+ const ChallengeStatusDictionary = [
169
+ 'started',
170
+ 'inProgress',
171
+ 'pendingLevelReward',
172
+ 'completed',
173
+ 'expired',
174
+ 'forfeited',
175
+ 'awaiting',
176
+ 'paused'
177
+ ];
178
+ var EChallengeTriggerType;
179
+ (function (EChallengeTriggerType) {
180
+ EChallengeTriggerType[EChallengeTriggerType["GameLaunch"] = 0] = "GameLaunch";
181
+ EChallengeTriggerType[EChallengeTriggerType["Reward"] = 1] = "Reward";
182
+ EChallengeTriggerType[EChallengeTriggerType["Manual"] = 2] = "Manual";
183
+ })(EChallengeTriggerType || (EChallengeTriggerType = {}));
184
+ var EChallengeValidityType;
185
+ (function (EChallengeValidityType) {
186
+ EChallengeValidityType[EChallengeValidityType["Period"] = 0] = "Period";
187
+ EChallengeValidityType[EChallengeValidityType["Date"] = 1] = "Date";
188
+ })(EChallengeValidityType || (EChallengeValidityType = {}));
189
+
190
+ function getTimeLeft(endTime) {
191
+ const now = new Date();
192
+ const end = new Date(endTime);
193
+ let diff = end.getTime() - now.getTime();
194
+ if (diff <= 0) {
195
+ return;
196
+ }
197
+ const days = Math.floor(diff / (1000 * 60 * 60 * 24));
198
+ diff -= days * (1000 * 60 * 60 * 24);
199
+ const hours = Math.floor(diff / (1000 * 60 * 60));
200
+ diff -= hours * (1000 * 60 * 60);
201
+ const minutes = Math.floor(diff / (1000 * 60));
202
+ diff -= minutes * (1000 * 60);
203
+ const seconds = Math.floor(diff / 1000);
204
+ const pad = (n) => n.toString().padStart(2, '0');
205
+ return `${pad(days)} : ${pad(hours)} : ${pad(minutes)} : ${pad(seconds)}`;
206
+ }
207
+
208
+ /**
209
+ * @name setClientStyling
210
+ * @description Method used to create and append to the passed element of the widget a style element with the content received
211
+ * @param {HTMLElement} stylingContainer The reference element of the widget
212
+ * @param {string} clientStyling The style content
213
+ */
214
+ function setClientStyling(stylingContainer, clientStyling) {
215
+ if (stylingContainer) {
216
+ const sheet = document.createElement('style');
217
+ sheet.innerHTML = clientStyling;
218
+ stylingContainer.appendChild(sheet);
219
+ }
220
+ }
221
+
222
+ /**
223
+ * @name setClientStylingURL
224
+ * @description Method used to create and append to the passed element of the widget a style element with the content fetched from a given URL
225
+ * @param {HTMLElement} stylingContainer The reference element of the widget
226
+ * @param {string} clientStylingUrl The URL of the style content
227
+ */
228
+ function setClientStylingURL(stylingContainer, clientStylingUrl) {
229
+ const url = new URL(clientStylingUrl);
230
+
231
+ fetch(url.href)
232
+ .then((res) => res.text())
233
+ .then((data) => {
234
+ const cssFile = document.createElement('style');
235
+ cssFile.innerHTML = data;
236
+ if (stylingContainer) {
237
+ stylingContainer.appendChild(cssFile);
238
+ }
239
+ })
240
+ .catch((err) => {
241
+ console.error('There was an error while trying to load client styling from URL', err);
242
+ });
243
+ }
244
+
245
+ /**
246
+ * @name setStreamLibrary
247
+ * @description Method used to create and append to the passed element of the widget a style element with content fetched from the MessageBus
248
+ * @param {HTMLElement} stylingContainer The highest element of the widget
249
+ * @param {string} domain The domain from where the content should be fetched (e.g. 'Casino.Style', 'App.Style', 'casino-footer.style', etc.)
250
+ * @param {ref} subscription A reference to a variable where the subscription should be saved for unsubscribing when no longer needed
251
+ */
252
+ function setStreamStyling(stylingContainer, domain, subscription) {
253
+ if (window.emMessageBus) {
254
+ const sheet = document.createElement('style');
255
+
256
+ window.emMessageBus.subscribe(domain, (data) => {
257
+ sheet.innerHTML = data;
258
+ if (stylingContainer) {
259
+ stylingContainer.appendChild(sheet);
260
+ }
261
+ });
262
+ }
263
+ }
264
+
265
+ const finishSvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuNjQ0NTQgMTIuMTI2MkMxLjU5ODQyIDEyLjEyNzkgMS41NTEyOSAxMi4xMjI3IDEuNTA0MzIgMTIuMTA5OUMxLjI1NzU3IDEyLjA0MjEgMS4xMTI0OSAxMS43ODcyIDEuMTgwMjIgMTEuNTQwM0wzLjUzMDE2IDIuOTU4N0MzLjU5NzkxIDIuNzEyMSAzLjg1MjIyIDIuNTY2NzQgNC4wOTk3MyAyLjYzNDZDNC4zNDY0NyAyLjcwMjM0IDQuNDkxNTUgMi45NTcyNyA0LjQyMzgyIDMuMjA0MTZMMi4wNzM4OCAxMS43ODU4QzIuMDE5MDIgMTEuOTg1NSAxLjg0MTIzIDEyLjExODggMS42NDQ1NCAxMi4xMjYyWiIgZmlsbD0iIzM2QkEzQiIvPgo8cGF0aCBkPSJNMS41NjMwNCAxMS4yNjM0QzEuNTQ3NjggMTEuMjYzOSAxLjUzMTk4IDExLjI2MjIgMS41MTYzMyAxMS4yNTc5QzEuNDM0MTQgMTEuMjM1NCAxLjM4NTgyIDExLjE1MDUgMS40MDgzOCAxMS4wNjgyTDMuNjU4MTMgMi45MTUwM0MzLjY4MDY5IDIuODMyODkgMy43NjU0MSAyLjc4NDQ3IDMuODQ3ODUgMi44MDcwN0MzLjkzMDA0IDIuODI5NjMgMy45NzgzNyAyLjkxNDU1IDMuOTU1OCAyLjk5Njc5TDEuNzA2MDUgMTEuMTVDMS42ODc3OCAxMS4yMTY1IDEuNjI4NTYgMTEuMjYwOSAxLjU2MzA0IDExLjI2MzRaIiBmaWxsPSIjQkNGQ0IxIiBmaWxsLW9wYWNpdHk9IjAuMSIvPgo8cGF0aCBkPSJNMTIuNTE5MyAxMi43OTMyTDEwLjcyNjEgMTMuMDIzNEM5LjM2MTczIDEzLjE5ODYgNy45NzM2MSAxMi43MjIyIDcuMDkzMzkgMTEuNjY1Mkw3LjA0Nzc5IDExLjYxMDRDNi4zMjg0MyAxMC43NDY2IDUuMzA5MzEgMTAuMTY1NCA0LjE4NjU2IDEwLjEwOTFMMi4zNjIzOSAxMC4wMTc2TDIuMzA0NjkgOS45NTk4OEw0LjIyOTY5IDMuMTg0NTdMNi4wOTMxMiAzLjI4MzY3QzcuMjIxNjkgMy4zNDM2OCA4LjI3Mjk3IDMuODc1NjIgOC45ODk4MSA0Ljc0OTM1QzkuODY4OTIgNS44MjA4NyAxMS4yMzc3IDYuMzY0NDUgMTIuNjEyNCA2LjE4Nzk4TDE0LjMzODIgNS44OTc2N0wxNC4zODY2IDUuOTYwMjNMMTIuNTE5MyAxMi43OTMyWiIgZmlsbD0iI0JDRkNCMSIgZmlsbC1vcGFjaXR5PSIwLjEiLz4KPHBhdGggZD0iTTEyLjQ2MTYgMTIuNzM1NkwxMC42Njg0IDEyLjk2NThDOS4zMDQwMyAxMy4xNDA5IDcuOTQ0NzYgMTIuNjA2OSA3LjA2NDU0IDExLjU0OTlMNy4wMTg5NCAxMS40OTUxQzYuMjk5NTggMTAuNjMxMiA1LjI1MTYxIDEwLjEwNzggNC4xMjg4NiAxMC4wNTE0TDIuMzA0NjkgOS45NTk5Nkw0LjE3MTk5IDMuMTI2OTVMNi4wMzU0MiAzLjIyNjA1QzcuMTYzOTkgMy4yODYwNyA4LjIxNTI4IDMuODE4IDguOTMyMTEgNC42OTE3NEM5LjgxMTIyIDUuNzYzMjYgMTEuMTggNi4zMDY4MyAxMi41NTQ3IDYuMTMwMzZMMTQuMzI4OSA1LjkwMjYxTDEyLjQ2MTYgMTIuNzM1NloiIGZpbGw9IiNCRUZGQkEiLz4KPHBhdGggZD0iTTEwLjQ4NDYgMTAuNzE2NEMxMC4wOTEzIDEwLjY4NTMgOS43MDIzOSAxMC42MDM4IDkuMzMzNjggMTAuNDU5NUM4LjgxMjM1IDEwLjI1NTIgOC4zNDIzNyA5LjkzNzIxIDcuOTQ4OTEgOS41NDA0Nkw4LjU4MTY5IDcuMjI1MDNDOC45NzYwNyA3LjYyMTkxIDkuNDQ2ODcgNy45Mzk4OSA5Ljk2OTE0IDguMTQzODhDMTAuMzM2OCA4LjI4NzUzIDEwLjcyNDIgOC4zNzM3NSAxMS4xMTYzIDguNDA0OTVMMTAuNDg0NiAxMC43MTY0Wk01LjY0NTA3IDcuOTM5MDJDNS4zNjg1OCA3Ljg2MjgzIDUuMDgzMjEgNy44MTQ2NCA0Ljc5Mjc4IDcuNzk5MThMMi45MzAxOCA3LjcwMDA0TDMuNTYzMTMgNS4zODM4Nkw1LjQyNzM5IDUuNDgzMDFDNS43MTczIDUuNDk4NCA2LjAwMjE1IDUuNTQ2NDkgNi4yNzgxNSA1LjYyMjUyTDUuNjQ1MDcgNy45MzkwMlpNOC45NDEzNyA0LjY4NjgyQzkuMDIxNjggNC43ODQ3MyA5LjEwODM1IDQuODc1NTMgOS4xOTY0OCA0Ljk2NDQ3TDkuMTkyMjUgNC45NjMzNUw4LjU3ODA2IDcuMjEwNzdDOC41MDI3OSA3LjEzNDU0IDguNDI1MzYgNy4wNjAzOSA4LjM1NjM0IDYuOTc4MTlMOC4zMjcwNCA2Ljk0Mjg0QzcuNzk3MzUgNi4yOTcyMiA3LjA4MDM2IDUuODM4IDYuMjg2OTYgNS42MTc4MUw2LjkwMzI5IDMuMzYyNTVDNy42OTYyMSAzLjU4MTkyIDguNDEwNjggNC4wMzk5OSA4Ljk0MTM3IDQuNjg2ODJaTTcuMDczNzggMTEuNTQ0OUw3LjAyODE5IDExLjQ5MDJDNi41MDUzNiAxMC44NjIzIDUuODA3ODYgMTAuNDE3MyA1LjAzNTMgMTAuMTk3OEw1LjY1MDA3IDcuOTQ4MjNDNi40NDIwNCA4LjE2Nzk1IDcuMTU3NzQgOC42MjYzNCA3LjY4NjUxIDkuMjcwODNMNy43MTE0NCA5LjMwMDk4QzcuNzgyODQgOS4zODYyOSA3Ljg2Mjc3IDkuNDYzNDcgNy45NDA4NiA5LjU0MjM5TDcuMzIxMDQgMTEuODEwNEM3LjIzNTkgMTEuNzI1MSA3LjE1MTczIDExLjYzODUgNy4wNzM3OCAxMS41NDQ5Wk0xMi40NzA5IDEyLjczMDdMMTAuNjc3NiAxMi45NjA5QzEwLjUwNjQgMTIuOTgyOSAxMC4zMzUxIDEyLjk5MzcgMTAuMTY1IDEyLjk5MzdDMTAuMDY3NCAxMi45OTM3IDkuOTcwODcgMTIuOTg0NyA5Ljg3NDEzIDEyLjk3NzdMMTAuNDg4OCAxMC43Mjg4QzEwLjU5MjkgMTAuNzM2OSAxMC42OTczIDEwLjc0MzMgMTAuODAxOCAxMC43NDMzQzEwLjk3MjMgMTAuNzQzMyAxMS4xNDI5IDEwLjczMjUgMTEuMzEyMyAxMC43MTA3TDEzLjA4NTEgMTAuNDgzMUwxMi40NzA5IDEyLjczMDdaTTEzLjcyMjEgOC4xNTIxOEwxMS45NDY0IDguMzgwMTJDMTEuNjc0MSA4LjQxNDg4IDExLjM5OTcgOC40MTQzIDExLjEyNyA4LjM5MzI5TDExLjc0MjUgNi4xNDEwOEMxMS44NDUyIDYuMTQ5IDExLjk0NzYgNi4xNTgyNSAxMi4wNTEyIDYuMTU4MjVDMTIuMjIxNSA2LjE1ODI1IDEyLjM5MjYgNi4xNDc0NCAxMi41NjM5IDYuMTI1NDRMMTQuMzM4MiA1Ljg5NzY5TDEzLjcyMjEgOC4xNTIxOFoiIGZpbGw9IiMzNkJBM0IiLz4KPC9zdmc+Cg==';
266
+
267
+ const trophySvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguNjI4NzQgMTAuMTI1VjExLjI2MzNDOC42Mjg3NCAxMS4yNjMzIDguMTQ0MTcgMTEuNzYzMiA1Ljk5OTkyIDExLjc2MzJDMy44NTU2NiAxMS43NjMyIDMuMzcxMDkgMTEuMjYzMyAzLjM3MTA5IDExLjI2MzNWMTAuMTI1SDguNjI4NzRaIiBmaWxsPSIjRTZBNDVFIi8+CjxwYXRoIGQ9Ik04LjYyODggMTAuMTI1VjExLjI2MzNDOC42Mjg4IDExLjI2MzMgOC4xNDQyMyAxMS43NjMyIDUuOTk5OTggMTEuNzYzMkM1LjI4MzMxIDExLjc2MzIgNC43NTIwNSAxMS43MDczIDQuMzYyMyAxMS42MzNDNi4zMTYxMiAxMS43NTk0IDguNjI4OCAxMC4xMjUgOC42Mjg4IDEwLjEyNVoiIGZpbGw9IiNEODkyNEUiLz4KPHBhdGggZD0iTTQuODg2OSA5LjU3NDcxQzMuOTkxNDEgOS42NzE1MyAzLjM3MTA5IDkuODgxNTYgMy4zNzEwOSAxMC4xMjUxQzMuMzcxMDkgMTAuNDYwNSA0LjU0ODA2IDEwLjczMjQgNS45OTk5MiAxMC43MzI0QzcuNDUxNzggMTAuNzMyNCA4LjYyODc0IDEwLjQ2MDUgOC42Mjg3NCAxMC4xMjUxQzguNjI4NzQgOS44ODE1OCA4LjAwODU0IDkuNjcxNTcgNy4xMTMyIDkuNTc0NzRMNC44ODY5IDkuNTc0NzFaIiBmaWxsPSIjRkZFRENDIi8+CjxwYXRoIGQ9Ik01LjQzMTA2IDcuMTE0MjZWOC4yNzk0NkM1LjQzMTA2IDkuMDMyNzYgNC45NjYzMyA5LjcwNzk2IDQuMjYyNyA5Ljk3Njk1QzQuMjYyNyA5Ljk3Njk1IDQuNjQ1NjcgMTAuMjgxOSA2LjAwMDIzIDEwLjI4MTlDNy4zNTQ3OSAxMC4yODE5IDcuNzM3NzYgOS45NzY5NSA3LjczNzc2IDkuOTc2OTVDNy4wMzQxMyA5LjcwNzk2IDYuNTY5MzkgOS4wMzI3NiA2LjU2OTM5IDguMjc5NDZWNy4xMTQyNkg1LjQzMTA2WiIgZmlsbD0iI0Y3RDE3RiIvPgo8cGF0aCBkPSJNMi45MTQwNiAwLjc4MzY5MUMyLjkxNDA2IDQuMzEyNjcgMy42MDEyIDcuMzQ4NzMgNS45OTk5NCA3LjM0ODczQzguMzk4NjcgNy4zNDg3MyA5LjA4NTgxIDQuMzEyNjcgOS4wODU4MSAwLjc4MzY5MUgyLjkxNDA2WiIgZmlsbD0iI0VBQjE2NiIvPgo8cGF0aCBkPSJNMi45NDQzNiAyLjAwMjc3SDEuMTU3MDlDMS4wNTkwNiAyLjAwMjc3IDAuOTg2NjMyIDIuMDkxNjcgMS4wMDcwNyAyLjE4NzU1QzEuMTQwODMgMi44MTUyIDEuNzEwNjUgNC44NTM2NCAzLjU0MDk3IDUuMzQ1NTlMMy44NTU3OCA2LjAxNTMzQzEuMjEwODYgNS4zNjYyOSAwLjUzMjQyNiAzLjEyNTYxIDAuMzU4NDA2IDIuMDIyMDVDMC4zMDY3NjEgMS42OTQ1NCAwLjU1Mzc2MyAxLjM5Nzk1IDAuODg1MzIxIDEuMzk3OTVIMi45MjE1MkwyLjk0NDM2IDIuMDAyNzdaIiBmaWxsPSIjRjdEMTdGIi8+CjxwYXRoIGQ9Ik05LjA1NTk0IDIuMDAyNzdIMTAuODQzMkMxMC45NDEyIDIuMDAyNzcgMTEuMDEzNyAyLjA5MTY3IDEwLjk5MzIgMi4xODc1NUMxMC44NTk1IDIuODE1MiAxMC4yODk3IDQuODUzNjQgOC40NTkzNCA1LjM0NTU5TDguMTQ0NTMgNi4wMTUzM0MxMC43ODk0IDUuMzY2MjkgMTEuNDY3OSAzLjEyNTYxIDExLjY0MTkgMi4wMjIwNUMxMS42OTM1IDEuNjk0NTQgMTEuNDQ2NSAxLjM5Nzk1IDExLjExNSAxLjM5Nzk1SDkuMDc4NzlMOS4wNTU5NCAyLjAwMjc3WiIgZmlsbD0iI0Y3RDE3RiIvPgo8cGF0aCBkPSJNNS45OTk5NCAxLjMyNjE3QzcuNzA0MjIgMS4zMjYxNyA5LjA4NTgxIDEuMDgyMzEgOS4wODU4MSAwLjc4MTQ5NUM5LjA4NTgxIDAuNDgwNjc3IDcuNzA0MjIgMC4yMzY4MTYgNS45OTk5NCAwLjIzNjgxNkM0LjI5NTY1IDAuMjM2ODE2IDIuOTE0MDYgMC40ODA2NzcgMi45MTQwNiAwLjc4MTQ5NUMyLjkxNDA2IDEuMDgyMzEgNC4yOTU2NSAxLjMyNjE3IDUuOTk5OTQgMS4zMjYxN1oiIGZpbGw9IiNFNkE0NUUiLz4KPHBhdGggZD0iTTguODIzNjYgMC43ODM2OTFDNy44OTgxOSA3LjAxNjg0IDQuNjE1NzcgNi41NzYxNyA0LjE5MDkyIDYuNDk4NThDNC42NDE1IDcuMDM2OCA1LjIzMzAxIDcuMzQ4NzIgNi4wMDA0MyA3LjM0ODcyQzguMzk5MTYgNy4zNDg3MiA5LjA4NjMgNC4zMTI2NyA5LjA4NjMgMC43ODM2OTFIOC44MjM2NloiIGZpbGw9IiNFNkE0NUUiLz4KPHBhdGggZD0iTTQuNjQyNCAwLjI5MzQ1N0MzLjYyMDA4IDAuMzgyMDYzIDIuOTE0MDYgMC41NjY3NDQgMi45MTQwNiAwLjc4MTM2NUMyLjkxNDA2IDEuMDAxOTQgMy42NTg3OSAxLjE5MTIxIDQuNzI3MTcgMS4yNzY3NUM0LjY3NTggMC45NTA3ODEgNC42NDY1MSAwLjYyMjIxOSA0LjY0MjQgMC4yOTM0NTdaIiBmaWxsPSIjRDg5MjRFIi8+CjxwYXRoIGQ9Ik02LjIyNTQ4IDIuNjAzNjlMNi4zOTQ5IDMuMTI1MTFDNi40MjY2MiAzLjIyMjc1IDYuNTE3NjEgMy4yODg4NiA2LjYyMDI3IDMuMjg4ODZINy4xNjg1M0M3LjM5ODA5IDMuMjg4ODYgNy40OTM1NCAzLjU4MjYxIDcuMzA3ODIgMy43MTc1NUw2Ljg2NDI3IDQuMDM5ODFDNi43ODEyMSA0LjEwMDE1IDYuNzQ2NDYgNC4yMDcxMSA2Ljc3ODE4IDQuMzA0NzVMNi45NDc2MSA0LjgyNjE4QzcuMDE4NTQgNS4wNDQ1IDYuNzY4NjYgNS4yMjYwNiA2LjU4Mjk0IDUuMDkxMTJMNi4xMzkzOSA0Ljc2ODg2QzYuMDU2MzMgNC43MDg1MiA1Ljk0Mzg3IDQuNzA4NTIgNS44NjA4MSA0Ljc2ODg2TDUuNDE3MjYgNS4wOTExMkM1LjIzMTU0IDUuMjI2MDYgNC45ODE2NSA1LjA0NDUgNS4wNTI1OSA0LjgyNjE4TDUuMjIyMDEgNC4zMDQ3NUM1LjI1Mzc0IDQuMjA3MTEgNS4yMTg5OCA0LjEwMDE1IDUuMTM1OTMgNC4wMzk4MUw0LjY5MjM4IDMuNzE3NTVDNC41MDY2NiAzLjU4MjYxIDQuNjAyMSAzLjI4ODg2IDQuODMxNjcgMy4yODg4Nkg1LjM3OTkzQzUuNDgyNTkgMy4yODg4NiA1LjU3MzU4IDMuMjIyNzUgNS42MDUzIDMuMTI1MTFMNS43NzQ3MiAyLjYwMzY5QzUuODQ1NjYgMi4zODUzNiA2LjE1NDU0IDIuMzg1MzYgNi4yMjU0OCAyLjYwMzY5WiIgZmlsbD0iI0Q4OTI0RSIvPgo8cGF0aCBkPSJNNi4yMjU0OCAyLjUwOTk0TDYuMzk0OSAzLjAzMTM2QzYuNDI2NjIgMy4xMjkgNi41MTc2MSAzLjE5NTExIDYuNjIwMjcgMy4xOTUxMUg3LjE2ODUzQzcuMzk4MDkgMy4xOTUxMSA3LjQ5MzU0IDMuNDg4ODYgNy4zMDc4MiAzLjYyMzhMNi44NjQyNyAzLjk0NjA2QzYuNzgxMjEgNC4wMDY0IDYuNzQ2NDYgNC4xMTMzNiA2Ljc3ODE4IDQuMjExTDYuOTQ3NjEgNC43MzI0M0M3LjAxODU0IDQuOTUwNzUgNi43Njg2NiA1LjEzMjMxIDYuNTgyOTQgNC45OTczN0w2LjEzOTM5IDQuNjc1MTFDNi4wNTYzMyA0LjYxNDc3IDUuOTQzODcgNC42MTQ3NyA1Ljg2MDgxIDQuNjc1MTFMNS40MTcyNiA0Ljk5NzM3QzUuMjMxNTQgNS4xMzIzMSA0Ljk4MTY1IDQuOTUwNzUgNS4wNTI1OSA0LjczMjQzTDUuMjIyMDEgNC4yMTFDNS4yNTM3NCA0LjExMzM2IDUuMjE4OTggNC4wMDY0IDUuMTM1OTMgMy45NDYwNkw0LjY5MjM4IDMuNjIzOEM0LjUwNjY2IDMuNDg4ODYgNC42MDIxIDMuMTk1MTEgNC44MzE2NyAzLjE5NTExSDUuMzc5OTNDNS40ODI1OSAzLjE5NTExIDUuNTczNTggMy4xMjkgNS42MDUzIDMuMDMxMzZMNS43NzQ3MiAyLjUwOTk0QzUuODQ1NjYgMi4yOTE2MSA2LjE1NDU0IDIuMjkxNjEgNi4yMjU0OCAyLjUwOTk0WiIgZmlsbD0iI0ZGRURDQyIvPgo8L3N2Zz4K';
268
+
269
+ const casinoChallengeCardCss = ".card {\n width: 308px;\n border-radius: 16px;\n border: 2px solid var(--emw--button-border-color, rgba(221, 255, 207, 0.1019607843));\n background-color: var(--emw--color-background, #141515);\n box-sizing: border-box;\n position: relative;\n}\n@container challenges-container (max-width: 576px) {\n .card {\n width: 100%;\n }\n}\n.card:hover {\n background: linear-gradient(90deg, rgb(0, 62, 92) 0%, rgb(17, 59, 33) 100%);\n cursor: pointer;\n}\n.card__image {\n width: 100%;\n height: 200px;\n border-radius: 16px 16px 0 0;\n}\n@container challenges-container (max-width: 576px) {\n .card__image {\n height: 224px;\n }\n}\n.card__image.grayed {\n opacity: 0.6;\n}\n.card__title {\n color: var(--emw--color-white, #FFFFFF);\n font-size: var(--emw--font-size-medium, 16px);\n margin: 0 0 10px;\n}\n.card__content {\n padding: 20px;\n}\n.card__button {\n margin-top: 20px;\n width: 100%;\n height: 34px;\n background: transparent;\n text-transform: uppercase;\n border-radius: var(--emw--button-border-radius, 99px);\n border: 2px solid var(--emw--button-border-color, #727672);\n font-size: var(--emw--font-size-x-small, 12px);\n font-weight: var(--emw--font-weight-bold, 700);\n color: var(--emw--color-secondary, #e9931e);\n}\n.card__button:hover {\n border-color: var(--emw--color-secondary, #e9931e);\n cursor: pointer;\n}\n.card__button.filled {\n background-color: var(--emw--button-background-primary-color, #18CE51);\n color: var(--emw--color-white, #FFFFFF);\n border-color: var(--emw--color-gray-300, #083B17);\n}\n.card__button.filled:hover {\n color: var(--emw--color-gray-300, #083B17);\n border-color: transparent;\n box-shadow: 0 0 4px 0 rgba(188, 252, 177, 0.2), 0 0 20px 0 rgba(0, 183, 79, 0.5);\n}\n.card__button.grayed {\n color: var(--emw--color-gray-50, #E2E2E2);\n}\n.card__button.grayed:hover {\n color: var(--emw--color-white, #FFFFFF);\n border-color: var(--emw--button-primary-border, #24B24E);\n}\n.card__button:hover {\n border-color: var(--emw--color-secondary, #e9931e);\n cursor: pointer;\n}\n.card__button:disabled, .card__button:disabled:hover {\n color: var(--emw--color-gray-50, #E2E2E2);\n cursor: not-allowed;\n border: 2px solid var(--emw--button-border-color, #727672);\n opacity: 0.7;\n}\n.card__badge {\n position: absolute;\n background: var(--emw--color-white, #FFFFFF);\n top: 6px;\n right: 6px;\n border-radius: 30px;\n padding: 2px 12px;\n line-height: 22px;\n font-weight: var(--emw--font-weight-medium, 500);\n font-size: var(--emw--font-size-x-small, 12px);\n box-shadow: 0 4px 4px 0 var(--emw--button-box-shadow-color, rgba(0, 0, 0, 0.25));\n backdrop-filter: blur(20px);\n box-sizing: border-box;\n}\n.card__badge span {\n font-weight: var(--emw--font-weight-bold, 700);\n}\n.card__badge.expired {\n background: var(--emw--background-gray-color, rgba(250, 250, 250, 0.5019607843));\n border: 1px solid var(--emw--border-gray-color, #292C29);\n font-weight: 700;\n}\n.card__badge.completed {\n background: var(--emw--background-success-color, #C9F0D7);\n border: 1px solid var(--emw--border-success-color, #00B74F);\n color: var(--emw--color-gray-300, #083B17);\n font-weight: 700;\n}\n.card__badge.forfeited {\n background: var(--emw--background-errored-color, #FFE1DF);\n border: 1px solid var(--emw--border-errored-color, #D6421E);\n color: var(--emw--errored-color, #850606);\n font-weight: 700;\n}\n.card__badge.paused {\n background: var(--emw--background-warning-color, #F8E4AD);\n border: 1px solid var(--emw--border-warning-color, #EA9018);\n color: var(--emw--warning-color, #6D460A);\n font-weight: 700;\n}\n\n.info-item {\n line-height: 24px;\n font-size: var(--emw--font-size-small, 14px);\n font-weight: var(--emw--font-weight-bold, 700);\n color: var(--emw--color-primary, #1dbf51);\n}\n@container challenges-container (min-width: 576px) {\n .info-item {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom;\n }\n}\n.info-item.grayed {\n color: var(--emw--disabled-color, #727672);\n}\n.info-item__label {\n font-weight: var(--emw--font-weight-medium, 500);\n margin-right: 3px;\n color: var(--emw--color-gray-150, #C8D6CE);\n}\n.info-item__tooltip {\n position: absolute;\n line-height: 22px;\n padding: 8px 12px;\n border-radius: 8px;\n opacity: 1;\n z-index: 200;\n white-space: nowrap;\n font-size: var(--emw--font-size-x-small, 12px);\n font-weight: var(--emw--font-weight-medium, 500);\n color: var(--emw--color-white, #FFFFFF);\n background-color: var(--emw--color-background-secondary, #1B1C2B);\n}\n.info-item__tooltip::before {\n content: \"\";\n position: absolute;\n top: -5px;\n left: 50%;\n transform: translateX(-50%);\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid var(--emw--color-background-secondary, #1B1C2B);\n width: 0;\n height: 0;\n z-index: 201;\n}\n\n.progress {\n background-color: var(--emw--progress-background, rgba(188, 252, 177, 0.1019607843));\n border-radius: 100px;\n height: 20px;\n margin-bottom: 10px;\n position: relative;\n align-content: center;\n padding: 0 2px;\n box-sizing: border-box;\n}\n.progress.paused {\n opacity: 0.5;\n}\n.progress.grayed {\n mix-blend-mode: luminosity;\n}\n.progress__placeholder {\n height: 20px;\n}\n.progress__icon {\n padding-top: 4px;\n}\n.progress__point {\n position: absolute;\n text-align: center;\n font-size: 12px;\n color: var(--emw--color-gray-150, #C8D6CE);\n font-weight: 700;\n line-height: 19px;\n top: 0;\n height: 19px;\n width: 19px;\n border-radius: 50%;\n}\n.progress__point.start {\n left: 0;\n border: 2px solid var(--emw--button-background-primary-color, #18CE51);\n background: linear-gradient(90deg, var(--emw--progress-active-level, #24AA4D) 0%, var(--emw--progress-active-level-secondary, #113F21) 100%);\n}\n.progress__point.end {\n right: 0;\n border: 2px solid var(--emw--dark-green, #1C8D56);\n background: var(--emw--color-gray-300, #083B17);\n opacity: 0.7;\n}\n.progress__point.finished {\n opacity: 1;\n}\n.progress__point.hidden {\n opacity: 0;\n}\n.progress__bar {\n border-radius: 73px;\n height: 16px;\n background: linear-gradient(90deg, var(--emw--secondary-green, #1E654F) 0%, var(--emw--dark-green, #1C8D56) 100%);\n text-align: end;\n color: var(--emw--color-gray-50, #E2E2E2);\n font-size: 11px;\n font-weight: 700;\n line-height: 16px;\n padding-right: 6px;\n box-sizing: border-box;\n}\n.progress__bar.finished {\n text-align: center;\n}";
270
+ const CasinoChallengeCardStyle0 = casinoChallengeCardCss;
271
+
272
+ const CasinoChallengeCard = class {
273
+ constructor(hostRef) {
274
+ registerInstance(this, hostRef);
275
+ this.timerExpired = createEvent(this, "timerExpired", 7);
276
+ this.calculateTargetValue = (level, currencySymbol) => {
277
+ var _a;
278
+ if (!level)
279
+ return '';
280
+ const minbet = ((_a = level.BetRange) === null || _a === void 0 ? void 0 : _a.MinBet)
281
+ ? `, ${translate('minBet', this.language)} ${currencySymbol + level.BetRange.MinBet}`
282
+ : '';
283
+ switch (level.LevelTargetType) {
284
+ case EChallengeLevelTargetType.Accumulative:
285
+ return `${translate('placeBetsOf', this.language)} ${currencySymbol + level.DisplayCurrencyTargetTurnover + minbet}`;
286
+ case EChallengeLevelTargetType.SingleBet:
287
+ return `${translate('place', this.language)} ${currencySymbol + level.TargetTurnover} ${translate('bet', this.language)}`;
288
+ case EChallengeLevelTargetType.MultipleOneBetSize:
289
+ return `${translate('place', this.language)} ${level.TargetBetCount} ${translate('bets', this.language) + minbet}`;
290
+ }
291
+ };
292
+ this.onMouseEnterHandler = (index, el) => {
293
+ if (el.scrollWidth > el.clientWidth) {
294
+ this.tooltipIndex = index;
295
+ }
296
+ };
297
+ this.onMouseLeaveHandler = () => {
298
+ this.tooltipIndex = null;
299
+ };
300
+ this.getBadgeContent = () => {
301
+ switch (this.challenge.Status) {
302
+ case EChallengeStatus.Expired:
303
+ return translate('expired', this.language);
304
+ case EChallengeStatus.Forfeited:
305
+ return translate('forfeited', this.language);
306
+ case EChallengeStatus.Completed:
307
+ return translate('finished', this.language);
308
+ case EChallengeStatus.Paused:
309
+ return translate('suspended', this.language);
310
+ default:
311
+ return this.timeLeft
312
+ ? [translate('endsIn', this.language), ' - ', h("span", null, this.timeLeft)]
313
+ : translate('expired', this.language);
314
+ }
315
+ };
316
+ this.checkAttrs = () => {
317
+ if (!this.endpoint) {
318
+ this.error = 'Endpoint is missing! Please provide a valid endpointURL.';
319
+ this.hasError = true;
320
+ console.error(this.error);
321
+ }
322
+ return this.hasError;
323
+ };
324
+ this.mbSource = undefined;
325
+ this.clientStyling = undefined;
326
+ this.clientStylingUrl = undefined;
327
+ this.translationUrl = '';
328
+ this.language = 'en';
329
+ this.endpoint = '';
330
+ this.domain = '';
331
+ this.session = '';
332
+ this.challenge = undefined;
333
+ this.isUserAuthorized = true;
334
+ this.tooltipIndex = null;
335
+ this.timeLeft = undefined;
336
+ this.error = '';
337
+ this.hasError = false;
338
+ this.actionLoading = false;
339
+ }
340
+ get infoItems() {
341
+ var _a, _b, _c, _d, _e;
342
+ const level = this.isUserAuthorized
343
+ ? (_a = this.challenge) === null || _a === void 0 ? void 0 : _a.LevelProgresses.find((x) => x.ProgressStatus === EChallengeProgressStatus.InProgress)
344
+ : (_b = this.challenge) === null || _b === void 0 ? void 0 : _b.LevelProgresses.find((x) => x.OrderNumber === 0);
345
+ if (level) {
346
+ const rewardValue = (_c = level.Rewards) === null || _c === void 0 ? void 0 : _c.slice(0, 2).map((r) => r.RewardDescription).join(' + ');
347
+ return [
348
+ {
349
+ lable: translate('totalLevels', this.language),
350
+ value: (_d = this.challenge.LevelProgresses) === null || _d === void 0 ? void 0 : _d.length
351
+ },
352
+ {
353
+ lable: translate('level1', this.language),
354
+ value: this.calculateTargetValue(level, (_e = this.challenge) === null || _e === void 0 ? void 0 : _e.CurrencySymbol)
355
+ },
356
+ {
357
+ lable: translate('get', this.language),
358
+ value: rewardValue
359
+ }
360
+ ];
361
+ }
362
+ return [];
363
+ }
364
+ handleClientStylingChange(newValue, oldValue) {
365
+ if (newValue != oldValue) {
366
+ setClientStyling(this.stylingContainer, this.clientStyling);
367
+ }
368
+ }
369
+ handleClientStylingUrlChange(newValue, oldValue) {
370
+ if (newValue != oldValue) {
371
+ setClientStylingURL(this.stylingContainer, this.clientStylingUrl);
372
+ }
373
+ }
374
+ handleMbSourceChange(newValue, oldValue) {
375
+ if (newValue != oldValue) {
376
+ setStreamStyling(this.stylingContainer, `${this.mbSource}.Style`);
377
+ }
378
+ }
379
+ connectedCallback() {
380
+ this.timerId = setInterval(() => {
381
+ this.updateTime();
382
+ }, 1000);
383
+ }
384
+ componentWillLoad() {
385
+ if (this.translationUrl) {
386
+ resolveTranslationUrl(this.translationUrl);
387
+ }
388
+ this.updateTime();
389
+ }
390
+ componentDidLoad() {
391
+ if (this.stylingContainer) {
392
+ if (this.mbSource)
393
+ setStreamStyling(this.stylingContainer, `${this.mbSource}.Style`);
394
+ if (this.clientStyling)
395
+ setClientStyling(this.stylingContainer, this.clientStyling);
396
+ if (this.clientStylingUrl)
397
+ setClientStylingURL(this.stylingContainer, this.clientStylingUrl);
398
+ }
399
+ }
400
+ disconnectedCallback() {
401
+ if (this.stylingSubscription) {
402
+ this.stylingSubscription.unsubscribe();
403
+ }
404
+ clearInterval(this.timerId);
405
+ }
406
+ updateTime() {
407
+ var _a;
408
+ this.timeLeft = getTimeLeft((_a = this.challenge) === null || _a === void 0 ? void 0 : _a.ExpirationTime);
409
+ if (!this.timeLeft && this.timerExpired) {
410
+ clearInterval(this.timerId);
411
+ this.timerExpired.emit(this.challenge.Id);
412
+ }
413
+ }
414
+ renderInfoItem(item, index) {
415
+ return (h("div", { class: `info-item ${this.isChallengeGrayed}`, onMouseEnter: (e) => this.onMouseEnterHandler(index, e.currentTarget), onMouseLeave: this.onMouseLeaveHandler }, h("span", { class: "info-item__label" }, item.lable), item.value, this.tooltipIndex === index && h("div", { class: "info-item__tooltip" }, item.value)));
416
+ }
417
+ get getCardBadge() {
418
+ return (h("div", { class: `card__badge ${ChallengeStatusDictionary[this.challenge.Status]}` }, this.getBadgeContent()));
419
+ }
420
+ get isChallengeGrayed() {
421
+ return [EChallengeStatus.Expired, EChallengeStatus.Forfeited, EChallengeStatus.Completed].includes(this.challenge.Status)
422
+ ? 'grayed'
423
+ : '';
424
+ }
425
+ get getChallengeProgress() {
426
+ var _a;
427
+ const currLevel = (_a = this.challenge) === null || _a === void 0 ? void 0 : _a.LevelProgresses.find((x) => x.ProgressStatus === EChallengeProgressStatus.InProgress);
428
+ if (!this.isUserAuthorized || !currLevel)
429
+ return null;
430
+ const { Status, LevelProgresses } = this.challenge;
431
+ if (Status === EChallengeStatus.Expired || Status === EChallengeStatus.Started) {
432
+ return h("div", { class: "progress__placeholder" });
433
+ }
434
+ const barValue = Status === EChallengeStatus.Paused
435
+ ? translate('suspended', this.language)
436
+ : Status === EChallengeStatus.Completed
437
+ ? translate('finished', this.language)
438
+ : `${currLevel.ProgressPercentage}%`;
439
+ const isLastLevel = !LevelProgresses.some((x) => x.OrderNumber > currLevel.OrderNumber);
440
+ const secondImgSrc = Status === EChallengeStatus.Completed ? trophySvg : isLastLevel ? finishSvg : '';
441
+ return (h("div", { class: {
442
+ progress: true,
443
+ paused: Status === EChallengeStatus.Paused,
444
+ grayed: Status === EChallengeStatus.Forfeited
445
+ } }, h("div", { class: {
446
+ progress__point: true,
447
+ start: true,
448
+ hidden: Status === EChallengeStatus.Completed
449
+ } }, currLevel.OrderNumber + 1), h("div", { class: {
450
+ progress__bar: true,
451
+ finished: Status === EChallengeStatus.Completed
452
+ }, style: { width: `${currLevel.ProgressPercentage}%` } }, barValue), h("div", { class: {
453
+ progress__point: true,
454
+ end: true,
455
+ finished: Status === EChallengeStatus.Completed
456
+ } }, secondImgSrc ? h("img", { class: "progress__icon", src: secondImgSrc }) : currLevel.OrderNumber + 2)));
457
+ }
458
+ get getCardButton() {
459
+ if (this.isUserAuthorized) {
460
+ if (this.challenge.Status === EChallengeStatus.Started) {
461
+ return (h("button", { class: "card__button filled", disabled: this.actionLoading, onClick: () => this.joinUnjoinProgress(true) }, translate('start', this.language)));
462
+ }
463
+ if (this.challenge.Status === EChallengeStatus.Paused) {
464
+ return (h("button", { class: "card__button grayed", disabled: this.actionLoading, onClick: () => this.joinUnjoinProgress(true) }, translate('resume', this.language)));
465
+ }
466
+ if (this.challenge.Status === EChallengeStatus.InProgress ||
467
+ this.challenge.Status === EChallengeStatus.PendingLevelReward) {
468
+ return (h("button", { class: "card__button grayed", disabled: this.actionLoading, onClick: () => this.joinUnjoinProgress(false) }, translate('pause', this.language)));
469
+ }
470
+ }
471
+ return h("button", { class: "card__button" }, translate('viewDetails', this.language));
472
+ }
473
+ async joinUnjoinProgress(join) {
474
+ var _a;
475
+ const progress = (_a = this.challenge) === null || _a === void 0 ? void 0 : _a.LevelProgresses.find((x) => x.ProgressStatus === EChallengeProgressStatus.InProgress);
476
+ if (!this.checkAttrs()) {
477
+ const url = `${this.endpoint}/challenge/ChangeProgressStatus`;
478
+ const body = Object.assign(Object.assign({ DomainId: this.domain }, (this.session && { PlayerSessionId: this.session })), (join ? { ProgressToActivate: progress.LevelId } : { ProgressToDeactivate: progress.LevelId }));
479
+ this.actionLoading = true;
480
+ return fetch(url, {
481
+ method: 'POST',
482
+ headers: {
483
+ 'Content-Type': 'application/json'
484
+ },
485
+ body: JSON.stringify(body)
486
+ })
487
+ .then((res) => res.json())
488
+ .finally(() => (this.actionLoading = false));
489
+ }
490
+ }
491
+ render() {
492
+ var _a, _b, _c, _d;
493
+ return (h("div", { key: '3405a652d64b5a9d1bc2f43ff226abfefb359158', ref: (el) => (this.stylingContainer = el) }, h("div", { key: 'a84228899e4845a36fa94b11b4e8d5b1fcbc0ae7', class: "card" }, h("img", { key: 'a4b6b6f8161f1184442b1e12c510254323b91e1a', class: `card__image ${this.isChallengeGrayed}`, src: (_b = (_a = this.challenge) === null || _a === void 0 ? void 0 : _a.ChallengePresentation) === null || _b === void 0 ? void 0 : _b.Url }), this.getCardBadge, h("div", { key: '7d24cf5cdec35ab541989308811c12d1d665c891', class: "card__content" }, h("h1", { key: 'b9e045fd05580d001be012903938102dbbc64128', class: "card__title" }, (_d = (_c = this.challenge) === null || _c === void 0 ? void 0 : _c.ChallengePresentation) === null || _d === void 0 ? void 0 : _d.PresentationName), this.getChallengeProgress, this.infoItems.map((x, index) => this.renderInfoItem(x, index)), this.getCardButton))));
494
+ }
495
+ static get watchers() { return {
496
+ "clientStyling": ["handleClientStylingChange"],
497
+ "clientStylingUrl": ["handleClientStylingUrlChange"],
498
+ "mbSource": ["handleMbSourceChange"]
499
+ }; }
500
+ };
501
+ CasinoChallengeCard.style = CasinoChallengeCardStyle0;
502
+
503
+ export { CasinoChallengeCard as C };
@@ -1,2 +1,2 @@
1
- export { C as casino_challenge_card } from './casino-challenge-card-1c0b899b.js';
2
- import './index-d72835d2.js';
1
+ export { C as casino_challenge_card } from './casino-challenge-card-f02ce133.js';
2
+ import './index-98abeec4.js';
@@ -1,5 +1,5 @@
1
- import { p as promiseResolve, b as bootstrapLazy } from './index-d72835d2.js';
2
- export { s as setNonce } from './index-d72835d2.js';
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-98abeec4.js';
2
+ export { s as setNonce } from './index-98abeec4.js';
3
3
  import { g as globalScripts } from './app-globals-0f993ce5.js';
4
4
 
5
5
  /*
@@ -16,5 +16,5 @@ var patchBrowser = () => {
16
16
 
17
17
  patchBrowser().then(async (options) => {
18
18
  await globalScripts();
19
- return bootstrapLazy([["casino-challenge-card",[[1,"casino-challenge-card",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"challenge":[16],"tooltipIndex":[32],"timeLeft":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
19
+ return bootstrapLazy([["casino-challenge-card",[[1,"casino-challenge-card",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"endpoint":[513],"domain":[513],"session":[513],"challenge":[16],"isUserAuthorized":[516,"is-user-authorized"],"tooltipIndex":[32],"timeLeft":[32],"error":[32],"hasError":[32],"actionLoading":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
20
20
  });