epp-lib 0.0.28-snapshot → 0.0.29-snapshot

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.
Binary file
@@ -5,6 +5,7 @@ import { Checkout } from '../model/checkout';
5
5
  import { Timer } from '../model/timer';
6
6
  import { PaymentType } from '../model/payment-type';
7
7
  import { RapydComponent } from './rapyd/rapyd.component';
8
+ import { timer } from 'rxjs';
8
9
  export class Payment {
9
10
  constructor(dialog) {
10
11
  this.dialog = dialog;
@@ -44,7 +45,7 @@ export class Payment {
44
45
  const checkout1 = new Checkout();
45
46
  checkout1.setCallback(message.payload);
46
47
  this.timer.stopWatcher();
47
- this.sendCallBackMessageToIframe(checkout1);
48
+ this.sendMessageToIframe(checkout1);
48
49
  break;
49
50
  case IframeMessageType.PAYMENT_CALLBACK:
50
51
  const checkout2 = new Checkout();
@@ -55,7 +56,7 @@ export class Payment {
55
56
  checkout2.setCallback(message.payload);
56
57
  }
57
58
  this.timer.stopWatcher();
58
- this.sendCallBackMessageToIframe(checkout2);
59
+ this.sendMessageToIframe(checkout2);
59
60
  break;
60
61
  case IframeMessageType.OPEN_DEPOSIT:
61
62
  case IframeMessageType.OPEN_TRANSACTION:
@@ -93,14 +94,14 @@ export class Payment {
93
94
  let popup = window.open(checkout.url, "VOdds", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');
94
95
  if (!popup) {
95
96
  checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';
96
- this.sendCallBackMessageToIframe(checkout);
97
+ this.sendMessageToIframe(checkout);
97
98
  this.cache.delete(checkout.requestId);
98
99
  return;
99
100
  }
100
101
  checkout.popup = popup;
101
102
  popup.focus();
102
103
  this.onThirdPartyMessage(checkout);
103
- this.timer.oberserableTimer(checkout, () => this.sendCallBackMessageToIframe(checkout));
104
+ this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));
104
105
  }
105
106
  async openVisaCheckout(checkout) {
106
107
  try {
@@ -114,7 +115,7 @@ export class Payment {
114
115
  maxWidth: '90vw'
115
116
  }).afterClosed().subscribe(checkoutFailureMessage => {
116
117
  checkout.errorMessage = checkoutFailureMessage;
117
- this.sendCallBackMessageToIframe(checkout);
118
+ this.sendMessageToIframe(checkout);
118
119
  });
119
120
  }
120
121
  catch (error) {
@@ -155,22 +156,22 @@ export class Payment {
155
156
  console.log('Received from 3th party:', event.data);
156
157
  checkout.setCallback(event.data);
157
158
  this.timer.stopWatcher();
158
- this.sendCallBackMessageToIframe(checkout);
159
+ this.sendMessageToIframe(checkout);
159
160
  }
160
161
  });
161
162
  }
162
163
  /**
163
164
  * send the message from the parent to the iframe
164
165
  */
165
- sendCallBackMessageToIframe(checkout) {
166
- console.log("send callback message to iframe: ", checkout);
166
+ sendMessageToIframe(checkout) {
167
+ console.log("send the message from the parent into the iframe: ", checkout);
167
168
  if (this.iframe == undefined)
168
169
  return;
169
170
  let message = {
170
171
  type: IframeMessageType.PAYMENT_CALLBACK,
171
172
  payload: checkout
172
173
  };
173
- this.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);
174
+ this.iframeMessageService.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);
174
175
  this.cache.delete(checkout.requestId);
175
176
  }
176
177
  removePaymentIframe() {
@@ -178,17 +179,27 @@ export class Payment {
178
179
  this.iframe = undefined;
179
180
  this.token = undefined;
180
181
  this.tokenExpire = undefined;
181
- this.iframeMessageService.stopRefreshedTokenSchedule();
182
- }
183
- sendMessageToIframe(iframe, message, iframeUrl = '*') {
184
- if (this.iframe == undefined)
185
- return;
186
- this.iframeMessageService.sendMessageToIframe(this.iframe, message, iframeUrl);
182
+ this.stopRefreshedTokenSchedule();
187
183
  }
188
184
  setConfig(tokenExpireAt, token) {
189
185
  this.token = token;
190
186
  this.tokenExpire = tokenExpireAt;
191
- this.iframeMessageService.startRefreshedTokenSchedule(this.tokenExpire);
187
+ this.startRefreshedTokenSchedule(this.tokenExpire);
188
+ }
189
+ stopRefreshedTokenSchedule() {
190
+ if (this.timerSubscription) {
191
+ this.timerSubscription.unsubscribe();
192
+ this.timerSubscription = undefined;
193
+ }
194
+ }
195
+ startRefreshedTokenSchedule(timeExpire) {
196
+ this.stopRefreshedTokenSchedule();
197
+ const delayTime = timeExpire - 60;
198
+ const safeDelay = Math.max(0, delayTime);
199
+ this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {
200
+ this.processMessage({ type: IframeMessageType.REQUIRE_REFRESH_TOKEN });
201
+ this.stopRefreshedTokenSchedule();
202
+ });
192
203
  }
