@everymatrix/casino-game-thumb-view 0.0.2-9.1

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 (130) hide show
  1. package/dist/assets/baccarat.svg +43 -0
  2. package/dist/assets/fav.svg +9 -0
  3. package/dist/assets/favorite.svg +12 -0
  4. package/dist/assets/seat.svg +6 -0
  5. package/dist/assets/unfav.svg +20 -0
  6. package/dist/casino-game-thumb-view/casino-game-thumb-view.esm.js +1 -0
  7. package/dist/casino-game-thumb-view/index.esm.js +0 -0
  8. package/dist/casino-game-thumb-view/p-0bd6266b.entry.js +1 -0
  9. package/dist/casino-game-thumb-view/p-1bbf4b70.entry.js +1 -0
  10. package/dist/casino-game-thumb-view/p-2b51ea79.js +1 -0
  11. package/dist/casino-game-thumb-view/p-2d5f59fe.js +1 -0
  12. package/dist/casino-game-thumb-view/p-46dbb1cb.js +1 -0
  13. package/dist/casino-game-thumb-view/p-58134a43.entry.js +7 -0
  14. package/dist/casino-game-thumb-view/p-6a6b2a78.js +8 -0
  15. package/dist/casino-game-thumb-view/p-b153f943.entry.js +1 -0
  16. package/dist/casino-game-thumb-view/p-d961aec4.entry.js +1 -0
  17. package/dist/casino-game-thumb-view/p-eb23569d.entry.js +1 -0
  18. package/dist/cjs/casino-extrainfo-baccarat.cjs.entry.js +366 -0
  19. package/dist/cjs/casino-extrainfo-blackjack.cjs.entry.js +58 -0
  20. package/dist/cjs/casino-extrainfo-roulette.cjs.entry.js +44 -0
  21. package/dist/cjs/casino-game-thumb-view.cjs.js +19 -0
  22. package/dist/cjs/casino-game-thumb-view_2.cjs.entry.js +1604 -0
  23. package/dist/cjs/casino-game-thumbnail-betlimit_2.cjs.entry.js +275 -0
  24. package/dist/cjs/casino-normal-game-thumbnail.cjs.entry.js +23 -0
  25. package/dist/cjs/game-thumbnail-31d518f0.js +78 -0
  26. package/dist/cjs/index-65a1d768.js +1796 -0
  27. package/dist/cjs/index.cjs.js +2 -0
  28. package/dist/cjs/loader.cjs.js +21 -0
  29. package/dist/cjs/locale.utils-09067b6b.js +132 -0
  30. package/dist/cjs/utils-a0afc0a9.js +5745 -0
  31. package/dist/collection/collection-manifest.json +19 -0
  32. package/dist/collection/components/casino-extrainfo-baccarat/casino-extrainfo-baccarat.css +116 -0
  33. package/dist/collection/components/casino-extrainfo-baccarat/casino-extrainfo-baccarat.js +240 -0
  34. package/dist/collection/components/casino-extrainfo-blackjack/casino-extrainfo-blackjack.css +64 -0
  35. package/dist/collection/components/casino-extrainfo-blackjack/casino-extrainfo-blackjack.js +119 -0
  36. package/dist/collection/components/casino-extrainfo-roulette/casino-extrainfo-roulette.css +40 -0
  37. package/dist/collection/components/casino-extrainfo-roulette/casino-extrainfo-roulette.js +122 -0
  38. package/dist/collection/components/casino-game-thumb-view/casino-game-thumb-view.css +361 -0
  39. package/dist/collection/components/casino-game-thumb-view/casino-game-thumb-view.js +1057 -0
  40. package/dist/collection/components/casino-game-thumbnail-betlimit/casino-game-thumbnail-betlimit.css +3 -0
  41. package/dist/collection/components/casino-game-thumbnail-betlimit/casino-game-thumbnail-betlimit.js +86 -0
  42. package/dist/collection/components/casino-game-thumbnail-extrainfo/casino-game-thumbnail-extrainfo.css +154 -0
  43. package/dist/collection/components/casino-game-thumbnail-extrainfo/casino-game-thumbnail-extrainfo.js +155 -0
  44. package/dist/collection/components/casino-game-thumbnail-overlay/casino-game-thumbnail-overlay.css +58 -0
  45. package/dist/collection/components/casino-game-thumbnail-overlay/casino-game-thumbnail-overlay.js +208 -0
  46. package/dist/collection/components/casino-normal-game-thumbnail/casino-normal-game-thumbnail.css +3 -0
  47. package/dist/collection/components/casino-normal-game-thumbnail/casino-normal-game-thumbnail.js +62 -0
  48. package/dist/collection/constants/game-thumbnail.js +85 -0
  49. package/dist/collection/index.js +1 -0
  50. package/dist/collection/models/casino-game-thumb-view.js +12 -0
  51. package/dist/collection/models/currency-symbols.js +173 -0
  52. package/dist/collection/static/baccarat.svg +43 -0
  53. package/dist/collection/static/fav.svg +9 -0
  54. package/dist/collection/static/favorite.svg +12 -0
  55. package/dist/collection/static/seat.svg +6 -0
  56. package/dist/collection/static/unfav.svg +20 -0
  57. package/dist/collection/utils/baccarat-board-svg.js +234 -0
  58. package/dist/collection/utils/locale.utils.js +128 -0
  59. package/dist/collection/utils/utils.js +65 -0
  60. package/dist/components/casino-extrainfo-baccarat.d.ts +11 -0
  61. package/dist/components/casino-extrainfo-baccarat.js +400 -0
  62. package/dist/components/casino-extrainfo-blackjack.d.ts +11 -0
  63. package/dist/components/casino-extrainfo-blackjack.js +92 -0
  64. package/dist/components/casino-extrainfo-roulette.d.ts +11 -0
  65. package/dist/components/casino-extrainfo-roulette.js +77 -0
  66. package/dist/components/casino-game-thumb-view.d.ts +11 -0
  67. package/dist/components/casino-game-thumb-view.js +1618 -0
  68. package/dist/components/casino-game-thumbnail-betlimit.d.ts +11 -0
  69. package/dist/components/casino-game-thumbnail-betlimit.js +6 -0
  70. package/dist/components/casino-game-thumbnail-betlimit2.js +227 -0
  71. package/dist/components/casino-game-thumbnail-extrainfo.d.ts +11 -0
  72. package/dist/components/casino-game-thumbnail-extrainfo.js +6 -0
  73. package/dist/components/casino-game-thumbnail-extrainfo2.js +93 -0
  74. package/dist/components/casino-game-thumbnail-overlay.d.ts +11 -0
  75. package/dist/components/casino-game-thumbnail-overlay.js +6 -0
  76. package/dist/components/casino-game-thumbnail-overlay2.js +68 -0
  77. package/dist/components/casino-normal-game-thumbnail.d.ts +11 -0
  78. package/dist/components/casino-normal-game-thumbnail.js +52 -0
  79. package/dist/components/game-thumbnail.js +72 -0
  80. package/dist/components/index.d.ts +26 -0
  81. package/dist/components/index.js +1 -0
  82. package/dist/components/locale.utils.js +130 -0
  83. package/dist/components/utils.js +5739 -0
  84. package/dist/esm/casino-extrainfo-baccarat.entry.js +362 -0
  85. package/dist/esm/casino-extrainfo-blackjack.entry.js +54 -0
  86. package/dist/esm/casino-extrainfo-roulette.entry.js +40 -0
  87. package/dist/esm/casino-game-thumb-view.js +17 -0
  88. package/dist/esm/casino-game-thumb-view_2.entry.js +1599 -0
  89. package/dist/esm/casino-game-thumbnail-betlimit_2.entry.js +270 -0
  90. package/dist/esm/casino-normal-game-thumbnail.entry.js +19 -0
  91. package/dist/esm/game-thumbnail-0a56ee03.js +72 -0
  92. package/dist/esm/index-1e44dd9f.js +1769 -0
  93. package/dist/esm/index.js +1 -0
  94. package/dist/esm/loader.js +17 -0
  95. package/dist/esm/locale.utils-1c69bea3.js +130 -0
  96. package/dist/esm/polyfills/core-js.js +11 -0
  97. package/dist/esm/polyfills/css-shim.js +1 -0
  98. package/dist/esm/polyfills/dom.js +79 -0
  99. package/dist/esm/polyfills/es5-html-element.js +1 -0
  100. package/dist/esm/polyfills/index.js +34 -0
  101. package/dist/esm/polyfills/system.js +6 -0
  102. package/dist/esm/utils-e9314132.js +5739 -0
  103. package/dist/index.cjs.js +1 -0
  104. package/dist/index.js +1 -0
  105. package/dist/stencil.config.js +40 -0
  106. package/dist/types/Users/adrian.pripon/Documents/Work/stencil/widgets-stencil/packages/casino-game-thumb-view/.stencil/packages/casino-game-thumb-view/stencil.config.d.ts +2 -0
  107. package/dist/types/components/casino-extrainfo-baccarat/casino-extrainfo-baccarat.d.ts +40 -0
  108. package/dist/types/components/casino-extrainfo-blackjack/casino-extrainfo-blackjack.d.ts +36 -0
  109. package/dist/types/components/casino-extrainfo-roulette/casino-extrainfo-roulette.d.ts +21 -0
  110. package/dist/types/components/casino-game-thumb-view/casino-game-thumb-view.d.ts +221 -0
  111. package/dist/types/components/casino-game-thumbnail-betlimit/casino-game-thumbnail-betlimit.d.ts +17 -0
  112. package/dist/types/components/casino-game-thumbnail-extrainfo/casino-game-thumbnail-extrainfo.d.ts +16 -0
  113. package/dist/types/components/casino-game-thumbnail-overlay/casino-game-thumbnail-overlay.d.ts +30 -0
  114. package/dist/types/components/casino-normal-game-thumbnail/casino-normal-game-thumbnail.d.ts +7 -0
  115. package/dist/types/components.d.ts +480 -0
  116. package/dist/types/constants/game-thumbnail.d.ts +83 -0
  117. package/dist/types/index.d.ts +1 -0
  118. package/dist/types/models/casino-game-thumb-view.d.ts +132 -0
  119. package/dist/types/models/currency-symbols.d.ts +172 -0
  120. package/dist/types/stencil-public-runtime.d.ts +1565 -0
  121. package/dist/types/utils/baccarat-board-svg.d.ts +31 -0
  122. package/dist/types/utils/locale.utils.d.ts +1 -0
  123. package/dist/types/utils/utils.d.ts +19 -0
  124. package/loader/cdn.js +3 -0
  125. package/loader/index.cjs.js +3 -0
  126. package/loader/index.d.ts +12 -0
  127. package/loader/index.es2017.js +3 -0
  128. package/loader/index.js +4 -0
  129. package/loader/package.json +10 -0
  130. package/package.json +26 -0
