@everymatrix/casino-challenges-overlay 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/casino-challenges-overlay/casino-challenges-overlay-e43b403e.js +1 -0
  2. package/dist/casino-challenges-overlay/casino-challenges-overlay.esm.js +1 -1
  3. package/dist/casino-challenges-overlay/casino-challenges-overlay_2.entry.js +1 -0
  4. package/dist/casino-challenges-overlay/index-7fdd1cbf.js +2 -0
  5. package/dist/casino-challenges-overlay/index.esm.js +1 -1
  6. package/dist/cjs/{casino-challenges-overlay-e96b8732.js → casino-challenges-overlay-a75f839f.js} +206 -9
  7. package/dist/cjs/casino-challenges-overlay.cjs.js +2 -2
  8. package/dist/cjs/casino-challenges-overlay_2.cjs.entry.js +121 -0
  9. package/dist/cjs/{index-87f5caf5.js → index-11e96899.js} +107 -6
  10. package/dist/cjs/index.cjs.js +2 -2
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/collection/collection-manifest.json +8 -1
  13. package/dist/collection/components/casino-challenges-overlay/casino-challenges-overlay.css +3 -0
  14. package/dist/collection/components/casino-challenges-overlay/casino-challenges-overlay.js +204 -6
  15. package/dist/collection/utils/locale.utils.js +9 -1
  16. package/dist/collection/utils/types.js +32 -0
  17. package/dist/esm/{casino-challenges-overlay-127cb2bd.js → casino-challenges-overlay-e43b403e.js} +204 -10
  18. package/dist/esm/casino-challenges-overlay.js +3 -3
  19. package/dist/esm/casino-challenges-overlay_2.entry.js +117 -0
  20. package/dist/esm/{index-23ccb586.js → index-7fdd1cbf.js} +107 -6
  21. package/dist/esm/index.js +2 -2
  22. package/dist/esm/loader.js +3 -3
  23. package/dist/types/components/casino-challenges-overlay/casino-challenges-overlay.d.ts +21 -0
  24. package/dist/types/components.d.ts +10 -0
  25. package/dist/types/utils/types.d.ts +97 -0
  26. package/package.json +1 -1
  27. package/dist/casino-challenges-overlay/casino-challenges-overlay-127cb2bd.js +0 -1
  28. package/dist/casino-challenges-overlay/casino-challenges-overlay.entry.js +0 -1
  29. package/dist/casino-challenges-overlay/index-23ccb586.js +0 -2
  30. package/dist/cjs/casino-challenges-overlay.cjs.entry.js +0 -10
  31. package/dist/esm/casino-challenges-overlay.entry.js +0 -2
@@ -21,7 +21,7 @@ function _interopNamespace(e) {
21
21
  }
22
22
 
23
23
  const NAMESPACE = 'casino-challenges-overlay';
24
- const BUILD = /* casino-challenges-overlay */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: false, cmpWillUpdate: false, connectedCallback: false, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: false, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: false, hostListenerTarget: false, hostListenerTargetBody: false, hostListenerTargetDocument: false, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: false, hydrateClientSide: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: "hydrated", initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: false, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: false, propMutable: false, propNumber: false, propString: true, reflect: true, scoped: false, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: true, slot: false, slotChildNodesFix: false, slotRelocation: false, state: true, style: true, svg: false, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: false, vdomKey: true, vdomListener: false, vdomPropOrAttr: true, vdomRef: false, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: true };
24
+ const BUILD = /* casino-challenges-overlay */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: false, cmpWillUpdate: false, connectedCallback: false, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: false, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: false, hostListenerTargetDocument: false, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: "hydrated", initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: false, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: false, propNumber: false, propString: true, reflect: true, scoped: false, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: true, slot: false, slotChildNodesFix: false, slotRelocation: false, state: true, style: true, svg: false, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: false, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: true };
25
25
 
26
26
  /*
27
27
  Stencil Client Platform v4.19.2 | MIT Licensed | https://stenciljs.com
@@ -71,10 +71,10 @@ var loadModule = (cmpMeta, hostRef, hmrVersionId) => {
71
71
  }
72
72
  switch(bundleId) {
73
73
 
74
- case 'casino-challenges-overlay.cjs':
74
+ case 'casino-challenges-overlay_2.cjs':
75
75
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
76
76
  /* webpackMode: "lazy" */