193
204
  }
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9jb21wb25lbnQvcGF5bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxNQUFNLE9BQU8sT0FBTztJQVVoQixZQUFtQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVHBDLFVBQUssR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUV6QyxVQUFLLEdBQVUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBSTlCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUc5Qjs7V0FFRztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUztnQkFBRSxPQUFPO1lBQ2xELFFBQVEsT0FBTyxDQUFDLElBQUks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IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJZnJhbWVNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvaWZyYW1lLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vbW9kZWwvaWZyYW1lLW1lc3NhZ2UtdHlwZSc7XHJcbmltcG9ydCB7IENoZWNrb3V0IH0gZnJvbSAnLi4vbW9kZWwvY2hlY2tvdXQnO1xyXG5pbXBvcnQgeyBJZnJhbWVNZXNzYWdlIH0gZnJvbSAnLi4vbW9kZWwvaWZyYW1lLW1lc3NhZ2UnO1xyXG5pbXBvcnQgeyBUaW1lciB9IGZyb20gJy4uL21vZGVsL3RpbWVyJztcclxuaW1wb3J0IHsgUGF5bWVudFR5cGUgfSBmcm9tICcuLi9tb2RlbC9wYXltZW50LXR5cGUnO1xyXG5pbXBvcnQgeyBSYXB5ZENvbXBvbmVudCB9IGZyb20gJy4vcmFweWQvcmFweWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50IHtcclxuICAgIGNhY2hlOiBNYXA8bnVtYmVyLCBDaGVja291dD4gPSBuZXcgTWFwKCk7XHJcbiAgICBpZnJhbWU6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IHwgdW5kZWZpbmVkOy8vU2V0IGZyb20gdGhlIGNvbXBvbmVudFxyXG4gICAgdGltZXI6IFRpbWVyID0gbmV3IFRpbWVyKDUwMCk7IC8vIDAuNXNcclxuICAgIHJlc3VsdDogQ2hlY2tvdXQgfCB1bmRlZmluZWQ7XHJcbiAgICB0b2tlbkV4cGlyZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIHByaXZhdGUgaWZyYW1lTWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoSWZyYW1lTWVzc2FnZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByYXB5ZFNjcmlwdExvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIExpc3RlbiBPUEVOX1BBWU1FTlRfRk9STSBtZXNzYWdlIHRvIG9wZW4gM3RoIHBhcnR5IHBhZ2VcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLm9uTWVzc2FnZXMoKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBmcm9tIGlmcmFtZTonLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2UudHlwZSA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuT1BFTl9QQVlNRU5UX0ZPUk06XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tvdXQgPSBPYmplY3QuYXNzaWduKG5ldyBDaGVja291dCgpLCBtZXNzYWdlLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tvdXQgfHwgdGhpcy5jYWNoZS5nZXQoY2hlY2tvdXQucmVxdWVzdElkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLmNhY2hlLnNpemUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgLy9UT0RPIGNsZWFyIHRoZSBjdXJyZW50IHBvcHVwXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hlY2tvdXQucGF5bWVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5FQ09QQVlaOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2luZG93KGNoZWNrb3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFBheW1lbnRUeXBlLlJBUFlEOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuVmlzYUNoZWNrb3V0KGNoZWNrb3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuVEhJUkRfUEFSVFlfQ0FMTEJBQ0s6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tvdXQxID0gbmV3IENoZWNrb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQxLnNldENhbGxiYWNrKG1lc3NhZ2UucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lci5zdG9wV2F0Y2hlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZENhbGxCYWNrTWVzc2FnZVRvSWZyYW1lKGNoZWNrb3V0MSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLlBBWU1FTlRfQ0FMTEJBQ0s6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tvdXQyID0gbmV3IENoZWNrb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGF5bG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja291dDIuc2V0RXJyb3JNZXNzYWdlKG1lc3NhZ2UucGF5bG9hZCBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0Mi5zZXRDYWxsYmFjayhtZXNzYWdlLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVyLnN0b3BXYXRjaGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kQ2FsbEJhY2tNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQyKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5PUEVOX0RFUE9TSVQ6XHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLk9QRU5fVFJBTlNBQ1RJT046XHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLk9QRU5fV0lUSERSQVc6XHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLkNBTkNFTF9XSVRIRFJBVzpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuUEFZT1VUOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5JTl9QUk9HUkVTUzpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuUkVGUkVTSF9UT0tFTjpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuUkVGUkVTSF9JRlJBTUU6XHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLlJFUVVJUkVfUkVGUkVTSF9UT0tFTjpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuVFJBQ0tfR0E0OlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc01lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXREb21haW4oaG9zdDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFob3N0KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5pZnJhbWVNZXNzYWdlU2VydmljZS5nZXREb21haW4oaG9zdCk7XHJcbiAgICB9XHJcbiAgICBwcm9jZXNzTWVzc2FnZShtZXNzYWdlOiBJZnJhbWVNZXNzYWdlKSB7XHJcbiAgICAgICAgLy9UT0RPXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGVuIDN0aCBwYXJ0eSBwYWdlIG9uIHRoZSBwb3B1cCB3aW5kb3duIG9yIG5ldyB0YWJcclxuICAgICAqL1xyXG4gICAgb3BlbldpbmRvdyhjaGVja291dDogQ2hlY2tvdXQpIHtcclxuICAgICAgICB0aGlzLmNhY2hlLnNldChjaGVja291dC5yZXF1ZXN0SWQsIGNoZWNrb3V0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk9wZW4gd2luZG93bjogXCIsIHRoaXMuY2FjaGUpO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gNDcwO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IDU1MDtcclxuICAgICAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDAsIChzY3JlZW4ud2lkdGggLSB3aWR0aCkgLyAyKSxcclxuICAgICAgICB0b3AgPSBNYXRoLm1heCgwLCAoc2NyZWVuLmhlaWdodCAtIGhlaWdodCkgLyAyKTtcclxuICAgICAgICAvLyB2YXIgcG9wdXAgPSB3aW5kb3cub3Blbih1cmwsIFwiVk9kZHNcIiwgJ3dpZHRoPScgKyB3aWR0aCArICcsaGVpZ2h0PScgKyBoZWlnaHQgKyAnLGxlZnQ9JyArIGxlZnQgKyAnLHRvcD0nICsgdG9wICsgJyxzdGF0dXM9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx0b29sYmFyPTAnKTtcclxuICAgICAgICBsZXQgcG9wdXAgPSB3aW5kb3cub3BlbihjaGVja291dC51cmwsIFwiVk9kZHNcIiwgJ3dpZHRoPScgKyB3aWR0aCArICcsaGVpZ2h0PScgKyBoZWlnaHQgKyAnLGxlZnQ9JyArIGxlZnQgKyAnLHRvcD0nICsgdG9wICsgJyxzdGF0dXM9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx0b29sYmFyPTAnKTtcclxuICAgICAgICBpZiAoIXBvcHVwKSB7XHJcbiAgICAgICAgICAgIGNoZWNrb3V0LmVycm9yTWVzc2FnZSA9ICdZb3VyIHNldHRpbmcgcHJldmVudHMgcG9wdXBzLiBQbGVhc2UgY2hhbmdlIHlvdXIgc2V0dGluZyB0byBhbGxvdyBpdC4nO1xyXG4gICAgICAgICAgICB0aGlzLnNlbmRDYWxsQmFja01lc3NhZ2VUb0lmcmFtZShjaGVja291dCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKGNoZWNrb3V0LnJlcXVlc3RJZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hlY2tvdXQucG9wdXAgPSBwb3B1cDtcclxuICAgICAgICBwb3B1cC5mb2N1cygpO1xyXG4gICAgICAgIHRoaXMub25UaGlyZFBhcnR5TWVzc2FnZShjaGVja291dCk7XHJcbiAgICAgICAgdGhpcy50aW1lci5vYmVyc2VyYWJsZVRpbWVyKGNoZWNrb3V0LCAoKSA9PiB0aGlzLnNlbmRDYWxsQmFja01lc3NhZ2VUb0lmcmFtZShjaGVja291dCkpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb3BlblZpc2FDaGVja291dChjaGVja291dDogQ2hlY2tvdXQpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWQoKTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihSYXB5ZENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0VXJsOiBjaGVja291dC51cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogY2hlY2tvdXQuZXhwaXJhdGlvblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6ICc5MHZ3J1xyXG4gICAgICAgICAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShjaGVja291dEZhaWx1cmVNZXNzYWdlID0+IHtcclxuICAgICAgICAgICAgICAgIGNoZWNrb3V0LmVycm9yTWVzc2FnZSA9IGNoZWNrb3V0RmFpbHVyZU1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRDYWxsQmFja01lc3NhZ2VUb0lmcmFtZShjaGVja291dCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAodGhpcy5yYXB5ZFNjcmlwdExvYWRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHJcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSAnaHR0cHM6Ly9zYW5kYm94Y2hlY2tvdXR0b29sa2l0LnJhcHlkLm5ldCc7XHJcbiAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yYXB5ZFNjcmlwdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIFJhcHlkIENoZWNrb3V0IFRvb2xraXQnKSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0ZW4gbWVzc2FnZSBvciBhY3Rpb24gZnJvbSAzdGggcGFydHkgb24gdGhlIHBvcHVwXHJcbiAgICAgKiBTa2lwIGZvciBSQVBZRCAtIEl0IHdpbGwgcHJvY2VzcyB3aGVuIHRoZSBkaWFsb2cgY2xvc2VcclxuICAgICAqL1xyXG4gICAgb25UaGlyZFBhcnR5TWVzc2FnZShjaGVja291dDogQ2hlY2tvdXQpIHtcclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLm9uVGhpcmRQYXJ0eU1lc3NhZ2VzKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaWZyYW1lTWVzc2FnZVNlcnZpY2UuaXNWYWxpZERvbWFpbihjaGVja291dC5wYXltZW50VHlwZSwgZXZlbnQub3JpZ2luKSkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChjaGVja291dC5wYXltZW50VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuTkE6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuSkVUT046XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5FQ09QQVlaOlxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBmcm9tIDN0aCBwYXJ0eTonLCBldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIGNoZWNrb3V0LnNldENhbGxiYWNrKGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lci5zdG9wV2F0Y2hlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kQ2FsbEJhY2tNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZW5kIHRoZSBtZXNzYWdlIGZyb20gdGhlIHBhcmVudCB0byB0aGUgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIHNlbmRDYWxsQmFja01lc3NhZ2VUb0lmcmFtZShjaGVja291dDogQ2hlY2tvdXQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInNlbmQgY2FsbGJhY2sgbWVzc2FnZSB0byBpZnJhbWU6IFwiLCBjaGVja291dCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaWZyYW1lID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBtZXNzYWdlOiBJZnJhbWVNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBJZnJhbWVNZXNzYWdlVHlwZS5QQVlNRU5UX0NBTExCQUNLLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiBjaGVja291dFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlVG9JZnJhbWUodGhpcy5pZnJhbWUsIG1lc3NhZ2UsIGNoZWNrb3V0LmlmcmFtZVVybCk7XHJcbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoY2hlY2tvdXQucmVxdWVzdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVQYXltZW50SWZyYW1lKCkge1xyXG4gICAgICAgIC8vVE9ET1xyXG4gICAgICAgIHRoaXMuaWZyYW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMudG9rZW4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy50b2tlbkV4cGlyZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLnN0b3BSZWZyZXNoZWRUb2tlblNjaGVkdWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZE1lc3NhZ2VUb0lmcmFtZShpZnJhbWU6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+LCBtZXNzYWdlOiBJZnJhbWVNZXNzYWdlLCBpZnJhbWVVcmw6IHN0cmluZyA9ICcqJykge1xyXG4gICAgICBpZiAodGhpcy5pZnJhbWUgPT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgIHRoaXMuaWZyYW1lTWVzc2FnZVNlcnZpY2Uuc2VuZE1lc3NhZ2VUb0lmcmFtZSh0aGlzLmlmcmFtZSwgbWVzc2FnZSwgaWZyYW1lVXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDb25maWcodG9rZW5FeHBpcmVBdDogbnVtYmVyLCB0b2tlbjogc3RyaW5nKXtcclxuICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xyXG4gICAgICB0aGlzLnRva2VuRXhwaXJlID0gdG9rZW5FeHBpcmVBdFxyXG4gICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLnN0YXJ0UmVmcmVzaGVkVG9rZW5TY2hlZHVsZSh0aGlzLnRva2VuRXhwaXJlKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9jb21wb25lbnQvcGF5bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxNQUFNLE9BQU8sT0FBTztJQVVoQixZQUFtQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVHBDLFVBQUssR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUV6QyxVQUFLLEdBQVUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBSTlCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUc5Qjs7V0FFRztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUks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O1FBRWxDLE1BQU0sU0FBUyxHQUFHLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLHFCQUFxQixFQUFrQixDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSWZyYW1lTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJZnJhbWVNZXNzYWdlVHlwZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBDaGVja291dCB9IGZyb20gJy4uL21vZGVsL2NoZWNrb3V0JztcclxuaW1wb3J0IHsgSWZyYW1lTWVzc2FnZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlJztcclxuaW1wb3J0IHsgVGltZXIgfSBmcm9tICcuLi9tb2RlbC90aW1lcic7XHJcbmltcG9ydCB7IFBheW1lbnRUeXBlIH0gZnJvbSAnLi4vbW9kZWwvcGF5bWVudC10eXBlJztcclxuaW1wb3J0IHsgUmFweWRDb21wb25lbnQgfSBmcm9tICcuL3JhcHlkL3JhcHlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50IHtcclxuICAgIGNhY2hlOiBNYXA8bnVtYmVyLCBDaGVja291dD4gPSBuZXcgTWFwKCk7XHJcbiAgICBpZnJhbWU6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IHwgdW5kZWZpbmVkOy8vU2V0IGZyb20gdGhlIGNvbXBvbmVudFxyXG4gICAgdGltZXI6IFRpbWVyID0gbmV3IFRpbWVyKDUwMCk7IC8vIDAuNXNcclxuICAgIHJlc3VsdDogQ2hlY2tvdXQgfCB1bmRlZmluZWQ7XHJcbiAgICB0b2tlbkV4cGlyZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIHByaXZhdGUgaWZyYW1lTWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoSWZyYW1lTWVzc2FnZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByYXB5ZFNjcmlwdExvYWRlZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSB0aW1lclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIExpc3RlbiBPUEVOX1BBWU1FTlRfRk9STSBtZXNzYWdlIHRvIG9wZW4gM3RoIHBhcnR5IHBhZ2VcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLm9uTWVzc2FnZXMoKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBmcm9tIGlmcmFtZTonLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2UudHlwZSA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuT1BFTl9QQVlNRU5UX0ZPUk06XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tvdXQgPSBPYmplY3QuYXNzaWduKG5ldyBDaGVja291dCgpLCBtZXNzYWdlLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tvdXQgfHwgdGhpcy5jYWNoZS5nZXQoY2hlY2tvdXQucmVxdWVzdElkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLmNhY2hlLnNpemUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgLy9UT0RPIGNsZWFyIHRoZSBjdXJyZW50IHBvcHVwXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hlY2tvdXQucGF5bWVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5FQ09QQVlaOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2luZG93KGNoZWNrb3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFBheW1lbnRUeXBlLlJBUFlEOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuVmlzYUNoZWNrb3V0KGNoZWNrb3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuVEhJUkRfUEFSVFlfQ0FMTEJBQ0s6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tvdXQxID0gbmV3IENoZWNrb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQxLnNldENhbGxiYWNrKG1lc3NhZ2UucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lci5zdG9wV2F0Y2hlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2VUb0lmcmFtZShjaGVja291dDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5QQVlNRU5UX0NBTExCQUNLOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrb3V0MiA9IG5ldyBDaGVja291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnBheWxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQyLnNldEVycm9yTWVzc2FnZShtZXNzYWdlLnBheWxvYWQgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja291dDIuc2V0Q2FsbGJhY2sobWVzc2FnZS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lci5zdG9wV2F0Y2hlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2VUb0lmcmFtZShjaGVja291dDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLk9QRU5fREVQT1NJVDpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuT1BFTl9UUkFOU0FDVElPTjpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuT1BFTl9XSVRIRFJBVzpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuQ0FOQ0VMX1dJVEhEUkFXOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5QQVlPVVQ6XHJcbiAgICAgICAgICAgICAgICBjYXNlIElmcmFtZU1lc3NhZ2VUeXBlLklOX1BST0dSRVNTOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5SRUZSRVNIX1RPS0VOOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5SRUZSRVNIX0lGUkFNRTpcclxuICAgICAgICAgICAgICAgIGNhc2UgSWZyYW1lTWVzc2FnZVR5cGUuUkVRVUlSRV9SRUZSRVNIX1RPS0VOOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBJZnJhbWVNZXNzYWdlVHlwZS5UUkFDS19HQTQ6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGdldERvbWFpbihob3N0OiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWhvc3QpIHJldHVybjtcclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLmdldERvbWFpbihob3N0KTtcclxuICAgIH1cclxuICAgIHByb2Nlc3NNZXNzYWdlKG1lc3NhZ2U6IElmcmFtZU1lc3NhZ2UpIHtcclxuICAgICAgICAvL1RPRE9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gM3RoIHBhcnR5IHBhZ2Ugb24gdGhlIHBvcHVwIHdpbmRvd24gb3IgbmV3IHRhYlxyXG4gICAgICovXHJcbiAgICBvcGVuV2luZG93KGNoZWNrb3V0OiBDaGVja291dCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGUuc2V0KGNoZWNrb3V0LnJlcXVlc3RJZCwgY2hlY2tvdXQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiT3BlbiB3aW5kb3duOiBcIiwgdGhpcy5jYWNoZSk7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSA0NzA7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gNTUwO1xyXG4gICAgICAgIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgKHNjcmVlbi53aWR0aCAtIHdpZHRoKSAvIDIpLFxyXG4gICAgICAgIHRvcCA9IE1hdGgubWF4KDAsIChzY3JlZW4uaGVpZ2h0IC0gaGVpZ2h0KSAvIDIpO1xyXG4gICAgICAgIC8vIHZhciBwb3B1cCA9IHdpbmRvdy5vcGVuKHVybCwgXCJWT2Rkc1wiLCAnd2lkdGg9JyArIHdpZHRoICsgJyxoZWlnaHQ9JyArIGhlaWdodCArICcsbGVmdD0nICsgbGVmdCArICcsdG9wPScgKyB0b3AgKyAnLHN0YXR1cz0wLGxvY2F0aW9uPTAsbWVudWJhcj0wLHRvb2xiYXI9MCcpO1xyXG4gICAgICAgIGxldCBwb3B1cCA9IHdpbmRvdy5vcGVuKGNoZWNrb3V0LnVybCwgXCJWT2Rkc1wiLCAnd2lkdGg9JyArIHdpZHRoICsgJyxoZWlnaHQ9JyArIGhlaWdodCArICcsbGVmdD0nICsgbGVmdCArICcsdG9wPScgKyB0b3AgKyAnLHN0YXR1cz0wLGxvY2F0aW9uPTAsbWVudWJhcj0wLHRvb2xiYXI9MCcpO1xyXG4gICAgICAgIGlmICghcG9wdXApIHtcclxuICAgICAgICAgICAgY2hlY2tvdXQuZXJyb3JNZXNzYWdlID0gJ1lvdXIgc2V0dGluZyBwcmV2ZW50cyBwb3B1cHMuIFBsZWFzZSBjaGFuZ2UgeW91ciBzZXR0aW5nIHRvIGFsbG93IGl0Lic7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2VUb0lmcmFtZShjaGVja291dCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKGNoZWNrb3V0LnJlcXVlc3RJZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hlY2tvdXQucG9wdXAgPSBwb3B1cDtcclxuICAgICAgICBwb3B1cC5mb2N1cygpO1xyXG4gICAgICAgIHRoaXMub25UaGlyZFBhcnR5TWVzc2FnZShjaGVja291dCk7XHJcbiAgICAgICAgdGhpcy50aW1lci5vYmVyc2VyYWJsZVRpbWVyKGNoZWNrb3V0LCAoKSA9PiB0aGlzLnNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQpKTtcclxuICAgIH1cclxuICAgIGFzeW5jIG9wZW5WaXNhQ2hlY2tvdXQoY2hlY2tvdXQ6IENoZWNrb3V0KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oUmFweWRDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja291dFVybDogY2hlY2tvdXQudXJsLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGNoZWNrb3V0LmV4cGlyYXRpb25cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiAnOTB2dydcclxuICAgICAgICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoY2hlY2tvdXRGYWlsdXJlTWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjaGVja291dC5lcnJvck1lc3NhZ2UgPSBjaGVja291dEZhaWx1cmVNZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVRvSWZyYW1lKGNoZWNrb3V0KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLnJhcHlkU2NyaXB0TG9hZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG5cclxuICAgICAgICAgICAgc2NyaXB0LnNyYyA9ICdodHRwczovL3NhbmRib3hjaGVja291dHRvb2xraXQucmFweWQubmV0JztcclxuICAgICAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJhcHlkU2NyaXB0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIGxvYWQgUmFweWQgQ2hlY2tvdXQgVG9vbGtpdCcpKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbiBtZXNzYWdlIG9yIGFjdGlvbiBmcm9tIDN0aCBwYXJ0eSBvbiB0aGUgcG9wdXBcclxuICAgICAqIFNraXAgZm9yIFJBUFlEIC0gSXQgd2lsbCBwcm9jZXNzIHdoZW4gdGhlIGRpYWxvZyBjbG9zZVxyXG4gICAgICovXHJcbiAgICBvblRoaXJkUGFydHlNZXNzYWdlKGNoZWNrb3V0OiBDaGVja291dCkge1xyXG4gICAgICAgIHRoaXMuaWZyYW1lTWVzc2FnZVNlcnZpY2Uub25UaGlyZFBhcnR5TWVzc2FnZXMoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pZnJhbWVNZXNzYWdlU2VydmljZS5pc1ZhbGlkRG9tYWluKGNoZWNrb3V0LnBheW1lbnRUeXBlLCBldmVudC5vcmlnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoZWNrb3V0LnBheW1lbnRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5OQTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFBheW1lbnRUeXBlLkVDT1BBWVo6XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIGZyb20gM3RoIHBhcnR5OicsIGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgY2hlY2tvdXQuc2V0Q2FsbGJhY2soZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVyLnN0b3BXYXRjaGVyKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZW5kIHRoZSBtZXNzYWdlIGZyb20gdGhlIHBhcmVudCB0byB0aGUgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQ6IENoZWNrb3V0KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJzZW5kIHRoZSBtZXNzYWdlIGZyb20gdGhlIHBhcmVudCBpbnRvIHRoZSBpZnJhbWU6IFwiLCBjaGVja291dCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaWZyYW1lID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBtZXNzYWdlOiBJZnJhbWVNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBJZnJhbWVNZXNzYWdlVHlwZS5QQVlNRU5UX0NBTExCQUNLLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiBjaGVja291dFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLnNlbmRNZXNzYWdlVG9JZnJhbWUodGhpcy5pZnJhbWUsIG1lc3NhZ2UsIGNoZWNrb3V0LmlmcmFtZVVybCk7XHJcbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoY2hlY2tvdXQucmVxdWVzdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVQYXltZW50SWZyYW1lKCkge1xyXG4gICAgICAgIC8vVE9ET1xyXG4gICAgICAgIHRoaXMuaWZyYW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMudG9rZW4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy50b2tlbkV4cGlyZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnN0b3BSZWZyZXNoZWRUb2tlblNjaGVkdWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29uZmlnKHRva2VuRXhwaXJlQXQ6IG51bWJlciwgdG9rZW46IHN0cmluZyl7XHJcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcclxuICAgICAgdGhpcy50b2tlbkV4cGlyZSA9IHRva2VuRXhwaXJlQXRcclxuICAgICAgdGhpcy5zdGFydFJlZnJlc2hlZFRva2VuU2NoZWR1bGUodGhpcy50b2tlbkV4cGlyZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFJlZnJlc2hlZFRva2VuU2NoZWR1bGUoKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnRSZWZyZXNoZWRUb2tlblNjaGVkdWxlKHRpbWVFeHBpcmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICB0aGlzLnN0b3BSZWZyZXNoZWRUb2tlblNjaGVkdWxlKCk7XHJcblxyXG4gICAgICBjb25zdCBkZWxheVRpbWUgPSB0aW1lRXhwaXJlIC0gNjA7XHJcbiAgICAgIGNvbnN0IHNhZmVEZWxheSA9IE1hdGgubWF4KDAsIGRlbGF5VGltZSk7XHJcblxyXG4gICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIoc2FmZURlbGF5ICogMTAwMCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnByb2Nlc3NNZXNzYWdlKHt0eXBlOiBJZnJhbWVNZXNzYWdlVHlwZS5SRVFVSVJFX1JFRlJFU0hfVE9LRU59IGFzIElmcmFtZU1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuc3RvcFJlZnJlc2hlZFRva2VuU2NoZWR1bGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -18,5 +18,8 @@ export var IframeMessageType;
18
18
  IframeMessageType[IframeMessageType["REFRESH_IFRAME"] = 15] = "REFRESH_IFRAME";
19
19
  IframeMessageType[IframeMessageType["INIT_UTM_COOKIE"] = 16] = "INIT_UTM_COOKIE";
20
20
  IframeMessageType[IframeMessageType["TRACK_GA4"] = 17] = "TRACK_GA4";
