@everymatrix/casino-games-category-section 0.0.189 → 0.0.193

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/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@everymatrix/casino-games-category-section",
3
- "version": "0.0.189",
3
+ "version": "0.0.193",
4
4
  "main": "dist/casino-games-category-section.js",
5
5
  "svelte": "src/index.ts",
6
6
  "scripts": {
7
7
  "start": "sirv public",
8
- "build": "cross-env NODE_ENV=\"production\" && rollup -c",
8
+ "build": "cross-env NODE_ENV=production rollup -c",
9
9
  "dev": "cross-env NODE_ENV=\"development\" rollup -c -w",
10
10
  "validate": "svelte-check",
11
11
  "test": "echo"
@@ -36,5 +36,5 @@
36
36
  "publishConfig": {
37
37
  "access": "public"
38
38
  },
39
- "gitHead": "3781af65baf0822b42483eec16cd95a8cb26f983"
39
+ "gitHead": "0960983a499b8cd9494500f0f36058fdc61fbead"
40
40
  }
package/rollup.config.js CHANGED
@@ -6,8 +6,11 @@ import livereload from 'rollup-plugin-livereload';
6
6
  import { terser } from 'rollup-plugin-terser';
7
7
  import sveltePreprocess from 'svelte-preprocess';
8
8
  import typescript from '@rollup/plugin-typescript';
9
- const production = process.env.NODE_ENV === 'production';
10
- const dev = process.env.NODE_ENV === 'development';
9
+ import uglify from 'rollup-plugin-uglify';
10
+ import image from '@rollup/plugin-image';
11
+
12
+ const production = process.env.NODE_ENV == 'production';
13
+ const dev = process.env.NODE_ENV == 'development';
11
14
 
12
15
  export default {
13
16
  input: 'src/index.ts',
@@ -15,17 +18,21 @@ export default {
15
18
  sourcemap: true,
16
19
  format: 'umd',
17
20
  name: 'app',
18
- file: 'dist/casino-games-category-section.js'
21
+ file: 'dist/casino-games-category-section.js',
19
22
  },
20
23
  plugins: [
21
24
  svelte({
22
25
  preprocess: sveltePreprocess(),
23
26
  compilerOptions: {
27
+ // @TODO check generate and hydratable
28
+ // generate: 'ssr',
29
+ // hydratable: true,
24
30
  // enable run-time checks when not in production
25
31
  customElement: true,
26
32
  dev: !production
27
33
  }
28
34
  }),
35
+ image(),
29
36
  commonjs(),
30
37
  resolve({
31
38
  browser: true,
@@ -46,12 +53,13 @@ export default {
46
53
  }),
47
54
  // If we're building for production (npm run build
48
55
  // instead of npm run dev), minify
49
- production &&
56
+ production &&
50
57
  terser({
51
58
  output: {
52
59
  comments: "all"
53
60
  },
54
- })
61
+ }),
62
+ production && uglify.uglify()
55
63
  ],
56
64
  watch: {
57
65
  clearScreen: false
@@ -71,6 +71,9 @@
71
71
  let getFavoredGamesCache:any = undefined;
72
72
  let mostPlayedScreen:Boolean = false;
73
73
  let customStylingContainer:HTMLElement;
74
+ let validObservers:boolean = false;
75
+
76
+ let thumbnailContainer:Array<HTMLElement> = new Array(1000);
74
77
 
75
78
  let favoriteGamesData:any = {
76
79
  items: [],
@@ -83,6 +86,19 @@
83
86
  addNewMessages(item, GamesCategorySectionTranslations[item]);
84
87
  });
85
88
 
89
+ // IntersectionObserver used for loading more games
90
+ let observer = new IntersectionObserver((entries, observerRef) => {
91
+ entries.forEach(async (entry) => {
92
+ let index = entry.target.elems_index; // eslint-disable-line
93
+
94
+ if (entry.isIntersecting) {
95
+ if (index * 1.2 > limit ) {
96
+ loadMoreGames(categoryid);
97
+ }
98
+ }
99
+ });
100
+ });
101
+
86
102
  // Start favored games section
