@everymatrix/casino-game-thumbnail 1.44.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1492 +0,0 @@
1
- <svelte:options tag={null} />
2
-
3
- <script lang="ts">
4
- import moment from 'moment';
5
- import { onMount, tick } from "svelte";
6
- import { isMobile, getDevice } from 'rvhelper';
7
- import { _, addNewMessages, setLocale} from './i18n';
8
- import { TRANSLATIONS } from './translations';
9
- import { currenciesSymbols } from './currency-symbols';
10
-
11
- export let session:string = '';
12
- export let userid:string = '';
13
- export let lang:string = 'en';
14
- export let clientstyling:string = ''
15
- export let clientstylingurl:string = '';
16
- export let translationurl:string = '';
17
-
18
- export let favorites:string = '';
19
- export let gamethumbnail:string = '';
20
- export let gamename:string = '';
21
- export let gamevendor:string = '';
22
- export let gamelaunchurl:string = '';
23
- export let gameid:string = '';
24
- export let gameisnew:string = '';
25
- export let gametag:string = '';
26
- export let gamefunmode:boolean = false;
27
- export let gamefavorite:boolean = false;
28
- export let gamecellsize = '';
29
- export let showfavoredcategory:boolean = false;
30
- export let showgamename:string = '';
31
- export let currency:string = '';
32
- export let gamepagemodalurl:string = 'false';
33
-
34
- export let endpoint:string = '';
35
- export let categoryid:string = '';
36
-
37
- export let livelobbyendpoint:string = '';
38
- export let connectlive:string = '';
39
- export let visibilityconnect:string = '';
40
- export let integratedgameframedesktop:string = 'false';
41
- export let integratedgameframemobile:string = 'false';
42
- export let casinogamesgridslider:string = 'false';
43
-
44
- let isLoggedIn:boolean = false;
45
- let sessionID:string;
46
- let playerID:string;
47
-
48
- let fav:boolean = false;
49
- let loaded:boolean = false
50
- let image:any;
51
- let userAgent:any = window.navigator.userAgent;
52
- let customStylingContainer:HTMLElement;
53
-
54
- let livegamedata:any;
55
- let liveLobbyConnection:EventSource;
56
- let displaytype:string;
57
- let starttime:any;
58
- let timeformat = 'HH:mm';
59
- let isopen:Boolean;
60
- let betlimit:any = {};
61
- let openhours:any;
62
- let seats:any = [];
63
- let currencySymbol:any='EUR';
64
- let min:any;
65
- let max:any;
66
- let totalseats:any;
67
- let currentoccupiedseats:any;
68
- let currentroulettenumbers:any;
69
- let currentdoubleballroulettenumbers:any;
70
- let vendorcategory:any;
71
- let isdouble:any;
72
- let roulleteresults:any;
73
- let roulettecontainerclassname:any;
74
- let colorsourcearray:any;
75
- let istablefull:boolean;
76
- let oldistablefull:boolean;
77
- let extraclassname:string='';
78
- let roulletteref:any;
79
- let dealername:string;
80
- let numberofplayers:number;
81
- const BLACKJACK = 'blackjack';
82
- const ROULETTE = 'roulette';
83
- const DOUBLE_ROULETTE = 'doubleballroulette';
84
- const DEFAULT_BLACKJACK_TOTAL_SEATS = 7;
85
- const blackjackcategory = [BLACKJACK];
86
- const roulettecategory = [ROULETTE, DOUBLE_ROULETTE];
87
- const DEFAULT_AMOUNT_SEPARATOR = ',';
88
- const numberofdisplayedresults = 5;
89
- export const MONEY_WHEEL_COLOR_MAP = {
90
- '01': 'Yellow',
91
- '02': 'Blue',
92
- 10: 'Green',
93
- 40: 'Red',
94
- '05': 'Purple',
95
- 20: 'Orange',
96
- X7: 'Gold',
97
- X2: 'Gold',
98
- };
99
- export const ROULETTE_COLOR_MAP = {
100
- 1: 'Red',
101
- 3: 'Red',
102
- 5: 'Red',
103
- 7: 'Red',
104
- 9: 'Red',
105
- 12: 'Red',
106
- 14: 'Red',
107
- 16: 'Red',
108
- 18: 'Red',
109
- 19: 'Red',
110
- 21: 'Red',
111
- 23: 'Red',
112
- 25: 'Red',
113
- 27: 'Red',
114
- 30: 'Red',
115
- 32: 'Red',
116
- 34: 'Red',
117
- 36: 'Red',
118
- 2: 'Black',
119
- 4: 'Black',
120
- 6: 'Black',
121
- 8: 'Black',
122
- 10: 'Black',
123
- 11: 'Black',
124
- 13: 'Black',
125
- 15: 'Black',
126
- 17: 'Black',
127
- 20: 'Black',
128
- 22: 'Black',
129
- 24: 'Black',
130
- 26: 'Black',
131
- 28: 'Black',
132
- 29: 'Black',
133
- 31: 'Black',
134
- 33: 'Black',
135
- 35: 'Black',
136
- 0: 'Green',
137
- '00': 'Green',
138
- };
139
-
140
- const setTranslationUrl = ():void => {
141
- let url:string = translationurl;
142
-
143
- fetch(url).then((res:any) => res.json())
144
- .then((res) => {
145
- Object.keys(res).forEach((item:any):void => {
146
- addNewMessages(item, res[item]);
147
- });
148
- }).catch((err:any) => {
149
- console.log(err);
150
- });
151
- }
152
-
153
- Object.keys(TRANSLATIONS).forEach((item:any):void => {
154
- addNewMessages(item, TRANSLATIONS[item]);
155
- });
156
-
157
- const messageHandler = (e:any):void => {
158
- if (e.data.type === `AddFavoriteThumbnail_${gameid}` && !showfavoredcategory) {
159
- gamefavorite = true;
160
- }
161
-
162
- if (e.data.type === `RemoveFavoriteThumbnail_${gameid}` && !showfavoredcategory) {
163
- gamefavorite = false;
164
- }
165
-
166
- if (e.data.type === 'UserSessionID') {
167
- isLoggedIn = true;
168
- sessionID = e.data.session;
169
- playerID = e.data.userID;
170
- }
171
-
172
- if(e.data.type === 'CategoryUpdate') {
173
- livegamedata = null;
174
- }
175
- }
176
-
177
- const toggleGameFrame = (gameId:any):void => {
178
- window.postMessage({ type: 'SearchedItemClicked', gameId }, window.location.href);
179
-
180
- //Analytics event -- if game was searched
181
- if(typeof gtag == 'function'){
182
- gtag('event', 'OpenGame', {
183
- 'context' : 'GameThumbnail--Searched',
184
- 'gameId' : `${gameId}`,
185
- 'userId' : `${playerID ? playerID : 'Not logged in'}`
186
- });
187
- }
188
-
189
- // Case mobile
190
- if (isMobile(userAgent) && integratedgameframemobile == "true") {
191
- window.postMessage({ type: 'OpenGameFrame', gameId, gamefunmode, gamepagemodalurl, isMobile: isMobile(userAgent), source: 'GameThumbnail', identifier: 'Lobby', subVendor: gamevendor, launchUrl: gamelaunchurl }, window.location.href);
192
- } else if(isMobile(userAgent) && integratedgameframemobile == "false") {
193
- window.postMessage({ type: 'ShowGameModal', gameId, isMobile: isMobile(userAgent) }, window.location.href);
194
- }
195
-
196
- // Case desktop
197
- if (!isMobile(userAgent) && integratedgameframedesktop == "true") {
198
- window.postMessage({ type: 'OpenGameFrame', gameId, gamefunmode, gamepagemodalurl, isMobile: isMobile(userAgent), identifier: 'Lobby', subVendor: gamevendor, launchUrl: gamelaunchurl }, window.location.href)
199
- } else if(!isMobile(userAgent) && integratedgameframedesktop == "false") {
200
- window.postMessage({ type: 'ShowGameModal', gameId, isMobile: isMobile(userAgent) }, window.location.href);
201
- }
202
-
203
- };
204
-
205
-
206
- const toggleFavoriteGame = (id:any):void => {
207
-
208
- if (gamefavorite) {
209
- window.postMessage({ type: `SetUnfavoredGame${categoryid}`, id }, window.location.href);
210
- } else {
211
- window.postMessage({ type: `SetFavoredGame${categoryid}`, id }, window.location.href);
212
- }
213
- }
214
-
215
- const setActiveLanguage = ():void => {
216
- setLocale(lang);
217
- }
218
-
219
- const setSession = ():void => {
220
- isLoggedIn = true;
221
- sessionID = session;
222
- playerID = userid;
223
- }
224
-
225
- const setOnLoad = ():void => {
226
- if (image) {
227
- image.onload = () => {
228
- loaded = true;
229
- }
230
- }
231
- }
232
-
233
- const getLiveLobbyURL = (vendorName, id):string => {
234
- return `${endpoint}/v1/encoder/lobby/updates/${vendorName}/${id}`;
235
- }
236
- const connectGameToLiveLobby = ():void => {
237
- if (livelobbyendpoint && EventSource && !liveLobbyConnection) {
238
- if (gamevendor && gameid) {
239
- liveLobbyConnection = new EventSource(getLiveLobbyURL(gamevendor, gameid)),
240
- liveLobbyConnection.addEventListener('message', liveLobbyMessageHandler);
241
- }
242
- }
243
- }
244
- const disconnectGameFromLiveLobby = () => {
245
- if (liveLobbyConnection) {
246
- liveLobbyConnection.close();
247
- liveLobbyConnection = undefined;
248
- }
249
- }
250
-
251
- const setFavorites = ():void => {
252
- if (favorites == 'true') {
253
- fav = true;
254
- }
255
- }
256
-
257
- const liveLobbyMessageHandler = async (event) => {
258
- const { type, data: rawData } = event;
259
- let data;
260
- switch (type) {
261
- case 'message': {
262
- if (rawData) {
263
- try {
264
- data = JSON.parse(rawData);
265
- } catch (err) {
266
- // eslint-disable-next-line no-console
267
- console.error('MESSAGE PARSING ERROR: ', err);
268
- }
269
- }
270
- if (data) {
271
- const {
272
- InternalTableId,
273
- MessageType,
274
- // TakenSeats,
275
- Results,
276
- // Roads, // for baccarat
277
- Seats,
278
- Open,
279
- } = data;
280
- if (InternalTableId) {
281
- switch (MessageType) {
282
- case 'SeatsUpdated': {
283
- if (Seats && Array.isArray(Seats)) {
284
- currentoccupiedseats = Seats;
285
- livegamedata.currentOccupiedSeats = Seats;
286
- await tick();
287
- }
288
- break;
289
- }
290
- case 'RouletteResultsUpdated': {
291
- if (Results && Array.isArray(Results)) {
292
- currentroulettenumbers = Results;
293
- livegamedata.currentRouletteNumbers = Results;
294
- await tick();
295
- }
296
- break;
297
- }
298
- case 'DoubleBallRouletteResultsUpdated': {
299
- if (Results && Array.isArray(Results)) {
300
- currentdoubleballroulettenumbers = Results;
301
- livegamedata.currentDoubleBallRouletteNumbers = Results;
302
- await tick();
303
- }
304
- break;
305
- }
306
- case 'TableOpened': {
307
- isopen = Open;
308
- livegamedata.isOpen = Open;
309
- await tick();
310
- break;
311
- }
312
- case 'TableClosed': {
313
- isopen = Open;
314
- livegamedata.isOpen = Open;
315
- await tick();
316
- break;
317
- }
318
- default: {
319
- // default case
320
- }
321
- }
322
- }
323
- }
324
- }
325
- default: {
326
- // default case
327
- }
328
- }
329
- }
330
- //Revert manually, commented changes are the current ones, will undo after deploy
331
- const setLiveLobbyData = ():void => {
332
- let url:any = new URL(`${livelobbyendpoint.split('?')[0]}`);
333
- url.searchParams.append("platform", getDevice(userAgent));
334
- url.searchParams.append('language', lang);
335
- // let url:URL = new URL(`${endpoint}${livelobbyendpoint}`);
336
-
337
- fetch(url)
338
- .then((res:any) => res.json())
339
- .then((data:any) => {
340
- const { details } = data[0];
341
- livegamedata = details;
342
- });
343
- // .then(res => res.json())
344
- // .then(data => {
345
- // livegamedata = data.items.find(gameDetails => gameDetails.id == gameid);
346
- // });
347
- }
348
- const numberWithSeparators = (value, sep = DEFAULT_AMOUNT_SEPARATOR):string => {
349
- if (value !== undefined && value !== null) {
350
- return `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, sep);
351
- }
352
- return '';
353
- }
354
- const contains = (array, value):any[] => {
355
- return array.some(item => item === value);
356
- }
357
- const getGameComponent = (livegamedata):any => {
358
- let GameComponent = null;
359
- if (livegamedata) {
360
- const { vendorCategory } = livegamedata;
361
- if (vendorCategory) {
362
- const gameTypeToLower = vendorCategory.toLowerCase();
363
- if (contains(blackjackcategory, gameTypeToLower)) {
364
- GameComponent = BLACKJACK;
365
- } else if (contains(roulettecategory, gameTypeToLower)) {
366
- GameComponent = ROULETTE;
367
- }
368
- // else if (contains(baccaratCategory, gameTypeToLower)) {
369
- // GameComponent = 'baccarat';
370
- // } else if (contains(otherLiveGamesCategory, gameTypeToLower)) {
371
- // GameComponent = 'poker';
372
- // }
373
- }
374
- }
375
- return GameComponent;
376
- };
377
- const renderBetLimits = (min, max, currencySymbol):string => {
378
- let rightSideContent;
379
- let leftSideContent;
380
- if (min !== undefined && min !== null && max !== undefined && max !== null) {
381
- leftSideContent = `
382
- <span>
383
- ${currencySymbol}
384
- </span>
385
- ${
386
- numberWithSeparators(min)
387
- }-${
388
- numberWithSeparators(max)
389
- }`;
390
- }
391
- if (numberofplayers) {
392
- rightSideContent = `
393
- <svg fill="var(--emfe-w-color-white, #FFFFFF);" width="13" height="13" viewBox="0 0 13 14" xmlns="http://www.w3.org/2000/svg"><path d="M4 8.2a4.6 4.6 0 0 0 5 0c2.7.8 4 2.6 4 4.8H0c0-2.2 1.3-4 4-4.8zM6.6 8c2 0 3.8-1.7 3.8-4 0-2.1-1.7-4-3.8-4a3.9 3.9 0 0 0-3.8 4c0 2.2 1.7 4 3.8 4z"/></svg>
394
- <span class="NrOfPlayers">${numberofplayers}</span>`;
395
- }
396
- if (!rightSideContent && !leftSideContent) {
397
- return '';
398
- }
399
- return `
400
- <p class="LiveLimits">
401
- <span class="BetLimitLeft">
402
- ${leftSideContent || ''}
403
- </span>
404
- <span class="BetLimitRight">
405
- ${rightSideContent || ''}
406
- </span>
407
- </p>`;
408
- }
409
- const renderDealerName = (dealername) => {
410
- if (!dealername) {
411
- return '';
412
- }
413
- return `
414
- <p class="LiveLimits">
415
- <span class="DealerName">${$_('dealer')}: ${dealername}</span>
416
- </p>
417
- `;
418
- }
419
- const createDisplayData = (livegamedata) => {
420
- totalseats = livegamedata.totalSeats || DEFAULT_BLACKJACK_TOTAL_SEATS;
421
- currentoccupiedseats = livegamedata.currentOccupiedSeats || [];
422
- const seats = [];
423
- for (let i = 1; i <= totalseats; i++) {
424
- seats.push(i);
425
- }
426
- return { seats };
427
- }
428
- const renderSpan = (selectedClass, key, value, colorClass = '') => {
429
- const rouletteItemClassname = `${selectedClass} ${colorClass}`;
430
- const firstMatch = key.toString().match(/first0|second0|0/g);
431
- if (key === 0 || (firstMatch && firstMatch.length !== 0)) {
432
- return `
433
- <span
434
- id=${key}
435
- class="${rouletteItemClassname}"
436
- >
437
- ${value}
438
- </span>
439
- `;
440
- }
441
- return `
442
- <span id=${key} class="${rouletteItemClassname}">
443
- ${value}
444
- </span>
445
- `;
446
- }
447
-
448
- const attachAnimations = () => {
449
- const animatedClassName = 'FirstElementAnimated';
450
- const firstElem = roulletteref.getElementsByClassName('First')[0];
451
- if (firstElem) {
452
- firstElem.classList.add(animatedClassName);
453
- setTimeout(() => {
454
- firstElem.classList.remove(animatedClassName);
455
- }, 2000);
456
- }
457
- }
458
- const updateComponent = () => {
459
- if (livegamedata) {
460
- isopen = livegamedata.isOpen;
461
- betlimit = livegamedata.betLimit || {};
462
- openhours = livegamedata.openHours;
463
- seats = createDisplayData(livegamedata).seats;
464
- if (openhours && openhours.value) {
465
- const { value: { startTime: starttimeRaw /* , timeFormat: timeFormatRaw */, originalTimeFormat } } = openhours;
466
- starttime = starttimeRaw;
467
- timeformat = originalTimeFormat || timeformat;
468
- }
469
- if (isopen) {
470
- displaytype = getGameComponent(livegamedata);
471
- }
472
- currencySymbol = currenciesSymbols[currency];
473
- min = (betlimit.min || {})[currency];
474
- max = (betlimit.max || {})[currency];
475
- currentroulettenumbers = livegamedata.currentRouletteNumbers;
476
- currentdoubleballroulettenumbers = livegamedata.currentDoubleBallRouletteNumbers;
477
- vendorcategory = livegamedata.vendorCategory;
478
- isdouble = vendorcategory.toLowerCase() === DOUBLE_ROULETTE;
479
- roulleteresults = (isdouble ? currentdoubleballroulettenumbers : currentroulettenumbers) || [];
480
- roulettecontainerclassname = 'GameProp LiveProps RoulleteProps';
481
- roulettecontainerclassname += isdouble ? ' Double' : '';
482
- colorsourcearray = contains(roulettecategory, vendorcategory.toLowerCase()) ? ROULETTE_COLOR_MAP : MONEY_WHEEL_COLOR_MAP;
483
- oldistablefull = istablefull;
484
- istablefull = Array.isArray(currentoccupiedseats) && currentoccupiedseats.length === totalseats;
485
- if (livegamedata.dealer) {
486
- dealername = livegamedata.dealer.DealerName;
487
- }
488
- numberofplayers = livegamedata.numberOfPlayers;
489
- extraclassname = 'ListGame';
490
- if(livegamedata.isOpen && livegamedata.currentRouletteNumbers) {
491
- extraclassname += ' GameBackdrop';
492
- }
493
- if (isopen && istablefull && min && max && livegamedata.currentOccupiedSeats) {
494
- extraclassname += ' GameContainerDimmed';
495
- } else {
496
- if (isopen === false && starttime) {
497
- extraclassname += ' GameContainerFullyDimmed';
498
- }
499
- }
500
- if (customStylingContainer) {
501
- if (!oldistablefull && istablefull) {
502
- extraclassname += ' PulsatingRedShadow';
503
- extraclassname = extraclassname.replace(' PulsatingGreenShadow', '');
504
- } else if (oldistablefull && !istablefull) {
505
- extraclassname += ' PulsatingGreenShadow';
506
- extraclassname = extraclassname.replace(' PulsatingRedShadow', '');
507
- }
508
- }
509
- }
510
- }
511
- const toggleConnect = ():void => {
512
- if (connectlive === 'disconnect') {
513
- disconnectGameFromLiveLobby();
514
- } else if (connectlive === 'connect') {
515
- connectGameToLiveLobby();
516
- }
517
- }
518
- const toggleVisibilityConnect = ():void => {
519
- if (visibilityconnect === 'disconnect') {
520
- disconnectGameFromLiveLobby();
521
- } else if (visibilityconnect === 'connect' && connectlive === 'connect') {
522
- connectGameToLiveLobby();
523
- }
524
- }
525
-
526
- const setClientStyling = ():void => {
527
- let sheet = document.createElement('style');
528
- sheet.innerHTML = clientstyling;
529
- customStylingContainer.appendChild(sheet);
530
- }
531
-
532
- const setClientStylingURL = ():void => {
533
- let url:URL = new URL(clientstylingurl);
534
- let cssFile:HTMLElement = document.createElement('style');
535
-
536
- fetch(url.href)
537
- .then((res:any) => res.text())
538
- .then((data:any) => {
539
- cssFile.innerHTML = data
540
-
541
- setTimeout(() => { customStylingContainer.appendChild(cssFile) }, 1);
542
- });
543
- }
544
-
545
- onMount(() => {
546
- window.addEventListener('message', messageHandler, false);
547
-
548
- return () => {
549
- window.removeEventListener('message', messageHandler);
550
- if (liveLobbyConnection) {
551
- liveLobbyConnection.removeEventListener('message', liveLobbyMessageHandler);
552
- }
553
- }
554
- });
555
-
556
- $: connectlive && toggleConnect();
557
- $: visibilityconnect && toggleVisibilityConnect();
558
- $: lang && setActiveLanguage();
559
- $: session && userid && endpoint && setSession();
560
- $: gamethumbnail && setOnLoad();
561
- $: clientstyling && customStylingContainer && setClientStyling();
562
- $: clientstylingurl && customStylingContainer && setClientStylingURL();
563
- $: favorites && setFavorites();
564
- $: translationurl && setTranslationUrl();
565
- $: gamecellsize && clientstylingurl && setClientStylingURL();
566
- $: endpoint && livelobbyendpoint && setLiveLobbyData();
567
- $: livegamedata && updateComponent();
568
- $: roulletteref && roulleteresults && attachAnimations();
569
- </script>
570
-
571
-
572
- <div class={`GameContainer ${extraclassname} ${(casinogamesgridslider == 'true') ? 'CasinoGamesGridSlider' : '' }`} class:WithGameName={showgamename} bind:this={customStylingContainer} >
573
- <div class="GameInnerContainer { (livegamedata && !isopen && openhours.value) || (livegamedata && istablefull) ? 'GameInnerContainerUnavailable' : ''}">
574
- <img src={gamethumbnail} class={`GameBg GameBg-${gamecellsize} ${loaded ? 'Loaded' : ''}`} alt="" bind:this={image} loading="lazy" />
575
- <div class="GameInfoWrapper">
576
- <div class="GameInfo">
577
- <p class="GameInfoName" title="{gamename}">{gamename}</p>
578
- {#if lang}
579
- <button class="GameInfoBtn" on:click="{() => toggleGameFrame(gameid)}">{$_('playNow')}</button>
580
- {/if}
581
- </div>
582
- <span class="GameInfoVendor">
583
- { gamevendor ? gamevendor : '-'}
584
- </span>
585
- </div>
586
- <div class="GameExtraInfoContainer">
587
- <div class="GameExtraInfo">
588
- {#if gameisnew}
589
- <span class="GameExtraInfoLabel NewGameTag">{$_('new')}</span>
590
- {/if}
591
- {#if gametag}
592
- <span class="GameExtraInfoLabel PopularGameTag">{gametag}</span>
593
- {/if}
594
- {#if livegamedata}
595
- {#if !isopen && starttime && timeformat}
596
- <div class="GameProp LiveProps">
597
- <div class="ClosedGame">
598
- {$_('opens')}
599
- <span>
600
- {moment.utc(starttime).local().format(timeformat)}
601
- </span>
602
- </div>
603
- {@html renderDealerName(dealername)}
604
- {@html renderBetLimits(min, max, currencySymbol)}
605
- </div>
606
- {/if}
607
- {#if isopen && displaytype === BLACKJACK}
608
- <div class="GameProp LiveProps BlackjackDisplay" part="GameProp LiveProps BlackjackDisplay">
609
- <div class="LiveIcons">
610
- {#if istablefull}
611
- <span class="FullTable">
612
- {$_('full')}
613
- </span>
614
- {:else}
615
- {#each seats as seatData}
616
- <span class={contains(currentoccupiedseats, seatData.toString()) ? 'ClosedSeat' : 'OpenSeat'}>
617
- <svg xmlns="http://www.w3.org/2000/svg" width="13" height="14" viewBox="0 0 13 14">
618
- <path d="M11.58 6c-1.17 0-2.13.95-2.13 2.12v.4a8.82 8.82 0 00-2.92-.4c-1.54 0-2.45.22-2.92.4v-.4A2.136 2.136 0 001.48 6a1.33 1.33 0 00-.5 2.55c.14.07.24.21.24.37l.26 1.06c0 .96.73 1.75 1.65 1.85a.65.65 0 00.28 1.23.65.65 0 00.3-1.22h5.64a.65.65 0 00.3 1.22.65.65 0 00.28-1.23c.93-.1 1.65-.9 1.65-1.85l.27-1.06c0-.16.1-.3.24-.37A1.33 1.33 0 0011.58 6z"/>
619
- <path d="M4.34 7.5c.55-.1 1.27-.17 2.2-.17.91 0 1.63.07 2.18.17.21-.96.9-1.74 1.8-2.1V4a3.99 3.99 0 00-7.97 0v1.4c.9.36 1.58 1.14 1.79 2.1z"/>
620
- </svg>
621
- </span>
622
- {/each}
623
- {/if}
624
- </div>
625
- {@html renderDealerName(dealername)}
626
- {@html renderBetLimits(min, max, currencySymbol)}
627
- </div>
628
- {:else if isopen && displaytype && displaytype === ROULETTE}
629
- <div class="{roulettecontainerclassname}">
630
- <div class="LiveIcons" bind:this={roulletteref}>
631
- {#each new Array(numberofdisplayedresults) as garbage, i}
632
- {#if roulleteresults && roulleteresults[i]}
633
- {#if isdouble}
634
- <div class="Double">
635
- {@html renderSpan(`LatestResult ${i === 0 ? 'First' : ''}`, `first${i}${roulleteresults[i][0]}`, roulleteresults[i][0], colorsourcearray[roulleteresults[i][0]])}
636
- {@html renderSpan(`LatestResult ${i === 0 ? 'First' : ''}`, `second${i}${roulleteresults[i][1]}`, roulleteresults[i][1], colorsourcearray[roulleteresults[i][1]])}
637
- </div>
638
- {:else}
639
- {@html renderSpan(`LatestResult ${i === 0 ? 'First' : ''}`, i, roulleteresults[i], colorsourcearray[roulleteresults[i]])}
640
- {/if}
641
- {/if}
642
- {/each}
643
- </div>
644
- {@html renderDealerName(dealername)}
645
- {@html renderBetLimits(min, max, currencySymbol)}
646
- </div>
647
- {/if}
648
- {/if}
649
- </div>
650
- {#if !isMobile(userAgent) && gamefavorite && isLoggedIn && favorites}
651
- <div class="FavIconContainer" on:click="{() => toggleFavoriteGame(gameid)}">
652
- <svg version="1.1" class="FavoredIcon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.481 19.481" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 19.481 19.481">
653
- <path style="fill: var(--emfe-w-color-white, #FFFFFF);" d="m10.201,.758l2.478,5.865 6.344,.545c0.44,0.038 0.619,0.587 0.285,0.876l-4.812,4.169 1.442,6.202c0.1,0.431-0.367,0.77-0.745,0.541l-5.452-3.288-5.452,3.288c-0.379,0.228-0.845-0.111-0.745-0.541l1.442-6.202-4.813-4.17c-0.334-0.289-0.156-0.838 0.285-0.876l6.344-.545 2.478-5.864c0.172-0.408 0.749-0.408 0.921,0z"/>
654
- </svg>
655
- </div>
656
- {:else if !isMobile(userAgent) && !gamefavorite && isLoggedIn}
657
- <div class="FavIconContainer" on:click="{() => toggleFavoriteGame(gameid)}">
658
- <svg version="1.1" class="UnfavoredIcon" part="UnfavoredIcon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="20px" y="20px"
659
- viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve"><path style="fill: var(--emfe-w-color-white, #FFFFFF);" d="M511.266,197.256c-1.764-5.431-6.458-9.388-12.108-10.209l-158.722-23.065L269.452,20.155
660
- c-2.527-5.12-7.741-8.361-13.451-8.361c-5.709,0-10.924,3.242-13.451,8.361l-70.988,143.828L12.843,187.047
661
- c-5.65,0.821-10.344,4.779-12.108,10.209c-1.765,5.43-0.293,11.391,3.795,15.376l114.848,111.955L92.27,482.67
662
- c-0.965,5.627,1.349,11.315,5.968,14.67c4.618,3.355,10.74,3.798,15.797,1.142L256,423.846l141.961,74.637
663
- c2.195,1.154,4.591,1.723,6.979,1.723c3.11,0,6.206-0.966,8.818-2.865c4.619-3.356,6.933-9.043,5.968-14.671L392.61,324.587
664
- l114.86-111.954C511.559,208.647,513.031,202.686,511.266,197.256z M366.023,308.608c-3.536,3.446-5.15,8.412-4.314,13.278
665
- l23.311,135.898l-122.038-64.162c-4.37-2.297-9.591-2.297-13.961,0l-122.045,64.163l23.304-135.9
666
- c0.834-4.866-0.779-9.83-4.313-13.276l-98.731-96.244l136.445-19.829c4.886-0.71,9.108-3.778,11.294-8.205L256,60.685
667
- l61.023,123.645c2.186,4.427,6.408,7.496,11.294,8.206l136.447,19.828L366.023,308.608z"/></svg>
668
- </div>
669
- {:else if isMobile(userAgent) && gamefavorite && isLoggedIn && favorites}
670
- <div class="FavIconContainer">
671
- <svg version="1.1" class="FavoredIcon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.481 19.481" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 19.481 19.481">
672
- <path style="fill: var(--emfe-w-color-white, #FFFFFF);" d="m10.201,.758l2.478,5.865 6.344,.545c0.44,0.038 0.619,0.587 0.285,0.876l-4.812,4.169 1.442,6.202c0.1,0.431-0.367,0.77-0.745,0.541l-5.452-3.288-5.452,3.288c-0.379,0.228-0.845-0.111-0.745-0.541l1.442-6.202-4.813-4.17c-0.334-0.289-0.156-0.838 0.285-0.876l6.344-.545 2.478-5.864c0.172-0.408 0.749-0.408 0.921,0z"/>
673
- </svg>
674
- </div>
675
- {/if}
676
- </div>
677
- </div>
678
- {#if showgamename === 'true'}
679
- <p class="GameNameBelow" title="{gamename}">{gamename}</p>
680
- {/if}
681
- </div>
682
-
683
- <style lang="scss">
684
-
685
-
686
-
687
- *, *::before, *::after {
688
- margin: 0;
689
- padding: 0;
690
- box-sizing: border-box;
691
- }
692
-
693
- .GameContainer {
694
- width: 100%;
695
- height: 100%;
696
- position: relative;
697
- }
698
- .GameContainer.WithGameName {
699
- padding-bottom: 20px;
700
- }
701
- .GameInnerContainer {
702
- position: relative;
703
- width: 100%;
704
- height: 100%;
705
- overflow: hidden;
706
- border-radius: 5px;
707
- .GameBg {
708
- width: 100%;
709
- height: 100%;
710
- object-fit: unset;
711
- transition: all 150ms ease-in-out;
712
- &.GameBg-1x2,
713
- &.GameBg-2x1,
714
- &.GameBg-2x2 { object-fit: cover; }
715
- }
716
-
717
- .GameInfoWrapper {
718
- display: none;
719
- position: absolute;
720
- width: 100%;
721
- height: 100%;
722
- top: 0;
723
- right: 0;
724
- bottom: 0;
725
- left: 0;
726
- background: rgba(0, 0, 0, .65);
727
- z-index: 15;
728
- padding: 8px 25px;
729
-
730
- .GameInfo {
731
- display: flex;
732
- width: 100%;
733
- height: 100%;
734
- flex-direction: column;
735
- align-items: center;
736
- justify-content: space-evenly;
737
- &Name {
738
- color: white;
739
- text-align: center;
740
- font-size: 14px;
741
- display: -webkit-box;
742
- -webkit-box-orient: vertical;
743
- -webkit-line-clamp: 2;
744
- overflow: hidden;
745
- text-overflow: ellipsis;
746
- }
747
-
748
- &Btn {
749
- appearance: none;
750
- padding: 6px;
751
- background: var(--emfe-w-casino-color-primary, var(--emfe-w-color-primary, #D0046C));
752
- color: var(--emfe-w-button-typography, var(--emfe-w-color-white, #FFFFFF));
753
- font-size: 16px;
754
- border: 2px solid var(--emfe-w-casino-color-primary, var(--emfe-w-color-primary, #D0046C));
755
- border-radius: 5px;
756
- cursor: pointer;
757
- transition: border 150ms ease-in-out;
758
-
759
- &:hover {
760
- border: 2px solid var(--emfe-w-color-primary-100, #F1BED9);
761
- }
762
- }
763
- }
764
-
765
- .GameInfoVendor {
766
- display: flex;
767
- justify-content: flex-end;
768
- align-items: center;
769
- color: white;
770
- font-size: 12px;
771
- font-weight: normal;
772
- }
773
- }
774
-
775
- .GameExtraInfoContainer{
776
- display: flex;
777
- flex-direction: row;
778
- justify-content: space-between;
779
- align-items: center;
780
- width: 100%;
781
- height: auto;
782
- padding: 4px;
783
- }
784
-
785
- .GameExtraInfo {
786
- display: flex;
787
- justify-content: flex-start;
788
- align-items: center;
789
- width: 100%;
790
- height: 100%;
791
- z-index: 0;
792
- &Label {
793
- font-size: 11px;
794
- padding: 3px;
795
- background-color: var(--emfe-w-casino-color-primary, var(--emfe-w-color-primary, #D0046C));
796
- color: var(--emfe-w-button-typography, var(--emfe-w-color-white, #FFFFFF));
797
- font-weight: bold;
798
- text-transform: uppercase;
799
- border-radius: 5px;
800
- }
801
- }
802
-
803
- &:hover, &:active {
804
- cursor: pointer;
805
-
806
- .GameInfoWrapper{
807
- display: flex;
808
- flex-direction: column;
809
- justify-content: center;
810
- }
811
-
812
- .GameBg {
813
- filter: blur(5px) grayscale(1);
814
- }
815
-
816
- .UnfavoredIcon{
817
- display: flex;
818
- }
819
- }
820
- }
821
-
822
- .GameInnerContainer:hover {
823
- .GameExtraInfo {
824
- opacity: 0.3;
825
- }
826
- }
827
-
828
- .GameNameBelow {
829
- color: var(--emfe-w-color-white, #FFFFFF);
830
- position: relative;
831
- bottom: -5px;
832
- text-align: center;
833
- white-space: nowrap;
834
- overflow: hidden;
835
- text-overflow: ellipsis;
836
- }
837
- .FavoredIcon, .UnfavoredIcon {
838
- width: 20px;
839
- height: 20px;
840
- }
841
- .UnfavoredIcon{
842
- display: none;
843
- }
844
- .FavIconContainer {
845
- display: flex;
846
- justify-content: center;
847
- align-items: center;
848
- cursor: pointer;
849
- z-index: 15;
850
- }
851
-
852
- // LIVE LOBBY DATA STYLING
853
- .GamesWrapper .ListGame:hover .GamePlayNowText {
854
- @media (min-width: 1100px) {
855
- z-index: 4;
856
- }
857
- }
858
- // fix for displaying live game thumbnails that don't have details without backdrop
859
- .ListGame.GameBackdrop {
860
- .GameInnerContainer {
861
- &::after {
862
- content: '';
863
- position: absolute;
864
- top: 0;
865
- right: 0;
866
- bottom: 0;
867
- left: 0;
868
- background: linear-gradient(0deg, rgba(0,0,0,1) 15%, rgba(0,0,0,0) 100%);
869
- }
870
- }
871
- }
872
-
873
- .ListGame .GameInnerContainer {
874
- z-index: 0;
875
-
876
- .GameBg {
877
- z-index: 5;
878
- }
879
-
880
- .GameExtraInfo {
881
- z-index: 10;
882
- }
883
- &::after {
884
- content: '';
885
- position: absolute;
886
- top: 0;
887
- right: 0;
888
- bottom: 0;
889
- left: 0;
890
- }
891
-
892
- &.GameInnerContainerUnavailable {
893
- &::after {
894
- content: '';
895
- position: absolute;
896
- top: 0;
897
- right: 0;
898
- bottom: 0;
899
- left: 0;
900
- background: rgba(0,0,0,0.9);
901
- }
902
- }
903
-
904
- .ListGame.GameContainerDimmed:before {
905
- display: block;
906
- content: ' ';
907
- width: 100%;
908
- height: 100%;
909
- position: absolute;
910
- top: 0;
911
- right: 0;
912
- bottom: 0;
913
- left: 0;
914
- z-index: 5;
915
- background: rgba(0,0,0, .4);
916
- color: var(--emfe-w-color-white, #FFFFFF);
917
- fill: var(--emfe-w-color-white, #FFFFFF);
918
- opacity: 1;
919
- border-radius: 4px;
920
- }
921
-
922
- .ListGame.GameContainerFullyDimmed:before {
923
- display: block;
924
- content: ' ';
925
- width: 100%;
926
- height: 100%;
927
- position: absolute;
928
- top: 0;
929
- right: 0;
930
- bottom: 0;
931
- left: 0;
932
- z-index: 5;
933
- background: rgba(0,0,0, .8);
934
- color: var(--emfe-w-color-white, #FFFFFF);
935
- fill: var(--emfe-w-color-white, #FFFFFF);
936
- opacity: 1;
937
- border-radius: 4px;
938
- }
939
-
940
- .LiveProps {
941
- display: flex;
942
- flex-direction: column;
943
- position: absolute;
944
- bottom: 0px;
945
- right: 0;
946
- width: 100%;
947
- padding: 0;
948
- background: linear-gradient(to top, var(--emfe-w-color-black, #000000), var(--emfe-w-color-black, #000000), transparent);
949
- color: var(--emfe-w-color-white, #FFFFFF);
950
- opacity: 1;
951
- font-size: 14px;
952
- }
953
-
954
- .ListGame:hover .LiveProps,
955
- .ListGameLink:hover .LiveProps {
956
- opacity: 0;
957
- }
958
- //--------------------------------------LIVE LOBBY ANIMATIONS------------------------------------------
959
- // Pulsating animations
960
- @keyframes red-pulse {
961
- 0% {
962
- box-shadow: 0 0 2px 0 rgba(red, 0.75);
963
- }
964
-
965
- 15% {
966
- box-shadow: 0 0 10px 2px rgba(red, 0.75);
967
- }
968
-
969
- 30% {
970
- box-shadow: 0 0 2px 0 rgba(red, 0.75);
971
- }
972
-
973
- 50% {
974
- box-shadow: 0 0 10px 2px rgba(red, 0.75);
975
- }
976
-
977
- 65% {
978
- box-shadow: 0 0 2px 0 rgba(red, 0.75);
979
- }
980
-
981
- 80% {
982
- box-shadow: 0 0 10px 2px rgba(red, 0.75);
983
- }
984
-
985
- 100% {
986
- box-shadow: 0 0 0 0 rgba(red, 0.75);
987
- }
988
- }
989
-
990
- @keyframes green-pulse {
991
- 0% {
992
- box-shadow: 0 0 2px 0 rgba(#56A80A, 0.75);
993
- }
994
-
995
- 15% {
996
- box-shadow: 0 0 10px 2px rgba(#56A80A, 0.75);
997
- }
998
-
999
- 30% {
1000
- box-shadow: 0 0 2px 0 rgba(#56A80A, 0.75);
1001
- }
1002
-
1003
- 50% {
1004
- box-shadow: 0 0 10px 2px rgba(#56A80A, 0.75);
1005
- }
1006
-
1007
- 65% {
1008
- box-shadow: 0 0 2px 0 rgba(#56A80A, 0.75);
1009
- }
1010
-
1011
- 80% {
1012
- box-shadow: 0 0 10px 2px rgba(#56A80A, 0.75);
1013
- }
1014
-
1015
- 100% {
1016
- box-shadow: 0 0 0 0 rgba(#56A80A, 0.75);
1017
- }
1018
- }
1019
- // Flip animation
1020
- @keyframes flip-open {
1021
- 0% {
1022
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
1023
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
1024
- -webkit-transition-timing-function: ease-in;
1025
- transition-timing-function: ease-in;
1026
- opacity: 0;
1027
- }
1028
- 40% {
1029
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
1030
- transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
1031
- -webkit-transition-timing-function: ease-in;
1032
- transition-timing-function: ease-in;
1033
- }
1034
- 60% {
1035
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
1036
- transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
1037
- opacity: 1;
1038
- }
1039
- 80% {
1040
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
1041
- transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
1042
- }
1043
- 100% {
1044
- -webkit-transform: perspective(400px);
1045
- transform: perspective(400px);
1046
- }
1047
- }
1048
-
1049
- .silde-in-from-left {
1050
- -webkit-animation-name: silde-in-from-left;
1051
- animation-name: silde-in-from-left;
1052
- -webkit-animation-duration: 1s;
1053
- animation-duration: 1s;
1054
- -webkit-animation-fill-mode: both;
1055
- animation-fill-mode: both;
1056
- }
1057
- @-webkit-keyframes silde-in-from-left {
1058
- 0% {
1059
- -webkit-transform: translateX(-100%);
1060
- transform: translateX(-100%);
1061
- visibility: visible;
1062
- }
1063
- 100% {
1064
- -webkit-transform: translateX(0);
1065
- transform: translateX(0);
1066
- }
1067
- }
1068
- @keyframes silde-in-from-left {
1069
- 0% {
1070
- -webkit-transform: translateX(-100%);
1071
- transform: translateX(-100%);
1072
- visibility: visible;
1073
- }
1074
- 100% {
1075
- -webkit-transform: translateX(0);
1076
- transform: translateX(0);
1077
- }
1078
- }
1079
-
1080
- @keyframes flip-closed-seat {
1081
- 0% {
1082
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
1083
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
1084
- -webkit-transition-timing-function: ease-in;
1085
- transition-timing-function: ease-in;
1086
- opacity: 0;
1087
- }
1088
- 40% {
1089
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
1090
- transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
1091
- -webkit-transition-timing-function: ease-in;
1092
- transition-timing-function: ease-in;
1093
- }
1094
- 60% {
1095
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
1096
- transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
1097
- opacity: 1;
1098
- }
1099
- 80% {
1100
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
1101
- transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
1102
- }
1103
- 100% {
1104
- -webkit-transform: perspective(400px);
1105
- transform: perspective(400px);
1106
- }
1107
- }
1108
-
1109
- // .Page-LiveCasino .GamesListContainer,
1110
- // .Page-LiveCasino-Child .GamesListContainer,
1111
- // .Page-LiveCasino .OperatorSticky .GamesListContainer,
1112
- // .Page-LiveCasino .CasinoGames .GamesListContainer,
1113
- // .Page-Live-casinoSource .GamesListContainer,
1114
- // .Page-Live-casinoSource .GamesListContainer,
1115
- // .Page-Live-casinoSource .OperatorSticky .GamesListContainer,
1116
- // .Page-Live-casinoSource .CasinoGames .GamesListContainer {
1117
- // overflow: visible;
1118
- // }
1119
-
1120
- .ListGame.PulsatingGreenShadow, .ListGame.PulsatingRedShadow {
1121
- overflow: auto;
1122
- }
1123
-
1124
- .ListGame.PulsatingGreenShadow {
1125
- animation: green-pulse 2s linear;
1126
- }
1127
-
1128
- .ListGame.PulsatingRedShadow {
1129
- animation: red-pulse 2s linear;
1130
- }
1131
-
1132
- .LiveIcons {
1133
- position: relative;
1134
- display: flex;
1135
- padding: 0 16px;
1136
- // flex-wrap: wrap;
1137
- box-sizing: border-box;
1138
- flex-direction: row;
1139
- align-items: center;
1140
- justify-content: flex-start;
1141
- min-height: auto;
1142
- margin-bottom: 5px;
1143
- @media (min-width: 1100px) {
1144
- min-height: auto;
1145
- }
1146
-
1147
- &:first-child {
1148
- margin-left: 0;
1149
- }
1150
-
1151
- &:last-child {
1152
- margin-right: 0;
1153
- }
1154
-
1155
- &.Black, &.Red, &.Green {
1156
- color: var(--emfe-w-color-white, #FFFFFF);
1157
- border: 1px solid var(--emfe-w-color-white, #FFFFFF);
1158
- }
1159
-
1160
- .LatestResult {
1161
- min-width: 12px;
1162
- padding: 2px;
1163
- margin: 0 1px;
1164
- margin-right: 6px;
1165
- font-size: 14px;
1166
- text-align: center;
1167
- @media (min-width: 1100px) {
1168
- min-width: 12px;
1169
- font-size: 14px;
1170
- margin: 0 2px;
1171
- margin-right: 5px;
1172
- padding: 2px;
1173
- }
1174
-
1175
- &.FirstElementAnimated {
1176
- animation: flip-open 2s both;
1177
- -webkit-animation: flip-open 2s both;
1178
- -webkit-backface-visibility: visible;
1179
- backface-visibility: visible;
1180
- }
1181
-
1182
- &.First {
1183
- min-width: 24px;
1184
- &.Black, &.Red, &.Green {
1185
- color: var(--emfe-w-color-white, #FFFFFF);
1186
- border: 1px solid var(--emfe-w-color-white, #FFFFFF);
1187
- }
1188
- &.Black {
1189
- background: var(--emfe-w-color-black, #000000)
1190
- }
1191
- &.Red {
1192
- background: red;
1193
- }
1194
- &.Green {
1195
- background: #56A80A;
1196
- }
1197
- padding: 4px;
1198
- @media (min-width: 1100px) {
1199
- padding: 4px;
1200
- }
1201
- }
1202
- }
1203
-
1204
- .Double {
1205
- display: flex;
1206
- flex-direction: column;
1207
-
1208
- .LatestResult {
1209
- &:first-child {
1210
- margin-bottom: 10px;
1211
- }
1212
- }
1213
-
1214
- &:first-child {
1215
- .LatestResult {
1216
- margin-left: 0;
1217
- margin-bottom: 0;
1218
- }
1219
- }
1220
-
1221
- &:last-child {
1222
- .LatestResult {
1223
- margin-right: 0;
1224
- }
1225
- }
1226
- }
1227
-
1228
- .Black, .Red, .Green {
1229
- background-color: transparent;
1230
- }
1231
-
1232
- .Black {
1233
- color: var(--emfe-w-color-white, #FFFFFF);
1234
- }
1235
-
1236
- .Red {
1237
- color: red;
1238
- }
1239
-
1240
- .Green {
1241
- color: #56A80A;
1242
- }
1243
- }
1244
-
1245
- .Blue {
1246
- color: #4d90a7;
1247
- }
1248
-
1249
- .Red {
1250
- background-color: red;
1251
- }
1252
-
1253
- .Black {
1254
- background-color: var(--emfe-w-color-black, #000000);
1255
- }
1256
-
1257
- .Green {
1258
- background-color: #56A80A;
1259
- }
1260
-
1261
- .White {
1262
- background-color: var(--emfe-w-color-white, #FFFFFF);
1263
- }
1264
-
1265
- .Yellow {
1266
- background-color: #eeca3d;
1267
- }
1268
-
1269
- .Gold {
1270
- background-color: darken(#eeca3d, 30%);
1271
- }
1272
-
1273
- .Orange {
1274
- background-color: darken(#eeca3d, 40%);
1275
- }
1276
-
1277
- .Purple {
1278
- background-color: darken(#f0f, 40%);
1279
- }
1280
-
1281
- .Tie {
1282
- background-color: var(--emfe-w-color-white, #FFFFFF);
1283
- background-image: linear-gradient(135deg, var(--emfe-w-color-white, #FFFFFF) 25%, transparent 25%, transparent 50%, #212121 50%, var(--emfe-w-color-white, #FFFFFF) 75%, transparent 75%, var(--emfe-w-color-white, #FFFFFF));
1284
- }
1285
- .OpenSeat, .ClosedSeat {
1286
- display: inline-block;
1287
- width: 16px;
1288
- height: 16px;
1289
- margin-right: 4px;
1290
- @media (min-width: 768px) {
1291
- width: 16px;
1292
- height: 16px;
1293
- }
1294
- @media (min-width: 1100px) {
1295
- width: 16px;
1296
- height: 16px;
1297
- }
1298
- svg {
1299
- width: 100%;
1300
- height: 100%;
1301
- }
1302
- }
1303
- .OpenSeat {
1304
- animation: flip-closed-seat 2s both;
1305
- -webkit-animation: flip-closed-seat 2s both;
1306
- -webkit-backface-visibility: visible;
1307
- backface-visibility: visible;
1308
- }
1309
- .ClosedSeat {
1310
- animation: flip-open 2s both;
1311
- -webkit-animation: flip-open 2s both;
1312
- -webkit-backface-visibility: visible;
1313
- backface-visibility: visible;
1314
- }
1315
- .OpenSeat svg {
1316
- fill: transparent;
1317
- stroke: var(--emfe-w-color-white, #FFFFFF);
1318
- }
1319
- .ClosedSeat svg {
1320
- fill: var(--emfe-w-color-white, #FFFFFF);
1321
- }
1322
- .FullTable {
1323
- display: flex;
1324
- position: relative;
1325
- z-index: 10;
1326
- height: 20px;
1327
- padding: 1px 4px 1px 0;
1328
- align-items: center;
1329
- border-radius: 3px;
1330
- font-size: 12px;
1331
- white-space: normal;
1332
- text-transform: uppercase;
1333
- -webkit-animation-name: silde-in-from-left;
1334
- animation-name: silde-in-from-left;
1335
- -webkit-animation-duration: 1s;
1336
- animation-duration: 1s;
1337
- -webkit-animation-fill-mode: both;
1338
- animation-fill-mode: both;
1339
- svg {
1340
- width: 100%;
1341
- height: 100%;
1342
- fill: var(--emfe-w-color-white, #FFFFFF);
1343
- }
1344
- &.ClosedSeat {
1345
- margin-right: -3px;
1346
- }
1347
- }
1348
- .PlayersDisplay {
1349
- display: flex;
1350
- flex-direction: row;
1351
- flex-wrap: wrap;
1352
- align-items: center;
1353
- padding: 2px 10px;
1354
- background: linear-gradient(to bottom, rgba(33, 33, 33, .9) 0%, rgba(33, 33, 33, .1) 100%);
1355
- color: var(--emfe-w-color-white, #FFFFFF);
1356
- @media (min-width: 1100px) {
1357
- padding: 2px 16px;
1358
- }
1359
- .PlayersIcon {
1360
- width: 14px;
1361
- height: 14px;
1362
- margin-right: 4px;
1363
- //@media (min-width: 1100px) {
1364
- // width: 1.7rem;
1365
- // height: 1.7rem;
1366
- //}
1367
- svg {
1368
- fill: var(--emfe-w-color-white, #FFFFFF);
1369
- width: 100%;
1370
- height: 100%;
1371
- }
1372
- }
1373
- }
1374
- .ClosedGame {
1375
- opacity: 1;
1376
- z-index: 10;
1377
- padding: 8px 10px;
1378
- color: var(--emfe-w-color-white, #FFFFFF);
1379
- font-size: 18px;
1380
- @media (min-width: 1100px) {
1381
- padding: 8px 16px;
1382
- }
1383
- span {
1384
- font-size: 18px;
1385
- }
1386
- }
1387
- .LiveLimits {
1388
- opacity: 1;
1389
- display: flex;
1390
- flex-direction: row;
1391
- justify-content: space-between;
1392
- padding: 2px 20px 5px 20px;
1393
- color: var(--emfe-w-color-white, #FFFFFF);
1394
- font-weight: normal;
1395
- font-size: 12px;
1396
- @media (min-width: 1100px) {
1397
- padding: 2px 18px 5px 18px;
1398
- }
1399
- span {
1400
- font-size: 12px;
1401
- }
1402
- }
1403
- .Players {
1404
- display: inline-block;
1405
- width: 19px;
1406
- height: 19px;
1407
- }
1408
- }
1409
-
1410
- // Loader for favorites
1411
- .LoaderRipple {
1412
- width: 80px;
1413
- height: 80px;
1414
- position: absolute;
1415
- top: 40px;
1416
- left: -8px;
1417
- div {
1418
- position: absolute;
1419
- border: 4px solid #fff;
1420
- opacity: 1;
1421
- border-radius: 50%;
1422
- animation: ripple-effect 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
1423
- &:nth-child(2) {
1424
- animation-delay: -0.5s;
1425
- }
1426
- }
1427
- }
1428
-
1429
- @keyframes ripple-effect {
1430
- 0% {
1431
- top: 36px;
1432
- left: 36px;
1433
- width: 0;
1434
- height: 0;
1435
- opacity: 0;
1436
- }
1437
- 4.9% {
1438
- top: 36px;
1439
- left: 36px;
1440
- width: 0;
1441
- height: 0;
1442
- opacity: 0;
1443
- }
1444
- 5% {
1445
- top: 36px;
1446
- left: 36px;
1447
- width: 0;
1448
- height: 0;
1449
- opacity: 1;
1450
- }
1451
- 100% {
1452
- top: 0px;
1453
- left: 0px;
1454
- width: 72px;
1455
- height: 72px;
1456
- opacity: 0;
1457
- }
1458
- }
1459
-
1460
- @container (max-width: 480px) {
1461
- .CasinoGamesGridSlider .GameInnerContainer .GameInfoWrapper{
1462
- gap: 0px;
1463
- padding: 8px 10px;
1464
- }
1465
-
1466
- .CasinoGamesGridSlider .GameInnerContainer .GameInfoWrapper .GameInfoName {
1467
- font-size: 12px;
1468
- margin-top: 4px;
1469
- }
1470
-
1471
- .CasinoGamesGridSlider .GameInnerContainer .GameInfoWrapper .GameInfoBtn {
1472
- font-size: 12px;
1473
- padding:2px;
1474
- }
1475
-
1476
- .CasinoGamesGridSlider .GameInnerContainer .GameInfoWrapper .GameInfoVendor {
1477
- font-size: 8px;
1478
- }
1479
-
1480
- .CasinoGamesGridSlider .GameInnerContainer .GameExtraInfoContainer .FavoredIcon,
1481
- .CasinoGamesGridSlider .GameInnerContainer .GameExtraInfoContainer .UnfavoredIcon {
1482
- width: 14px;
1483
- height: 14px;
1484
- }
1485
-
1486
- .CasinoGamesGridSlider .GameInnerContainer .GameExtraInfoContainer .GameExtraInfoLabel {
1487
- font-size: 8px;
1488
- }
1489
-
1490
- }
1491
-
1492
- </style>