21
+ IframeMessageType[IframeMessageType["OPEN_WITHDRAWAL_REQUEST_CONFIRMATION"] = 18] = "OPEN_WITHDRAWAL_REQUEST_CONFIRMATION";
22
+ IframeMessageType[IframeMessageType["OPEN_WITHDRAWAL_REQUEST_SUBMITTED"] = 19] = "OPEN_WITHDRAWAL_REQUEST_SUBMITTED";
23
+ IframeMessageType[IframeMessageType["IFRAME_RESIZE"] = 20] = "IFRAME_RESIZE";
21
24
  })(IframeMessageType || (IframeMessageType = {}));
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLW1lc3NhZ2UtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9tb2RlbC9pZnJhbWUtbWVzc2FnZS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGlCQW1CWDtBQW5CRCxXQUFZLGlCQUFpQjtJQUN6QixtRkFBaUIsQ0FBQTtJQUNqQixpRkFBZ0IsQ0FBQTtJQUNoQix5RkFBb0IsQ0FBQTtJQUNwQix5RUFBWSxDQUFBO0lBQ1osMkVBQWEsQ0FBQTtJQUNiLGlGQUFnQixDQUFBO0lBQ2hCLCtFQUFlLENBQUE7SUFDZiw2REFBTSxDQUFBO0lBQ04sdUVBQVcsQ0FBQTtJQUNYLDJFQUFhLENBQUE7SUFDYiw0RkFBcUIsQ0FBQTtJQUNyQiw0RUFBYSxDQUFBO0lBQ2IsNEZBQXFCLENBQUE7SUFDckIsNEVBQWEsQ0FBQTtJQUNiLDRFQUFhLENBQUE7SUFDYiw4RUFBYyxDQUFBO0lBQ2QsZ0ZBQWUsQ0FBQTtJQUNmLG9FQUFTLENBQUE7QUFDYixDQUFDLEVBbkJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFtQjVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gSWZyYW1lTWVzc2FnZVR5cGUge1xyXG4gICAgT1BFTl9QQVlNRU5UX0ZPUk0sXHJcbiAgICBQQVlNRU5UX0NBTExCQUNLLFxyXG4gICAgVEhJUkRfUEFSVFlfQ0FMTEJBQ0ssXHJcbiAgICBPUEVOX0RFUE9TSVQsXHJcbiAgICBPUEVOX1dJVEhEUkFXLFxyXG4gICAgT1BFTl9UUkFOU0FDVElPTixcclxuICAgIENBTkNFTF9XSVRIRFJBVyxcclxuICAgIFBBWU9VVCxcclxuICAgIElOX1BST0dSRVNTLFxyXG4gICAgQ09ORklHX1VQREFURSxcclxuICAgIE9QRU5fREVQT1NJVF9TVUJNSVRFRCxcclxuICAgIFJFRlJFU0hfVE9LRU4sXHJcbiAgICBSRVFVSVJFX1JFRlJFU0hfVE9LRU4sXHJcbiAgICBUT0tFTl9JTlZBTElELFxyXG4gICAgVE9LRU5fRVhQSVJFRCxcclxuICAgIFJFRlJFU0hfSUZSQU1FLFxyXG4gICAgSU5JVF9VVE1fQ09PS0lFLFxyXG4gICAgVFJBQ0tfR0E0XHJcbn1cclxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLW1lc3NhZ2UtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9tb2RlbC9pZnJhbWUtbWVzc2FnZS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGlCQXNCWDtBQXRCRCxXQUFZLGlCQUFpQjtJQUN6QixtRkFBaUIsQ0FBQTtJQUNqQixpRkFBZ0IsQ0FBQTtJQUNoQix5RkFBb0IsQ0FBQTtJQUNwQix5RUFBWSxDQUFBO0lBQ1osMkVBQWEsQ0FBQTtJQUNiLGlGQUFnQixDQUFBO0lBQ2hCLCtFQUFlLENBQUE7SUFDZiw2REFBTSxDQUFBO0lBQ04sdUVBQVcsQ0FBQTtJQUNYLDJFQUFhLENBQUE7SUFDYiw0RkFBcUIsQ0FBQTtJQUNyQiw0RUFBYSxDQUFBO0lBQ2IsNEZBQXFCLENBQUE7SUFDckIsNEVBQWEsQ0FBQTtJQUNiLDRFQUFhLENBQUE7SUFDYiw4RUFBYyxDQUFBO0lBQ2QsZ0ZBQWUsQ0FBQTtJQUNmLG9FQUFTLENBQUE7SUFDVCwwSEFBb0MsQ0FBQTtJQUNwQyxvSEFBaUMsQ0FBQTtJQUNqQyw0RUFBYSxDQUFBO0FBQ2pCLENBQUMsRUF0QlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQXNCNUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBJZnJhbWVNZXNzYWdlVHlwZSB7XHJcbiAgICBPUEVOX1BBWU1FTlRfRk9STSxcclxuICAgIFBBWU1FTlRfQ0FMTEJBQ0ssXHJcbiAgICBUSElSRF9QQVJUWV9DQUxMQkFDSyxcclxuICAgIE9QRU5fREVQT1NJVCxcclxuICAgIE9QRU5fV0lUSERSQVcsXHJcbiAgICBPUEVOX1RSQU5TQUNUSU9OLFxyXG4gICAgQ0FOQ0VMX1dJVEhEUkFXLFxyXG4gICAgUEFZT1VULFxyXG4gICAgSU5fUFJPR1JFU1MsXHJcbiAgICBDT05GSUdfVVBEQVRFLFxyXG4gICAgT1BFTl9ERVBPU0lUX1NVQk1JVEVELFxyXG4gICAgUkVGUkVTSF9UT0tFTixcclxuICAgIFJFUVVJUkVfUkVGUkVTSF9UT0tFTixcclxuICAgIFRPS0VOX0lOVkFMSUQsXHJcbiAgICBUT0tFTl9FWFBJUkVELFxyXG4gICAgUkVGUkVTSF9JRlJBTUUsXHJcbiAgICBJTklUX1VUTV9DT09LSUUsXHJcbiAgICBUUkFDS19HQTQsXHJcbiAgICBPUEVOX1dJVEhEUkFXQUxfUkVRVUVTVF9DT05GSVJNQVRJT04sXHJcbiAgICBPUEVOX1dJVEhEUkFXQUxfUkVRVUVTVF9TVUJNSVRURUQsXHJcbiAgICBJRlJBTUVfUkVTSVpFXHJcbn1cclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
- import { Subject, timer } from 'rxjs';
2
+ import { Subject } from 'rxjs';
3
3
  import { Domain } from '../model/domain';
4
4
  import { VoddsHttpService } from './vodds-http.service';
5
5
  import { ApiRoute } from '../api-route.const';
@@ -87,23 +87,6 @@ export class IframeMessageService {
87
87
  return;
88
88
  iframe.nativeElement.contentWindow?.postMessage(message, iframeUrl);
89
89
  }
90
- stopRefreshedTokenSchedule() {
91
- if (this.timerSubscription) {
92
- this.timerSubscription.unsubscribe();
93
- this.timerSubscription = undefined;
94
- console.log('Stop timer');
95
- }
96
- }
97
- startRefreshedTokenSchedule(timeExpire) {
98
- this.stopRefreshedTokenSchedule();
99
- const delayTime = timeExpire - 60;
100
- const safeDelay = Math.max(0, delayTime);
101
- console.log(`Job will be run after ${safeDelay}s.`);
102
- this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {
103
- this.messages$.next({ type: IframeMessageType.REQUIRE_REFRESH_TOKEN });
104
- this.stopRefreshedTokenSchedule();
105
- });
106
- }
107
90
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
108
91
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, providedIn: 'root' }); }
109
92
  }
@@ -113,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
113
96
  providedIn: 'root'
114
97
  }]
115
98
  }], ctorParameters: () => [{ type: i0.NgZone }] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLW1lc3NhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9zZXJ2aWNlL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQixNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQWlDLEtBQUssRUFBaUMsTUFBTSxNQUFNLENBQUM7QUFFcEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBTWpFLE1BQU0sT0FBTyxvQkFBb0I7SUFpQzdCLFlBQTZCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBaEMxQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFJekMsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFFM0QsU0FBSSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZCLGFBQVEsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUNoRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNB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SSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBa0IsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FqSFEsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIGZpbHRlciwgc3dpdGNoTWFwLCB0aW1lciwgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSWZyYW1lTWVzc2FnZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlJztcclxuaW1wb3J0IHsgRG9tYWluIH0gZnJvbSAnLi4vbW9kZWwvZG9tYWluJztcclxuaW1wb3J0IHsgVm9kZHNIdHRwU2VydmljZSB9IGZyb20gJy4vdm9kZHMtaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpUm91dGUgfSBmcm9tICcuLi9hcGktcm91dGUuY29uc3QnO1xyXG5pbXBvcnQgeyBQYXltZW50VHlwZSB9IGZyb20gJy4uL21vZGVsL3BheW1lbnQtdHlwZSc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vbW9kZWwvaWZyYW1lLW1lc3NhZ2UtdHlwZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIElmcmFtZU1lc3NhZ2VTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZXMkID0gbmV3IFN1YmplY3Q8SWZyYW1lTWVzc2FnZT4oKTtcclxuICAgIC8vIHB1YmxpYyByZWZyZXNoVHJpZ2dlciQgPSB0aGlzLm1lc3NhZ2VzJC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIHRpbWVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlyZFBhcnR5TWVzc2FnZXMkID0gbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xyXG4gICAgcHJpdmF0ZSBkb21haW46IERvbWFpbjtcclxuICAgIHByaXZhdGUgaHR0cCA9IGluamVjdChWb2Rkc0h0dHBTZXJ2aWNlKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnRhcmdldCAhPSBcIm1ldGFtYXNrLWlucGFnZVwiKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGlzdGVuZXI6IFwiLCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5kb21haW4uYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMoZXZlbnQub3JpZ2luKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkRG9tYWluKFBheW1lbnRUeXBlLk5BLCBldmVudC5vcmlnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUHJvY2VzcyBtZXNzYWdlIGZyb20gM3RoIHBhcnR5XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhpcmRQYXJ0eU1lc3NhZ2VzJC5uZXh0KGV2ZW50KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50YXJnZXQgPT0gXCJtZXRhbWFzay1pbnBhZ2VcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiUHJvY2VzcyBtZXNzYWdlXCIpO1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIElmcmFtZU1lc3NhZ2VUeXBlW2V2ZW50LmRhdGEudHlwZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMkLm5leHQoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gICAgICAgIHRoaXMuZG9tYWluID0gbmV3IERvbWFpbigpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5saXN0ZW5lcik7XHJcbiAgICB9XHJcbiAgICAvLyBQdXJwb3NlIG9ubHkgcHJvY2VzcyB0aGUgbWVzc2FnZSBjb21lIGZyb20gYWxsb3dlZCBkb21haW5cclxuICAgIGdldERvbWFpbihob3N0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KChob3N0ID8gaG9zdCA6ICcnKSArIEFwaVJvdXRlLkdFVF9ET01BSU4udXJsKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlRlc3Q6IFwiLCByZXNwLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3AuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9tYWluID0gcmVzcC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyID0+IHsgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTWVzc2FnZXMoKTogT2JzZXJ2YWJsZTxJZnJhbWVNZXNzYWdlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXMkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgb25UaGlyZFBhcnR5TWVzc2FnZXMoKTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aGlyZFBhcnR5TWVzc2FnZXMkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5saXN0ZW5lcik7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyQuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLnRoaXJkUGFydHlNZXNzYWdlcyQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNraXAgZm9yIFJBUFlEIC0gSXQgd2lsbCBwcm9jZXNzIHdoZW4gdGhlIGRpYWxvZyBjbG9zZVxyXG4gICAgICovXHJcbiAgICBpc1ZhbGlkRG9tYWluKHBheW1lbnRUeXBlOiBQYXltZW50VHlwZSwgb3JpZ2luOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAocGF5bWVudFR5cGUgPT0gdW5kZWZpbmVkIHx8IHBheW1lbnRUeXBlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBzd2l0Y2gocGF5bWVudFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbWFpbi5qZXRvbkRvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuRUNPUEFZWjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbWFpbi5lY29wYXl6RG9tYWluID09IG9yaWdpbjtcclxuICAgICAgICAgICAgLy8gY2FzZSBQYXltZW50VHlwZS5SQVBZRDpcclxuICAgICAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLmRvbWFpbi5yYXB5ZERvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuTkE6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21haW4uamV0b25Eb21haW4gPT0gb3JpZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gfHwgdGhpcy5kb21haW4ucmFweWREb21haW4gPT0gb3JpZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5kb21haW4uZWNvcGF5ekRvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoaWZyYW1lOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PiwgbWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgaWZyYW1lVXJsOiBzdHJpbmcgPSAnKicpIHtcclxuICAgICAgICBpZiAoaWZyYW1lID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICBpZnJhbWVVcmxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdG9wUmVmcmVzaGVkVG9rZW5TY2hlZHVsZSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMudGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zb2xlLmxvZygnU3RvcCB0aW1lcicpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGFydFJlZnJlc2hlZFRva2VuU2NoZWR1bGUodGltZUV4cGlyZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuc3RvcFJlZnJlc2hlZFRva2VuU2NoZWR1bGUoKTtcclxuXHJcbiAgICAgIGNvbnN0IGRlbGF5VGltZSA9IHRpbWVFeHBpcmUgLSA2MDtcclxuICAgICAgY29uc3Qgc2FmZURlbGF5ID0gTWF0aC5tYXgoMCwgZGVsYXlUaW1lKTtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKGBKb2Igd2lsbCBiZSBydW4gYWZ0ZXIgJHtzYWZlRGVsYXl9cy5gKTtcclxuXHJcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSB0aW1lcihzYWZlRGVsYXkgKiAxMDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMkLm5leHQoe3R5cGU6IElmcmFtZU1lc3NhZ2VUeXBlLlJFUVVJUkVfUkVGUkVTSF9UT0tFTn0gYXMgSWZyYW1lTWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5zdG9wUmVmcmVzaGVkVG9rZW5TY2hlZHVsZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLW1lc3NhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9zZXJ2aWNlL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQixNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQXVFLE1BQU0sTUFBTSxDQUFDO0FBRXBHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQU1qRSxNQUFNLE9BQU8sb0JBQW9CO0lBK0I3QixZQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTlCMUIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRXpDLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBRTNELFNBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV2QixhQUFRLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDaEQsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFB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TztnQkFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUM7WUFDL0MsMEJBQTBCO1lBQzFCLGdEQUFnRDtZQUNoRCxLQUFLLFdBQVcsQ0FBQyxFQUFFO2dCQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTTtvQkFDcEMsdUNBQXVDO3VCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUM7WUFDL0M7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUVMLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxNQUFxQyxFQUFFLE9BQXNCLEVBQUUsWUFBb0IsR0FBRztRQUN0RyxJQUFJLE1BQU0sSUFBSSxTQUFTO1lBQUUsT0FBTztRQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQzNDLE9BQU8sRUFDUCxTQUFTLENBQ1osQ0FBQztJQUNOLENBQUM7K0dBeEZRLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaWx0ZXIsIHN3aXRjaE1hcCwgdGltZXIsIEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9pZnJhbWUtbWVzc2FnZSc7XHJcbmltcG9ydCB7IERvbWFpbiB9IGZyb20gJy4uL21vZGVsL2RvbWFpbic7XHJcbmltcG9ydCB7IFZvZGRzSHR0cFNlcnZpY2UgfSBmcm9tICcuL3ZvZGRzLWh0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJvdXRlIH0gZnJvbSAnLi4vYXBpLXJvdXRlLmNvbnN0JztcclxuaW1wb3J0IHsgUGF5bWVudFR5cGUgfSBmcm9tICcuLi9tb2RlbC9wYXltZW50LXR5cGUnO1xyXG5pbXBvcnQgeyBJZnJhbWVNZXNzYWdlVHlwZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZnJhbWVNZXNzYWdlU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzJCA9IG5ldyBTdWJqZWN0PElmcmFtZU1lc3NhZ2U+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlyZFBhcnR5TWVzc2FnZXMkID0gbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xyXG4gICAgcHJpdmF0ZSBkb21haW46IERvbWFpbjtcclxuICAgIHByaXZhdGUgaHR0cCA9IGluamVjdChWb2Rkc0h0dHBTZXJ2aWNlKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnRhcmdldCAhPSBcIm1ldGFtYXNrLWlucGFnZVwiKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGlzdGVuZXI6IFwiLCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5kb21haW4uYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMoZXZlbnQub3JpZ2luKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkRG9tYWluKFBheW1lbnRUeXBlLk5BLCBldmVudC5vcmlnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUHJvY2VzcyBtZXNzYWdlIGZyb20gM3RoIHBhcnR5XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhpcmRQYXJ0eU1lc3NhZ2VzJC5uZXh0KGV2ZW50KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50YXJnZXQgPT0gXCJtZXRhbWFzay1pbnBhZ2VcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiUHJvY2VzcyBtZXNzYWdlXCIpO1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIElmcmFtZU1lc3NhZ2VUeXBlW2V2ZW50LmRhdGEudHlwZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMkLm5leHQoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gICAgICAgIHRoaXMuZG9tYWluID0gbmV3IERvbWFpbigpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5saXN0ZW5lcik7XHJcbiAgICB9XHJcbiAgICAvLyBQdXJwb3NlIG9ubHkgcHJvY2VzcyB0aGUgbWVzc2FnZSBjb21lIGZyb20gYWxsb3dlZCBkb21haW5cclxuICAgIGdldERvbWFpbihob3N0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KChob3N0ID8gaG9zdCA6ICcnKSArIEFwaVJvdXRlLkdFVF9ET01BSU4udXJsKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlRlc3Q6IFwiLCByZXNwLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3AuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9tYWluID0gcmVzcC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyID0+IHsgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTWVzc2FnZXMoKTogT2JzZXJ2YWJsZTxJZnJhbWVNZXNzYWdlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXMkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgb25UaGlyZFBhcnR5TWVzc2FnZXMoKTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aGlyZFBhcnR5TWVzc2FnZXMkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5saXN0ZW5lcik7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyQuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLnRoaXJkUGFydHlNZXNzYWdlcyQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNraXAgZm9yIFJBUFlEIC0gSXQgd2lsbCBwcm9jZXNzIHdoZW4gdGhlIGRpYWxvZyBjbG9zZVxyXG4gICAgICovXHJcbiAgICBpc1ZhbGlkRG9tYWluKHBheW1lbnRUeXBlOiBQYXltZW50VHlwZSwgb3JpZ2luOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAocGF5bWVudFR5cGUgPT0gdW5kZWZpbmVkIHx8IHBheW1lbnRUeXBlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBzd2l0Y2gocGF5bWVudFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbWFpbi5qZXRvbkRvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuRUNPUEFZWjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbWFpbi5lY29wYXl6RG9tYWluID09IG9yaWdpbjtcclxuICAgICAgICAgICAgLy8gY2FzZSBQYXltZW50VHlwZS5SQVBZRDpcclxuICAgICAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLmRvbWFpbi5yYXB5ZERvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuTkE6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21haW4uamV0b25Eb21haW4gPT0gb3JpZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gfHwgdGhpcy5kb21haW4ucmFweWREb21haW4gPT0gb3JpZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5kb21haW4uZWNvcGF5ekRvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoaWZyYW1lOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PiwgbWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgaWZyYW1lVXJsOiBzdHJpbmcgPSAnKicpIHtcclxuICAgICAgICBpZiAoaWZyYW1lID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICBpZnJhbWVVcmxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"epp-lib-cs-LtQv3zWd.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"epp-lib-cs-LtQv3zWd.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"epp-lib-en-Bt5VLnlu.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"epp-lib-en-Bt5VLnlu.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"epp-lib-es-DbnWSdb5.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"epp-lib-es-DbnWSdb5.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"epp-lib-ru-B6WcTpOu.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"epp-lib-ru-B6WcTpOu.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -188,6 +188,9 @@ var IframeMessageType;