@@ -0,0 +1,1057 @@
1
+ import { Component, h, Prop, State, Event, Watch, Listen, } from '@stencil/core';
2
+ import { isMobile, convertGicBaccaratUpdateItem } from '../../utils/utils';
3
+ import { WIDGETTYPE_GAMECATEGORY, GAME_CATEGORY, GAME_TYPE, } from '../../constants/game-thumbnail';
4
+ import { EventSourcePolyfill } from 'event-source-polyfill';
5
+ import Fav from '../../static/fav.svg';
6
+ import UnFavSvg from '../../static/unfav.svg';
7
+ export class CasinoGameThumbView {
8
+ constructor() {
9
+ /**
10
+ * Widget Setting, Game language
11
+ */
12
+ this.language = 'en';
13
+ /**
14
+ * Widget Setting, Client custom styling via string
15
+ */
16
+ this.clientStyling = '';
17
+ /**
18
+ * Widget Setting, Client custom styling via url content
19
+ */
20
+ this.clientStylingUrl = '';
21
+ /**
22
+ * Widget Setting, show game in a frame when user clicked 'start'
23
+ */
24
+ this.integratedGameFrameMobile = false;
25
+ /**
26
+ * Widget Setting, show game in a frame when user clicked 'start', Open game aframe,
27
+ * gamepageModalUrl value should be set
28
+ */
29
+ this.integratedGameFrameDesktop = false;
30
+ /**
31
+ * Widget Setting, Load game details when set it as true, default value: false
32
+ * When loadDetails is true and type=='live-casino-tables',
33
+ * Load gameDetails by endpoint/vendor/gameId if livelobbyEndpoint is null
34
+ */
35
+ this.loadDetails = false;
36
+ /**
37
+ * Widget Setting, showRoundBoard, default value: false
38
+ */
39
+ this.showRoundBoard = false;
40
+ /**
41
+ * Game Property, default ''
42
+ */
43
+ this.gameCategory = '';
44
+ /**
45
+ * Game Property, Game lunch platform
46
+ */
47
+ this.platform = 'PC';
48
+ this.thumbnailLoaded = false;
49
+ this.containerClassWhenDetailChange = '';
50
+ this.isUserLoggedIn = false;
51
+ this.limitStylingAppends = false;
52
+ //customize style setting
53
+ this.setClientStyling = () => {
54
+ let sheet = document.createElement('style');
55
+ sheet.innerHTML = this.clientStyling;
56
+ this.stylingContainer.prepend(sheet);
57
+ };
58
+ //customize style setting
59
+ this.setClientStylingURL = () => {
60
+ let url = new URL(this.clientStylingUrl);
61
+ let cssFile = document.createElement('style');
62
+ fetch(url.href)
63
+ .then((res) => res.text())
64
+ .then((data) => {
65
+ cssFile.innerHTML = data;
66
+ setTimeout(() => {
67
+ this.stylingContainer.prepend(cssFile);
68
+ }, 1);
69
+ })
70
+ .catch((err) => {
71
+ console.error('error ', err);
72
+ });
73
+ };
74
+ this.getGameCategoryType = () => {
75
+ if (this.isLiveCasino && this.gameCategory) {
76
+ return `casino-extrainfo-${this.getWidgetTypeByGameCategory(this.gameCategory).toLowerCase()}`;
77
+ }
78
+ return `casino-normal-game-thumbnail`;
79
+ };
80
+ this.getGameContainerClass = () => {
81
+ let gameContainerClass = `GameContainer `;
82
+ if (this.gameInfo) {
83
+ if (this.gameInfo && this.gameInfo.details) {
84
+ gameContainerClass += ' ListGame ';
85
+ if (this.gameInfo.details.isOpen &&
86
+ this.gameInfo.details.currentRouletteNumbers) {
87
+ gameContainerClass += ' GameBackdrop ';
88
+ }
89
+ }
90
+ }
91
+ return gameContainerClass;
92
+ };
93
+ }
94
+ onSessionChanged() {
95
+ this.isUserLoggedIn = !!(this.session && this.userId);
96
+ }
97
+ onTableFullChanged(newVal, oldVal) {
98
+ if (oldVal == undefined) {
99
+ return;
100
+ }
101
+ this.containerClassWhenDetailChange =
102
+ newVal && !oldVal ? 'PulsatingRedShadow' : 'PulsatingGreenShadow';
103
+ }
104
+ handleMouseOver(event) {
105
+ this.hover = event.type === 'mouseenter';
106
+ }
107
+ gameFavoritedHandler(event) {
108
+ let eventDetail = event.detail;
109
+ this.gameInfo.isFavorite = eventDetail[this.gameId];
110
+ this.gameInfo = Object.assign({}, this.gameInfo);
111
+ }
112
+ connectLiveHandler() {
113
+ this.toggleConnect();
114
+ }
115
+ visibilityConnectHandler() {
116
+ this.toggleVisibilityConnect();
117
+ }
118
+ gameDetailChangeHandler(e) {
119
+ var _a, _b;
120
+ let message = JSON.parse(e.data);
121
+ if (message.needReconnect && this.liveLobbyConnection) {
122
+ this.liveLobbyConnection.close();
123
+ this.connectGameToLiveLobby();
124
+ return;
125
+ }
126
+ if (!(message && message.InternalTableId == this.gameId)) {
127
+ return;
128
+ }
129
+ let MessageType = message.MessageType;
130
+ switch (MessageType) {
131
+ case 'TableOpened':
132
+ case 'TableClosed':
133
+ this.gameInfo.details.isOpen = message.Open;
134
+ break;
135
+ case 'PlayersUpdated':
136
+ this.gameInfo.details.numberOfPlayers = message.Players;
137
+ break;
138
+ case 'RouletteResultsUpdated':
139
+ this.gameInfo.details.currentRouletteNumbers = message.Results;
140
+ break;
141
+ case 'DoubleBallRouletteResultsUpdated':
142
+ this.gameInfo.details.currentDoubleBallRouletteNumbers =
143
+ message.Results;
144
+ break;
145
+ case 'SeatsUpdated':
146
+ this.gameInfo.details.currentOccupiedSeats = message.Seats;
147
+ break;
148
+ case 'DealerChanged':
149
+ this.gameInfo.details.dealer = message.Dealer;
150
+ break;
151
+ case 'BaccaratResultsUpdated':
152
+ if (this.showRoundBoard) {
153
+ const Results = message.Results;
154
+ this.gameInfo.details.results = [];
155
+ Results.forEach((item) => {
156
+ this.gameInfo.details.results.push(convertGicBaccaratUpdateItem(item));
157
+ });
158
+ (_a = this.extraInfoRef) === null || _a === void 0 ? void 0 : _a.onBaccaratResultChanged(this.gameInfo.details.results);
159
+ }
160
+ break;
161
+ }
162
+ this.resetLiveProperties();
163
+ (_b = this.extraInfoRef) === null || _b === void 0 ? void 0 : _b.onGameDetailUpdated(this.gameInfo.details);
164
+ window.postMessage({ messageType: MessageType, value: e.data });
165
+ }
166
+ messageHandler(e) {
167
+ if (e.data.type === `AddFavoriteThumbnail_${this.gameId}` &&
168
+ !this.showFavoredCategory) {
169
+ this.gameInfo.isFavorite = true;
170
+ }
171
+ if (e.data.type === `RemoveFavoriteThumbnail_${this.gameId}` &&
172
+ !this.showFavoredCategory) {
173
+ this.gameInfo.isFavorite = false;
174
+ }
175
+ if (e.data.type === 'UserSessionID') {
176
+ this.isUserLoggedIn = true;
177
+ this.session = e.data.session;
178
+ this.userId = e.data.userID;
179
+ }
180
+ }
181
+ resetLiveProperties() {
182
+ var _a, _b;
183
+ const details = this.gameInfo.details;
184
+ if (this.isBlackJack(this.gameCategory.toLowerCase())) {
185
+ this.isTableFull =
186
+ details.totalSeats == ((_a = details.currentOccupiedSeats) === null || _a === void 0 ? void 0 : _a.length);
187
+ }
188
+ else if (this.isBaccarat(this.gameCategory.toLowerCase()) &&
189
+ ((_b = details.baccaratResults) === null || _b === void 0 ? void 0 : _b.length) > 0) {
190
+ this.gameInfo.details.results = [];
191
+ details.baccaratResults.forEach((item) => {
192
+ this.gameInfo.details.results.push(convertGicBaccaratUpdateItem(item));
193
+ });
194
+ delete details.baccaratResults;
195
+ }
196
+ }
197
+ isBlackJack(gameCategory) {
198
+ return gameCategory.toLowerCase() === GAME_CATEGORY.BLACKJACK;
199
+ }
200
+ isBaccarat(gameCategory) {
201
+ return gameCategory.toLowerCase() === GAME_CATEGORY.BACCARAT;
202
+ }
203
+ /**
204
+ * Calculate component properties by game info,
205
+ * eg: isLiveCasino, gameInfo, isTableFull
206
+ */
207
+ initCtrlProperties() {
208
+ var _a;
209
+ if (this.isLiveCasino && ((_a = this.gameInfo) === null || _a === void 0 ? void 0 : _a.details)) {
210
+ this.resetLiveProperties();
211
+ }
212
+ this.gameInfo = Object.assign({}, this.gameInfo);
213
+ this.triggerExtraInfoLoad();
214
+ }
215
+ /**
216
+ * Parse game info by game info api response
217
+ * @param data
218
+ */
219
+ parseGameResponse(data) {
220
+ if (data.length == 1) {
221
+ this.gameInfo = data[0];
222
+ if (this.isLiveCasino) {
223
+ if (!this.gameInfo.details) {
224
+ this.loadGameDetailInfo();
225
+ }
226
+ else {
227
+ this.parseGameDetailsResponse();
228
+ }
229
+ }
230
+ else {
231
+ this.initCtrlProperties();
232
+ }
233
+ }
234
+ }
235
+ /**
236
+ * Parse game detail info, set it to game info
237
+ */
238
+ parseGameDetailsResponse() {
239
+ this.initCtrlProperties();
240
+ }
241
+ connectGameToLiveLobby() {
242
+ if (EventSource && !this.liveLobbyConnection) {
243
+ const updateUrl = `${this.endpoint}/encoder/lobby/updates/${this.gameInfo.vendor.name}/${this.gameInfo.id}`;
244
+ this.liveLobbyConnection = new EventSourcePolyfill(updateUrl);
245
+ this.liveLobbyConnection.addEventListener('message', (evt) => {
246
+ this.gameDetailChangeHandler(evt);
247
+ });
248
+ }
249
+ }
250
+ disconnectGameFromLiveLobby() {
251
+ if (this.liveLobbyConnection) {
252
+ this.liveLobbyConnection.removeEventListener('message');
253
+ this.liveLobbyConnection.close();
254
+ this.liveLobbyConnection = undefined;
255
+ }
256
+ }
257
+ toggleConnect() {
258
+ if (!this.isLiveCasino) {
259
+ return;
260
+ }
261
+ if (this.connectLive === 'disconnect') {
262
+ this.disconnectGameFromLiveLobby();
263
+ }
264
+ else if (this.connectLive === 'connect') {
265
+ this.connectGameToLiveLobby();
266
+ }
267
+ }
268
+ toggleVisibilityConnect() {
269
+ if (!this.isLiveCasino) {
270
+ return;
271
+ }
272
+ if (this.visibilityConnect === 'disconnect') {
273
+ this.disconnectGameFromLiveLobby();
274
+ }
275
+ else if (this.visibilityConnect === 'connect' &&
276
+ this.connectLive === 'connect') {
277
+ this.connectGameToLiveLobby();
278
+ }
279
+ }
280
+ /**
281
+ * Get game base info from game api(casino/games/{id})
282
+ * @private
283
+ */
284
+ loadGameById() {
285
+ let url = `${this.endpoint}/casino/games/${this.gameId}?expand=vendor&platform=${this.platform}&language=${this.language}`;
286
+ fetch(url)
287
+ .then((res) => res.json())
288
+ .then((data) => this.parseGameResponse(data))
289
+ .catch((err) => {
290
+ console.error(err);
291
+ });
292
+ }
293
+ /*
294
+ * Load game info when widget property 'livelobbyEndpoint' set
295
+ * @private
296
+ */
297
+ loadGameInfoByLobbyEndpoint() {
298
+ let url = new URL(`${this.livelobbyEndpoint.split('?')[0]}`);
299
+ url.searchParams.append('expand', 'vendor');
300
+ url.searchParams.append('platform', this.platform);
301
+ url.searchParams.append('language', this.language);
302
+ fetch(url.toString())
303
+ .then((res) => res.json())
304
+ .then((data) => this.parseGameResponse(data))
305
+ .catch((error) => console.error(error));
306
+ }
307
+ /*
308
+ * load game info when widget property 'livelobbyEndpoint' setted
309
+ * @private
310
+ */
311
+ loadGameDetailInfo() {
312
+ let url = new URL(`${this.endpoint}/lobby/tables/${this.gameId}`);
313
+ url.searchParams.append('platform', this.platform);
314
+ url.searchParams.append('language', this.language);
315
+ fetch(url.toString())
316
+ .then((res) => res.json())
317
+ .then((data) => {
318
+ if (!(data === null || data === void 0 ? void 0 : data.category)) {
319
+ return;
320
+ }
321
+ this.gameInfo.details = data;
322
+ this.parseGameDetailsResponse();
323
+ })
324
+ .catch((err) => {
325
+ console.error(err);
326
+ setTimeout(() => this.loadGameDetailInfo(), 1000);
327
+ });
328
+ }
329
+ /**
330
+ * Toggle game favorite property
331
+ * @param gameId
332
+ * @private
333
+ */
334
+ toggleFavoriteGame(gameId) {
335
+ let triggerFactor = 'thumbnail';
336
+ if (this.gameInfo.isFavorite) {
337
+ window.postMessage({ type: 'SetUnfavoredGame', gameId, triggerFactor }, window.location.href);
338
+ }
339
+ else {
340
+ window.postMessage({ type: 'SetFavoredGame', gameId, triggerFactor }, window.location.href);
341
+ }
342
+ this.toggleFavoriteCasinoGameEvent.emit(gameId);
343
+ }
344
+ /**
345
+ * Generate gameInfo obj by props
346
+ * @private
347
+ */
348
+ generateGameInfoByProps() {
349
+ return {
350
+ id: this.gameId,
351
+ name: this.gameName,
352
+ subVendor: this.subVendor,
353
+ hasFunMode: this.hasFunMode,
354
+ hasAnonymousFunMode: this.hasAnonymousFunMode,
355
+ thumbnail: this.thumbnail,
356
+ cellSize: this.cellSize,
357
+ gameTag: this.gameTag,
358
+ vendor: { href: '', name: this.gameVendor },
359
+ isFavorite: this.isFavorite,
360
+ isNew: this.isNew,
361
+ type: this.type,
362
+ liveCasinoCategory: this.gameCategory || '',
363
+ };
364
+ }
365
+ triggerExtraInfoLoad() {
366
+ var _a;
367
+ (_a = this.extraInfoRef) === null || _a === void 0 ? void 0 : _a.onGameLoaded(this.gameInfo);
368
+ window.postMessage({
369
+ type: 'casinoGameLoaded',
370
+ gameInfo: this.gameInfo,
371
+ });
372
+ }
373
+ componentDidRender() {
374
+ // start custom styling area
375
+ if (!this.limitStylingAppends && this.stylingContainer) {
376
+ if (this.clientStyling)
377
+ this.setClientStyling();
378
+ if (this.clientStylingUrl)
379
+ this.setClientStylingURL();
380
+ this.limitStylingAppends = true;
381
+ }
382
+ // end custom styling area 500)
383
+ if (this.gameInfo && this.extraInfoRef) {
384
+ this.triggerExtraInfoLoad();
385
+ }
386
+ }
387
+ componentDidLoad() {
388
+ var _a;
389
+ //Init this.extraInfoRef, prepare for data loader, this.gameInfo did not inited might
390
+ this.extraInfoRef = (_a = this.extraInfoSlotRef) === null || _a === void 0 ? void 0 : _a.querySelector(this.getGameCategoryType());
391
+ window.addEventListener('message', this.messageHandler);
392
+ }
393
+ componentWillLoad() {
394
+ this.isLiveCasino = this.type == GAME_TYPE.LIVE_CASINO;
395
+ this.extraInfoWidget = this.getGameCategoryType();
396
+ this.isUserLoggedIn = !!(this.session && this.userId);
397
+ if (this.isLiveCasino && this.livelobbyEndpoint) {
398
+ this.loadGameInfoByLobbyEndpoint();
399
+ return;
400
+ }
401
+ //generate gameInfo obj by props
402
+ if (this.thumbnail) {
403
+ this.gameInfo = this.generateGameInfoByProps();
404
+ // loadLiveDetails if game is live casino
405
+ if (this.isLiveCasino &&
406
+ this.endpoint &&
407
+ this.loadDetails &&
408
+ this.gameId) {
409
+ this.loadGameDetailInfo();
410
+ }
411
+ return;
412
+ }
413
+ //fetch data from api if no game properties set except gameId
414
+ if (this.gameId && this.endpoint) {
415
+ this.loadGameById();
416
+ }
417
+ }
418
+ disconnectedCallback() {
419
+ if (this.liveLobbyConnection) {
420
+ this.liveLobbyConnection.removeEventListener('message', this.gameDetailChangeHandler);
421
+ }
422
+ window.removeEventListener('message', this.messageHandler);
423
+ }
424
+ // end custom styling area
425
+ getWidgetTypeByGameCategory(gameCategory) {
426
+ return WIDGETTYPE_GAMECATEGORY[gameCategory.toLowerCase()];
427
+ }
428
+ getGameOverlayProps() {
429
+ var _a, _b;
430
+ return {
431
+ gameName: this.gameInfo.name,
432
+ gameId: this.gameInfo.gameId,
433
+ gameVendor: this.gameVendor || ((_b = (_a = this.gameInfo) === null || _a === void 0 ? void 0 : _a.vendor) === null || _b === void 0 ? void 0 : _b.name),
434
+ hasFunMode: this.gameInfo.hasFunMode,
435
+ language: this.language,
436
+ integratedGameFrameMobile: this.integratedGameFrameMobile,
437
+ integratedGameFrameDesktop: this.integratedGameFrameDesktop,
438
+ gamepageModalUrl: this.gamepageModalUrl,
439
+ };
440
+ }
441
+ render() {
442
+ var _a, _b;
443
+ if (!this.gameInfo) {
444
+ return (h("div", { class: "GameInnerContainer", part: "GameInnerContainer", slot: "Game-Inner" },
445
+ h("img", { src: this.thumbnail, alt: "", loading: "lazy", part: "GameContainer", class: "GameContainer", onLoad: () => (this.thumbnailLoaded = true) })));
446
+ }
447
+ const gameOverlayProps = this.getGameOverlayProps();
448
+ const gameThumbnail = ((_a = this.gameInfo) === null || _a === void 0 ? void 0 : _a.thumbnail) || ((_b = this.gameInfo) === null || _b === void 0 ? void 0 : _b.defaultThumbnail);
449
+ const gameContainerClass = this.getGameContainerClass();
450
+ const gameThumbnailClass = `GameBg ${this.cellSize ? 'GameBg-' + this.cellSize : ''}
451
+ ${this.hover ? ' GameContainerHovered' : ''} ${this.thumbnailLoaded ? ' Loaded' : ''}`;
452
+ return (h("div", { class: `${gameContainerClass} ${this.containerClassWhenDetailChange}`, part: `${gameContainerClass} ${this.containerClassWhenDetailChange}`, ref: (el) => (this.stylingContainer = el), "client-styling": this.clientStyling, "client-styling-url-content": this.clientStylingUrl },
453
+ h("div", { class: `GameInnerContainer ${this.hover ? 'Hovered' : ''}`, part: `GameInnerContainer ${this.hover ? 'Hovered' : ''}` },
454
+ h("img", { src: gameThumbnail, alt: "Game Thumbnail ", loading: "lazy", part: gameThumbnailClass, class: gameThumbnailClass, onLoad: () => (this.thumbnailLoaded = true) }),
455
+ this.isUserLoggedIn && (h("div", { class: `FavIconContainer ${this.gameInfo.isFavorite ? 'Favorited' : ''}`, part: `FavIconContainer ${this.gameInfo.isFavorite ? 'Favorited' : ''}`, onClick: () => this.toggleFavoriteGame(this.gameId) }, this.gameInfo.isFavorite ? (h("slot", { name: "fav-icon" },
456
+ h("span", { class: "FavoredIcon", part: "FavoredIcon", innerHTML: Fav }))) : (h("slot", { name: "UnFavIcon" }, !isMobile(window.navigator.userAgent) && (h("span", { class: "UnfavoredIcon", part: "UnfavoredIcon", innerHTML: UnFavSvg })))))),
457
+ h("slot", { name: "game-overlay" },
458
+ h("casino-game-thumbnail-overlay", Object.assign({ language: this.language }, gameOverlayProps))),
459
+ h("slot", { name: "extra-info", ref: (el) => (this.extraInfoSlotRef = el) },
460
+ h(this.extraInfoWidget, { language: this.language, "show-round-board": this.showRoundBoard })),
461
+ h("slot", { name: "game-property-slot" })),
462
+ this.showGameName && (h("slot", { name: "game-name" },
463
+ h("p", { class: "GameNameBelow", part: "GameNameBelow", title: gameOverlayProps.gameName }, gameOverlayProps.gameName)))));
464
+ }
465
+ static get is() { return "casino-game-thumb-view"; }
466
+ static get encapsulation() { return "shadow"; }
467
+ static get originalStyleUrls() { return {
468
+ "$": ["casino-game-thumb-view.scss"]
469
+ }; }
470
+ static get styleUrls() { return {
471
+ "$": ["casino-game-thumb-view.css"]
472
+ }; }
473
+ static get assetsDirs() { return ["static"]; }
474
+ static get properties() { return {
475
+ "language": {
476
+ "type": "string",
477
+ "mutable": false,
478
+ "complexType": {
479
+ "original": "string",
480
+ "resolved": "string",
481
+ "references": {}
482
+ },
483
+ "required": false,
484
+ "optional": false,
485
+ "docs": {
486
+ "tags": [],
487
+ "text": "Widget Setting, Game language"
488
+ },
489
+ "attribute": "language",
490
+ "reflect": false,
491
+ "defaultValue": "'en'"
492
+ },
493
+ "endpoint": {
494
+ "type": "string",
495
+ "mutable": false,
496
+ "complexType": {
497
+ "original": "string",
498
+ "resolved": "string",
499
+ "references": {}
500
+ },
501
+ "required": false,
502
+ "optional": false,
503
+ "docs": {
504
+ "tags": [],
505
+ "text": "Widget Setting, Api endpoint for loading game details"
506
+ },
507
+ "attribute": "endpoint",
508
+ "reflect": false
509
+ },
510
+ "userId": {
511
+ "type": "any",
512
+ "mutable": false,
513
+ "complexType": {
514
+ "original": "string | number",
515
+ "resolved": "number | string",
516
+ "references": {}
517
+ },
518
+ "required": false,
519
+ "optional": false,
520
+ "docs": {
521
+ "tags": [],
522
+ "text": "Widget Setting, User id"
523
+ },
524
+ "attribute": "user-id",
525
+ "reflect": false
526
+ },
527
+ "showGameName": {
528
+ "type": "boolean",
529
+ "mutable": false,
530
+ "complexType": {
531
+ "original": "boolean",
532
+ "resolved": "boolean",
533
+ "references": {}
534
+ },
535
+ "required": false,
536
+ "optional": false,
537
+ "docs": {
538
+ "tags": [],
539
+ "text": "Widget Setting, Show game name if set it as true"
540
+ },
541
+ "attribute": "show-game-name",
542
+ "reflect": false
543
+ },
544
+ "session": {
545
+ "type": "string",
546
+ "mutable": false,
547
+ "complexType": {
548
+ "original": "string",
549
+ "resolved": "string",
550
+ "references": {}
551
+ },
552
+ "required": false,
553
+ "optional": false,
554
+ "docs": {
555
+ "tags": [],
556
+ "text": "Widget Setting, User session"
557
+ },
558
+ "attribute": "session",
559
+ "reflect": false
560
+ },
561
+ "showFavoredCategory": {
562
+ "type": "boolean",
563
+ "mutable": false,
564
+ "complexType": {
565
+ "original": "boolean",
566
+ "resolved": "boolean",
567
+ "references": {}
568
+ },
569
+ "required": false,
570
+ "optional": false,
571
+ "docs": {
572
+ "tags": [],
573
+ "text": "Widget Setting, game showed in favorited category"
574
+ },
575
+ "attribute": "show-favored-category",
576
+ "reflect": false
577
+ },
578
+ "clientStyling": {
579
+ "type": "string",
580
+ "mutable": false,
581
+ "complexType": {
582
+ "original": "string",
583
+ "resolved": "string",
584
+ "references": {}
585
+ },
586
+ "required": false,
587
+ "optional": false,
588
+ "docs": {
589
+ "tags": [],
590
+ "text": "Widget Setting, Client custom styling via string"
591
+ },
592
+ "attribute": "client-styling",
593
+ "reflect": false,
594
+ "defaultValue": "''"
595
+ },
596
+ "clientStylingUrl": {
597
+ "type": "string",
598
+ "mutable": false,
599
+ "complexType": {
600
+ "original": "string",
601
+ "resolved": "string",
602
+ "references": {}
603
+ },
604
+ "required": false,
605
+ "optional": false,
606
+ "docs": {
607
+ "tags": [],
608
+ "text": "Widget Setting, Client custom styling via url content"
609
+ },
610
+ "attribute": "client-styling-url",
611
+ "reflect": false,
612
+ "defaultValue": "''"
613
+ },
614
+ "integratedGameFrameMobile": {
615
+ "type": "boolean",
616
+ "mutable": false,
617
+ "complexType": {
618
+ "original": "boolean",
619
+ "resolved": "boolean",
620
+ "references": {}
621
+ },
622
+ "required": false,
623
+ "optional": false,
624
+ "docs": {
625
+ "tags": [],
626
+ "text": "Widget Setting, show game in a frame when user clicked 'start'"
627
+ },
628
+ "attribute": "integrated-game-frame-mobile",
629
+ "reflect": false,
630
+ "defaultValue": "false"
631
+ },
632
+ "gamepageModalUrl": {
633
+ "type": "string",
634
+ "mutable": false,
635
+ "complexType": {
636
+ "original": "string",
637
+ "resolved": "string",
638
+ "references": {}
639
+ },
640
+ "required": false,
641
+ "optional": false,
642
+ "docs": {
643
+ "tags": [],
644
+ "text": "Widget Setting, show game in a frame when user clicked 'start'\nthe frame url when integratedGameFrameDesktop is true"
645
+ },
646
+ "attribute": "gamepage-modal-url",
647
+ "reflect": false
648
+ },
649
+ "integratedGameFrameDesktop": {
650
+ "type": "boolean",
651
+ "mutable": false,
652
+ "complexType": {
653
+ "original": "boolean",
654
+ "resolved": "boolean",
655
+ "references": {}
656
+ },
657
+ "required": false,
658
+ "optional": false,
659
+ "docs": {
660
+ "tags": [],
661
+ "text": "Widget Setting, show game in a frame when user clicked 'start', Open game aframe,\ngamepageModalUrl value should be set"
662
+ },
663
+ "attribute": "integrated-game-frame-desktop",
664
+ "reflect": false,
665
+ "defaultValue": "false"
666
+ },
667
+ "loadDetails": {
668
+ "type": "boolean",
669
+ "mutable": false,
670
+ "complexType": {
671
+ "original": "boolean",
672
+ "resolved": "boolean",
673
+ "references": {}
674
+ },
675
+ "required": false,
676
+ "optional": false,
677
+ "docs": {
678
+ "tags": [],
679
+ "text": "Widget Setting, Load game details when set it as true, default value: false\nWhen loadDetails is true and type=='live-casino-tables',\nLoad gameDetails by endpoint/vendor/gameId if livelobbyEndpoint is null"
680
+ },
681
+ "attribute": "load-details",
682
+ "reflect": false,
683
+ "defaultValue": "false"
684
+ },
685
+ "showRoundBoard": {
686
+ "type": "boolean",
687
+ "mutable": false,
688
+ "complexType": {
689
+ "original": "boolean",
690
+ "resolved": "boolean",
691
+ "references": {}
692
+ },
693
+ "required": false,
694
+ "optional": false,
695
+ "docs": {
696
+ "tags": [],
697
+ "text": "Widget Setting, showRoundBoard, default value: false"
698
+ },
699
+ "attribute": "show-round-board",
700
+ "reflect": false,
701
+ "defaultValue": "false"
702
+ },
703
+ "visibilityConnect": {
704
+ "type": "string",
705
+ "mutable": false,
706
+ "complexType": {
707
+ "original": "string",
708
+ "resolved": "string",
709
+ "references": {}
710
+ },
711
+ "required": false,
712
+ "optional": false,
713
+ "docs": {
714
+ "tags": [],
715
+ "text": "Widget Setting\nValid value: 'disconnect'/'connect'\nFlag to start a updater when a live game show in visible area\nwhen visibilityConnect='connect' && connectLive = 'connect'"
716
+ },
717
+ "attribute": "visibility-connect",
718
+ "reflect": false
719
+ },
720
+ "connectLive": {
721
+ "type": "string",
722
+ "mutable": false,
723
+ "complexType": {
724
+ "original": "string",
725
+ "resolved": "string",
726
+ "references": {}
727
+ },
728
+ "required": false,
729
+ "optional": false,
730
+ "docs": {
731
+ "tags": [],
732
+ "text": "Widget Setting, flag to start a updater when a live game show in visible area\nValid value: 'disconnect'/'connect'\nFlag to start a updater when a live game show in visible area\nwhen 'connectLive'= 'connect'"
733
+ },
734
+ "attribute": "connect-live",
735
+ "reflect": false
736
+ },
737
+ "gameCategory": {
738
+ "type": "string",
739
+ "mutable": false,
740
+ "complexType": {
741
+ "original": "string",
742
+ "resolved": "string",
743
+ "references": {}
744
+ },
745
+ "required": false,
746
+ "optional": false,
747
+ "docs": {
748
+ "tags": [],
749
+ "text": "Game Property, default ''"
750
+ },
751
+ "attribute": "game-category",
752
+ "reflect": false,
753
+ "defaultValue": "''"
754
+ },
755
+ "livelobbyEndpoint": {
756
+ "type": "string",
757
+ "mutable": false,
758
+ "complexType": {
759
+ "original": "string",
760
+ "resolved": "string",
761
+ "references": {}
762
+ },
763
+ "required": false,
764
+ "optional": false,
765
+ "docs": {
766
+ "tags": [],
767
+ "text": "Widget Setting, Live lobby endpoint, use to start a game\nLoad game info by this url if type=='live-casino-tables'"
768
+ },
769
+ "attribute": "livelobby-endpoint",
770
+ "reflect": false
771
+ },
772
+ "gameId": {
773
+ "type": "any",
774
+ "mutable": false,
775
+ "complexType": {
776
+ "original": "number | string",
777
+ "resolved": "number | string",
778
+ "references": {}
779
+ },
780
+ "required": false,
781
+ "optional": false,
782
+ "docs": {
783
+ "tags": [],
784
+ "text": "Game Property, GameId"
785
+ },
786
+ "attribute": "game-id",
787
+ "reflect": false
788
+ },
789
+ "gameName": {
790
+ "type": "string",
791
+ "mutable": false,
792
+ "complexType": {
793
+ "original": "string",
794
+ "resolved": "string",
795
+ "references": {}
796
+ },
797
+ "required": false,
798
+ "optional": false,
799
+ "docs": {
800
+ "tags": [],
801
+ "text": "Game Property, Game Name"
802
+ },
803
+ "attribute": "game-name",
804
+ "reflect": false
805
+ },
806
+ "subVendor": {
807
+ "type": "string",
808
+ "mutable": false,
809
+ "complexType": {
810
+ "original": "string",
811
+ "resolved": "string",
812
+ "references": {}
813
+ },
814
+ "required": false,
815
+ "optional": false,
816
+ "docs": {
817
+ "tags": [],
818
+ "text": "Game Property, Game SubVendor"
819
+ },
820
+ "attribute": "sub-vendor",
821
+ "reflect": false
822
+ },
823
+ "gameVendor": {
824
+ "type": "string",
825
+ "mutable": false,
826
+ "complexType": {
827
+ "original": "string",
828
+ "resolved": "string",
829
+ "references": {}
830
+ },
831
+ "required": false,
832
+ "optional": false,
833
+ "docs": {
834
+ "tags": [],
835
+ "text": "Game Property, Game vendor"
836
+ },
837
+ "attribute": "game-vendor",
838
+ "reflect": false
839
+ },
840
+ "hasFunMode": {
841
+ "type": "boolean",
842
+ "mutable": false,
843
+ "complexType": {
844
+ "original": "boolean",
845
+ "resolved": "boolean",
846
+ "references": {}
847
+ },
848
+ "required": false,
849
+ "optional": false,
850
+ "docs": {
851
+ "tags": [],
852
+ "text": "Game Property, Game funMode"
853
+ },
854
+ "attribute": "has-fun-mode",
855
+ "reflect": false
856
+ },
857
+ "hasAnonymousFunMode": {
858
+ "type": "boolean",
859
+ "mutable": false,
860
+ "complexType": {
861
+ "original": "boolean",
862
+ "resolved": "boolean",
863
+ "references": {}
864
+ },
865
+ "required": false,
866
+ "optional": false,
867
+ "docs": {
868
+ "tags": [],
869
+ "text": "Game Property, hasAnonymousFunMode"
870
+ },
871
+ "attribute": "has-anonymous-fun-mode",
872
+ "reflect": false
873
+ },
874
+ "platform": {
875
+ "type": "string",
876
+ "mutable": false,
877
+ "complexType": {
878
+ "original": "string",
879
+ "resolved": "string",
880
+ "references": {}
881
+ },
882
+ "required": false,
883
+ "optional": false,
884
+ "docs": {
885
+ "tags": [],
886
+ "text": "Game Property, Game lunch platform"
887
+ },
888
+ "attribute": "platform",
889
+ "reflect": false,
890
+ "defaultValue": "'PC'"
891
+ },
892
+ "thumbnail": {
893
+ "type": "string",
894
+ "mutable": false,
895
+ "complexType": {
896
+ "original": "string",
897
+ "resolved": "string",
898
+ "references": {}
899
+ },
900
+ "required": false,
901
+ "optional": false,
902
+ "docs": {
903
+ "tags": [],
904
+ "text": "Game Property, Game thumbnail"
905
+ },
906
+ "attribute": "thumbnail",
907
+ "reflect": false
908
+ },
909
+ "isFavorite": {
910
+ "type": "boolean",
911
+ "mutable": false,
912
+ "complexType": {
913
+ "original": "boolean",
914
+ "resolved": "boolean",
915
+ "references": {}
916
+ },
917
+ "required": false,
918
+ "optional": false,
919
+ "docs": {
920
+ "tags": [],
921
+ "text": "Game Property, is Game Favorited"
922
+ },
923
+ "attribute": "is-favorite",
924
+ "reflect": false
925
+ },
926
+ "isNew": {
927
+ "type": "boolean",
928
+ "mutable": false,
929
+ "complexType": {
930
+ "original": "boolean",
931
+ "resolved": "boolean",
932
+ "references": {}
933
+ },
934
+ "required": false,
935
+ "optional": false,
936
+ "docs": {
937
+ "tags": [],
938
+ "text": "Game Property, is Game new"
939
+ },
940
+ "attribute": "is-new",
941
+ "reflect": false
942
+ },
943
+ "cellSize": {
944
+ "type": "string",
945
+ "mutable": false,
946
+ "complexType": {
947
+ "original": "string",
948
+ "resolved": "string",
949
+ "references": {}
950
+ },
951
+ "required": false,
952
+ "optional": false,
953
+ "docs": {
954
+ "tags": [],
955
+ "text": "Game Property, Customize game cell size"
956
+ },
957
+ "attribute": "cell-size",
958
+ "reflect": false
959
+ },
960
+ "gameTag": {
961
+ "type": "string",
962
+ "mutable": false,
963
+ "complexType": {
964
+ "original": "string",
965
+ "resolved": "string",
966
+ "references": {}
967
+ },
968
+ "required": false,
969
+ "optional": false,
970
+ "docs": {
971
+ "tags": [],
972
+ "text": "Game Property, gameTag"
973
+ },
974
+ "attribute": "game-tag",
975
+ "reflect": false
976
+ },
977
+ "type": {
978
+ "type": "string",
979
+ "mutable": false,
980
+ "complexType": {
981
+ "original": "string",
982
+ "resolved": "string",
983
+ "references": {}
984
+ },
985
+ "required": true,
986
+ "optional": false,
987
+ "docs": {
988
+ "tags": [],
989
+ "text": "Game Property, type, isLiveCasino when type == 'live-casino-tables'"
990
+ },
991
+ "attribute": "type",
992
+ "reflect": false
993
+ }
994
+ }; }
995
+ static get states() { return {
996
+ "gameInfo": {},
997
+ "isTableFull": {},
998
+ "hover": {}
999
+ }; }
1000
+ static get events() { return [{
1001
+ "method": "toggleFavoriteCasinoGameEvent",
1002
+ "name": "toggleCasinoGameFavorite",
1003
+ "bubbles": true,
1004
+ "cancelable": true,
1005
+ "composed": true,
1006
+ "docs": {
1007
+ "tags": [],
1008
+ "text": ""
1009
+ },
1010
+ "complexType": {
1011
+ "original": "number | string",
1012
+ "resolved": "number | string",
1013
+ "references": {}
1014
+ }
1015
+ }]; }
1016
+ static get watchers() { return [{
1017
+ "propName": "session",
1018
+ "methodName": "onSessionChanged"
1019
+ }, {
1020
+ "propName": "userId",
1021
+ "methodName": "onSessionChanged"
1022
+ }, {
1023
+ "propName": "isTableFull",
1024
+ "methodName": "onTableFullChanged"
1025
+ }, {
1026
+ "propName": "connectLive",
1027
+ "methodName": "connectLiveHandler"
1028
+ }, {
1029
+ "propName": "visibilityConnect",
1030
+ "methodName": "visibilityConnectHandler"
1031
+ }]; }
1032
+ static get listeners() { return [{
1033
+ "name": "mouseenter",
1034
+ "method": "handleMouseOver",
1035
+ "target": undefined,
1036
+ "capture": false,
1037
+ "passive": true
1038
+ }, {
1039
+ "name": "mouseleave",
1040
+ "method": "handleMouseOver",
1041
+ "target": undefined,
1042
+ "capture": false,
1043
+ "passive": true
1044
+ }, {
1045
+ "name": "gameFavorited",
1046
+ "method": "gameFavoritedHandler",
1047
+ "target": "document",
1048
+ "capture": false,
1049
+ "passive": false
1050
+ }, {
1051
+ "name": "gameDetailChange",
1052
+ "method": "gameDetailChangeHandler",
1053
+ "target": undefined,
1054
+ "capture": false,
1055
+ "passive": false
1056
+ }]; }
1057
+ }