87
103
  const getFavoredGames = (url:string, sessionId:string, userId:string) => {
88
104
  let options = {
@@ -241,6 +257,7 @@
241
257
  showLoadCategory = true;
242
258
  searchItem = false;
243
259
  mostPlayedScreen = false;
260
+ validObservers = false;
244
261
 
245
262
  if (e.data.receivedFavoriteResults) {
246
263
  favoriteGames = e.data.receivedFavoriteResults.items;
@@ -268,6 +285,7 @@
268
285
  searchItem = false;
269
286
  mostPlayedScreen = false;
270
287
  showLoadCategory = false;
288
+ validObservers = true;
271
289
  categoryid = e.data.itemId;
272
290
 
273
291
  getData(categoryid, 0, limit).then((res:any) => {
@@ -345,9 +363,9 @@
345
363
 
346
364
  // @TODO categoryId type fix
347
365
  const loadMoreGames = (categoryId:any) => {
348
- limit += 20;
349
- if (limit <= maxTotal) {
366
+ limit += 10;
350
367
 
368
+ if (limit <= maxTotal) {
351
369
  getData(categoryId, offset, limit).then((res:any) => {
352
370
  categoryData = res;
353
371
  // @TODO categoryData type fix
@@ -410,36 +428,28 @@
410
428
  });
411
429
  }
412
430
 
413
- onMount(() => {
414
- window.addEventListener('message', messageHandler, false);
415
- window.postMessage({ type: 'GetFavoredGame' }, window.location.href);
416
-
417
- /* Start Lazy Loading */
418
- const handler = () => {
419
- if (container) {
420
- const containerDimensions = container.getBoundingClientRect();
421
-
422
- intersecting = (
423
- (containerDimensions.bottom + bottom) > 0 &&
424
- (containerDimensions.right + right) > 0 &&
425
- (containerDimensions.top - top) < window.innerHeight &&
426
- (containerDimensions.left - left) < window.innerWidth
427
- );
428
-
429
- if (intersecting && once && !lobbyView) {
430
- loadMoreGames(categoryid);
431
+ const setupObserver = () => {
432
+ if (validObservers) {
433
+ thumbnailContainer.forEach((item, index) => {
434
+ if (item) {
435
+ // Hack to make sure that I can identify the thumbnail index
436
+ item.elems_index = index;
437
+ observer.observe(item);
431
438
  }
432
- }
439
+ });
433
440
  }
441
+ }
434
442
 
435
- window.addEventListener('scroll', handler, false);
443
+ onMount(() => {
444
+ window.addEventListener('message', messageHandler, false);
445
+ window.postMessage({ type: 'GetFavoredGame' }, window.location.href);
436
446
 
437
447
  return () => {
438
- window.removeEventListener('scroll', handler);
439
448
  window.removeEventListener('message', messageHandler);
440
449
  }
441
450
  });
442
451
 
452
+ $: thumbnailContainer && setupObserver();
443
453
  $: lang && initialSetup();
444
454
  $: clientstyling && setClientStyling();
445
455
  $: clientstylingurl && setClientStylingURL();
@@ -517,9 +527,9 @@
517
527
  {#if showLoadCategory}
518
528
  <!-- svelte-ignore a11y-missing-attribute -->
519
529
  <a class="CategoryNameLink" on:click="{e => showCategory(categoryData.id, categoryData)}">
520
- <h3 class="CategoryLoadMore">
530
+ <span class="CategoryLoadMore">
521
531
  {$_('gamesCategorySection.viewAll')} ({categoryData.games.total})
522
- </h3>
532
+ </span>
523
533
  </a>
524
534
  {/if}
525
535
  </div>
@@ -542,6 +552,7 @@
542
552
  gameid={gameprops.id}
543
553
  gamefunmode={gameprops.hasFunMode}
544
554
  gamefavorite={gameprops.isFavorite}
555
+ bind:this={thumbnailContainer[index]}
545
556
  {clientstyling}
546
557
  {clientstylingurl}
547
558
  {endpoint}
@@ -667,10 +678,14 @@
667
678
  $grid-cell-size: ttp(12);
668
679
 
669
680
  .CategoryName,
670
- .CategoryLoadMore ,
671
681
  .StatusText {
672
682
  color: #fff;
673
- font-size: ttp(1.2);
683
+ font-size: 22px;
684
+ }
685
+
686
+ .CategoryLoadMore {
687
+ font-size: 14px;
688
+ color: #fff;
674
689
  }
675
690
 
676
691
  .NoSearchResults {