188
188
  IframeMessageType[IframeMessageType["REFRESH_IFRAME"] = 15] = "REFRESH_IFRAME";
189
189
  IframeMessageType[IframeMessageType["INIT_UTM_COOKIE"] = 16] = "INIT_UTM_COOKIE";
190
190
  IframeMessageType[IframeMessageType["TRACK_GA4"] = 17] = "TRACK_GA4";
191
+ IframeMessageType[IframeMessageType["OPEN_WITHDRAWAL_REQUEST_CONFIRMATION"] = 18] = "OPEN_WITHDRAWAL_REQUEST_CONFIRMATION";
192
+ IframeMessageType[IframeMessageType["OPEN_WITHDRAWAL_REQUEST_SUBMITTED"] = 19] = "OPEN_WITHDRAWAL_REQUEST_SUBMITTED";
193
+ IframeMessageType[IframeMessageType["IFRAME_RESIZE"] = 20] = "IFRAME_RESIZE";
191
194
  })(IframeMessageType || (IframeMessageType = {}));
192
195
 
193
196
  class IframeMessageService {
@@ -271,23 +274,6 @@ class IframeMessageService {
271
274
  return;
272
275
  iframe.nativeElement.contentWindow?.postMessage(message, iframeUrl);
273
276
  }
274
- stopRefreshedTokenSchedule() {
275
- if (this.timerSubscription) {
276
- this.timerSubscription.unsubscribe();
277
- this.timerSubscription = undefined;
278
- console.log('Stop timer');
279
- }
280
- }
281
- startRefreshedTokenSchedule(timeExpire) {
282
- this.stopRefreshedTokenSchedule();
283
- const delayTime = timeExpire - 60;
284
- const safeDelay = Math.max(0, delayTime);
285
- console.log(`Job will be run after ${safeDelay}s.`);
286
- this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {
287
- this.messages$.next({ type: IframeMessageType.REQUIRE_REFRESH_TOKEN });
288
- this.stopRefreshedTokenSchedule();
289
- });
290
- }
291
277
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
292
278
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, providedIn: 'root' }); }
293
279
  }
@@ -716,7 +702,7 @@ class Payment {
716
702
  const checkout1 = new Checkout();
717
703
  checkout1.setCallback(message.payload);
718
704
  this.timer.stopWatcher();
719
- this.sendCallBackMessageToIframe(checkout1);
705
+ this.sendMessageToIframe(checkout1);
720
706
  break;
721
707
  case IframeMessageType.PAYMENT_CALLBACK:
722
708
  const checkout2 = new Checkout();
@@ -727,7 +713,7 @@ class Payment {
727
713
  checkout2.setCallback(message.payload);
728
714
  }
729
715
  this.timer.stopWatcher();
730
- this.sendCallBackMessageToIframe(checkout2);
716
+ this.sendMessageToIframe(checkout2);
731
717
  break;
732
718
  case IframeMessageType.OPEN_DEPOSIT:
733
719
  case IframeMessageType.OPEN_TRANSACTION:
@@ -765,14 +751,14 @@ class Payment {
765
751
  let popup = window.open(checkout.url, "VOdds", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');
766
752
  if (!popup) {
767
753
  checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';
768
- this.sendCallBackMessageToIframe(checkout);
754
+ this.sendMessageToIframe(checkout);
769
755
  this.cache.delete(checkout.requestId);
770
756
  return;
771
757
  }
772
758
  checkout.popup = popup;
773
759
  popup.focus();
774
760
  this.onThirdPartyMessage(checkout);
775
- this.timer.oberserableTimer(checkout, () => this.sendCallBackMessageToIframe(checkout));
761
+ this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));
776
762
  }
777
763
  async openVisaCheckout(checkout) {
778
764
  try {
@@ -786,7 +772,7 @@ class Payment {
786
772
  maxWidth: '90vw'
787
773
  }).afterClosed().subscribe(checkoutFailureMessage => {
788
774
  checkout.errorMessage = checkoutFailureMessage;
789
- this.sendCallBackMessageToIframe(checkout);
775
+ this.sendMessageToIframe(checkout);
790
776
  });
791
777
  }
792
778
  catch (error) {
@@ -827,22 +813,22 @@ class Payment {
827
813
  console.log('Received from 3th party:', event.data);
828
814
  checkout.setCallback(event.data);
829
815
  this.timer.stopWatcher();
830
- this.sendCallBackMessageToIframe(checkout);
816
+ this.sendMessageToIframe(checkout);
831
817
  }
832
818
  });
833
819
  }
834
820
  /**
835
821
  * send the message from the parent to the iframe
836
822
  */
837
- sendCallBackMessageToIframe(checkout) {
838
- console.log("send callback message to iframe: ", checkout);
823
+ sendMessageToIframe(checkout) {
824
+ console.log("send the message from the parent into the iframe: ", checkout);
839
825
  if (this.iframe == undefined)
840
826
  return;
841
827
  let message = {
842
828
  type: IframeMessageType.PAYMENT_CALLBACK,
843
829
  payload: checkout
844
830
  };
845
- this.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);
831
+ this.iframeMessageService.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);
846
832
  this.cache.delete(checkout.requestId);
847
833
  }
848
834
  removePaymentIframe() {
@@ -850,17 +836,27 @@ class Payment {
850
836
  this.iframe = undefined;
851
837
  this.token = undefined;
852
838
  this.tokenExpire = undefined;
853
- this.iframeMessageService.stopRefreshedTokenSchedule();
854
- }
855
- sendMessageToIframe(iframe, message, iframeUrl = '*') {
856
- if (this.iframe == undefined)
857
- return;
858
- this.iframeMessageService.sendMessageToIframe(this.iframe, message, iframeUrl);
839
+ this.stopRefreshedTokenSchedule();
859
840
  }
860
841
  setConfig(tokenExpireAt, token) {
861
842
  this.token = token;
862
843
  this.tokenExpire = tokenExpireAt;
863
- this.iframeMessageService.startRefreshedTokenSchedule(this.tokenExpire);
844
+ this.startRefreshedTokenSchedule(this.tokenExpire);
845
+ }
846
+ stopRefreshedTokenSchedule() {
847
+ if (this.timerSubscription) {
848
+ this.timerSubscription.unsubscribe();
849
+ this.timerSubscription = undefined;
850
+ }
851
+ }
852
+ startRefreshedTokenSchedule(timeExpire) {
853
+ this.stopRefreshedTokenSchedule();
854
+ const delayTime = timeExpire - 60;
855
+ const safeDelay = Math.max(0, delayTime);
856
+ this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {
857
+ this.processMessage({ type: IframeMessageType.REQUIRE_REFRESH_TOKEN });
858
+ this.stopRefreshedTokenSchedule();
859
+ });
864
860
  }
865
861
  }
866
862
 
