@everymatrix/casino-game-thumb-view 1.32.4 → 1.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/baccarat.svg +43 -0
- package/dist/assets/fav.svg +9 -0
- package/dist/assets/favorite.svg +12 -0
- package/dist/assets/seat.svg +6 -0
- package/dist/assets/unfav.svg +20 -0
- package/dist/casino-game-thumb-view/casino-game-thumb-view.esm.js +1 -0
- package/dist/casino-game-thumb-view/index.esm.js +0 -0
- package/dist/casino-game-thumb-view/p-1bbf4b70.entry.js +1 -0
- package/dist/casino-game-thumb-view/p-1e63a1ab.js +1 -0
- package/dist/casino-game-thumb-view/p-2d5f59fe.js +1 -0
- package/dist/casino-game-thumb-view/p-42bf2034.entry.js +1 -0
- package/dist/casino-game-thumb-view/p-46dbb1cb.js +1 -0
- package/dist/casino-game-thumb-view/p-6a6b2a78.js +8 -0
- package/dist/casino-game-thumb-view/p-7ae107ed.entry.js +1 -0
- package/dist/casino-game-thumb-view/p-9cbfffbc.entry.js +1 -0
- package/dist/casino-game-thumb-view/p-d961aec4.entry.js +1 -0
- package/dist/casino-game-thumb-view/p-db43bb56.entry.js +7 -0
- package/dist/cjs/casino-extrainfo-baccarat.cjs.entry.js +366 -0
- package/dist/cjs/casino-extrainfo-blackjack.cjs.entry.js +58 -0
- package/dist/cjs/casino-extrainfo-roulette.cjs.entry.js +45 -0
- package/dist/cjs/casino-game-thumb-view.cjs.js +19 -0
- package/dist/cjs/casino-game-thumb-view_2.cjs.entry.js +1612 -0
- package/dist/cjs/casino-game-thumbnail-betlimit_2.cjs.entry.js +278 -0
- package/dist/cjs/casino-normal-game-thumbnail.cjs.entry.js +23 -0
- package/dist/cjs/game-thumbnail-31d518f0.js +78 -0
- package/dist/cjs/index-65a1d768.js +1796 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/loader.cjs.js +21 -0
- package/dist/cjs/locale.utils-aa160787.js +132 -0
- package/dist/cjs/utils-a0afc0a9.js +5745 -0
- package/dist/collection/collection-manifest.json +19 -0
- package/dist/collection/components/casino-extrainfo-baccarat/casino-extrainfo-baccarat.css +116 -0
- package/dist/collection/components/casino-extrainfo-baccarat/casino-extrainfo-baccarat.js +240 -0
- package/dist/collection/components/casino-extrainfo-blackjack/casino-extrainfo-blackjack.css +64 -0
- package/dist/collection/components/casino-extrainfo-blackjack/casino-extrainfo-blackjack.js +119 -0
- package/dist/collection/components/casino-extrainfo-roulette/casino-extrainfo-roulette.css +40 -0
- package/dist/collection/components/casino-extrainfo-roulette/casino-extrainfo-roulette.js +123 -0
- package/dist/collection/components/casino-game-thumb-view/casino-game-thumb-view.css +361 -0
- package/dist/collection/components/casino-game-thumb-view/casino-game-thumb-view.js +1064 -0
- package/dist/collection/components/casino-game-thumbnail-betlimit/casino-game-thumbnail-betlimit.css +3 -0
- package/dist/collection/components/casino-game-thumbnail-betlimit/casino-game-thumbnail-betlimit.js +86 -0
- package/dist/collection/components/casino-game-thumbnail-extrainfo/casino-game-thumbnail-extrainfo.css +154 -0
- package/dist/collection/components/casino-game-thumbnail-extrainfo/casino-game-thumbnail-extrainfo.js +158 -0
- package/dist/collection/components/casino-game-thumbnail-overlay/casino-game-thumbnail-overlay.css +58 -0
- package/dist/collection/components/casino-game-thumbnail-overlay/casino-game-thumbnail-overlay.js +209 -0
- package/dist/collection/components/casino-normal-game-thumbnail/casino-normal-game-thumbnail.css +3 -0
- package/dist/collection/components/casino-normal-game-thumbnail/casino-normal-game-thumbnail.js +62 -0
- package/dist/collection/constants/game-thumbnail.js +85 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/models/casino-game-thumb-view.js +12 -0
- package/dist/collection/models/currency-symbols.js +173 -0
- package/dist/collection/static/baccarat.svg +43 -0
- package/dist/collection/static/fav.svg +9 -0
- package/dist/collection/static/favorite.svg +12 -0
- package/dist/collection/static/seat.svg +6 -0
- package/dist/collection/static/unfav.svg +20 -0
- package/dist/collection/utils/baccarat-board-svg.js +234 -0
- package/dist/collection/utils/locale.utils.js +128 -0
- package/dist/collection/utils/utils.js +65 -0
- package/dist/components/casino-extrainfo-baccarat.d.ts +11 -0
- package/dist/components/casino-extrainfo-baccarat.js +400 -0
- package/dist/components/casino-extrainfo-blackjack.d.ts +11 -0
- package/dist/components/casino-extrainfo-blackjack.js +92 -0
- package/dist/components/casino-extrainfo-roulette.d.ts +11 -0
- package/dist/components/casino-extrainfo-roulette.js +78 -0
- package/dist/components/casino-game-thumb-view.d.ts +11 -0
- package/dist/components/casino-game-thumb-view.js +1625 -0
- package/dist/components/casino-game-thumbnail-betlimit.d.ts +11 -0
- package/dist/components/casino-game-thumbnail-betlimit.js +6 -0
- package/dist/components/casino-game-thumbnail-betlimit2.js +227 -0
- package/dist/components/casino-game-thumbnail-extrainfo.d.ts +11 -0
- package/dist/components/casino-game-thumbnail-extrainfo.js +6 -0
- package/dist/components/casino-game-thumbnail-extrainfo2.js +96 -0
- package/dist/components/casino-game-thumbnail-overlay.d.ts +11 -0
- package/dist/components/casino-game-thumbnail-overlay.js +6 -0
- package/dist/components/casino-game-thumbnail-overlay2.js +69 -0
- package/dist/components/casino-normal-game-thumbnail.d.ts +11 -0
- package/dist/components/casino-normal-game-thumbnail.js +52 -0
- package/dist/components/game-thumbnail.js +72 -0
- package/dist/components/index.d.ts +26 -0
- package/dist/components/index.js +1 -0
- package/dist/components/locale.utils.js +130 -0
- package/dist/components/utils.js +5739 -0
- package/dist/esm/casino-extrainfo-baccarat.entry.js +362 -0
- package/dist/esm/casino-extrainfo-blackjack.entry.js +54 -0
- package/dist/esm/casino-extrainfo-roulette.entry.js +41 -0
- package/dist/esm/casino-game-thumb-view.js +17 -0
- package/dist/esm/casino-game-thumb-view_2.entry.js +1607 -0
- package/dist/esm/casino-game-thumbnail-betlimit_2.entry.js +273 -0
- package/dist/esm/casino-normal-game-thumbnail.entry.js +19 -0
- package/dist/esm/game-thumbnail-0a56ee03.js +72 -0
- package/dist/esm/index-1e44dd9f.js +1769 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/loader.js +17 -0
- package/dist/esm/locale.utils-e0cf897e.js +130 -0
- package/dist/esm/polyfills/core-js.js +11 -0
- package/dist/esm/polyfills/css-shim.js +1 -0
- package/dist/esm/polyfills/dom.js +79 -0
- package/dist/esm/polyfills/es5-html-element.js +1 -0
- package/dist/esm/polyfills/index.js +34 -0
- package/dist/esm/polyfills/system.js +6 -0
- package/dist/esm/utils-e9314132.js +5739 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/stencil.config.js +40 -0
- package/dist/types/Users/adrian.pripon/Documents/Work/widgets-stencil/packages/casino-game-thumb-view/.stencil/packages/casino-game-thumb-view/stencil.config.d.ts +2 -0
- package/dist/types/components/casino-extrainfo-baccarat/casino-extrainfo-baccarat.d.ts +40 -0
- package/dist/types/components/casino-extrainfo-blackjack/casino-extrainfo-blackjack.d.ts +36 -0
- package/dist/types/components/casino-extrainfo-roulette/casino-extrainfo-roulette.d.ts +21 -0
- package/dist/types/components/casino-game-thumb-view/casino-game-thumb-view.d.ts +221 -0
- package/dist/types/components/casino-game-thumbnail-betlimit/casino-game-thumbnail-betlimit.d.ts +17 -0
- package/dist/types/components/casino-game-thumbnail-extrainfo/casino-game-thumbnail-extrainfo.d.ts +16 -0
- package/dist/types/components/casino-game-thumbnail-overlay/casino-game-thumbnail-overlay.d.ts +31 -0
- package/dist/types/components/casino-normal-game-thumbnail/casino-normal-game-thumbnail.d.ts +7 -0
- package/dist/types/components.d.ts +480 -0
- package/dist/types/constants/game-thumbnail.d.ts +83 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/models/casino-game-thumb-view.d.ts +132 -0
- package/dist/types/models/currency-symbols.d.ts +172 -0
- package/dist/types/stencil-public-runtime.d.ts +1565 -0
- package/dist/types/utils/baccarat-board-svg.d.ts +31 -0
- package/dist/types/utils/locale.utils.d.ts +1 -0
- package/dist/types/utils/utils.d.ts +19 -0
- package/loader/cdn.js +3 -0
- package/loader/index.cjs.js +3 -0
- package/loader/index.d.ts +12 -0
- package/loader/index.es2017.js +3 -0
- package/loader/index.js +4 -0
- package/loader/package.json +10 -0
- package/package.json +2 -3
- package/LICENSE +0 -21
@@ -0,0 +1,128 @@
|
|
1
|
+
const DEFAULT_LANGUAGE = 'en';
|
2
|
+
const SUPPORTED_LANGUAGES = ['ro', 'en', 'hr'];
|
3
|
+
const TRANSLATIONS = {
|
4
|
+
en: {
|
5
|
+
playNow: 'Start now!',
|
6
|
+
new: 'NEW',
|
7
|
+
hot: 'Hot',
|
8
|
+
opens: 'Opens ',
|
9
|
+
full: 'table full - bet behind',
|
10
|
+
dealer: 'Dealer',
|
11
|
+
},
|
12
|
+
'zh-hk': {
|
13
|
+
playNow: '現在開始!',
|
14
|
+
new: '新的',
|
15
|
+
hot: '熱的',
|
16
|
+
opens: '打開 ',
|
17
|
+
full: '滿桌 - 下注',
|
18
|
+
dealer: '經銷商',
|
19
|
+
},
|
20
|
+
de: {
|
21
|
+
playNow: 'Jetzt beginnen!',
|
22
|
+
new: 'NEU',
|
23
|
+
hot: 'Hot',
|
24
|
+
opens: 'Öffnet ',
|
25
|
+
full: 'full - bet behind',
|
26
|
+
dealer: 'Dealer',
|
27
|
+
},
|
28
|
+
it: {
|
29
|
+
playNow: 'Inizia ora!',
|
30
|
+
new: 'NOVITÀ',
|
31
|
+
hot: 'HOT',
|
32
|
+
opens: 'Opens ',
|
33
|
+
full: 'table full - bet behind',
|
34
|
+
dealer: 'Dealer',
|
35
|
+
},
|
36
|
+
fr: {
|
37
|
+
playNow: 'Commencez maintenant',
|
38
|
+
new: 'Nouveau',
|
39
|
+
hot: 'Chaud',
|
40
|
+
opens: 'Ouvre ',
|
41
|
+
full: 'Table pleine - pari derrière',
|
42
|
+
dealer: 'Concessionnaire',
|
43
|
+
},
|
44
|
+
es: {
|
45
|
+
playNow: 'Juega ahora!',
|
46
|
+
new: 'NUEVO',
|
47
|
+
hot: 'HOT',
|
48
|
+
opens: 'Abiertas',
|
49
|
+
full: 'Mesa llena - Apostar de pie',
|
50
|
+
dealer: 'Dealer',
|
51
|
+
},
|
52
|
+
tr: {
|
53
|
+
playNow: 'Şimdi oyna',
|
54
|
+
new: 'YENİ',
|
55
|
+
hot: 'SICAK',
|
56
|
+
opens: 'Açılır ',
|
57
|
+
full: 'masa dolu - bet behind',
|
58
|
+
dealer: 'Dealer',
|
59
|
+
},
|
60
|
+
ru: {
|
61
|
+
playNow: 'Играть сейчас',
|
62
|
+
new: 'НОВАЯ',
|
63
|
+
hot: 'ГОРЯЧЕЙ',
|
64
|
+
opens: 'Opens ',
|
65
|
+
full: 'table full - bet behind',
|
66
|
+
dealer: 'Dealer',
|
67
|
+
},
|
68
|
+
ro: {
|
69
|
+
playNow: 'Joaca acum',
|
70
|
+
new: 'NOU',
|
71
|
+
hot: 'POPULAR',
|
72
|
+
opens: 'Opens ',
|
73
|
+
full: 'table full - bet behind',
|
74
|
+
dealer: 'Dealer',
|
75
|
+
},
|
76
|
+
hr: {
|
77
|
+
playNow: 'Započnite sada!',
|
78
|
+
new: 'NOVO',
|
79
|
+
hot: 'Vruće',
|
80
|
+
opens: 'Otvara ',
|
81
|
+
full: 'stol pun - ulog iza',
|
82
|
+
dealer: 'Djelitelj',
|
83
|
+
},
|
84
|
+
hu: {
|
85
|
+
playNow: 'Játsszon most!',
|
86
|
+
new: 'ÚJ',
|
87
|
+
hot: 'Hot',
|
88
|
+
opens: 'Opens ',
|
89
|
+
full: 'table full - bet behind',
|
90
|
+
dealer: 'Dealer',
|
91
|
+
},
|
92
|
+
pl: {
|
93
|
+
playNow: 'Rozpocznij teraz!',
|
94
|
+
new: 'NOWOŚĆ',
|
95
|
+
hot: 'Hot',
|
96
|
+
opens: 'Opens ',
|
97
|
+
full: 'table full - bet behind',
|
98
|
+
dealer: 'Dealer',
|
99
|
+
},
|
100
|
+
pt: {
|
101
|
+
playNow: 'Comece agora!',
|
102
|
+
new: 'NOVO',
|
103
|
+
hot: 'Hot',
|
104
|
+
opens: 'Abrir ',
|
105
|
+
full: 'Mesa cheia - aposta atrás',
|
106
|
+
dealer: 'Dealer',
|
107
|
+
},
|
108
|
+
sl: {
|
109
|
+
playNow: 'Začnite zdaj!',
|
110
|
+
new: 'NOVO',
|
111
|
+
hot: 'Vroče',
|
112
|
+
opens: 'Opens ',
|
113
|
+
full: 'table full - bet behind',
|
114
|
+
dealer: 'Dealer',
|
115
|
+
},
|
116
|
+
sr: {
|
117
|
+
playNow: 'Započnite sada!',
|
118
|
+
new: 'NOVO',
|
119
|
+
hot: 'Vruće',
|
120
|
+
opens: 'Opens ',
|
121
|
+
full: 'table full - bet behind',
|
122
|
+
dealer: 'Dealer',
|
123
|
+
}
|
124
|
+
};
|
125
|
+
export const translate = (key, customLang) => {
|
126
|
+
const lang = customLang;
|
127
|
+
return TRANSLATIONS[lang !== undefined && SUPPORTED_LANGUAGES.includes(lang) ? lang : DEFAULT_LANGUAGE][key];
|
128
|
+
};
|
@@ -0,0 +1,65 @@
|
|
1
|
+
import moment from 'moment';
|
2
|
+
export function format(first, middle, last) {
|
3
|
+
return ((first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : ''));
|
4
|
+
}
|
5
|
+
const DEFAULT_AMOUNT_SEPARATOR = ',';
|
6
|
+
/**
|
7
|
+
* @name numberWithSeparators
|
8
|
+
* @description A method that format number with seperator
|
9
|
+
* @param {number} value value to format
|
10
|
+
* @param {String} sep separator,default ','
|
11
|
+
* @returns {String} formated value
|
12
|
+
*/
|
13
|
+
export const numberWithSeparators = (value, sep = DEFAULT_AMOUNT_SEPARATOR) => {
|
14
|
+
if (value !== undefined && value !== null) {
|
15
|
+
return `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, sep);
|
16
|
+
}
|
17
|
+
return '';
|
18
|
+
};
|
19
|
+
/**
|
20
|
+
* @name isMobile
|
21
|
+
* @description A method that returns if the browser used to access the app is from a mobile device or not
|
22
|
+
* @param {String} userAgent window.navigator.userAgent
|
23
|
+
* @returns {Boolean} true or false
|
24
|
+
*/
|
25
|
+
export const isMobile = (userAgent) => {
|
26
|
+
return !!(userAgent.toLowerCase().match(/android/i) ||
|
27
|
+
userAgent.toLowerCase().match(/blackberry|bb/i) ||
|
28
|
+
userAgent.toLowerCase().match(/iphone|ipad|ipod/i) ||
|
29
|
+
userAgent.toLowerCase().match(/windows phone|windows mobile|iemobile|wpdesktop/i));
|
30
|
+
};
|
31
|
+
export const addGameTag = (tags) => {
|
32
|
+
if ((tags === null || tags === void 0 ? void 0 : tags.length) === 0)
|
33
|
+
return '';
|
34
|
+
let tagName;
|
35
|
+
let differenceOfTime = 99999999999;
|
36
|
+
let firstToExpire;
|
37
|
+
const currentDate = new Date(Date.now());
|
38
|
+
tags.forEach((tag, index) => {
|
39
|
+
const startDateOfTag = new Date(tag.schedules[0].startTime);
|
40
|
+
const endDateOfTag = new Date(tag.schedules[0].endTime);
|
41
|
+
if (moment(endDateOfTag).diff(currentDate) < differenceOfTime) {
|
42
|
+
differenceOfTime = moment(endDateOfTag).diff(currentDate);
|
43
|
+
firstToExpire = index;
|
44
|
+
}
|
45
|
+
if (moment(currentDate).isAfter(startDateOfTag) && moment(currentDate).isBefore(endDateOfTag)) {
|
46
|
+
tagName = tags[firstToExpire].name;
|
47
|
+
}
|
48
|
+
});
|
49
|
+
return tagName;
|
50
|
+
};
|
51
|
+
export const convertGicBaccaratUpdateItem = (oriItem) => {
|
52
|
+
var _a, _b;
|
53
|
+
return {
|
54
|
+
winner: oriItem.Winner,
|
55
|
+
color: oriItem.Color,
|
56
|
+
location: {
|
57
|
+
column: (_a = oriItem.Location) === null || _a === void 0 ? void 0 : _a.Column,
|
58
|
+
row: (_b = oriItem.Location) === null || _b === void 0 ? void 0 : _b.Row
|
59
|
+
},
|
60
|
+
ties: (oriItem.Ties) | 0,
|
61
|
+
score: oriItem.Score,
|
62
|
+
playerPair: oriItem.PlayerPair,
|
63
|
+
bankerPair: oriItem.BankerPair
|
64
|
+
};
|
65
|
+
};
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
2
|
+
|
3
|
+
interface CasinoExtrainfoBaccarat extends Components.CasinoExtrainfoBaccarat, HTMLElement {}
|
4
|
+
export const CasinoExtrainfoBaccarat: {
|
5
|
+
prototype: CasinoExtrainfoBaccarat;
|
6
|
+
new (): CasinoExtrainfoBaccarat;
|
7
|
+
};
|
8
|
+
/**
|
9
|
+
* Used to define this component and all nested components recursively.
|
10
|
+
*/
|
11
|
+
export const defineCustomElement: () => void;
|
@@ -0,0 +1,400 @@
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
2
|
+
import { W as WINNER_COLOR } from './game-thumbnail.js';
|
3
|
+
import { d as defineCustomElement$3 } from './casino-game-thumbnail-betlimit2.js';
|
4
|
+
import { d as defineCustomElement$2 } from './casino-game-thumbnail-extrainfo2.js';
|
5
|
+
|
6
|
+
var CasinoGameCategory;
|
7
|
+
(function (CasinoGameCategory) {
|
8
|
+
CasinoGameCategory["ROULETTE"] = "ROULETTE";
|
9
|
+
CasinoGameCategory["POKER"] = "POKER";
|
10
|
+
CasinoGameCategory["BLACKJACK"] = "BLACKJACK";
|
11
|
+
})(CasinoGameCategory || (CasinoGameCategory = {}));
|
12
|
+
var BaccaratWinner;
|
13
|
+
(function (BaccaratWinner) {
|
14
|
+
BaccaratWinner["PLAYER"] = "Player";
|
15
|
+
BaccaratWinner["WINNER"] = "Banker";
|
16
|
+
BaccaratWinner["TIE"] = "Tie";
|
17
|
+
})(BaccaratWinner || (BaccaratWinner = {}));
|
18
|
+
|
19
|
+
const BACCARAT_ROW = 6;
|
20
|
+
const BACCARTAT_COLUMN = 40;
|
21
|
+
const TIE_ANGLE = 135;
|
22
|
+
const PLAYER_ANGLE = 45;
|
23
|
+
class BaccaratSvg {
|
24
|
+
constructor() {
|
25
|
+
this.svgNS = 'http://www.w3.org/2000/svg';
|
26
|
+
this.svgVersion = '1.1';
|
27
|
+
this.markGroupExtraClass = {
|
28
|
+
name: '',
|
29
|
+
strokeWidth: 1.8,
|
30
|
+
cellPadding: 6
|
31
|
+
};
|
32
|
+
}
|
33
|
+
resetSvg() {
|
34
|
+
this.svgGroupObj.innerHTML = '';
|
35
|
+
}
|
36
|
+
createTag(tag, attrs) {
|
37
|
+
let oTag = document.createElementNS(this.svgNS, tag);
|
38
|
+
Object.keys(attrs).forEach((attr) => {
|
39
|
+
oTag.setAttribute(attr, attrs[attr]);
|
40
|
+
});
|
41
|
+
return oTag;
|
42
|
+
}
|
43
|
+
;
|
44
|
+
//Y1 = Y2, X1=0;
|
45
|
+
createHLine(lineIdx) {
|
46
|
+
return this.createTag('line', {
|
47
|
+
'x1': 0,
|
48
|
+
'x2': this.svgWidth,
|
49
|
+
'y1': lineIdx * this.cellHeight,
|
50
|
+
'y2': lineIdx * this.cellHeight
|
51
|
+
});
|
52
|
+
}
|
53
|
+
createVLine(lineIdx) {
|
54
|
+
return this.createTag('line', {
|
55
|
+
'x1': lineIdx * this.cellWidth,
|
56
|
+
'x2': lineIdx * this.cellWidth,
|
57
|
+
'y1': 0,
|
58
|
+
'y2': this.svgHeight
|
59
|
+
});
|
60
|
+
}
|
61
|
+
createBaccaratBoard(parentEle) {
|
62
|
+
this.parentEle = parentEle;
|
63
|
+
this.svgWidth = parentEle.clientWidth;
|
64
|
+
this.cellWidth = this.svgWidth / BACCARTAT_COLUMN;
|
65
|
+
this.cellHeight = this.cellWidth;
|
66
|
+
this.svgHeight = this.cellHeight * BACCARAT_ROW;
|
67
|
+
let dynamicStyles = {};
|
68
|
+
if (this.svgWidth < 300) {
|
69
|
+
dynamicStyles = {
|
70
|
+
name: 'Min',
|
71
|
+
strokeWidth: 0.8,
|
72
|
+
cellPadding: 2
|
73
|
+
};
|
74
|
+
}
|
75
|
+
else if (this.svgWidth >= 300 && this.svgWidth < 500) {
|
76
|
+
dynamicStyles = {
|
77
|
+
name: 'Mid',
|
78
|
+
strokeWidth: 1.5,
|
79
|
+
cellPadding: 3.8
|
80
|
+
};
|
81
|
+
}
|
82
|
+
this.markGroupExtraClass = Object.assign(Object.assign({}, this.markGroupExtraClass), dynamicStyles);
|
83
|
+
this.markGroupExtraClass.fontSize = this.cellWidth - this.markGroupExtraClass.cellPadding * 0.8;
|
84
|
+
this.markGroupExtraClass.pairDotR = this.markGroupExtraClass.strokeWidth / 2;
|
85
|
+
this.markGroupExtraClass.pairBackDotR = this.markGroupExtraClass.pairDotR + 0.4;
|
86
|
+
let svgObj = this.createTag('svg', { 'xmlns': this.svgNS, 'version': this.svgVersion, 'width': '100%' });
|
87
|
+
let svgGroup = this.createTag('g', {
|
88
|
+
'style': 'cursor: pointer',
|
89
|
+
'stroke': '#a1acb696',
|
90
|
+
'stroke-width': '0.6px',
|
91
|
+
'fill': 'transparent'
|
92
|
+
});
|
93
|
+
let markGroup = this.createTag('g', {
|
94
|
+
'style': 'cursor: pointer', 'class': `BoardRoundsGroup ${this.markGroupExtraClass.name}`,
|
95
|
+
'stroke-width': this.markGroupExtraClass.strokeWidth, 'fill': 'transparent'
|
96
|
+
});
|
97
|
+
for (let i = 0; i < BACCARAT_ROW + 1; i++) {
|
98
|
+
svgGroup.appendChild(this.createHLine(i));
|
99
|
+
}
|
100
|
+
for (let i = 0; i < BACCARTAT_COLUMN + 1; i++) {
|
101
|
+
svgGroup.appendChild(this.createVLine(i));
|
102
|
+
}
|
103
|
+
parentEle.setAttribute('style', `height: ${this.svgHeight}px`);
|
104
|
+
svgObj.appendChild(svgGroup);
|
105
|
+
svgObj.appendChild(markGroup);
|
106
|
+
parentEle.replaceChildren(svgObj);
|
107
|
+
this.svgGroupObj = markGroup;
|
108
|
+
}
|
109
|
+
getRadius() {
|
110
|
+
return (this.cellHeight - this.markGroupExtraClass.cellPadding) / 2;
|
111
|
+
}
|
112
|
+
addAnimate(objToAddAnimate) {
|
113
|
+
let animate = this.createTag('animate', {
|
114
|
+
'attributeName': 'opacity', attributeType: 'XML', 'from': '0', to: 0.8, repeatCount: '5',
|
115
|
+
begin: '0s', dur: '1.5s', 'calcMode': 'spline', keySplines: "0.1 0.8 0.9 0.1", fill: 'freeze'
|
116
|
+
});
|
117
|
+
objToAddAnimate.appendChild(animate);
|
118
|
+
}
|
119
|
+
markNewRound(x, y, options, markNew = false) {
|
120
|
+
let centre = this.getCenterPoint(x, y);
|
121
|
+
let svgG = this.createTag('g', {
|
122
|
+
'class': `Round ${markNew ? 'NewRound' : ''} ${options.winner === BaccaratWinner.TIE ? 'Tie' : ''}`,
|
123
|
+
'part': `Round ${markNew ? 'NewRound' : ''}`, 'opacity': markNew ? 0.1 : 1
|
124
|
+
});
|
125
|
+
//RoundWinner: TIE
|
126
|
+
if (options.winner === BaccaratWinner.TIE) {
|
127
|
+
svgG.appendChild(this.createTieSvg(x, y));
|
128
|
+
this.svgGroupObj.appendChild(svgG);
|
129
|
+
if (options.ties && options.ties > 1) {
|
130
|
+
let text = this.createTag('text', {
|
131
|
+
'x': centre.cx - 1.5,
|
132
|
+
'y': centre.cy + this.markGroupExtraClass.fontSize / 2 - 1.1,
|
133
|
+
'fill': '#12153d',
|
134
|
+
'class': 'TieNumber',
|
135
|
+
'font-size': `${this.markGroupExtraClass.fontSize}px`,
|
136
|
+
'font-weight': this.markGroupExtraClass.fontSize > 7 ? 'bold' : ''
|
137
|
+
});
|
138
|
+
text.innerHTML = options.ties;
|
139
|
+
svgG.appendChild(text);
|
140
|
+
}
|
141
|
+
this.svgGroupObj.appendChild(svgG);
|
142
|
+
return;
|
143
|
+
}
|
144
|
+
svgG.appendChild(this.createTag('circle', {
|
145
|
+
r: this.getRadius(),
|
146
|
+
'class': 'Round',
|
147
|
+
'stroke': options.color,
|
148
|
+
'cx': x * this.cellHeight + (this.cellHeight) / 2,
|
149
|
+
'cy': y * this.cellHeight + (this.cellHeight) / 2
|
150
|
+
}));
|
151
|
+
if (options.ties) {
|
152
|
+
svgG.appendChild(this.createTieSvg(x, y));
|
153
|
+
if (options.ties > 1) {
|
154
|
+
let text = this.createTag('text', {
|
155
|
+
'x': centre.cx - 1.5,
|
156
|
+
'y': centre.cy + this.markGroupExtraClass.fontSize / 2 - 1.1,
|
157
|
+
'fill': '#12153d',
|
158
|
+
'class': 'TieNumber',
|
159
|
+
'font-size': `${this.markGroupExtraClass.fontSize}px`,
|
160
|
+
'font-weight': this.markGroupExtraClass.fontSize > 7 ? 'bold' : ''
|
161
|
+
});
|
162
|
+
text.innerHTML = options.ties;
|
163
|
+
svgG.appendChild(text);
|
164
|
+
}
|
165
|
+
this.svgGroupObj.appendChild(svgG);
|
166
|
+
}
|
167
|
+
if (options.bankerPair) {
|
168
|
+
let dots = this.createPairDot(x, y, options.pairColor.banker, PLAYER_ANGLE + 180);
|
169
|
+
dots.forEach(dot => svgG.appendChild(dot));
|
170
|
+
}
|
171
|
+
if (options.playerPair) {
|
172
|
+
let dots = this.createPairDot(x, y, options.pairColor.player, PLAYER_ANGLE);
|
173
|
+
dots.forEach(dot => svgG.appendChild(dot));
|
174
|
+
}
|
175
|
+
if (options.includeAnimate) {
|
176
|
+
this.addAnimate(svgG);
|
177
|
+
}
|
178
|
+
this.svgGroupObj.appendChild(svgG);
|
179
|
+
}
|
180
|
+
markRound(x, y, color, includeAnimate = false) {
|
181
|
+
let circleSvg = this.createTag('circle', {
|
182
|
+
r: this.getRadius(),
|
183
|
+
'class': 'Round',
|
184
|
+
'stroke': color,
|
185
|
+
'cx': x * this.cellHeight + (this.cellHeight) / 2,
|
186
|
+
'cy': y * this.cellHeight + (this.cellHeight) / 2
|
187
|
+
});
|
188
|
+
if (includeAnimate) {
|
189
|
+
this.addAnimate(circleSvg);
|
190
|
+
}
|
191
|
+
this.svgGroupObj.appendChild(circleSvg);
|
192
|
+
}
|
193
|
+
getCenterPoint(x, y) {
|
194
|
+
return {
|
195
|
+
'cx': x * this.cellHeight + (this.cellHeight) / 2,
|
196
|
+
'cy': y * this.cellHeight + (this.cellHeight) / 2
|
197
|
+
};
|
198
|
+
}
|
199
|
+
createTieSvg(x, y) {
|
200
|
+
let centerXY = this.getCenterPoint(x, y), angle = TIE_ANGLE, r = (this.cellHeight) / 2;
|
201
|
+
const x1 = centerXY.cx + r * Math.cos(angle * Math.PI / 180);
|
202
|
+
const y1 = centerXY.cy + r * Math.sin(angle * Math.PI / 180);
|
203
|
+
const x2 = centerXY.cx + r * Math.cos((angle + 180) * Math.PI / 180);
|
204
|
+
const y2 = centerXY.cy + r * Math.sin((angle + 180) * Math.PI / 180);
|
205
|
+
return this.createTag('line', {
|
206
|
+
x1, y1, x2, y2, 'class': 'Tie',
|
207
|
+
'stroke': 'green', 'opacity': '0.8', 'stroke-width': '1.8px'
|
208
|
+
});
|
209
|
+
}
|
210
|
+
createPairDot(x, y, pairColor, angle) {
|
211
|
+
let centerXY = this.getCenterPoint(x, y), r = this.getRadius() + this.markGroupExtraClass.pairDotR;
|
212
|
+
const cx = centerXY.cx + r * Math.cos(angle * Math.PI / 180);
|
213
|
+
const cy = centerXY.cy + r * Math.sin(angle * Math.PI / 180);
|
214
|
+
return [
|
215
|
+
this.createTag('circle', {
|
216
|
+
cx, cy, r: this.markGroupExtraClass.pairBackDotR, 'class': 'DotBack',
|
217
|
+
'stroke': '#fff'
|
218
|
+
}),
|
219
|
+
this.createTag('circle', {
|
220
|
+
cx, cy, r: this.markGroupExtraClass.pairDotR, 'class': 'Dot',
|
221
|
+
'stroke': pairColor, 'stroke-width': '0.8px', 'fill': pairColor
|
222
|
+
})
|
223
|
+
];
|
224
|
+
}
|
225
|
+
markTie(x, y, includeAnimate = false) {
|
226
|
+
let line = this.createTieSvg(x, y);
|
227
|
+
if (includeAnimate) {
|
228
|
+
this.addAnimate(line);
|
229
|
+
}
|
230
|
+
this.svgGroupObj.appendChild(line);
|
231
|
+
}
|
232
|
+
markPair(x, y, pairColor, angle) {
|
233
|
+
let centerXY = this.getCenterPoint(x, y), r = this.getRadius() + this.markGroupExtraClass.pairDotR;
|
234
|
+
const cx = centerXY.cx + r * Math.cos(angle * Math.PI / 180);
|
235
|
+
const cy = centerXY.cy + r * Math.sin(angle * Math.PI / 180);
|
236
|
+
this.svgGroupObj.appendChild(this.createTag('circle', {
|
237
|
+
cx, cy, r: this.markGroupExtraClass.pairBackDotR, 'class': 'DotBack',
|
238
|
+
'stroke': '#fff'
|
239
|
+
}));
|
240
|
+
this.svgGroupObj.appendChild(this.createTag('circle', {
|
241
|
+
cx, cy, r: this.markGroupExtraClass.pairDotR, 'class': 'Dot',
|
242
|
+
'stroke': pairColor, 'stroke-width': '0.8px', 'fill': pairColor
|
243
|
+
}));
|
244
|
+
}
|
245
|
+
markBankerPair(x, y, pairColor) {
|
246
|
+
this.markPair(x, y, pairColor, 225);
|
247
|
+
}
|
248
|
+
markPlayerPair(x, y, pairColor) {
|
249
|
+
this.markPair(x, y, pairColor, 45);
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
const casinoExtrainfoBaccaratCss = ":host {\n display: block;\n}\n\n.BaccaratBoard {\n container-type: inline-size;\n min-height: 30px;\n width: 100%;\n}\n.BaccaratBoard svg {\n background: #fff;\n opacity: 0.99;\n height: 100%;\n}\n\n.LiveProps.BaccaratProps div.LiveIcons {\n margin-bottom: 0px;\n padding: 0px;\n width: 100%;\n}\n\nsvg circle {\n transition: stroke-dashoffset 0s ease 2s;\n}\n\ng.BoardRoundsGroup {\n stroke-width: 1.8px;\n}\n\n@container (max-width: 300px) {\n g.BoardRoundsGroup {\n stroke-width: 0.9px;\n }\n}\nsvg .Round.NewRound {\n opacity: 1;\n -webkit-animation-name: fadeInFromNone;\n animation-name: fadeInFromNone;\n -webkit-animation-duration: 1.5s;\n animation-duration: 1.5s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n}\n\n@-webkit-keyframes fadeInFromNone {\n 0% {\n display: none;\n opacity: 0;\n }\n 1% {\n display: block;\n opacity: 0;\n }\n 100% {\n display: block;\n opacity: 1;\n }\n}\n@-moz-keyframes fadeInFromNone {\n 0% {\n display: none;\n opacity: 0;\n }\n 1% {\n display: block;\n opacity: 0;\n }\n 100% {\n display: block;\n opacity: 1;\n }\n}\n@-o-keyframes fadeInFromNone {\n 0% {\n display: none;\n opacity: 0;\n }\n 1% {\n display: block;\n opacity: 0;\n }\n 30% {\n display: block;\n opacity: 1;\n }\n 60% {\n display: block;\n opacity: 0;\n }\n 100% {\n display: block;\n opacity: 1;\n }\n}\n@keyframes fadeInFromNone {\n 0% {\n display: none;\n opacity: 0;\n }\n 1% {\n display: block;\n opacity: 0;\n }\n 30% {\n display: block;\n opacity: 1;\n }\n 60% {\n display: block;\n opacity: 0;\n }\n 100% {\n display: block;\n opacity: 1;\n }\n}";
|
254
|
+
|
255
|
+
const CasinoExtrainfoBaccarat$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
256
|
+
constructor() {
|
257
|
+
super();
|
258
|
+
this.__registerHost();
|
259
|
+
this.baccaratSvg = new BaccaratSvg();
|
260
|
+
this.isBoardInited = false;
|
261
|
+
this.filledCells = [];
|
262
|
+
}
|
263
|
+
gameDetailsHandler(newVal, oldVal) {
|
264
|
+
if (newVal.isOpen && (!oldVal || !oldVal.isOpen)) {
|
265
|
+
if (this.showRoundBoard) {
|
266
|
+
setTimeout(() => {
|
267
|
+
this.initBaccaratRoundsBoard();
|
268
|
+
}, 100);
|
269
|
+
}
|
270
|
+
}
|
271
|
+
}
|
272
|
+
async onGameLoaded(gameInfo) {
|
273
|
+
var _a;
|
274
|
+
this.gameInfo = gameInfo;
|
275
|
+
this.gameDetails = this.gameInfo.details;
|
276
|
+
(_a = this.infoWrapperRef) === null || _a === void 0 ? void 0 : _a.onGameLoaded(this.gameInfo);
|
277
|
+
}
|
278
|
+
/**
|
279
|
+
* Called when received update from updater
|
280
|
+
* @param details
|
281
|
+
*/
|
282
|
+
async onGameDetailUpdated(details) {
|
283
|
+
var _a;
|
284
|
+
this.gameInfo.details = this.gameDetails = details;
|
285
|
+
this.gameDetails = Object.assign({}, this.gameDetails);
|
286
|
+
(_a = this.infoWrapperRef) === null || _a === void 0 ? void 0 : _a.onGameDetailUpdated(details);
|
287
|
+
// init board when the svg board init finished
|
288
|
+
setTimeout(() => {
|
289
|
+
this.isBoardInited = true;
|
290
|
+
}, 200);
|
291
|
+
}
|
292
|
+
async onBaccaratResultChanged(result) {
|
293
|
+
if (!result || !this.baccaratRef || this.isResetingRoundBoard) {
|
294
|
+
return;
|
295
|
+
}
|
296
|
+
// For Tie round to mark, latestRound
|
297
|
+
let latestRound, resetRoundBoardCells = () => {
|
298
|
+
console.log('Reset Baccarat Board.');
|
299
|
+
this.filledCells = [];
|
300
|
+
this.baccaratSvg.resetSvg();
|
301
|
+
latestRound = null;
|
302
|
+
};
|
303
|
+
// Reset round board to avoid the reset(result==[]) update come earlier than last round,
|
304
|
+
// Ignore if the result.length == 0 for temporary
|
305
|
+
if (this.isBoardInited &&
|
306
|
+
(result.length == 0 ||
|
307
|
+
(result.length == 1 &&
|
308
|
+
(result[0].winner == BaccaratWinner.TIE ||
|
309
|
+
(result[0].location.column == 0 && result[0].location.row == 0))))) {
|
310
|
+
this.isResetingRoundBoard = true;
|
311
|
+
resetRoundBoardCells();
|
312
|
+
setTimeout(() => {
|
313
|
+
this.isResetingRoundBoard = false;
|
314
|
+
}, 1000);
|
315
|
+
}
|
316
|
+
result.forEach((item, i) => {
|
317
|
+
//Mark the Tie when Tie round is the first cell(0,0)
|
318
|
+
if (item.winner == BaccaratWinner.TIE) {
|
319
|
+
if (i == result.length - 1 &&
|
320
|
+
(!latestRound ||
|
321
|
+
(latestRound &&
|
322
|
+
latestRound.location.column == 0 &&
|
323
|
+
latestRound.location.row == 0))) {
|
324
|
+
let firstTieCellKey = '0-0-T';
|
325
|
+
if (this.filledCells.indexOf(firstTieCellKey) == -1) {
|
326
|
+
this.baccaratSvg.markNewRound(0, 0, Object.assign(Object.assign({}, item), { pairColor: WINNER_COLOR }), this.isBoardInited);
|
327
|
+
this.filledCells.push(firstTieCellKey);
|
328
|
+
}
|
329
|
+
}
|
330
|
+
return;
|
331
|
+
}
|
332
|
+
//cellKey to mark if a round has been marked
|
333
|
+
const cellKey = `${item.location.column}-${item.location.row}`;
|
334
|
+
const tCellKey = `${cellKey}-T`;
|
335
|
+
if (item.ties > 0 && this.filledCells.indexOf(tCellKey) == -1) {
|
336
|
+
this.baccaratSvg.markNewRound(item.location.column, item.location.row, Object.assign(Object.assign({}, item), { winner: BaccaratWinner.TIE }), this.isBoardInited);
|
337
|
+
this.filledCells.push(tCellKey);
|
338
|
+
}
|
339
|
+
latestRound = item;
|
340
|
+
//If current cell has been filled,duplicated data
|
341
|
+
if (this.filledCells.indexOf(cellKey) == -1) {
|
342
|
+
this.baccaratSvg.markNewRound(item.location.column, item.location.row, Object.assign(Object.assign({}, item), { pairColor: WINNER_COLOR }), this.isBoardInited);
|
343
|
+
this.filledCells.push(cellKey);
|
344
|
+
}
|
345
|
+
});
|
346
|
+
return;
|
347
|
+
}
|
348
|
+
initBaccaratRoundsBoard() {
|
349
|
+
var _a;
|
350
|
+
this.baccaratSvg.createBaccaratBoard(this.baccaratRef);
|
351
|
+
if (((_a = this.gameDetails.results) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
352
|
+
this.onBaccaratResultChanged(this.gameDetails.results);
|
353
|
+
}
|
354
|
+
}
|
355
|
+
render() {
|
356
|
+
var _a;
|
357
|
+
return (h(Host, null, h("casino-game-thumbnail-extrainfo", { ref: (el) => (this.infoWrapperRef = el), language: this.language }, ((_a = this.gameDetails) === null || _a === void 0 ? void 0 : _a.isOpen) && this.showRoundBoard && (h("div", { slot: "category-details", class: "LiveIcons", part: "LiveIcons" }, h("div", { id: "boardContainer", part: "BaccaratBoard", class: "BaccaratBoard", ref: (el) => (this.baccaratRef = el) }))))));
|
358
|
+
}
|
359
|
+
static get watchers() { return {
|
360
|
+
"gameDetails": ["gameDetailsHandler"]
|
361
|
+
}; }
|
362
|
+
static get style() { return casinoExtrainfoBaccaratCss; }
|
363
|
+
}, [0, "casino-extrainfo-baccarat", {
|
364
|
+
"language": [1],
|
365
|
+
"showRoundBoard": [4, "show-round-board"],
|
366
|
+
"gameInfo": [32],
|
367
|
+
"gameDetails": [32],
|
368
|
+
"onGameLoaded": [64],
|
369
|
+
"onGameDetailUpdated": [64],
|
370
|
+
"onBaccaratResultChanged": [64]
|
371
|
+
}]);
|
372
|
+
function defineCustomElement$1() {
|
373
|
+
if (typeof customElements === "undefined") {
|
374
|
+
return;
|
375
|
+
}
|
376
|
+
const components = ["casino-extrainfo-baccarat", "casino-game-thumbnail-betlimit", "casino-game-thumbnail-extrainfo"];
|
377
|
+
components.forEach(tagName => { switch (tagName) {
|
378
|
+
case "casino-extrainfo-baccarat":
|
379
|
+
if (!customElements.get(tagName)) {
|
380
|
+
customElements.define(tagName, CasinoExtrainfoBaccarat$1);
|
381
|
+
}
|
382
|
+
break;
|
383
|
+
case "casino-game-thumbnail-betlimit":
|
384
|
+
if (!customElements.get(tagName)) {
|
385
|
+
defineCustomElement$3();
|
386
|
+
}
|
387
|
+
break;
|
388
|
+
case "casino-game-thumbnail-extrainfo":
|
389
|
+
if (!customElements.get(tagName)) {
|
390
|
+
defineCustomElement$2();
|
391
|
+
}
|
392
|
+
break;
|
393
|
+
} });
|
394
|
+
}
|
395
|
+
defineCustomElement$1();
|
396
|
+
|
397
|
+
const CasinoExtrainfoBaccarat = CasinoExtrainfoBaccarat$1;
|
398
|
+
const defineCustomElement = defineCustomElement$1;
|
399
|
+
|
400
|
+
export { CasinoExtrainfoBaccarat, defineCustomElement };
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
2
|
+
|
3
|
+
interface CasinoExtrainfoBlackjack extends Components.CasinoExtrainfoBlackjack, HTMLElement {}
|
4
|
+
export const CasinoExtrainfoBlackjack: {
|
5
|
+
prototype: CasinoExtrainfoBlackjack;
|
6
|
+
new (): CasinoExtrainfoBlackjack;
|
7
|
+
};
|
8
|
+
/**
|
9
|
+
* Used to define this component and all nested components recursively.
|
10
|
+
*/
|
11
|
+
export const defineCustomElement: () => void;
|