77
- './casino-challenges-overlay.cjs.entry.js')); }).then(processMod, consoleError);
77
+ './casino-challenges-overlay_2.cjs.entry.js')); }).then(processMod, consoleError);
78
78
  }
79
79
  }
80
80
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
@@ -106,6 +106,22 @@ var plt = {
106
106
  rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),
107
107
  ce: (eventName, opts) => new CustomEvent(eventName, opts)
108
108
  };
109
+ var supportsListenerOptions = /* @__PURE__ */ (() => {
110
+ let supportsListenerOptions2 = false;
111
+ try {
112
+ doc.addEventListener(
113
+ "e",
114
+ null,
115
+ Object.defineProperty({}, "passive", {
116
+ get() {
117
+ supportsListenerOptions2 = true;
118
+ }
119
+ })
120
+ );
121
+ } catch (e) {
122
+ }
123
+ return supportsListenerOptions2;
124
+ })();
109
125
  var promiseResolve = (v) => Promise.resolve(v);
110
126
  var supportsConstructableStylesheets = /* @__PURE__ */ (() => {
111
127
  try {
@@ -295,6 +311,9 @@ var Host = {};
295
311
  var isHost = (node) => node && node.$tag$ === Host;
296
312
  var parsePropertyValue = (propValue, propType) => {
297
313
  if (propValue != null && !isComplexType(propValue)) {
314
+ if (propType & 4 /* Boolean */) {
315
+ return propValue === "false" ? false : propValue === "" || !!propValue;
316
+ }
298
317
  if (propType & 1 /* String */) {
299
318
  return String(propValue);
300
319
  }
@@ -376,7 +395,7 @@ var getScopeId = (cmp, mode) => "sc-" + (cmp.$tagName$);
376
395
  var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
377
396
  if (oldValue !== newValue) {
378
397
  let isProp = isMemberInElement(elm, memberName);
379
- memberName.toLowerCase();
398
+ let ln = memberName.toLowerCase();
380
399
  if (memberName === "class") {
381
400
  const classList = elm.classList;
382
401
  const oldClasses = parseClassList(oldValue);
@@ -404,7 +423,29 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
404
423
  }
405
424
  }
406
425
  }
407
- } else if (memberName === "key") ; else {
426
+ } else if (memberName === "key") ; else if (memberName === "ref") {
427
+ if (newValue) {
428
+ newValue(elm);
429
+ }
430
+ } else if ((!isProp ) && memberName[0] === "o" && memberName[1] === "n") {
431
+ if (memberName[2] === "-") {
432
+ memberName = memberName.slice(3);
433
+ } else if (isMemberInElement(win, ln)) {
434
+ memberName = ln.slice(2);
435
+ } else {
436
+ memberName = ln[2] + memberName.slice(3);
437
+ }
438
+ if (oldValue || newValue) {
439
+ const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);
440
+ memberName = memberName.replace(CAPTURE_EVENT_REGEX, "");
441
+ if (oldValue) {
442
+ plt.rel(elm, memberName, oldValue, capture);
443
+ }
444
+ if (newValue) {
445
+ plt.ael(elm, memberName, newValue, capture);
446
+ }
447
+ }
448
+ } else {
408
449
  const isComplex = isComplexType(newValue);
409
450
  if ((isProp || isComplex && newValue !== null) && !isSvg) {
410
451
  try {
@@ -438,6 +479,8 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
438
479
  };
439
480
  var parseClassListRegex = /\s/;
440
481
  var parseClassList = (value) => !value ? [] : value.split(parseClassListRegex);
482
+ var CAPTURE_EVENT_SUFFIX = "Capture";
483
+ var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
441
484
 
442
485
  // src/runtime/vdom/update-element.ts
443
486
  var updateElement = (oldVnode, newVnode, isSvgMode2) => {
@@ -520,6 +563,7 @@ var removeVnodes = (vnodes, startIdx, endIdx) => {
520
563
  const vnode = vnodes[index];
521
564
  if (vnode) {
522
565
  const elm = vnode.$elm$;
566
+ nullifyVNodeRefs(vnode);
523
567
  if (elm) {
524
568
  elm.remove();
525
569
  }
@@ -644,6 +688,12 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
644
688
  elm.data = text;
645
689
  }
646
690
  };
691
+ var nullifyVNodeRefs = (vNode) => {
692
+ {
693
+ vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
694
+ vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);
695
+ }
696
+ };
647
697
  var insertBefore = (parent, newNode, reference) => {
648
698
  const inserted = parent == null ? void 0 : parent.insertBefore(newNode, reference);
649
699
  return inserted;
@@ -707,6 +757,13 @@ var dispatchHooks = (hostRef, isInitialLoad) => {
707
757
  }
708
758
  let maybePromise;
709
759
  if (isInitialLoad) {
760
+ {
761
+ hostRef.$flags$ |= 256 /* isListenReady */;
762
+ if (hostRef.$queuedListeners$) {
763
+ hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
764
+ hostRef.$queuedListeners$ = void 0;
765
+ }
766
+ }
710
767
  {
711
768
  maybePromise = safeCall(instance, "componentWillLoad");
712
769
  }
@@ -1034,6 +1091,7 @@ var connectedCallback = (elm) => {
1034
1091
  initializeComponent(elm, hostRef, cmpMeta);
1035
1092
  }
1036
1093
  } else {
1094
+ addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
1037
1095
  if (hostRef == null ? void 0 : hostRef.$lazyInstance$) ; else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
1038
1096
  hostRef.$onReadyPromise$.then(() => fireConnectedCallback());
1039
1097
  }
@@ -1049,6 +1107,12 @@ var disconnectInstance = (instance) => {
1049
1107
  var disconnectedCallback = async (elm) => {
1050
1108
  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
1051
1109
  const hostRef = getHostRef(elm);
1110
+ {
1111
+ if (hostRef.$rmListeners$) {
1112
+ hostRef.$rmListeners$.map((rmListener) => rmListener());
1113
+ hostRef.$rmListeners$ = void 0;
1114
+ }
1115
+ }
1052
1116
  if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {
1053
1117
  disconnectInstance(hostRef.$lazyInstance$);
1054
1118
  } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
@@ -1088,6 +1152,9 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
1088
1152
  {
1089
1153
  cmpMeta.$members$ = compactMeta[2];
1090
1154
  }
1155
+ {
1156
+ cmpMeta.$listeners$ = compactMeta[3];
1157
+ }
1091
1158
  {
1092
1159
  cmpMeta.$attrsToReflect$ = [];
1093
1160
  }
@@ -1119,9 +1186,10 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
1119
1186
  }
1120
1187
  }
1121
1188
  connectedCallback() {
1122
- getHostRef(this);
1189
+ const hostRef = getHostRef(this);
1123
1190
  if (!this.hasRegisteredEventListeners) {
1124
1191
  this.hasRegisteredEventListeners = true;
1192
+ addHostEventListeners(this, hostRef, cmpMeta.$listeners$);
1125
1193
  }
1126
1194
  if (appLoadFallback) {
1127
1195
  clearTimeout(appLoadFallback);
@@ -1176,6 +1244,39 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
1176
1244
  }
1177
1245
  endBootstrap();
1178
1246
  };
1247
+ var addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
1248
+ if (listeners) {
1249
+ listeners.map(([flags, name, method]) => {
1250
+ const target = getHostListenerTarget(elm, flags) ;
1251
+ const handler = hostListenerProxy(hostRef, method);
1252
+ const opts = hostListenerOpts(flags);
1253
+ plt.ael(target, name, handler, opts);
1254
+ (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));
1255
+ });
1256
+ }
1257
+ };
1258
+ var hostListenerProxy = (hostRef, methodName) => (ev) => {
1259
+ var _a;
1260
+ try {
1261
+ {
1262
+ if (hostRef.$flags$ & 256 /* isListenReady */) {
1263
+ (_a = hostRef.$lazyInstance$) == null ? void 0 : _a[methodName](ev);
1264
+ } else {
1265
+ (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);
1266
+ }
1267
+ }
1268
+ } catch (e) {
1269
+ consoleError(e);
1270
+ }
1271
+ };
1272
+ var getHostListenerTarget = (elm, flags) => {
1273
+ if (flags & 8 /* TargetWindow */) return win;
1274
+ return elm;
1275
+ };
1276
+ var hostListenerOpts = (flags) => supportsListenerOptions ? {
1277
+ passive: (flags & 1 /* Passive */) !== 0,
1278
+ capture: (flags & 2 /* Capture */) !== 0
1279
+ } : (flags & 2 /* Capture */) !== 0;
1179
1280
 
1180
1281
  // src/runtime/nonce.ts
1181
1282
  var setNonce = (nonce) => plt.$nonce$ = nonce;
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const casinoChallengesOverlay = require('./casino-challenges-overlay-e96b8732.js');
6
- require('./index-87f5caf5.js');
5
+ const casinoChallengesOverlay = require('./casino-challenges-overlay-a75f839f.js');
6
+ require('./index-11e96899.js');
7
7
 
8
8
 
9
9
 
@@ -2,13 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-87f5caf5.js');
5
+ const index = require('./index-11e96899.js');
6
6
  const appGlobals = require('./app-globals-3a1e7e63.js');
7
7
 
8
8
  const defineCustomElements = async (win, options) => {
9
9
  if (typeof window === 'undefined') return undefined;
10
10
  await appGlobals.globalScripts();
11
- return index.bootstrapLazy([["casino-challenges-overlay.cjs",[[1,"casino-challenges-overlay",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"progress":[32],"isGrayed":[32],"isNew":[32],"isGift":[32],"isNotification":[32]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
11
+ return index.bootstrapLazy([["casino-challenges-overlay_2.cjs",[[1,"casino-challenges-overlay",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"translationUrl":[513,"translation-url"],"language":[513],"challenges":[16],"progress":[32],"isGrayed":[32],"isNew":[32],"isGift":[32],"isNotification":[32],"inProgressCount":[32],"activeChallenge":[32],"showModal":[32],"modalTitle":[32],"modalSubTitle":[32],"modalBtnText":[32],"modalShowIcon":[32],"modalReward":[32],"modalAddition":[32],"modalAdditionLink":[32],"modalAdditionText":[32]},[[8,"message","handleEvent"]],{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"],"challenges":["handleChallengesChange"]}],[1,"casino-challenges-overlay-modal",{"mbSource":[513,"mb-source"],"clientStyling":[513,"client-styling"],"clientStylingUrl":[513,"client-styling-url"],"language":[1],"isOpen":[4,"is-open"],"showIcon":[4,"show-icon"],"showButton":[4,"show-button"],"header":[1],"subtitle":[1],"reward":[1],"addition":[1],"additionLinkUrl":[1,"addition-link-url"],"additionLinkText":[1,"addition-link-text"],"actionText":[1,"action-text"],"translationUrl":[513,"translation-url"],"handleClick":[16]},null,{"clientStyling":["handleClientStylingChange"],"clientStylingUrl":["handleClientStylingUrlChange"],"mbSource":["handleMbSourceChange"]}]]]], options);
12
12
  };
13
13
 
14
14
  exports.setNonce = index.setNonce;
@@ -7,6 +7,13 @@
7
7
  "version": "4.19.2",
8
8
  "typescriptVersion": "5.4.5"
9
9
  },
10
- "collections": [],
10
+ "collections": [
11
+ {
12
+ "name": "@everymatrix/casino-challenges-overlay-modal",
13
+ "tags": [
14
+ "casino-challenges-overlay-modal"
15
+ ]
16
+ }
17
+ ],
11
18
  "bundles": []
12
19
  }
@@ -40,6 +40,9 @@
40
40
  z-index: 304;
41
41
  top: 0;
42
42
  }
43
+ .circle.grayed {
44
+ mix-blend-mode: luminosity;
45
+ }
43
46
  .circle.grayed::before {
44
47
  display: block;
45
48
  }
@@ -4,6 +4,8 @@ import bgIcon from "../../assets/bg-icon.svg";
4
4
  import bellIcon from "../../assets/bell.svg";
5
5
  import giftIcon from "../../assets/gift.svg";
6
6
  import { resolveTranslationUrl, translate } from "../../utils/locale.utils";
7
+ import { EChallengeProgressStatus, EChallengeRewardType, EChallengeStatus } from "../../utils/types";
8
+ import "../../../../../casino-challenges-overlay-modal/dist/types/index";
7
9
  export class CasinoChallengesOverlay {
8
10
  constructor() {
9
11
  this.mbSource = undefined;
@@ -11,11 +13,23 @@ export class CasinoChallengesOverlay {
11
13
  this.clientStylingUrl = undefined;
12
14
  this.translationUrl = '';
13
15
  this.language = 'en';
14
- this.progress = 50;
16
+ this.challenges = undefined;
17
+ this.progress = 0;
15
18
  this.isGrayed = false;
16
19
  this.isNew = false;
17
20
  this.isGift = false;
18
21
  this.isNotification = false;
22
+ this.inProgressCount = 0;
23
+ this.activeChallenge = '';
24
+ this.showModal = false;
25
+ this.modalTitle = '';
26
+ this.modalSubTitle = '';
27
+ this.modalBtnText = '';
28
+ this.modalShowIcon = true;
29
+ this.modalReward = '';
30
+ this.modalAddition = '';
31
+ this.modalAdditionLink = '';
32
+ this.modalAdditionText = '';
19
33
  }
20
34
  handleClientStylingChange(newValue, oldValue) {
21
35
  if (newValue != oldValue) {
@@ -32,7 +46,134 @@ export class CasinoChallengesOverlay {
32
46
  setStreamStyling(this.stylingContainer, `${this.mbSource}.Style`, this.stylingSubscription);
33
47
  }
34
48
  }
49
+ handleChallengesChange(newValue) {
50
+ let maxPercentage = 0;
51
+ let count = 0;
52
+ for (const challenge of newValue.filter((x) => x.Status === EChallengeStatus.InProgress)) {
53
+ if (challenge.Status === EChallengeStatus.InProgress) {
54
+ count++;
55
+ for (const level of challenge.LevelProgresses) {
56
+ if (level.ProgressStatus === EChallengeProgressStatus.InProgress) {
57
+ if (level.ProgressPercentage > maxPercentage) {
58
+ maxPercentage = level.ProgressPercentage;
59
+ this.activeChallenge = challenge.ChallengeId;
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ this.progress = maxPercentage;
66
+ this.inProgressCount = count;
67
+ }
68
+ handleEvent(e) {
69
+ const { type, data } = e === null || e === void 0 ? void 0 : e.data;
70
+ switch (type) {
71
+ case 'UpdateChallengeProgress': {
72
+ const newChallenge = data;
73
+ let completedLevel = '';
74
+ this.isNew = this.isNotification = this.isGift = false;
75
+ const newChallenges = this.challenges.map((challenge) => {
76
+ if (challenge.ChallengeId !== (newChallenge === null || newChallenge === void 0 ? void 0 : newChallenge.ChallengeId))
77
+ return challenge;
78
+ const updatedLevels = challenge.LevelProgresses.map((level) => {
79
+ const newLevelData = newChallenge === null || newChallenge === void 0 ? void 0 : newChallenge.Levels.find((l) => l.LevelId === level.LevelId);
80
+ if (!newLevelData)
81
+ return level;
82
+ if (newLevelData.ProgressPercentage === 100) {
83
+ completedLevel = level.LevelId;
84
+ if (level.Rewards.every((r) => r.Type === EChallengeRewardType.Challenge)) {
85
+ this.isNew = true;
86
+ }
87
+ else {
88
+ this.isGift = true;
89
+ }
90
+ }
91
+ return Object.assign(Object.assign({}, level), newLevelData);
92
+ });
93
+ return Object.assign(Object.assign({}, challenge), { Status: newChallenge.Status, LevelProgresses: updatedLevels });
94
+ });
95
+ this.challenges = newChallenges;
96
+ if (completedLevel) {
97
+ for (const challenge of this.challenges) {
98
+ for (const level of challenge.LevelProgresses) {
99
+ if (level.LevelId === completedLevel) {
100
+ level.ProgressStatus = EChallengeProgressStatus.Completed;
101
+ const nextLevel = challenge.LevelProgresses.find((z) => z.OrderNumber === level.OrderNumber + 1);
102
+ if (nextLevel) {
103
+ nextLevel.ProgressStatus = EChallengeProgressStatus.InProgress;
104
+ }
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ }
110
+ break;
111
+ }
112
+ case 'ChallengeForfeitNotification': {
113
+ this.handleStatusEvent(data);
114
+ break;
115
+ }
116
+ case 'ShowChallengeRewardModal': {
117
+ this.showModal = true;
118
+ if (data === null || data === void 0 ? void 0 : data.HasError) {
119
+ this.modalTitle = translate('errorTitle', this.language);
120
+ this.modalSubTitle = translate('errorSubTitle', this.language);
121
+ this.modalBtnText = translate('errorBtnText', this.language);
122
+ this.modalShowIcon = false;
123
+ }
124
+ else {
125
+ const completedLevel = this.challenges
126
+ .flatMap((x) => x.LevelProgresses || [])
127
+ .find((level) => level.LevelId === (data === null || data === void 0 ? void 0 : data.LevelId));
128
+ this.modalSubTitle = translate('level', this.language) + ' 3 ' + translate('completed', this.language);
129
+ this.modalReward = completedLevel.Rewards.map((reward) => reward.RewardDescription).join(' + ');
130
+ if (completedLevel.Rewards.some((x) => x.Type === EChallengeRewardType.Custom)) {
131
+ this.modalAddition = translate('physicalReward', this.language);
132
+ this.modalAdditionText = translate('linkText', this.language);
133
+ }
134
+ }
135
+ break;
136
+ }
137
+ case 'ChallengeChangeStatusNotification': {
138
+ this.handleStatusEvent(data);
139
+ }
140
+ }
141
+ }
142
+ handleStatusEvent(data) {
143
+ const newChallenges = [...this.challenges];
144
+ newChallenges.forEach(({ ChallengeId }, i) => {
145
+ if ((data === null || data === void 0 ? void 0 : data.ChallengeId) === ChallengeId) {
146
+ if ((data === null || data === void 0 ? void 0 : data.IsEnabled) === true) {
147
+ newChallenges[i] = Object.assign(Object.assign({}, newChallenges[i]), { Status: EChallengeStatus.InProgress });
148
+ this.challenges = newChallenges;
149
+ return;
150
+ }
151
+ else {
152
+ newChallenges[i] = Object.assign(Object.assign({}, newChallenges[i]), { Status: EChallengeStatus.Forfeited });
153
+ }
154
+ }
155
+ });
156
+ if ((data === null || data === void 0 ? void 0 : data.ChallengeId) === this.activeChallenge) {
157
+ this.isNotification = true;
158
+ if (this.inProgressCount === 1) {
159
+ setTimeout(() => {
160
+ this.isGrayed = true;
161
+ this.isNotification = false;
162
+ }, 10000);
163
+ }
164
+ else if (this.inProgressCount > 1) {
165
+ setTimeout(() => {
166
+ this.challenges = newChallenges;
167
+ this.isNotification = false;
168
+ }, 10000);
169
+ }
170
+ }
171
+ else {
172
+ this.challenges = newChallenges;
173
+ }
174
+ }
35
175
  componentWillLoad() {
176
+ this.handleChallengesChange(this.challenges);
36
177
  if (this.translationUrl) {
37
178
  resolveTranslationUrl(this.translationUrl);
38
179
  }
@@ -127,16 +268,29 @@ export class CasinoChallengesOverlay {
127
268
  const icon = this.isGift ? giftIcon : this.isNotification ? bellIcon : null;
128
269
  if (icon)
129
270
  return h("img", { class: "icon", src: icon });
130
- return h("div", { class: "gradient-text" }, "1");
271
+ return h("div", { class: "gradient-text" }, this.inProgressCount);
272
+ }
273
+ closeModal() {
274
+ this.showModal = false;
275
+ this.modalTitle = '';
276
+ this.modalSubTitle = '';
277
+ this.modalBtnText = '';
278
+ this.modalShowIcon = true;
279
+ this.modalReward = '';
280
+ this.modalAddition = '';
281
+ this.modalAdditionText = '';
131
282
  }
132
283
  render() {
284
+ if (this.inProgressCount < 1) {
285
+ return;
286
+ }
133
287
  const dot = this.getCapsuleDotPosition(this.progress);
134
- return (h("div", { key: '7af8930a4a36a295e68f38f3c30ae7543b8cc12d', class: "container" }, h("div", { key: '27d77b134ecd3a27309f1e5d84b9c1bd2bbf8bcb', class: `circle ${this.isGrayed ? 'grayed' : ''}`, style: {
288
+ return (h("div", { class: "container" }, h("div", { class: `circle ${this.isGrayed ? 'grayed' : ''}`, style: {
135
289
  '--progress': `${this.progress}%`
136
- } }, h("img", { key: '42486b790d0c33022c2a4acb0ef2ad9b618a1fc2', class: "circle__img", src: bgIcon }), h("div", { key: 'eba633711d409a63ef91621759029d82b64a96b7', class: "circle__content" }, h("span", { key: 'fe466e281f00b217aae2c44be730131e1349eaa3' }, this.progress, "%")), dot && (h("div", { key: 'b76218c1769e78fd165f9a3b0e311ec16dfc67ed', class: "dot", style: {
290
+ } }, h("img", { class: "circle__img", src: bgIcon }), h("div", { class: "circle__content" }, h("span", null, this.progress, "%")), dot && (h("div", { class: "dot", style: {
137
291
  left: `${dot.x}px`,
138
292
  top: `${dot.y}px`
139
- } }))), !this.isGrayed && h("div", { key: '59049b68efc9649973521afb1b05caa11a14a3b4', class: `badge ${this.isNew ? 'new' : ''}` }, this.renderBadgeContent())));
293
+ } }))), !this.isGrayed && h("div", { class: `badge ${this.isNew ? 'new' : ''}` }, this.renderBadgeContent()), h("casino-challenges-overlay-modal", { isOpen: this.showModal, handleClick: () => this.closeModal(), header: this.modalTitle, subtitle: this.modalSubTitle, actionText: this.modalBtnText, showIcon: this.modalShowIcon, reward: this.modalReward, addition: this.modalAddition, additionLinkText: this.modalAdditionText, additionLinkUrl: this.modalAdditionText })));
140
294
  }
141
295
  static get is() { return "casino-challenges-overlay"; }
142
296
  static get encapsulation() { return "shadow"; }
@@ -238,6 +392,27 @@ export class CasinoChallengesOverlay {
238
392
  "attribute": "language",
239
393
  "reflect": true,
240
394
  "defaultValue": "'en'"
395
+ },
396
+ "challenges": {
397
+ "type": "unknown",
398
+ "mutable": false,
399
+ "complexType": {
400
+ "original": "IChallenge[]",
401
+ "resolved": "IChallenge[]",
402
+ "references": {
403
+ "IChallenge": {
404
+ "location": "import",
405
+ "path": "../../utils/types",
406
+ "id": "../../../../packages/stencil/casino-challenges-overlay/src/utils/types.ts::IChallenge"
407
+ }
408
+ }
409
+ },
410
+ "required": false,
411
+ "optional": false,
412
+ "docs": {
413
+ "tags": [],
414
+ "text": "User challenges list"
415
+ }
241
416
  }
242
417
  };
243
418
  }
@@ -247,7 +422,18 @@ export class CasinoChallengesOverlay {
247
422
  "isGrayed": {},
248
423
  "isNew": {},
249
424
  "isGift": {},
250
- "isNotification": {}
425
+ "isNotification": {},
426
+ "inProgressCount": {},
427
+ "activeChallenge": {},
428
+ "showModal": {},
429
+ "modalTitle": {},
430
+ "modalSubTitle": {},
431
+ "modalBtnText": {},
432
+ "modalShowIcon": {},
433
+ "modalReward": {},
434
+ "modalAddition": {},
435
+ "modalAdditionLink": {},
436
+ "modalAdditionText": {}
251
437
  };
252
438
  }
253
439
  static get watchers() {
@@ -260,6 +446,18 @@ export class CasinoChallengesOverlay {
260
446
  }, {
261
447
  "propName": "mbSource",
262
448
  "methodName": "handleMbSourceChange"
449
+ }, {
450
+ "propName": "challenges",
451
+ "methodName": "handleChallengesChange"
452
+ }];
453
+ }
454
+ static get listeners() {
455
+ return [{
456
+ "name": "message",
457
+ "method": "handleEvent",
458
+ "target": "window",
459
+ "capture": false,
460
+ "passive": false
263
461
  }];
264
462
  }
265
463
  }
@@ -1,7 +1,15 @@
1
1
  const DEFAULT_LANGUAGE = 'en';
2
2
  const TRANSLATIONS = {
3
3
  en: {
4
- new: 'new'
4
+ new: 'new',
5
+ errorBtnText: 'Ok',
6
+ errorTitle: 'Reward failed',
7
+ errorSubTitle: 'Sorry — we couldn’t grant the reward. Please try again.',
8
+ level: 'Level',
9
+ completed: 'has been completed!',
10
+ youWon: 'You have won',
11
+ physicalReward: 'for physical rewards please contact ',
12
+ linkText: 'Customer Support'
5
13
  },
6
14
  ro: {},
7
15
  fr: {},
@@ -0,0 +1,32 @@
1
+ export var EChallengeRewardType;
2
+ (function (EChallengeRewardType) {
3
+ EChallengeRewardType[EChallengeRewardType["FreeSpins"] = 0] = "FreeSpins";
4
+ EChallengeRewardType[EChallengeRewardType["LuckyWheel"] = 1] = "LuckyWheel";
5
+ EChallengeRewardType[EChallengeRewardType["Leaderboard"] = 2] = "Leaderboard";
6
+ EChallengeRewardType[EChallengeRewardType["Challenge"] = 3] = "Challenge";
7
+ EChallengeRewardType[EChallengeRewardType["Custom"] = 4] = "Custom";
8
+ })(EChallengeRewardType || (EChallengeRewardType = {}));
9
+ export var EChallengeProgressStatus;
10
+ (function (EChallengeProgressStatus) {
11
+ EChallengeProgressStatus[EChallengeProgressStatus["Closed"] = 0] = "Closed";
12
+ EChallengeProgressStatus[EChallengeProgressStatus["InProgress"] = 1] = "InProgress";
13
+ EChallengeProgressStatus[EChallengeProgressStatus["Fillup"] = 2] = "Fillup";
14
+ EChallengeProgressStatus[EChallengeProgressStatus["Completed"] = 3] = "Completed";
15
+ })(EChallengeProgressStatus || (EChallengeProgressStatus = {}));
16
+ export var EChallengeStatus;
17
+ (function (EChallengeStatus) {
18
+ EChallengeStatus[EChallengeStatus["Started"] = 0] = "Started";
19
+ EChallengeStatus[EChallengeStatus["InProgress"] = 1] = "InProgress";
20
+ EChallengeStatus[EChallengeStatus["PendingLevelReward"] = 2] = "PendingLevelReward";
21
+ EChallengeStatus[EChallengeStatus["Completed"] = 3] = "Completed";
22
+ EChallengeStatus[EChallengeStatus["Expired"] = 4] = "Expired";
23
+ EChallengeStatus[EChallengeStatus["Forfeited"] = 5] = "Forfeited";
24
+ EChallengeStatus[EChallengeStatus["Awaiting"] = 6] = "Awaiting";
25
+ EChallengeStatus[EChallengeStatus["Paused"] = 7] = "Paused";
26
+ })(EChallengeStatus || (EChallengeStatus = {}));
27
+ export var EChallengeLevelTargetType;
28
+ (function (EChallengeLevelTargetType) {
29
+ EChallengeLevelTargetType[EChallengeLevelTargetType["Accumulative"] = 0] = "Accumulative";
30
+ EChallengeLevelTargetType[EChallengeLevelTargetType["SingleBet"] = 1] = "SingleBet";
31
+ EChallengeLevelTargetType[EChallengeLevelTargetType["MultipleOneBetSize"] = 2] = "MultipleOneBetSize";
32
+ })(EChallengeLevelTargetType || (EChallengeLevelTargetType = {}));