@@ -1 +1 @@
1
- {"version":3,"file":"epp-lib.mjs","sources":["../../../projects/epp-lib/src/lib/translation/epp-lib-loader.ts","../../../projects/epp-lib/src/lib/translation/epp-lib-translation.service.ts","../../../projects/epp-lib/src/lib/translation/epp-lib.providers.ts","../../../projects/epp-lib/src/lib/service/event-emitter.service.ts","../../../projects/epp-lib/src/lib/model/domain.ts","../../../projects/epp-lib/src/lib/service/vodds-http.service.ts","../../../projects/epp-lib/src/lib/api-route.const.ts","../../../projects/epp-lib/src/lib/model/payment-type.ts","../../../projects/epp-lib/src/lib/model/iframe-message-type.ts","../../../projects/epp-lib/src/lib/service/iframe-message.service.ts","../../../projects/epp-lib/src/lib/service/common-util.ts","../../../projects/epp-lib/src/lib/model/checkout.ts","../../../projects/epp-lib/src/lib/model/count-down-time.ts","../../../projects/epp-lib/src/lib/model/iparam.ts","../../../projects/epp-lib/src/lib/model/timer.ts","../../../projects/epp-lib/src/lib/pipe/transloco.pipe.ts","../../../projects/epp-lib/src/lib/component/vodds-loader/vodds-loader.component.ts","../../../projects/epp-lib/src/lib/component/vodds-loader/vodds-loader.component.html","../../../projects/epp-lib/src/lib/component/rapyd/rapyd.component.ts","../../../projects/epp-lib/src/lib/component/rapyd/rapyd.component.html","../../../projects/epp-lib/src/lib/component/payment.ts","../../../projects/epp-lib/src/public-api.ts","../../../projects/epp-lib/src/epp-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { TranslocoLoader } from '@jsverse/transloco';\r\n\r\n@Injectable()\r\nexport class EppLibLoader implements TranslocoLoader {\r\n getTranslation(lang: string) {\r\n switch (lang) {\r\n case 'cs':\r\n return import('./i18n/cs.json');\r\n case 'ru':\r\n return import('./i18n/ru.json');\r\n case 'es':\r\n return import('./i18n/es.json');\r\n case 'en':\r\n default:\r\n return import('./i18n/en.json');\r\n }\r\n }\r\n}","import { inject, Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EppLibTranslationService {\r\n private transloco = inject(TranslocoService);\r\n\r\n setLanguage(lang: string): void {\r\n this.transloco.setActiveLang(lang);\r\n }\r\n\r\n getLanguage(): string {\r\n return this.transloco.getActiveLang();\r\n }\r\n}\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\nimport { provideTransloco, provideTranslocoScope } from '@jsverse/transloco';\r\nimport { EppLibLoader } from './epp-lib-loader';\r\n\r\nexport interface EppLibConfig {\r\n defaultLang: string;\r\n availableLangs: string[];\r\n}\r\n\r\nexport function provideEppLibTranslations(config: EppLibConfig): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n provideTransloco({\r\n config: {\r\n availableLangs: config.availableLangs,\r\n defaultLang: config.defaultLang,\r\n reRenderOnLangChange: true,\r\n },\r\n loader: EppLibLoader,\r\n }),\r\n // provideTranslocoScope({\r\n // scope: 'epp-lib',\r\n // loader: {\r\n // en: () => import('./i18n/en.json'),\r\n // cs: () => import('./i18n/cs.json'),\r\n // es: () => import('./i18n/es.json'),\r\n // ru: () => import('./i18n/ru.json'),\r\n // },\r\n // })\r\n ]);\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { IBroadcastEvent } from '../model/broadcast/ibroadcast-event';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EventEmitterService {\r\n private readonly eventBus: Subject<IBroadcastEvent> = new Subject<IBroadcastEvent>();\r\n\r\n broadcast(event: IBroadcastEvent) {\r\n this.eventBus.next(event);\r\n }\r\n\r\n getEventBus(): Subject<IBroadcastEvent> {\r\n return this.eventBus;\r\n }\r\n}\r\n","export class Domain {\r\n defaultDomain: string = '';\r\n allowedOrigins: string[] = ['http://localhost:9000', 'http://localhost:4200', 'http://epp.com', 'https://epp.myvodds.com', 'https://myvodds.com'];\r\n specialDomain: string[] = [];\r\n jetonDomain: string = '';\r\n ecopayzDomain: string = '';\r\n rapydDomain: string = 'https://sandboxcheckout.rapyd.net';\r\n constructor() {}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IParam } from '../model/iparam';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class VoddsHttpService {\r\n private httpClient = inject(HttpClient);\r\n\r\n postJson<T>(url: string, request: IParam): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-type': 'application/json' });\r\n return this.httpClient.post<T>(url, request.toJson(), { headers });\r\n }\r\n\r\n get<T>(url: string, param?: IParam): Observable<T> {\r\n if(param) {\r\n url = url + '?' + param.toFormUrlEncoded();\r\n }\r\n return this.httpClient.get<T>(url);\r\n }\r\n get2<T>(url: string, option?: any): Observable<T> {\r\n const observable: Observable<any> = new Observable(observer => {\r\n this.httpClient.get<any>(url, option).subscribe(\r\n res => {\r\n observer.next(res);\r\n },\r\n err => {\r\n observer.next(err);\r\n }\r\n );\r\n });\r\n return observable;\r\n }\r\n\r\n postFormUrlEncoded<T>(url: string, request: IParam): Observable<T> {\r\n let options = {\r\n headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')\r\n };\r\n return this.httpClient.post<T>(url, request.toFormUrlEncoded(), options);\r\n }\r\n\r\n getMainDomain(url: string){\r\n let mainDomain = url;\r\n let domain = window.location.origin;\r\n if(domain.includes(\"promo.\")){\r\n domain = domain.replace(\"promo.\", \"\");\r\n mainDomain = domain + url;\r\n }\r\n\r\n return mainDomain;\r\n }\r\n\r\n getFullUrl(url: string, param: IParam): string {\r\n return `${url}?${param.toFormUrlEncoded()}`;\r\n }\r\n}\r\n","export const ApiRoute = {\r\n GET_DOMAIN: { url: \"/payment/getDomain\", method: \"get\" }\r\n}\r\n\r\n","export enum PaymentType {\r\n NA,\r\n JETON,\r\n ECOPAYZ,\r\n RAPYD\r\n}\r\n","export enum IframeMessageType {\r\n OPEN_PAYMENT_FORM,\r\n PAYMENT_CALLBACK,\r\n THIRD_PARTY_CALLBACK,\r\n OPEN_DEPOSIT,\r\n OPEN_WITHDRAW,\r\n OPEN_TRANSACTION,\r\n CANCEL_WITHDRAW,\r\n PAYOUT,\r\n IN_PROGRESS,\r\n CONFIG_UPDATE,\r\n OPEN_DEPOSIT_SUBMITED,\r\n REFRESH_TOKEN,\r\n REQUIRE_REFRESH_TOKEN,\r\n TOKEN_INVALID,\r\n TOKEN_EXPIRED,\r\n REFRESH_IFRAME,\r\n INIT_UTM_COOKIE,\r\n TRACK_GA4\r\n}\r\n","import { DestroyRef, ElementRef, inject, Injectable, NgZone } from '@angular/core';\r\nimport { Subject, Observable, filter, switchMap, timer, BehaviorSubject, Subscription } from 'rxjs';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Domain } from '../model/domain';\r\nimport { VoddsHttpService } from './vodds-http.service';\r\nimport { ApiRoute } from '../api-route.const';\r\nimport { PaymentType } from '../model/payment-type';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IframeMessageService {\r\n private readonly messages$ = new Subject<IframeMessage>();\r\n // public refreshTrigger$ = this.messages$.asObservable();\r\n\r\n private timerSubscription?: Subscription;\r\n private readonly thirdPartyMessages$ = new Subject<MessageEvent>();\r\n private domain: Domain;\r\n private http = inject(VoddsHttpService);\r\n\r\n private readonly listener = (event: MessageEvent) => {\r\n if (event.data && event.data.target != \"metamask-inpage\") {\r\n console.log(\"listener: \", event);\r\n }\r\n if (!this.domain.allowedOrigins.includes(event.origin)) {\r\n if (this.isValidDomain(PaymentType.NA, event.origin)) {\r\n this.ngZone.run(() => {\r\n console.log(\"Process message from 3th party\");\r\n this.thirdPartyMessages$.next(event);\r\n });\r\n }\r\n return;\r\n }\r\n if (event.data && event.data.target == \"metamask-inpage\") {\r\n return;\r\n }\r\n console.log(\"Process message\");\r\n if (event.data && IframeMessageType[event.data.type]) {\r\n this.ngZone.run(() => {\r\n this.messages$.next(event.data);\r\n });\r\n }\r\n };\r\n\r\n constructor(private readonly ngZone: NgZone) {\r\n this.domain = new Domain();\r\n window.addEventListener('message', this.listener);\r\n }\r\n // Purpose only process the message come from allowed domain\r\n getDomain(host: string) {\r\n this.http.get((host ? host : '') + ApiRoute.GET_DOMAIN.url).subscribe({\r\n next: (resp: any) => {\r\n console.log(\"Test: \", resp.data);\r\n if (resp.data) {\r\n this.domain = resp.data;\r\n }\r\n },\r\n error: err => { }\r\n });\r\n }\r\n\r\n onMessages(): Observable<IframeMessage> {\r\n return this.messages$.asObservable();\r\n }\r\n onThirdPartyMessages(): Observable<MessageEvent> {\r\n return this.thirdPartyMessages$.asObservable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('message', this.listener);\r\n this.messages$.complete();\r\n this.thirdPartyMessages$.complete();\r\n }\r\n\r\n /**\r\n * Skip for RAPYD - It will process when the dialog close\r\n */\r\n isValidDomain(paymentType: PaymentType, origin: string) {\r\n if (paymentType == undefined || paymentType == null) return false;\r\n switch(paymentType) {\r\n case PaymentType.JETON:\r\n return this.domain.jetonDomain == origin;\r\n case PaymentType.ECOPAYZ:\r\n return this.domain.ecopayzDomain == origin;\r\n // case PaymentType.RAPYD:\r\n // return this.domain.rapydDomain == origin;\r\n case PaymentType.NA:\r\n return this.domain.jetonDomain == origin\r\n // || this.domain.rapydDomain == origin\r\n || this.domain.ecopayzDomain == origin;\r\n default:\r\n return false;\r\n }\r\n\r\n }\r\n sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage, iframeUrl: string = '*') {\r\n if (iframe == undefined) return;\r\n iframe.nativeElement.contentWindow?.postMessage(\r\n message,\r\n iframeUrl\r\n );\r\n }\r\n\r\n public stopRefreshedTokenSchedule(): void {\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n this.timerSubscription = undefined;\r\n console.log('Stop timer');\r\n }\r\n }\r\n\r\n\r\n public startRefreshedTokenSchedule(timeExpire: number): void {\r\n this.stopRefreshedTokenSchedule();\r\n\r\n const delayTime = timeExpire - 60;\r\n const safeDelay = Math.max(0, delayTime);\r\n\r\n console.log(`Job will be run after ${safeDelay}s.`);\r\n\r\n this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {\r\n this.messages$.next({type: IframeMessageType.REQUIRE_REFRESH_TOKEN} as IframeMessage);\r\n this.stopRefreshedTokenSchedule();\r\n });\r\n }\r\n}\r\n","export class CommonUtil {\r\n static isMobileTemplate(): boolean {\r\n const userAgent = navigator.userAgent || navigator.vendor || (window as any).opera;\r\n return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|Mobile/i.test(userAgent.toLowerCase());\r\n }\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Checkout {\r\n requestId: number = 0;\r\n paymentType: PaymentType = PaymentType.NA;\r\n url: string = '';\r\n expiration: number = 300;\r\n errorMessage: string = '';\r\n successMessage: string = '';\r\n callback: any;\r\n popup: any;\r\n iframeUrl: string = '*';\r\n\r\n setErrorMessage(errorMessage: string) {\r\n this.errorMessage = errorMessage;\r\n this.popup = undefined;\r\n }\r\n\r\n setCallback(callback: any) {\r\n this.successMessage = 'success';\r\n this.callback = callback;\r\n this.popup = undefined;\r\n }\r\n}\r\n","import { Subject, takeUntil, timer } from \"rxjs\";\r\n\r\nexport class CountDownTime {\r\n\tisStart: boolean = false;\r\n isStop: boolean = false;\r\n nextRound: boolean = false;\r\n initTime: number = 0;\r\n\ttimeLeft: number = 0;\r\n isCancel: boolean = false;\r\n private destroy$ = new Subject<void>();\r\n\r\n\tconstructor(initTime: number) {\r\n\t\tthis.initTime = initTime;\r\n\t}\r\n\r\n\tstart() {\r\n\t\tthis.isStart = true;\r\n\t\tthis.isStop = false;\r\n\t\tthis.timeLeft = this.initTime;\r\n\t}\r\n\r\n\tstop() {\r\n\t\tthis.isStart = false;\r\n\t\tthis.isStop = true;\r\n\t\tthis.timeLeft = 0;\r\n\t\tthis.nextRound = true;\r\n\t}\r\n\r\n\tdownTime() {\r\n\t\tthis.timeLeft = this.timeLeft - 1;\r\n\t}\r\n cancel() {\r\n this.isCancel = true;\r\n this.stop();\r\n }\r\n oberserableTimer(isStop: any) {\r\n timer(0, 1000)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(val => {\r\n if (this.timeLeft === 0) {\r\n if (this.isStart) {\r\n this.stop();\r\n }\r\n } else {\r\n this.downTime();\r\n }\r\n if (this.nextRound) {\r\n this.nextRound = false;\r\n if (isStop) {\r\n isStop.emit();\r\n }\r\n }\r\n });\r\n }\r\n onDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","export class IParam {\r\n getMobileFlag(): boolean {\r\n return /android|mobi/i.test(navigator.userAgent.toLowerCase());\r\n }\r\n \r\n toJson(): string {\r\n return JSON.stringify(this);\r\n }\r\n\r\n toFormUrlEncoded(): string {\r\n return new URLSearchParams(Object.entries(this).map(([key, value]) => [key, String(value)])).toString();\r\n }\r\n}\r\n","import { Checkout } from \"./checkout\";\r\n\r\nexport class Timer {\r\n interval: number = 0;\r\n maxTime: number = 120000; // 2 minute\r\n currentTime: number = 0;\r\n private popupTimer: ReturnType<typeof setInterval> | null = null;\r\n private popup: Window | null = null;\r\n\r\n constructor(interval: number, maxTime?: number) {\r\n this.interval = interval;\r\n if (maxTime) this.maxTime = maxTime;\r\n\t}\r\n oberserableTimer(data: any, callback?: Function) {\r\n this.popup = data.popup;\r\n this.popupTimer = setInterval(() => {\r\n if ((this.maxTime > 0 && this.currentTime >= this.maxTime) || !data) {\r\n this.stopWatcher();\r\n // TODO Hit expire time\r\n return;\r\n }\r\n this.currentTime += this.interval;\r\n if (data instanceof Checkout && (!data.popup || (data.popup && data.popup.closed))) { // Handle detect close popup by the user\r\n console.log(\"Close popup\");\r\n this.stopWatcher();\r\n if (callback) {\r\n data.setErrorMessage(\"Payment popup is closed\");\r\n callback(data);\r\n }\r\n }\r\n }, this.interval);\r\n }\r\n stopWatcher() {\r\n if (this.popupTimer) {\r\n clearInterval(this.popupTimer);\r\n this.popupTimer = null;\r\n }\r\n }\r\n}","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Pipe({\r\n name: 'vTransloco',\r\n standalone: true\r\n})\r\nexport class TranslocoPipe implements PipeTransform {\r\n private transloco = inject(TranslocoService);\r\n\r\n transform(key: string): Observable<string> {\r\n return this.transloco.translate(key, {}, 'epp-lib');\r\n // return this.transloco.selectTranslate(key, {}, 'epp-lib');\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vodds-loader',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './vodds-loader.component.html',\r\n styleUrl: './vodds-loader.component.scss'\r\n})\r\nexport class VoddsLoaderComponent {\r\n @Input() message: string = '';\r\n @Input() showAjaxLoader: boolean = false;\r\n}\r\n","@if (showAjaxLoader) {\r\n <div class=\"load-indicator\">\r\n <img src=\"https://cdn.voddos.net/vodds/static/ajax-loader16.gif\">\r\n {{message != undefined ? message : ''}}\r\n </div>\r\n}\r\n","import { Component, Inject, Input } from '@angular/core';\r\nimport { VoddsLoaderComponent } from '../vodds-loader/vodds-loader.component';\r\nimport { Checkout } from '../../model/checkout';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { provideTranslocoScope, TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { CommonUtil } from '../../service/common-util';\r\nimport { NgStyle } from '@angular/common';\r\n\r\ndeclare var RapydCheckoutToolkit: any;\r\n\r\n@Component({\r\n selector: 'v-rapyd',\r\n standalone: true,\r\n imports: [ NgStyle, VoddsLoaderComponent, MatDialogModule, MatProgressSpinnerModule, TranslocoModule ],\r\n templateUrl: './rapyd.component.html',\r\n styleUrl: './rapyd.component.scss'\r\n})\r\nexport class RapydComponent {\r\n @Input() checkout: Checkout | undefined;\r\n\tisOpen: boolean = false;\r\n checkoutToolKit: any = undefined;\r\n visaMasterTimeout: number = 300;\r\n visaMasterCheckoutId: string = '';\r\n visaMasterTimer: any; // interval\r\n displayTimer: string = \"00:00\";\r\n isShow: boolean = false;\r\n isLoading: boolean = true;\r\n errorMessage: string = \"\";\r\n defaultExpirationSec = 300; // 5mins\r\n checkoutFailureMessage: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n // private translocoService: TranslocoService\r\n ) {\r\n this.visaMasterTimeout = data.expiration ?? data.expiration;\r\n this.visaMasterCheckoutId = data.checkoutUrl;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stopTimer();\r\n window.removeEventListener('onLoading', this.handleLoading);\r\n window.removeEventListener('onCheckoutPaymentSuccess', this.handleCheckoutPaymentSuccess);\r\n window.removeEventListener('onCheckoutPaymentFailure', this.handleCheckoutPaymentFailure);\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.checkout) {\r\n this.visaMasterTimeout = this.checkout.expiration;\r\n this.visaMasterCheckoutId = this.checkout.url;\r\n }\r\n\r\n // this.translocoService.selectTranslate('mobile_payment_form_title').subscribe(buttonText => {\r\n // console.log('Async translations loaded:', buttonText);\r\n this.checkoutToolKit = this.isMobile() ? this.createCheckoutToolKitOnMobile(\"DEPOSIT\") : this.createCheckoutToolKitOnDesktop(\"DEPOSIT\");\r\n this.displayCheckout();\r\n window.addEventListener('onLoading', this.handleLoading);\r\n window.addEventListener('onCheckoutPaymentSuccess', this.handleCheckoutPaymentSuccess);\r\n window.addEventListener('onCheckoutPaymentFailure', this.handleCheckoutPaymentFailure);\r\n // });\r\n }\r\n\r\n createCheckoutToolKitOnDesktop(buttonText: string) {\r\n return new RapydCheckoutToolkit({\r\n pay_button_text: buttonText,\r\n id: this.visaMasterCheckoutId,\r\n wait_on_payment_redirect: true,\r\n\r\n style: {\r\n cardFields: {\r\n title: {\r\n color: '#80807F'\r\n },\r\n saveForFutureLabel:{\r\n color: '#80807F'\r\n }\r\n },\r\n input: {\r\n base: {\r\n fontWeight: \"400\",\r\n borderRadius: \"5px\",\r\n }\r\n },\r\n orderDetails: {\r\n title: {\r\n color: '#80807F'\r\n },\r\n totalLabel: {\r\n color: '#80807F'\r\n },\r\n totalValue: {\r\n color: '#80807F'\r\n }\r\n },\r\n submit: {\r\n base: {\r\n backgroundColor: \"#F48215\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"900\",\r\n borderRadius: \"5px\",\r\n border: \"none\",\r\n boxShadow: \"0px 0px 20px 0px #28303A33\",\r\n height: \"35px\",\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n createCheckoutToolKitOnMobile(buttonText: string) {\r\n return new RapydCheckoutToolkit({\r\n pay_button_text: buttonText,\r\n id: this.visaMasterCheckoutId,\r\n wait_on_payment_redirect: true,\r\n style: {\r\n input: {\r\n base: {\r\n fontWeight: \"400\",\r\n borderRadius: \"5px\",\r\n fontSize: \"12px\"\r\n },\r\n placeholder: {\r\n fontSize: \"12px !important\",\r\n fontWeight: \"700\",\r\n fontFamily: \"Manrope\",\r\n color: '#8C8C8C',\r\n },\r\n },\r\n cardFields: {\r\n title: {\r\n color: '#8C8C8C'\r\n },\r\n saveForFutureLabel: {\r\n color: '#8C8C8C',\r\n }\r\n },\r\n orderDetails: {\r\n title: {\r\n color: '#8C8C8C',\r\n },\r\n totalLabel: {\r\n color: '#8C8C8C',\r\n },\r\n totalValue: {\r\n color: '#8C8C8C',\r\n }\r\n },\r\n submit: {\r\n base: {\r\n backgroundColor: \"#28303A\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"900 !important\",\r\n borderRadius: \"12px\",\r\n boxShadow: \"0 0 8.57px #ff6b0066 !important\",\r\n height: \"40px\",\r\n width: \"100%\",\r\n fontSize: \"12px !important\",\r\n border: \"none\"\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n handleLoading = (event: any) => {\r\n if (!event.detail.loading && this.isLoading) {\r\n this.isShow = true;\r\n this.isLoading = false;\r\n this.startTimer();\r\n }\r\n }\r\n\r\n handleCheckoutPaymentSuccess = (event: any) => {\r\n this.closeDialog(false);\r\n }\r\n\r\n handleCheckoutPaymentFailure = (event: any) => {\r\n this.stopTimer();\r\n this.isShow = false;\r\n this.checkoutFailureMessage = event.detail.message;\r\n }\r\n\r\n closeDialog(isCloseCheckout = true) {\r\n this.stopTimer();\r\n if(this.checkoutToolKit && isCloseCheckout) {\r\n try {\r\n this.checkoutToolKit.closeCheckout();\r\n } catch(err) {\r\n console.error(\"Error when closing checkout\", err);\r\n }\r\n }\r\n this.checkoutToolKit = undefined;\r\n this.isShow = false;\r\n this.dialogRef.close(this.checkoutFailureMessage);\r\n\t};\r\n\r\n startTimer() {\r\n if(this.visaMasterTimer) this.stopTimer();\r\n this.visaMasterTimer = setInterval(() => {\r\n if(this.visaMasterTimeout <= 0) {\r\n this.closeDialog();\r\n return;\r\n }\r\n this.visaMasterTimeout--;\r\n this.displayTimer = `${this.pad(Math.floor(this.visaMasterTimeout / 60))}:${this.pad(this.visaMasterTimeout % 60)}`;\r\n }, 1000);\r\n }\r\n\r\n stopTimer() {\r\n clearInterval(this.visaMasterTimer);\r\n }\r\n\r\n pad(number: number) {\r\n return `${number < 10 ? '0' : ''}${number}`;\r\n }\r\n\r\n displayCheckout() {\r\n if(document.getElementById(\"rapyd-checkout\")) {\r\n this.checkoutToolKit.displayCheckout();\r\n } else {\r\n setTimeout(() => {\r\n this.displayCheckout();\r\n }, 10);\r\n }\r\n }\r\n\r\n isMobile() {\r\n return CommonUtil.isMobileTemplate();\r\n }\r\n}\r\n","@if(isMobile()) {\r\n <div class=\"v-dialog mobile\">\r\n <div class=\"v-flex-center-between header text-black-cs\">\r\n <div class=\"v-flex-center-none\">\r\n <span class=\"ml-8\">{{ 'mobile_payment_form_title' | transloco }}</span>\r\n </div>\r\n <div class=\"v-flex-center-between mr-8\">\r\n <div (click)=\"closeDialog()\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M11.0121 12.3959L16.6455 18.0293C16.8333 18.2107 17.0849 18.3111 17.346 18.3088C17.6071 18.3065 17.8569 18.2018 18.0415 18.0172C18.2261 17.8325 18.3309 17.5828 18.3331 17.3217C18.3354 17.0606 18.235 16.809 18.0536 16.6212L12.4202 10.9878L18.0536 5.35431C18.235 5.16649 18.3354 4.91494 18.3331 4.65384C18.3309 4.39273 18.2261 4.14297 18.0415 3.95833C17.8569 3.77369 17.6071 3.66896 17.346 3.66669C17.0849 3.66443 16.8333 3.7648 16.6455 3.9462L11.0121 9.57964L5.37863 3.9462C5.18997 3.76928 4.93988 3.67271 4.68128 3.67691C4.42268 3.68111 4.17585 3.78575 3.99304 3.9687C3.81022 4.15165 3.70575 4.39854 3.70173 4.65715C3.69772 4.91575 3.79447 5.16577 3.97152 5.35431L9.60396 10.9878L3.97052 16.6212C3.87541 16.7131 3.79954 16.8229 3.74735 16.9444C3.69516 17.0659 3.66769 17.1966 3.66654 17.3288C3.66539 17.4611 3.69059 17.5922 3.74066 17.7146C3.79073 17.837 3.86468 17.9481 3.95818 18.0416C4.05168 18.1352 4.16287 18.2091 4.28525 18.2592C4.40764 18.3092 4.53877 18.3344 4.67099 18.3333C4.80322 18.3321 4.93389 18.3047 5.05539 18.2525C5.17688 18.2003 5.28677 18.1244 5.37863 18.0293L11.0121 12.3959Z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n @if (isLoading) {\r\n <div class=\"v-spinner\">\r\n <mat-spinner diameter=\"50\" strokeWidth=\"4\"></mat-spinner>\r\n </div>\r\n }\r\n <div class=\"v-content\" id=\"deposit-id\">\r\n @if (!isLoading && !isShow) {\r\n <div class=\"visa-card-message\">\r\n {{ 'visaCardErrorMessage' | transloco }} <br> {{ 'visaCardErrorMessage2' | transloco }}\r\n </div>\r\n }\r\n <div class=\"vodds-checkout-deposit\">\r\n @if(!isLoading && isShow) {\r\n <div class=\"vodds-checkout-expiration\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7 2.56067C9.76142 2.56067 12 4.79925 12 7.56067C12 10.3221 9.76142 12.5607 7 12.5607C4.23858 12.5607 2 10.3221 2 7.56067C2 4.79925 4.23858 2.56067 7 2.56067ZM6.25 4.06067V7.93567L6.5498 8.16028L8.5498 9.66028L9.4502 8.46106L7.75 7.18567V4.06067H6.25Z\"\r\n fill=\"#8C8C8C\" />\r\n <line x1=\"10.0303\" y1=\"0.530339\" x2=\"12.8588\" y2=\"3.35877\" stroke=\"#8C8C8C\" stroke-width=\"1.5\" />\r\n <line y1=\"-0.75\" x2=\"4\" y2=\"-0.75\" transform=\"matrix(-0.707107 0.707107 0.707107 0.707107 4.82843 1.06067)\"\r\n stroke=\"#8C8C8C\" stroke-width=\"1.5\" />\r\n </svg>\r\n <span>{{ 'visaCardTimeout' | transloco }} <span class=\"countdown-timer\">{{displayTimer}}</span></span>\r\n </div>\r\n }\r\n <div id=\"rapyd-checkout\" class=\"iframe-wrapper\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n} @else {\r\n <div id=\"visa-card\">\r\n <div class=\"top\">\r\n <h2>{{ 'payment_form_title' | transloco }}</h2>\r\n <svg class=\"clsbtn my-account\" (click)=\"closeDialog()\" width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9.89214 0L5.5 4.39214L1.10786 0L0 1.10786L4.39214 5.5L0 9.89214L1.10786 11L5.5 6.60786L9.89214 11L11 9.89214L6.60786 5.5L11 1.10786L9.89214 0Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <div class=\"flex-center\">\r\n <vodds-loader [showAjaxLoader]=\"isLoading\"></vodds-loader>\r\n </div>\r\n @if (!isLoading && !isShow) {\r\n <div class=\"visa-card-message\">\r\n {{ 'visaCardErrorMessage' | transloco }} <br> {{ 'visaCardErrorMessage2' | transloco }}\r\n </div>\r\n }\r\n <div class=\"visa-card-form\" [style]=\"{display: isShow ? 'flex' : 'none'}\">\r\n <div class=\"timer\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7 2.56067C9.76142 2.56067 12 4.79925 12 7.56067C12 10.3221 9.76142 12.5607 7 12.5607C4.23858 12.5607 2 10.3221 2 7.56067C2 4.79925 4.23858 2.56067 7 2.56067ZM6.25 4.06067V7.93567L6.5498 8.16028L8.5498 9.66028L9.4502 8.46106L7.75 7.18567V4.06067H6.25Z\"\r\n fill=\"#B5B5B5\" />\r\n <line x1=\"10.0303\" y1=\"0.530339\" x2=\"12.8588\" y2=\"3.35877\" stroke=\"#B5B5B5\" stroke-width=\"1.5\" />\r\n <line y1=\"-0.75\" x2=\"4\" y2=\"-0.75\"\r\n transform=\"matrix(-0.707107 0.707107 0.707107 0.707107 4.82861 1.06067)\" stroke=\"#B5B5B5\"\r\n stroke-width=\"1.5\" />\r\n </svg>\r\n <span class=\"label\">&nbsp;{{ 'visaCardTimeout' | transloco }}&nbsp;</span> <span class=\"display-time\">\r\n {{displayTimer}}</span>\r\n </div>\r\n <div id=\"rapyd-checkout\"></div>\r\n </div>\r\n </div>\r\n}","import { ElementRef, inject } from '@angular/core';\r\nimport { IframeMessageService } from '../service/iframe-message.service';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { Checkout } from '../model/checkout';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Timer } from '../model/timer';\r\nimport { PaymentType } from '../model/payment-type';\r\nimport { RapydComponent } from './rapyd/rapyd.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nexport class Payment {\r\n cache: Map<number, Checkout> = new Map();\r\n iframe: ElementRef<HTMLIFrameElement> | undefined;//Set from the component\r\n timer: Timer = new Timer(500); // 0.5s\r\n result: Checkout | undefined;\r\n tokenExpire: number | undefined;\r\n token: string | undefined;\r\n private iframeMessageService = inject(IframeMessageService);\r\n private rapydScriptLoaded = false;\r\n\r\n constructor(public dialog: MatDialog) {\r\n /**\r\n * Listen OPEN_PAYMENT_FORM message to open 3th party page\r\n */\r\n this.iframeMessageService.onMessages().subscribe(message => {\r\n console.log('Received from iframe:', message);\r\n if (!message || message.type == undefined) return;\r\n switch (message.type) {\r\n case IframeMessageType.OPEN_PAYMENT_FORM:\r\n const checkout = Object.assign(new Checkout(), message.payload);\r\n if (!checkout || this.cache.get(checkout.requestId)) {\r\n return;\r\n }\r\n // if (this.cache.size > 0) {\r\n // this.cache.clear();\r\n // //TODO clear the current popup\r\n // }\r\n switch (checkout.paymentType) {\r\n case PaymentType.JETON:\r\n case PaymentType.ECOPAYZ:\r\n this.openWindow(checkout);\r\n break;\r\n case PaymentType.RAPYD:\r\n this.openVisaCheckout(checkout);\r\n break;\r\n default:\r\n }\r\n break;\r\n case IframeMessageType.THIRD_PARTY_CALLBACK:\r\n const checkout1 = new Checkout();\r\n checkout1.setCallback(message.payload);\r\n this.timer.stopWatcher();\r\n this.sendCallBackMessageToIframe(checkout1);\r\n break;\r\n case IframeMessageType.PAYMENT_CALLBACK:\r\n const checkout2 = new Checkout();\r\n if (message.payload) {\r\n checkout2.setErrorMessage(message.payload as string);\r\n } else {\r\n checkout2.setCallback(message.payload);\r\n }\r\n this.timer.stopWatcher();\r\n this.sendCallBackMessageToIframe(checkout2);\r\n break\r\n case IframeMessageType.OPEN_DEPOSIT:\r\n case IframeMessageType.OPEN_TRANSACTION:\r\n case IframeMessageType.OPEN_WITHDRAW:\r\n case IframeMessageType.CANCEL_WITHDRAW:\r\n case IframeMessageType.PAYOUT:\r\n case IframeMessageType.IN_PROGRESS:\r\n case IframeMessageType.REFRESH_TOKEN:\r\n case IframeMessageType.REFRESH_IFRAME:\r\n case IframeMessageType.REQUIRE_REFRESH_TOKEN:\r\n case IframeMessageType.TRACK_GA4:\r\n this.processMessage(message);\r\n break;\r\n }\r\n\r\n });\r\n }\r\n getDomain(host: string) {\r\n if (!host) return;\r\n this.iframeMessageService.getDomain(host);\r\n }\r\n processMessage(message: IframeMessage) {\r\n //TODO\r\n }\r\n\r\n /**\r\n * Open 3th party page on the popup windown or new tab\r\n */\r\n openWindow(checkout: Checkout) {\r\n this.cache.set(checkout.requestId, checkout);\r\n console.log(\"Open windown: \", this.cache);\r\n const width = 470;\r\n const height = 550;\r\n var left = Math.max(0, (screen.width - width) / 2),\r\n top = Math.max(0, (screen.height - height) / 2);\r\n // var popup = window.open(url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n let popup = window.open(checkout.url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n if (!popup) {\r\n checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';\r\n this.sendCallBackMessageToIframe(checkout);\r\n this.cache.delete(checkout.requestId);\r\n return;\r\n }\r\n checkout.popup = popup;\r\n popup.focus();\r\n this.onThirdPartyMessage(checkout);\r\n this.timer.oberserableTimer(checkout, () => this.sendCallBackMessageToIframe(checkout));\r\n }\r\n async openVisaCheckout(checkout: Checkout) {\r\n try {\r\n await this.load();\r\n this.dialog.open(RapydComponent, {\r\n data: {\r\n checkoutUrl: checkout.url,\r\n expiration: checkout.expiration\r\n },\r\n width: '500px',\r\n maxWidth: '90vw'\r\n }).afterClosed().subscribe(checkoutFailureMessage => {\r\n checkout.errorMessage = checkoutFailureMessage;\r\n this.sendCallBackMessageToIframe(checkout);\r\n })\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n load(): Promise<void> {\r\n if (this.rapydScriptLoaded) {\r\n return Promise.resolve();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n\r\n script.src = 'https://sandboxcheckouttoolkit.rapyd.net';\r\n script.async = true;\r\n\r\n script.onload = () => {\r\n this.rapydScriptLoaded = true;\r\n resolve();\r\n };\r\n\r\n script.onerror = () => {\r\n reject(new Error('Failed to load Rapyd Checkout Toolkit'));\r\n };\r\n\r\n document.head.appendChild(script);\r\n });\r\n }\r\n\r\n /**\r\n * Listen message or action from 3th party on the popup\r\n * Skip for RAPYD - It will process when the dialog close\r\n */\r\n onThirdPartyMessage(checkout: Checkout) {\r\n this.iframeMessageService.onThirdPartyMessages().subscribe(event => {\r\n if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {\r\n switch (checkout.paymentType) {\r\n case PaymentType.NA:\r\n break;\r\n case PaymentType.JETON:\r\n case PaymentType.ECOPAYZ:\r\n\r\n }\r\n console.log('Received from 3th party:', event.data);\r\n checkout.setCallback(event.data);\r\n this.timer.stopWatcher();\r\n this.sendCallBackMessageToIframe(checkout);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * send the message from the parent to the iframe\r\n */\r\n sendCallBackMessageToIframe(checkout: Checkout) {\r\n console.log(\"send callback message to iframe: \", checkout);\r\n if (this.iframe == undefined) return;\r\n let message: IframeMessage = {\r\n type: IframeMessageType.PAYMENT_CALLBACK,\r\n payload: checkout\r\n }\r\n this.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);\r\n this.cache.delete(checkout.requestId);\r\n }\r\n\r\n removePaymentIframe() {\r\n //TODO\r\n this.iframe = undefined;\r\n this.token = undefined;\r\n this.tokenExpire = undefined;\r\n this.iframeMessageService.stopRefreshedTokenSchedule();\r\n }\r\n\r\n sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage, iframeUrl: string = '*') {\r\n if (this.iframe == undefined) return;\r\n this.iframeMessageService.sendMessageToIframe(this.iframe, message, iframeUrl);\r\n }\r\n\r\n setConfig(tokenExpireAt: number, token: string){\r\n this.token = token;\r\n this.tokenExpire = tokenExpireAt\r\n this.iframeMessageService.startRefreshedTokenSchedule(this.tokenExpire);\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of epp-lib\r\n */\r\nexport * from './lib/translation';\r\n\r\nexport * from './lib/service';\r\nexport * from './lib/model';\r\nexport * from './lib/pipe';\r\nexport * from './lib/component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epp-lib.mjs","sources":["../../../projects/epp-lib/src/lib/translation/epp-lib-loader.ts","../../../projects/epp-lib/src/lib/translation/epp-lib-translation.service.ts","../../../projects/epp-lib/src/lib/translation/epp-lib.providers.ts","../../../projects/epp-lib/src/lib/service/event-emitter.service.ts","../../../projects/epp-lib/src/lib/model/domain.ts","../../../projects/epp-lib/src/lib/service/vodds-http.service.ts","../../../projects/epp-lib/src/lib/api-route.const.ts","../../../projects/epp-lib/src/lib/model/payment-type.ts","../../../projects/epp-lib/src/lib/model/iframe-message-type.ts","../../../projects/epp-lib/src/lib/service/iframe-message.service.ts","../../../projects/epp-lib/src/lib/service/common-util.ts","../../../projects/epp-lib/src/lib/model/checkout.ts","../../../projects/epp-lib/src/lib/model/count-down-time.ts","../../../projects/epp-lib/src/lib/model/iparam.ts","../../../projects/epp-lib/src/lib/model/timer.ts","../../../projects/epp-lib/src/lib/pipe/transloco.pipe.ts","../../../projects/epp-lib/src/lib/component/vodds-loader/vodds-loader.component.ts","../../../projects/epp-lib/src/lib/component/vodds-loader/vodds-loader.component.html","../../../projects/epp-lib/src/lib/component/rapyd/rapyd.component.ts","../../../projects/epp-lib/src/lib/component/rapyd/rapyd.component.html","../../../projects/epp-lib/src/lib/component/payment.ts","../../../projects/epp-lib/src/public-api.ts","../../../projects/epp-lib/src/epp-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { TranslocoLoader } from '@jsverse/transloco';\r\n\r\n@Injectable()\r\nexport class EppLibLoader implements TranslocoLoader {\r\n getTranslation(lang: string) {\r\n switch (lang) {\r\n case 'cs':\r\n return import('./i18n/cs.json');\r\n case 'ru':\r\n return import('./i18n/ru.json');\r\n case 'es':\r\n return import('./i18n/es.json');\r\n case 'en':\r\n default:\r\n return import('./i18n/en.json');\r\n }\r\n }\r\n}","import { inject, Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EppLibTranslationService {\r\n private transloco = inject(TranslocoService);\r\n\r\n setLanguage(lang: string): void {\r\n this.transloco.setActiveLang(lang);\r\n }\r\n\r\n getLanguage(): string {\r\n return this.transloco.getActiveLang();\r\n }\r\n}\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\nimport { provideTransloco, provideTranslocoScope } from '@jsverse/transloco';\r\nimport { EppLibLoader } from './epp-lib-loader';\r\n\r\nexport interface EppLibConfig {\r\n defaultLang: string;\r\n availableLangs: string[];\r\n}\r\n\r\nexport function provideEppLibTranslations(config: EppLibConfig): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n provideTransloco({\r\n config: {\r\n availableLangs: config.availableLangs,\r\n defaultLang: config.defaultLang,\r\n reRenderOnLangChange: true,\r\n },\r\n loader: EppLibLoader,\r\n }),\r\n // provideTranslocoScope({\r\n // scope: 'epp-lib',\r\n // loader: {\r\n // en: () => import('./i18n/en.json'),\r\n // cs: () => import('./i18n/cs.json'),\r\n // es: () => import('./i18n/es.json'),\r\n // ru: () => import('./i18n/ru.json'),\r\n // },\r\n // })\r\n ]);\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { IBroadcastEvent } from '../model/broadcast/ibroadcast-event';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EventEmitterService {\r\n private readonly eventBus: Subject<IBroadcastEvent> = new Subject<IBroadcastEvent>();\r\n\r\n broadcast(event: IBroadcastEvent) {\r\n this.eventBus.next(event);\r\n }\r\n\r\n getEventBus(): Subject<IBroadcastEvent> {\r\n return this.eventBus;\r\n }\r\n}\r\n","export class Domain {\r\n defaultDomain: string = '';\r\n allowedOrigins: string[] = ['http://localhost:9000', 'http://localhost:4200', 'http://epp.com', 'https://epp.myvodds.com', 'https://myvodds.com'];\r\n specialDomain: string[] = [];\r\n jetonDomain: string = '';\r\n ecopayzDomain: string = '';\r\n rapydDomain: string = 'https://sandboxcheckout.rapyd.net';\r\n constructor() {}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IParam } from '../model/iparam';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class VoddsHttpService {\r\n private httpClient = inject(HttpClient);\r\n\r\n postJson<T>(url: string, request: IParam): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-type': 'application/json' });\r\n return this.httpClient.post<T>(url, request.toJson(), { headers });\r\n }\r\n\r\n get<T>(url: string, param?: IParam): Observable<T> {\r\n if(param) {\r\n url = url + '?' + param.toFormUrlEncoded();\r\n }\r\n return this.httpClient.get<T>(url);\r\n }\r\n get2<T>(url: string, option?: any): Observable<T> {\r\n const observable: Observable<any> = new Observable(observer => {\r\n this.httpClient.get<any>(url, option).subscribe(\r\n res => {\r\n observer.next(res);\r\n },\r\n err => {\r\n observer.next(err);\r\n }\r\n );\r\n });\r\n return observable;\r\n }\r\n\r\n postFormUrlEncoded<T>(url: string, request: IParam): Observable<T> {\r\n let options = {\r\n headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')\r\n };\r\n return this.httpClient.post<T>(url, request.toFormUrlEncoded(), options);\r\n }\r\n\r\n getMainDomain(url: string){\r\n let mainDomain = url;\r\n let domain = window.location.origin;\r\n if(domain.includes(\"promo.\")){\r\n domain = domain.replace(\"promo.\", \"\");\r\n mainDomain = domain + url;\r\n }\r\n\r\n return mainDomain;\r\n }\r\n\r\n getFullUrl(url: string, param: IParam): string {\r\n return `${url}?${param.toFormUrlEncoded()}`;\r\n }\r\n}\r\n","export const ApiRoute = {\r\n GET_DOMAIN: { url: \"/payment/getDomain\", method: \"get\" }\r\n}\r\n\r\n","export enum PaymentType {\r\n NA,\r\n JETON,\r\n ECOPAYZ,\r\n RAPYD\r\n}\r\n","export enum IframeMessageType {\r\n OPEN_PAYMENT_FORM,\r\n PAYMENT_CALLBACK,\r\n THIRD_PARTY_CALLBACK,\r\n OPEN_DEPOSIT,\r\n OPEN_WITHDRAW,\r\n OPEN_TRANSACTION,\r\n CANCEL_WITHDRAW,\r\n PAYOUT,\r\n IN_PROGRESS,\r\n CONFIG_UPDATE,\r\n OPEN_DEPOSIT_SUBMITED,\r\n REFRESH_TOKEN,\r\n REQUIRE_REFRESH_TOKEN,\r\n TOKEN_INVALID,\r\n TOKEN_EXPIRED,\r\n REFRESH_IFRAME,\r\n INIT_UTM_COOKIE,\r\n TRACK_GA4,\r\n OPEN_WITHDRAWAL_REQUEST_CONFIRMATION,\r\n OPEN_WITHDRAWAL_REQUEST_SUBMITTED,\r\n IFRAME_RESIZE\r\n}\r\n","import { DestroyRef, ElementRef, inject, Injectable, NgZone } from '@angular/core';\r\nimport { Subject, Observable, filter, switchMap, timer, BehaviorSubject, Subscription } from 'rxjs';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Domain } from '../model/domain';\r\nimport { VoddsHttpService } from './vodds-http.service';\r\nimport { ApiRoute } from '../api-route.const';\r\nimport { PaymentType } from '../model/payment-type';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IframeMessageService {\r\n private readonly messages$ = new Subject<IframeMessage>();\r\n\r\n private readonly thirdPartyMessages$ = new Subject<MessageEvent>();\r\n private domain: Domain;\r\n private http = inject(VoddsHttpService);\r\n\r\n private readonly listener = (event: MessageEvent) => {\r\n if (event.data && event.data.target != \"metamask-inpage\") {\r\n console.log(\"listener: \", event);\r\n }\r\n if (!this.domain.allowedOrigins.includes(event.origin)) {\r\n if (this.isValidDomain(PaymentType.NA, event.origin)) {\r\n this.ngZone.run(() => {\r\n console.log(\"Process message from 3th party\");\r\n this.thirdPartyMessages$.next(event);\r\n });\r\n }\r\n return;\r\n }\r\n if (event.data && event.data.target == \"metamask-inpage\") {\r\n return;\r\n }\r\n console.log(\"Process message\");\r\n if (event.data && IframeMessageType[event.data.type]) {\r\n this.ngZone.run(() => {\r\n this.messages$.next(event.data);\r\n });\r\n }\r\n };\r\n\r\n constructor(private readonly ngZone: NgZone) {\r\n this.domain = new Domain();\r\n window.addEventListener('message', this.listener);\r\n }\r\n // Purpose only process the message come from allowed domain\r\n getDomain(host: string) {\r\n this.http.get((host ? host : '') + ApiRoute.GET_DOMAIN.url).subscribe({\r\n next: (resp: any) => {\r\n console.log(\"Test: \", resp.data);\r\n if (resp.data) {\r\n this.domain = resp.data;\r\n }\r\n },\r\n error: err => { }\r\n });\r\n }\r\n\r\n onMessages(): Observable<IframeMessage> {\r\n return this.messages$.asObservable();\r\n }\r\n onThirdPartyMessages(): Observable<MessageEvent> {\r\n return this.thirdPartyMessages$.asObservable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('message', this.listener);\r\n this.messages$.complete();\r\n this.thirdPartyMessages$.complete();\r\n }\r\n\r\n /**\r\n * Skip for RAPYD - It will process when the dialog close\r\n */\r\n isValidDomain(paymentType: PaymentType, origin: string) {\r\n if (paymentType == undefined || paymentType == null) return false;\r\n switch(paymentType) {\r\n case PaymentType.JETON:\r\n return this.domain.jetonDomain == origin;\r\n case PaymentType.ECOPAYZ:\r\n return this.domain.ecopayzDomain == origin;\r\n // case PaymentType.RAPYD:\r\n // return this.domain.rapydDomain == origin;\r\n case PaymentType.NA:\r\n return this.domain.jetonDomain == origin\r\n // || this.domain.rapydDomain == origin\r\n || this.domain.ecopayzDomain == origin;\r\n default:\r\n return false;\r\n }\r\n\r\n }\r\n sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage, iframeUrl: string = '*') {\r\n if (iframe == undefined) return;\r\n iframe.nativeElement.contentWindow?.postMessage(\r\n message,\r\n iframeUrl\r\n );\r\n }\r\n}\r\n","export class CommonUtil {\r\n static isMobileTemplate(): boolean {\r\n const userAgent = navigator.userAgent || navigator.vendor || (window as any).opera;\r\n return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|Mobile/i.test(userAgent.toLowerCase());\r\n }\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Checkout {\r\n requestId: number = 0;\r\n paymentType: PaymentType = PaymentType.NA;\r\n url: string = '';\r\n expiration: number = 300;\r\n errorMessage: string = '';\r\n successMessage: string = '';\r\n callback: any;\r\n popup: any;\r\n iframeUrl: string = '*';\r\n\r\n setErrorMessage(errorMessage: string) {\r\n this.errorMessage = errorMessage;\r\n this.popup = undefined;\r\n }\r\n\r\n setCallback(callback: any) {\r\n this.successMessage = 'success';\r\n this.callback = callback;\r\n this.popup = undefined;\r\n }\r\n}\r\n","import { Subject, takeUntil, timer } from \"rxjs\";\r\n\r\nexport class CountDownTime {\r\n\tisStart: boolean = false;\r\n isStop: boolean = false;\r\n nextRound: boolean = false;\r\n initTime: number = 0;\r\n\ttimeLeft: number = 0;\r\n isCancel: boolean = false;\r\n private destroy$ = new Subject<void>();\r\n\r\n\tconstructor(initTime: number) {\r\n\t\tthis.initTime = initTime;\r\n\t}\r\n\r\n\tstart() {\r\n\t\tthis.isStart = true;\r\n\t\tthis.isStop = false;\r\n\t\tthis.timeLeft = this.initTime;\r\n\t}\r\n\r\n\tstop() {\r\n\t\tthis.isStart = false;\r\n\t\tthis.isStop = true;\r\n\t\tthis.timeLeft = 0;\r\n\t\tthis.nextRound = true;\r\n\t}\r\n\r\n\tdownTime() {\r\n\t\tthis.timeLeft = this.timeLeft - 1;\r\n\t}\r\n cancel() {\r\n this.isCancel = true;\r\n this.stop();\r\n }\r\n oberserableTimer(isStop: any) {\r\n timer(0, 1000)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(val => {\r\n if (this.timeLeft === 0) {\r\n if (this.isStart) {\r\n this.stop();\r\n }\r\n } else {\r\n this.downTime();\r\n }\r\n if (this.nextRound) {\r\n this.nextRound = false;\r\n if (isStop) {\r\n isStop.emit();\r\n }\r\n }\r\n });\r\n }\r\n onDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","export class IParam {\r\n getMobileFlag(): boolean {\r\n return /android|mobi/i.test(navigator.userAgent.toLowerCase());\r\n }\r\n \r\n toJson(): string {\r\n return JSON.stringify(this);\r\n }\r\n\r\n toFormUrlEncoded(): string {\r\n return new URLSearchParams(Object.entries(this).map(([key, value]) => [key, String(value)])).toString();\r\n }\r\n}\r\n","import { Checkout } from \"./checkout\";\r\n\r\nexport class Timer {\r\n interval: number = 0;\r\n maxTime: number = 120000; // 2 minute\r\n currentTime: number = 0;\r\n private popupTimer: ReturnType<typeof setInterval> | null = null;\r\n private popup: Window | null = null;\r\n\r\n constructor(interval: number, maxTime?: number) {\r\n this.interval = interval;\r\n if (maxTime) this.maxTime = maxTime;\r\n\t}\r\n oberserableTimer(data: any, callback?: Function) {\r\n this.popup = data.popup;\r\n this.popupTimer = setInterval(() => {\r\n if ((this.maxTime > 0 && this.currentTime >= this.maxTime) || !data) {\r\n this.stopWatcher();\r\n // TODO Hit expire time\r\n return;\r\n }\r\n this.currentTime += this.interval;\r\n if (data instanceof Checkout && (!data.popup || (data.popup && data.popup.closed))) { // Handle detect close popup by the user\r\n console.log(\"Close popup\");\r\n this.stopWatcher();\r\n if (callback) {\r\n data.setErrorMessage(\"Payment popup is closed\");\r\n callback(data);\r\n }\r\n }\r\n }, this.interval);\r\n }\r\n stopWatcher() {\r\n if (this.popupTimer) {\r\n clearInterval(this.popupTimer);\r\n this.popupTimer = null;\r\n }\r\n }\r\n}","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Pipe({\r\n name: 'vTransloco',\r\n standalone: true\r\n})\r\nexport class TranslocoPipe implements PipeTransform {\r\n private transloco = inject(TranslocoService);\r\n\r\n transform(key: string): Observable<string> {\r\n return this.transloco.translate(key, {}, 'epp-lib');\r\n // return this.transloco.selectTranslate(key, {}, 'epp-lib');\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vodds-loader',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './vodds-loader.component.html',\r\n styleUrl: './vodds-loader.component.scss'\r\n})\r\nexport class VoddsLoaderComponent {\r\n @Input() message: string = '';\r\n @Input() showAjaxLoader: boolean = false;\r\n}\r\n","@if (showAjaxLoader) {\r\n <div class=\"load-indicator\">\r\n <img src=\"https://cdn.voddos.net/vodds/static/ajax-loader16.gif\">\r\n {{message != undefined ? message : ''}}\r\n </div>\r\n}\r\n","import { Component, Inject, Input } from '@angular/core';\r\nimport { VoddsLoaderComponent } from '../vodds-loader/vodds-loader.component';\r\nimport { Checkout } from '../../model/checkout';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { provideTranslocoScope, TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { CommonUtil } from '../../service/common-util';\r\nimport { NgStyle } from '@angular/common';\r\n\r\ndeclare var RapydCheckoutToolkit: any;\r\n\r\n@Component({\r\n selector: 'v-rapyd',\r\n standalone: true,\r\n imports: [ NgStyle, VoddsLoaderComponent, MatDialogModule, MatProgressSpinnerModule, TranslocoModule ],\r\n templateUrl: './rapyd.component.html',\r\n styleUrl: './rapyd.component.scss'\r\n})\r\nexport class RapydComponent {\r\n @Input() checkout: Checkout | undefined;\r\n\tisOpen: boolean = false;\r\n checkoutToolKit: any = undefined;\r\n visaMasterTimeout: number = 300;\r\n visaMasterCheckoutId: string = '';\r\n visaMasterTimer: any; // interval\r\n displayTimer: string = \"00:00\";\r\n isShow: boolean = false;\r\n isLoading: boolean = true;\r\n errorMessage: string = \"\";\r\n defaultExpirationSec = 300; // 5mins\r\n checkoutFailureMessage: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n // private translocoService: TranslocoService\r\n ) {\r\n this.visaMasterTimeout = data.expiration ?? data.expiration;\r\n this.visaMasterCheckoutId = data.checkoutUrl;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stopTimer();\r\n window.removeEventListener('onLoading', this.handleLoading);\r\n window.removeEventListener('onCheckoutPaymentSuccess', this.handleCheckoutPaymentSuccess);\r\n window.removeEventListener('onCheckoutPaymentFailure', this.handleCheckoutPaymentFailure);\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.checkout) {\r\n this.visaMasterTimeout = this.checkout.expiration;\r\n this.visaMasterCheckoutId = this.checkout.url;\r\n }\r\n\r\n // this.translocoService.selectTranslate('mobile_payment_form_title').subscribe(buttonText => {\r\n // console.log('Async translations loaded:', buttonText);\r\n this.checkoutToolKit = this.isMobile() ? this.createCheckoutToolKitOnMobile(\"DEPOSIT\") : this.createCheckoutToolKitOnDesktop(\"DEPOSIT\");\r\n this.displayCheckout();\r\n window.addEventListener('onLoading', this.handleLoading);\r\n window.addEventListener('onCheckoutPaymentSuccess', this.handleCheckoutPaymentSuccess);\r\n window.addEventListener('onCheckoutPaymentFailure', this.handleCheckoutPaymentFailure);\r\n // });\r\n }\r\n\r\n createCheckoutToolKitOnDesktop(buttonText: string) {\r\n return new RapydCheckoutToolkit({\r\n pay_button_text: buttonText,\r\n id: this.visaMasterCheckoutId,\r\n wait_on_payment_redirect: true,\r\n\r\n style: {\r\n cardFields: {\r\n title: {\r\n color: '#80807F'\r\n },\r\n saveForFutureLabel:{\r\n color: '#80807F'\r\n }\r\n },\r\n input: {\r\n base: {\r\n fontWeight: \"400\",\r\n borderRadius: \"5px\",\r\n }\r\n },\r\n orderDetails: {\r\n title: {\r\n color: '#80807F'\r\n },\r\n totalLabel: {\r\n color: '#80807F'\r\n },\r\n totalValue: {\r\n color: '#80807F'\r\n }\r\n },\r\n submit: {\r\n base: {\r\n backgroundColor: \"#F48215\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"900\",\r\n borderRadius: \"5px\",\r\n border: \"none\",\r\n boxShadow: \"0px 0px 20px 0px #28303A33\",\r\n height: \"35px\",\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n createCheckoutToolKitOnMobile(buttonText: string) {\r\n return new RapydCheckoutToolkit({\r\n pay_button_text: buttonText,\r\n id: this.visaMasterCheckoutId,\r\n wait_on_payment_redirect: true,\r\n style: {\r\n input: {\r\n base: {\r\n fontWeight: \"400\",\r\n borderRadius: \"5px\",\r\n fontSize: \"12px\"\r\n },\r\n placeholder: {\r\n fontSize: \"12px !important\",\r\n fontWeight: \"700\",\r\n fontFamily: \"Manrope\",\r\n color: '#8C8C8C',\r\n },\r\n },\r\n cardFields: {\r\n title: {\r\n color: '#8C8C8C'\r\n },\r\n saveForFutureLabel: {\r\n color: '#8C8C8C',\r\n }\r\n },\r\n orderDetails: {\r\n title: {\r\n color: '#8C8C8C',\r\n },\r\n totalLabel: {\r\n color: '#8C8C8C',\r\n },\r\n totalValue: {\r\n color: '#8C8C8C',\r\n }\r\n },\r\n submit: {\r\n base: {\r\n backgroundColor: \"#28303A\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"900 !important\",\r\n borderRadius: \"12px\",\r\n boxShadow: \"0 0 8.57px #ff6b0066 !important\",\r\n height: \"40px\",\r\n width: \"100%\",\r\n fontSize: \"12px !important\",\r\n border: \"none\"\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n handleLoading = (event: any) => {\r\n if (!event.detail.loading && this.isLoading) {\r\n this.isShow = true;\r\n this.isLoading = false;\r\n this.startTimer();\r\n }\r\n }\r\n\r\n handleCheckoutPaymentSuccess = (event: any) => {\r\n this.closeDialog(false);\r\n }\r\n\r\n handleCheckoutPaymentFailure = (event: any) => {\r\n this.stopTimer();\r\n this.isShow = false;\r\n this.checkoutFailureMessage = event.detail.message;\r\n }\r\n\r\n closeDialog(isCloseCheckout = true) {\r\n this.stopTimer();\r\n if(this.checkoutToolKit && isCloseCheckout) {\r\n try {\r\n this.checkoutToolKit.closeCheckout();\r\n } catch(err) {\r\n console.error(\"Error when closing checkout\", err);\r\n }\r\n }\r\n this.checkoutToolKit = undefined;\r\n this.isShow = false;\r\n this.dialogRef.close(this.checkoutFailureMessage);\r\n\t};\r\n\r\n startTimer() {\r\n if(this.visaMasterTimer) this.stopTimer();\r\n this.visaMasterTimer = setInterval(() => {\r\n if(this.visaMasterTimeout <= 0) {\r\n this.closeDialog();\r\n return;\r\n }\r\n this.visaMasterTimeout--;\r\n this.displayTimer = `${this.pad(Math.floor(this.visaMasterTimeout / 60))}:${this.pad(this.visaMasterTimeout % 60)}`;\r\n }, 1000);\r\n }\r\n\r\n stopTimer() {\r\n clearInterval(this.visaMasterTimer);\r\n }\r\n\r\n pad(number: number) {\r\n return `${number < 10 ? '0' : ''}${number}`;\r\n }\r\n\r\n displayCheckout() {\r\n if(document.getElementById(\"rapyd-checkout\")) {\r\n this.checkoutToolKit.displayCheckout();\r\n } else {\r\n setTimeout(() => {\r\n this.displayCheckout();\r\n }, 10);\r\n }\r\n }\r\n\r\n isMobile() {\r\n return CommonUtil.isMobileTemplate();\r\n }\r\n}\r\n","@if(isMobile()) {\r\n <div class=\"v-dialog mobile\">\r\n <div class=\"v-flex-center-between header text-black-cs\">\r\n <div class=\"v-flex-center-none\">\r\n <span class=\"ml-8\">{{ 'mobile_payment_form_title' | transloco }}</span>\r\n </div>\r\n <div class=\"v-flex-center-between mr-8\">\r\n <div (click)=\"closeDialog()\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M11.0121 12.3959L16.6455 18.0293C16.8333 18.2107 17.0849 18.3111 17.346 18.3088C17.6071 18.3065 17.8569 18.2018 18.0415 18.0172C18.2261 17.8325 18.3309 17.5828 18.3331 17.3217C18.3354 17.0606 18.235 16.809 18.0536 16.6212L12.4202 10.9878L18.0536 5.35431C18.235 5.16649 18.3354 4.91494 18.3331 4.65384C18.3309 4.39273 18.2261 4.14297 18.0415 3.95833C17.8569 3.77369 17.6071 3.66896 17.346 3.66669C17.0849 3.66443 16.8333 3.7648 16.6455 3.9462L11.0121 9.57964L5.37863 3.9462C5.18997 3.76928 4.93988 3.67271 4.68128 3.67691C4.42268 3.68111 4.17585 3.78575 3.99304 3.9687C3.81022 4.15165 3.70575 4.39854 3.70173 4.65715C3.69772 4.91575 3.79447 5.16577 3.97152 5.35431L9.60396 10.9878L3.97052 16.6212C3.87541 16.7131 3.79954 16.8229 3.74735 16.9444C3.69516 17.0659 3.66769 17.1966 3.66654 17.3288C3.66539 17.4611 3.69059 17.5922 3.74066 17.7146C3.79073 17.837 3.86468 17.9481 3.95818 18.0416C4.05168 18.1352 4.16287 18.2091 4.28525 18.2592C4.40764 18.3092 4.53877 18.3344 4.67099 18.3333C4.80322 18.3321 4.93389 18.3047 5.05539 18.2525C5.17688 18.2003 5.28677 18.1244 5.37863 18.0293L11.0121 12.3959Z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n @if (isLoading) {\r\n <div class=\"v-spinner\">\r\n <mat-spinner diameter=\"50\" strokeWidth=\"4\"></mat-spinner>\r\n </div>\r\n }\r\n <div class=\"v-content\" id=\"deposit-id\">\r\n @if (!isLoading && !isShow) {\r\n <div class=\"visa-card-message\">\r\n {{ 'visaCardErrorMessage' | transloco }} <br> {{ 'visaCardErrorMessage2' | transloco }}\r\n </div>\r\n }\r\n <div class=\"vodds-checkout-deposit\">\r\n @if(!isLoading && isShow) {\r\n <div class=\"vodds-checkout-expiration\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7 2.56067C9.76142 2.56067 12 4.79925 12 7.56067C12 10.3221 9.76142 12.5607 7 12.5607C4.23858 12.5607 2 10.3221 2 7.56067C2 4.79925 4.23858 2.56067 7 2.56067ZM6.25 4.06067V7.93567L6.5498 8.16028L8.5498 9.66028L9.4502 8.46106L7.75 7.18567V4.06067H6.25Z\"\r\n fill=\"#8C8C8C\" />\r\n <line x1=\"10.0303\" y1=\"0.530339\" x2=\"12.8588\" y2=\"3.35877\" stroke=\"#8C8C8C\" stroke-width=\"1.5\" />\r\n <line y1=\"-0.75\" x2=\"4\" y2=\"-0.75\" transform=\"matrix(-0.707107 0.707107 0.707107 0.707107 4.82843 1.06067)\"\r\n stroke=\"#8C8C8C\" stroke-width=\"1.5\" />\r\n </svg>\r\n <span>{{ 'visaCardTimeout' | transloco }} <span class=\"countdown-timer\">{{displayTimer}}</span></span>\r\n </div>\r\n }\r\n <div id=\"rapyd-checkout\" class=\"iframe-wrapper\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n} @else {\r\n <div id=\"visa-card\">\r\n <div class=\"top\">\r\n <h2>{{ 'payment_form_title' | transloco }}</h2>\r\n <svg class=\"clsbtn my-account\" (click)=\"closeDialog()\" width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9.89214 0L5.5 4.39214L1.10786 0L0 1.10786L4.39214 5.5L0 9.89214L1.10786 11L5.5 6.60786L9.89214 11L11 9.89214L6.60786 5.5L11 1.10786L9.89214 0Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <div class=\"flex-center\">\r\n <vodds-loader [showAjaxLoader]=\"isLoading\"></vodds-loader>\r\n </div>\r\n @if (!isLoading && !isShow) {\r\n <div class=\"visa-card-message\">\r\n {{ 'visaCardErrorMessage' | transloco }} <br> {{ 'visaCardErrorMessage2' | transloco }}\r\n </div>\r\n }\r\n <div class=\"visa-card-form\" [style]=\"{display: isShow ? 'flex' : 'none'}\">\r\n <div class=\"timer\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7 2.56067C9.76142 2.56067 12 4.79925 12 7.56067C12 10.3221 9.76142 12.5607 7 12.5607C4.23858 12.5607 2 10.3221 2 7.56067C2 4.79925 4.23858 2.56067 7 2.56067ZM6.25 4.06067V7.93567L6.5498 8.16028L8.5498 9.66028L9.4502 8.46106L7.75 7.18567V4.06067H6.25Z\"\r\n fill=\"#B5B5B5\" />\r\n <line x1=\"10.0303\" y1=\"0.530339\" x2=\"12.8588\" y2=\"3.35877\" stroke=\"#B5B5B5\" stroke-width=\"1.5\" />\r\n <line y1=\"-0.75\" x2=\"4\" y2=\"-0.75\"\r\n transform=\"matrix(-0.707107 0.707107 0.707107 0.707107 4.82861 1.06067)\" stroke=\"#B5B5B5\"\r\n stroke-width=\"1.5\" />\r\n </svg>\r\n <span class=\"label\">&nbsp;{{ 'visaCardTimeout' | transloco }}&nbsp;</span> <span class=\"display-time\">\r\n {{displayTimer}}</span>\r\n </div>\r\n <div id=\"rapyd-checkout\"></div>\r\n </div>\r\n </div>\r\n}","import { ElementRef, inject } from '@angular/core';\r\nimport { IframeMessageService } from '../service/iframe-message.service';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { Checkout } from '../model/checkout';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Timer } from '../model/timer';\r\nimport { PaymentType } from '../model/payment-type';\r\nimport { RapydComponent } from './rapyd/rapyd.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nexport class Payment {\r\n cache: Map<number, Checkout> = new Map();\r\n iframe: ElementRef<HTMLIFrameElement> | undefined;//Set from the component\r\n timer: Timer = new Timer(500); // 0.5s\r\n result: Checkout | undefined;\r\n tokenExpire: number | undefined;\r\n token: string | undefined;\r\n private iframeMessageService = inject(IframeMessageService);\r\n private rapydScriptLoaded = false;\r\n private timerSubscription?: Subscription;\r\n constructor(public dialog: MatDialog) {\r\n /**\r\n * Listen OPEN_PAYMENT_FORM message to open 3th party page\r\n */\r\n this.iframeMessageService.onMessages().subscribe(message => {\r\n console.log('Received from iframe:', message);\r\n if (!message || message.type == undefined) return;\r\n switch (message.type) {\r\n case IframeMessageType.OPEN_PAYMENT_FORM:\r\n const checkout = Object.assign(new Checkout(), message.payload);\r\n if (!checkout || this.cache.get(checkout.requestId)) {\r\n return;\r\n }\r\n // if (this.cache.size > 0) {\r\n // this.cache.clear();\r\n // //TODO clear the current popup\r\n // }\r\n switch (checkout.paymentType) {\r\n case PaymentType.JETON:\r\n case PaymentType.ECOPAYZ:\r\n this.openWindow(checkout);\r\n break;\r\n case PaymentType.RAPYD:\r\n this.openVisaCheckout(checkout);\r\n break;\r\n default:\r\n }\r\n break;\r\n case IframeMessageType.THIRD_PARTY_CALLBACK:\r\n const checkout1 = new Checkout();\r\n checkout1.setCallback(message.payload);\r\n this.timer.stopWatcher();\r\n this.sendMessageToIframe(checkout1);\r\n break;\r\n case IframeMessageType.PAYMENT_CALLBACK:\r\n const checkout2 = new Checkout();\r\n if (message.payload) {\r\n checkout2.setErrorMessage(message.payload as string);\r\n } else {\r\n checkout2.setCallback(message.payload);\r\n }\r\n this.timer.stopWatcher();\r\n this.sendMessageToIframe(checkout2);\r\n break\r\n case IframeMessageType.OPEN_DEPOSIT:\r\n case IframeMessageType.OPEN_TRANSACTION:\r\n case IframeMessageType.OPEN_WITHDRAW:\r\n case IframeMessageType.CANCEL_WITHDRAW:\r\n case IframeMessageType.PAYOUT:\r\n case IframeMessageType.IN_PROGRESS:\r\n case IframeMessageType.REFRESH_TOKEN:\r\n case IframeMessageType.REFRESH_IFRAME:\r\n case IframeMessageType.REQUIRE_REFRESH_TOKEN:\r\n case IframeMessageType.TRACK_GA4:\r\n this.processMessage(message);\r\n break;\r\n }\r\n\r\n });\r\n }\r\n getDomain(host: string) {\r\n if (!host) return;\r\n this.iframeMessageService.getDomain(host);\r\n }\r\n processMessage(message: IframeMessage) {\r\n //TODO\r\n }\r\n\r\n /**\r\n * Open 3th party page on the popup windown or new tab\r\n */\r\n openWindow(checkout: Checkout) {\r\n this.cache.set(checkout.requestId, checkout);\r\n console.log(\"Open windown: \", this.cache);\r\n const width = 470;\r\n const height = 550;\r\n var left = Math.max(0, (screen.width - width) / 2),\r\n top = Math.max(0, (screen.height - height) / 2);\r\n // var popup = window.open(url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n let popup = window.open(checkout.url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n if (!popup) {\r\n checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';\r\n this.sendMessageToIframe(checkout);\r\n this.cache.delete(checkout.requestId);\r\n return;\r\n }\r\n checkout.popup = popup;\r\n popup.focus();\r\n this.onThirdPartyMessage(checkout);\r\n this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));\r\n }\r\n async openVisaCheckout(checkout: Checkout) {\r\n try {\r\n await this.load();\r\n this.dialog.open(RapydComponent, {\r\n data: {\r\n checkoutUrl: checkout.url,\r\n expiration: checkout.expiration\r\n },\r\n width: '500px',\r\n maxWidth: '90vw'\r\n }).afterClosed().subscribe(checkoutFailureMessage => {\r\n checkout.errorMessage = checkoutFailureMessage;\r\n this.sendMessageToIframe(checkout);\r\n })\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n load(): Promise<void> {\r\n if (this.rapydScriptLoaded) {\r\n return Promise.resolve();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n\r\n script.src = 'https://sandboxcheckouttoolkit.rapyd.net';\r\n script.async = true;\r\n\r\n script.onload = () => {\r\n this.rapydScriptLoaded = true;\r\n resolve();\r\n };\r\n\r\n script.onerror = () => {\r\n reject(new Error('Failed to load Rapyd Checkout Toolkit'));\r\n };\r\n\r\n document.head.appendChild(script);\r\n });\r\n }\r\n\r\n /**\r\n * Listen message or action from 3th party on the popup\r\n * Skip for RAPYD - It will process when the dialog close\r\n */\r\n onThirdPartyMessage(checkout: Checkout) {\r\n this.iframeMessageService.onThirdPartyMessages().subscribe(event => {\r\n if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {\r\n switch (checkout.paymentType) {\r\n case PaymentType.NA:\r\n break;\r\n case PaymentType.JETON:\r\n case PaymentType.ECOPAYZ:\r\n\r\n }\r\n console.log('Received from 3th party:', event.data);\r\n checkout.setCallback(event.data);\r\n this.timer.stopWatcher();\r\n this.sendMessageToIframe(checkout);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * send the message from the parent to the iframe\r\n */\r\n sendMessageToIframe(checkout: Checkout) {\r\n console.log(\"send the message from the parent into the iframe: \", checkout);\r\n if (this.iframe == undefined) return;\r\n let message: IframeMessage = {\r\n type: IframeMessageType.PAYMENT_CALLBACK,\r\n payload: checkout\r\n }\r\n this.iframeMessageService.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);\r\n this.cache.delete(checkout.requestId);\r\n }\r\n\r\n removePaymentIframe() {\r\n //TODO\r\n this.iframe = undefined;\r\n this.token = undefined;\r\n this.tokenExpire = undefined;\r\n this.stopRefreshedTokenSchedule();\r\n }\r\n\r\n setConfig(tokenExpireAt: number, token: string){\r\n this.token = token;\r\n this.tokenExpire = tokenExpireAt\r\n this.startRefreshedTokenSchedule(this.tokenExpire);\r\n }\r\n\r\n stopRefreshedTokenSchedule(): void {\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n this.timerSubscription = undefined;\r\n }\r\n }\r\n\r\n\r\n startRefreshedTokenSchedule(timeExpire: number): void {\r\n this.stopRefreshedTokenSchedule();\r\n\r\n const delayTime = timeExpire - 60;\r\n const safeDelay = Math.max(0, delayTime);\r\n\r\n this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {\r\n this.processMessage({type: IframeMessageType.REQUIRE_REFRESH_TOKEN} as IframeMessage);\r\n this.stopRefreshedTokenSchedule();\r\n });\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of epp-lib\r\n */\r\nexport * from './lib/translation';\r\n\r\nexport * from './lib/service';\r\nexport * from './lib/model';\r\nexport * from './lib/pipe';\r\nexport * from './lib/component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare class Payment {
13
13
  token: string | undefined;
14
14
  private iframeMessageService;
15
15
  private rapydScriptLoaded;
16
+ private timerSubscription?;
16
17
  constructor(dialog: MatDialog);
17
18
  getDomain(host: string): void;
18
19
  processMessage(message: IframeMessage): void;
@@ -30,8 +31,9 @@ export declare class Payment {
30
31
  /**
31
32
  * send the message from the parent to the iframe
32
33
  */
33
- sendCallBackMessageToIframe(checkout: Checkout): void;
34
+ sendMessageToIframe(checkout: Checkout): void;
34
35
  removePaymentIframe(): void;
35
- sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage, iframeUrl?: string): void;
36
36
  setConfig(tokenExpireAt: number, token: string): void;
37
+ stopRefreshedTokenSchedule(): void;
38
+ startRefreshedTokenSchedule(timeExpire: number): void;
37
39
  }
@@ -16,5 +16,8 @@ export declare enum IframeMessageType {
16
16
  TOKEN_EXPIRED = 14,
17
17
  REFRESH_IFRAME = 15,
18
18
  INIT_UTM_COOKIE = 16,
19
- TRACK_GA4 = 17
19
+ TRACK_GA4 = 17,
20
+ OPEN_WITHDRAWAL_REQUEST_CONFIRMATION = 18,
21
+ OPEN_WITHDRAWAL_REQUEST_SUBMITTED = 19,
22
+ IFRAME_RESIZE = 20
20
23
  }
@@ -6,7 +6,6 @@ import * as i0 from "@angular/core";
6
6
  export declare class IframeMessageService {
7
7
  private readonly ngZone;
8
8
  private readonly messages$;
9
- private timerSubscription?;
10
9
  private readonly thirdPartyMessages$;
11
10
  private domain;
12
11
  private http;
@@ -21,8 +20,6 @@ export declare class IframeMessageService {
21
20
  */
22
21
  isValidDomain(paymentType: PaymentType, origin: string): boolean;
23
22
  sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage, iframeUrl?: string): void;
24
- stopRefreshedTokenSchedule(): void;
25
- startRefreshedTokenSchedule(timeExpire: number): void;
26
23
  static ɵfac: i0.ɵɵFactoryDeclaration<IframeMessageService, never>;
27
24
  static ɵprov: i0.ɵɵInjectableDeclaration<IframeMessageService>;
28
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "epp-lib",
3
- "version": "0.0.28-snapshot",
3
+ "version": "0.0.29-snapshot",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",
Binary file