surveysparrow-ionic-plugin 2.0.2-beta.4 → 2.0.2

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.
@@ -260,6 +260,8 @@ export class CloseButtonComponent {
260
260
  this.stateService = getSpotcheckStateService();
261
261
  this.state = this.stateService.getState();
262
262
  this.updateComponentState();
263
+ }
264
+ ngOnInit() {
263
265
  this.stateSubscription = this.stateService.state$.subscribe((newState) => {
264
266
  this.ngZone.run(() => {
265
267
  this.state = newState;
@@ -343,6 +345,8 @@ export class SpotCheckComponent {
343
345
  this.spotcheckStateService = getSpotcheckStateService();
344
346
  this.state = this.spotcheckStateService.getState();
345
347
  this.updateComponentStyles();
348
+ }
349
+ ngOnInit() {
346
350
  this.stateSubscription = this.spotcheckStateService.state$.subscribe((newState) => {
347
351
  this.ngZone.run(() => {
348
352
  this.state = newState;
@@ -351,8 +355,6 @@ export class SpotCheckComponent {
351
355
  this.cdr.detectChanges();
352
356
  });
353
357
  });
354
- }
355
- ngOnInit() {
356
358
  this.initializeComponent();
357
359
  }
358
360
  ngOnDestroy() {
@@ -405,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
405
407
  type: Component,
406
408
  args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"] }]
407
409
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULFlBQVksR0FHYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFvQjFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFTakI7SUFDQTtJQUNBO0lBVkQsR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUNqQixXQUFXLEdBQXVCLFNBQVMsQ0FBQztJQUM1QyxVQUFVLEdBQVksS0FBSyxDQUFDO0lBRXJDLE9BQU8sR0FBMkIsSUFBSSxDQUFDO0lBQ2YsTUFBTSxDQUFpQztJQUUvRCxZQUNVLFNBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxHQUFzQjtRQUZ0QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUM1QixDQUFDO0lBQ0wsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9B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WSxZQUFZLHdOQXJRWCxnQkFBZ0IsMkdBNExoQixvQkFBb0I7OzJGQTJFcEIsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLG9CQUFvQixjQUdsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPbkluaXQsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBIb3N0TGlzdGVuZXIsXG4gIE5nWm9uZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNsb3NlU3BvdENoZWNrLCBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCwgZ2V0U3BvdGNoZWNrQ29tcG9uZW50Q3NzU3R5bGVzLCBoYW5kbGVTdXJ2ZXlFbmQsIGlzY2hhdFN1cnZleSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vU3BvdGNoZWNrU3RhdGVTZXJ2aWNlJztcbmltcG9ydCB7IGdldFNwb3RDaGVja0V2ZW50TGlzdGVuZXIgfSBmcm9tICcuL1Nwb3RDaGVja0V2ZW50TGlzdGVuZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnV2ViVmlld0NvbXBvbmVudCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTsgYm9yZGVyLXJhZGl1czoge3tpc01pbmlDYXJkID8gMTIgOiAwfX1weDsgcGFkZGluZy1sZWZ0OiB7e2lzTWluaUNhcmQgPyAxMiA6IDB9fXB4OyBwYWRkaW5nLXJpZ2h0OiB7e2lzTWluaUNhcmQgPyAxMiA6IDB9fXB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94O1wiPlxuICAgICAgPGlmcmFtZVxuICAgICAgICBhbGxvdz1cImNhbWVyYTsgbWljcm9waG9uZTsgZ2VvbG9jYXRpb247IGRpc3BsYXktY2FwdHVyZTsgYXV0b3BsYXk7IGNsaXBib2FyZC1yZWFkOyBjbGlwYm9hcmQtd3JpdGU7IGZ1bGxzY3JlZW5cIlxuICAgICAgICBhbGxvd2Z1bGxzY3JlZW5cbiAgICAgICAgI2lmcmFtZVJlZlxuICAgICAgICBbc3JjXT1cInNhZmVVcmxcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItcmFkaXVzOiB7e2lzTWluaUNhcmQgPyAxMiA6IDB9fXB4O1wiXG4gICAgICAgIGZyYW1lYm9yZGVyPVwiMFwiXG4gICAgICA+XG4gICAgICA8L2lmcmFtZT5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdlYlZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSB1cmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB3ZWJ2aWV3VHlwZTogJ2NsYXNzaWMnIHwgJ2NoYXQnID0gJ2NsYXNzaWMnO1xuICBASW5wdXQoKSBpc01pbmlDYXJkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2FmZVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbCA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZVJlZicpIGlmcmFtZSE6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkgeyB9XG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zYWZlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgY29uc3Qgd2ViVmlld1JlZiA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy53ZWJ2aWV3VHlwZSA9PT0gJ2NsYXNzaWMnKSB7XG4gICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICBjbGFzc2ljV2ViVmlld1JlZjogd2ViVmlld1JlZixcbiAgICAgICAgaXNDbGFzc2ljTG9hZGluZzogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgY2hhdFdlYlZpZXdSZWY6IHdlYlZpZXdSZWYsXG4gICAgICAgIGlzQ2hhdExvYWRpbmc6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2V0dXBJZnJhbWVMb2FkTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZnJhbWVMb2FkTGlzdGVuZXIoKSB7XG4gICAgY29uc3QgaWZyYW1lID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudDtcbiAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5qZWN0TmF0aXZlQnJpZGdlQWRhcHRlcnMoaWZyYW1lKTtcbiAgICAgICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgICAgIGlmICh0aGlzLndlYnZpZXdUeXBlID09PSAnY2xhc3NpYycpIHtcbiAgICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NsYXNzaWNMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NoYXRMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluamVjdE5hdGl2ZUJyaWRnZUFkYXB0ZXJzKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICBpZiAoaWZyYW1lICYmIGlmcmFtZS5jb250ZW50V2luZG93KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpZnJhbWVXaW5kb3cgPSBpZnJhbWUuY29udGVudFdpbmRvdyBhcyBhbnk7XG5cbiAgICAgICAgaWYgKCFpZnJhbWVXaW5kb3cuU3NBbmRyb2lkU2RrKSB7XG4gICAgICAgICAgaWZyYW1lV2luZG93LlNzQW5kcm9pZFNkayA9IHtcbiAgICAgICAgICAgIHNoYXJlRGF0YTogZnVuY3Rpb24gKCkgeyB9LFxuICAgICAgICAgICAgc2VuZFBhcnRpYWxTdWJtaXNzaW9uRGF0YTogZnVuY3Rpb24gKCkgeyB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaWZyYW1lV2luZG93LkFuZHJvaWQpIHtcbiAgICAgICAgICBpZnJhbWVXaW5kb3cuQW5kcm9pZCA9IHtcbiAgICAgICAgICAgIG9uTWVzc2FnZVJlY2VpdmU6IGZ1bmN0aW9uICgpIHsgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlmcmFtZVdpbmRvdy53ZWJraXQpIHtcbiAgICAgICAgICBpZnJhbWVXaW5kb3cud2Via2l0ID0ge1xuICAgICAgICAgICAgbWVzc2FnZUhhbmRsZXJzOiB7XG4gICAgICAgICAgICAgIHN1cnZleVJlc3BvbnNlOiB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uICgpIHsgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzcG90Q2hlY2tEYXRhOiB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uICgpIHsgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmbHV0dGVyU3BvdENoZWNrRGF0YToge1xuICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAoKSB7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlmcmFtZVdpbmRvdy5mbHV0dGVyU3BvdENoZWNrRGF0YSkge1xuICAgICAgICAgIGlmcmFtZVdpbmRvdy5mbHV0dGVyU3BvdENoZWNrRGF0YSA9IHtcbiAgICAgICAgICAgIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAoKSB7IH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxuICBvbk1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gZXZlbnQ7XG4gICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgICBjYXNlICdzbGlkZUluRnJhbWUnOlxuICAgICAgICAgIGlmIChkYXRhLm1vdW50ZWQpIHtcbiAgICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzTW91bnRlZDogdHJ1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVzaXplV2luZG93JzpcbiAgICAgICAgICBpZiAoZGF0YS5zaXplKSB7XG4gICAgICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBjdXJyZW50UXVlc3Rpb25IZWlnaHQ6IGRhdGEuc2l6ZS5oZWlnaHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBkYXRhLmlzQ2xvc2VCdXR0b25FbmFibGVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3N1cnZleUNvbXBsZXRlZCc6XG4gICAgICAgICAgY2xvc2VTcG90Q2hlY2tBbmRIYW5kbGVTdXJ2ZXlFbmQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGdldFNwb3RDaGVja0V2ZW50TGlzdGVuZXIoKS5lbWl0KCdzdXJ2ZXlDb21wbGV0ZWQnLCBkYXRhLnJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzdXJ2ZXlMb2FkU3RhcnRlZCc6XG4gICAgICAgICAgZ2V0U3BvdENoZWNrRXZlbnRMaXN0ZW5lcigpLmVtaXQoJ3N1cnZleUxvYWRTdGFydGVkJywgZGF0YS5zdXJ2ZXlEZXRhaWxzKTtcbiAgICAgICAgICBicmVhaztcblxuXG4gICAgICAgIGNhc2UgJ2NsYXNzaWNMb2FkRXZlbnQnOlxuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2xhc3NpY0xvYWRFdmVudFJlY2VpdmVkOiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NoYXRMb2FkRXZlbnQnOlxuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2hhdExvYWRFdmVudFJlY2VpdmVkOiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xvc2Utc3ZnJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3ZnXG4gICAgICBbYXR0ci53aWR0aF09XCJzaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJzaXplXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMzIgMzJcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTAuNjY2NSAxMC42NjdMMjEuMzMzMiAyMS4zMzM3TTIxLjMzMzIgMTAuNjY3TDEwLjY2NjUgMjEuMzMzN1wiXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCJzdHJva2VcIlxuICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic3Ryb2tlV2lkdGhcIlxuICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENsb3NlU1ZHQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gMzI7XG4gIEBJbnB1dCgpIHN0cm9rZTogc3RyaW5nID0gJyM5MTkxOTEnO1xuICBASW5wdXQoKSBzdHJva2VXaWR0aDogbnVtYmVyID0gMS41O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcG90Y2hlY2stY2xvc2UtYnV0dG9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTM2cHg7IHJpZ2h0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7IGN1cnNvcjogcG9pbnRlcjsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6IDUwcHg7XCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiICpuZ0lmPVwiaXNWaXNpYmxlICYmIGlzTWluaUNhcmRcIj5cbiAgICAgICAgPGNsb3NlLXN2ZyBbc2l6ZV09XCJzaXplXCIgW3N0cm9rZV09XCJzdHJva2VcIiBbc3Ryb2tlV2lkdGhdPVwic3Ryb2tlV2lkdGhcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNnB4OyByaWdodDogMTZweDsgei1pbmRleDogMTAwMDAxOyBjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiICpuZ0lmPVwiaXNWaXNpYmxlICYmICFpc01pbmlDYXJkXCI+XG4gICAgICAgIDxjbG9zZS1zdmcgW3NpemVdPVwic2l6ZVwiIFtzdHJva2VdPVwic3Ryb2tlXCIgW3N0cm9rZVdpZHRoXT1cInN0cm9rZVdpZHRoXCIvPlxuICAgICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENsb3NlU1ZHQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xvc2VCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAzMDtcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGg6IG51bWJlciA9IDEuMjtcblxuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTWluaUNhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3Ryb2tlOiBzdHJpbmcgPSAnYmxhY2snO1xuICBwcml2YXRlIGlzQ2xvc2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgKG5ld1N0YXRlOiBTcG90Y2hlY2tTdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0YXRlKCk7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID1cbiAgICAgIHRoaXMuc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQgJiZcbiAgICAgICgodGhpcy5zdGF0ZS5jdXJyZW50UXVlc3Rpb25IZWlnaHQgPiAwICYmICF0aGlzLnN0YXRlLmlzRnVsbFNjcmVlbk1vZGUpIHx8XG4gICAgICAgICh0aGlzLnN0YXRlLmlzRnVsbFNjcmVlbk1vZGUgJiZcbiAgICAgICAgICAoKCF0aGlzLnN0YXRlLmlzQ2xhc3NpY0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnKSB8fFxuICAgICAgICAgICAgKCF0aGlzLnN0YXRlLmlzQ2hhdExvYWRpbmcgJiZcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCcpKSkpO1xuICAgIHRoaXMuaXNNaW5pQ2FyZCA9IHRoaXMuc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCc7XG4gICAgdGhpcy5zdHJva2UgPSB0aGlzLmlzTWluaUNhcmQgPyAnYmxhY2snIDogdGhpcy5zdGF0ZS5jbG9zZUJ1dHRvblN0eWxlPy5bJ2N0YUJ1dHRvbiddIHx8ICdibGFjayc7XG4gICAgaWYgKHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLmlzQ2xvc2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNDbG9zaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNDbG9zaW5nID0gdHJ1ZTtcbiAgICBhd2FpdCBjbG9zZVNwb3RDaGVjaygpO1xuICAgIGhhbmRsZVN1cnZleUVuZCgpO1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH07XG59XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnU3BvdENoZWNrQ29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL1Nwb3RDaGVja0NvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vU3BvdENoZWNrQ29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBXZWJWaWV3Q29tcG9uZW50LCBDbG9zZUJ1dHRvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNwb3RDaGVja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGU6IFNwb3RjaGVja1N0YXRlO1xuICBwcml2YXRlIHNwb3RjaGVja1N0YXRlU2VydmljZTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGNvbXBvbmVudFN0eWxlczogYW55ID0ge307XG4gIGF2YXRhclVybDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnRTdHlsZXMoKTtcblxuICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgKG5ld1N0YXRlOiBTcG90Y2hlY2tTdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0eWxlcygpO1xuICAgICAgICAgIHRoaXMuYXZhdGFyVXJsID0gdGhpcy5zdGF0ZS5hdmF0YXJVcmwgfHwgXCJodHRwczovL3N0YXRpYy5zdXJ2ZXlzcGFycm93LmNvbS9hcHBsaWNhdGlvbi9pbWFnZXMvcHJvZmlsZS5wbmdcIjtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRTdHlsZXMgPSBnZXRTcG90Y2hlY2tDb21wb25lbnRDc3NTdHlsZXModGhpcy5zdGF0ZSk7XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkb21haW5OYW1lID0gdGhpcy5zdGF0ZS5kb21haW5OYW1lO1xuICAgICAgY29uc3QgdGFyZ2V0VG9rZW4gPSB0aGlzLnN0YXRlLnRhcmdldFRva2VuO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldDxhbnk+KFxuICAgICAgICBgaHR0cHM6Ly8ke2RvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svd2lkZ2V0LyR7dGFyZ2V0VG9rZW59L2luaXRgXG4gICAgICApO1xuXG4gICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcblxuICAgICAgaWYgKGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzICYmIGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGNsYXNzaWNJZnJhbWUgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNoYXRJZnJhbWUgPSBmYWxzZTtcblxuICAgICAgICBkYXRhLmZpbHRlcmVkU3BvdENoZWNrcy5mb3JFYWNoKChzcG90Y2hlY2s6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNwb3RjaGVjay5hcHBlYXJhbmNlLm1vZGUgPT09ICdmdWxsU2NyZWVuJyAmJlxuICAgICAgICAgICAgaXNjaGF0U3VydmV5KHNwb3RjaGVjaz8uc3VydmV5Py5zdXJ2ZXlUeXBlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2hhdElmcmFtZSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYXNzaWNJZnJhbWUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbmV3Q2xhc3NpY1VybCA9IGNsYXNzaWNJZnJhbWVcbiAgICAgICAgICA/IGBodHRwczovLyR7ZG9tYWluTmFtZX0vZXVpLXRlbXBsYXRlL2NsYXNzaWNgXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgY29uc3QgbmV3Q2hhdFVybCA9IGNoYXRJZnJhbWVcbiAgICAgICAgICA/IGBodHRwczovLyR7ZG9tYWluTmFtZX0vZXVpLXRlbXBsYXRlL2NoYXRgXG4gICAgICAgICAgOiAnJztcblxuICAgICAgICB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgZmlsdGVyZWRTcG90Q2hlY2tzOiBkYXRhLmZpbHRlcmVkU3BvdENoZWNrcyxcbiAgICAgICAgICBjbGFzc2ljVXJsOiBuZXdDbGFzc2ljVXJsLFxuICAgICAgICAgIGNoYXRVcmw6IG5ld0NoYXRVcmwsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW5pdGlhbGl6aW5nIHdpZGdldDonLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xuICAgIH1cbiAgfTtcbn1cbiIsIjxkaXYgW25nU3R5bGVdPVwiY29tcG9uZW50U3R5bGVzLndyYXBwZXJTdHlsZXNcIiBjbGFzcz1cInNhZmUtYXJlYVwiPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlcy5zdHlsZXNcIj5cbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8c3BvdGNoZWNrLWNsb3NlLWJ1dHRvbiAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2xhc3NpY1VybCAmJiBzdGF0ZS5jbGFzc2ljVXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jbGFzc2ljVXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjbGFzc2ljJ1wiXG4gICAgICAgIFtpc01pbmlDYXJkXT1cInN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnXCJcbiAgICAgIC8+XG4gIFxuICAgICAgPFdlYlZpZXdDb21wb25lbnRcbiAgICAgICAgKm5nSWY9XCJzdGF0ZS5jaGF0VXJsICYmIHN0YXRlLmNoYXRVcmwubGVuZ3RoID4gMCAmJiBzdGF0ZS5zcG90Y2hlY2tVUkwubGVuZ3RoID4gMCAmJiBzdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCdcIlxuICAgICAgICBbdXJsXT1cInN0YXRlLmNoYXRVcmxcIlxuICAgICAgICBbd2Vidmlld1R5cGVdPVwiJ2NoYXQnXCJcbiAgICAgICAgW2lzTWluaUNhcmRdPVwic3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiAqbmdJZj1cInN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnICYmIHN0YXRlLmF2YXRhckVuYWJsZWRcIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAtNjZweDsgbGVmdDogMTZweDsgei1pbmRleDogMTAwMDAxO1wiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJVcmxcIiBzdHlsZT1cIndpZHRoOiA1NnB4OyBoZWlnaHQ6IDU2cHg7IGJvcmRlci1yYWRpdXM6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1wiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULFlBQVksR0FHYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFvQjFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFTakI7SUFDQTtJQUNBO0lBVkQsR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUNqQixXQUFXLEdBQXVCLFNBQVMsQ0FBQztJQUM1QyxVQUFVLEdBQVksS0FBSyxDQUFDO0lBRXJDLE9BQU8sR0FBMkIsSUFBSSxDQUFDO0lBQ2YsTUFBTSxDQUFpQztJQUUvRCxZQUNVLFNBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxHQUFzQjtRQUZ0QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUM1QixDQUFDO0lBQ0wsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9B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OEVDalQvQixpcENBMkJBLDRQRG9SWSxZQUFZLHdOQXZRWCxnQkFBZ0IsMkdBNExoQixvQkFBb0I7OzJGQTZFcEIsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLG9CQUFvQixjQUdsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPbkluaXQsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBIb3N0TGlzdGVuZXIsXG4gIE5nWm9uZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNsb3NlU3BvdENoZWNrLCBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCwgZ2V0U3BvdGNoZWNrQ29tcG9uZW50Q3NzU3R5bGVzLCBoYW5kbGVTdXJ2ZXlFbmQsIGlzY2hhdFN1cnZleSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vU3BvdGNoZWNrU3RhdGVTZXJ2aWNlJztcbmltcG9ydCB7IGdldFNwb3RDaGVja0V2ZW50TGlzdGVuZXIgfSBmcm9tICcuL1Nwb3RDaGVja0V2ZW50TGlzdGVuZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnV2ViVmlld0NvbXBvbmVudCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTsgYm9yZGVyLXJhZGl1czoge3tpc01pbmlDYXJkID8gMTIgOiAwfX1weDsgcGFkZGluZy1sZWZ0OiB7e2lzTWluaUNhcmQgPyAxMiA6IDB9fXB4OyBwYWRkaW5nLXJpZ2h0OiB7e2lzTWluaUNhcmQgPyAxMiA6IDB9fXB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94O1wiPlxuICAgICAgPGlmcmFtZVxuICAgICAgICBhbGxvdz1cImNhbWVyYTsgbWljcm9waG9uZTsgZ2VvbG9jYXRpb247IGRpc3BsYXktY2FwdHVyZTsgYXV0b3BsYXk7IGNsaXBib2FyZC1yZWFkOyBjbGlwYm9hcmQtd3JpdGU7IGZ1bGxzY3JlZW5cIlxuICAgICAgICBhbGxvd2Z1bGxzY3JlZW5cbiAgICAgICAgI2lmcmFtZVJlZlxuICAgICAgICBbc3JjXT1cInNhZmVVcmxcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItcmFkaXVzOiB7e2lzTWluaUNhcmQgPyAxMiA6IDB9fXB4O1wiXG4gICAgICAgIGZyYW1lYm9yZGVyPVwiMFwiXG4gICAgICA+XG4gICAgICA8L2lmcmFtZT5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdlYlZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSB1cmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB3ZWJ2aWV3VHlwZTogJ2NsYXNzaWMnIHwgJ2NoYXQnID0gJ2NsYXNzaWMnO1xuICBASW5wdXQoKSBpc01pbmlDYXJkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2FmZVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbCA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZVJlZicpIGlmcmFtZSE6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkgeyB9XG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zYWZlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgY29uc3Qgd2ViVmlld1JlZiA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy53ZWJ2aWV3VHlwZSA9PT0gJ2NsYXNzaWMnKSB7XG4gICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICBjbGFzc2ljV2ViVmlld1JlZjogd2ViVmlld1JlZixcbiAgICAgICAgaXNDbGFzc2ljTG9hZGluZzogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgY2hhdFdlYlZpZXdSZWY6IHdlYlZpZXdSZWYsXG4gICAgICAgIGlzQ2hhdExvYWRpbmc6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2V0dXBJZnJhbWVMb2FkTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZnJhbWVMb2FkTGlzdGVuZXIoKSB7XG4gICAgY29uc3QgaWZyYW1lID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudDtcbiAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5qZWN0TmF0aXZlQnJpZGdlQWRhcHRlcnMoaWZyYW1lKTtcbiAgICAgICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgICAgIGlmICh0aGlzLndlYnZpZXdUeXBlID09PSAnY2xhc3NpYycpIHtcbiAgICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NsYXNzaWNMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NoYXRMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluamVjdE5hdGl2ZUJyaWRnZUFkYXB0ZXJzKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICBpZiAoaWZyYW1lICYmIGlmcmFtZS5jb250ZW50V2luZG93KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpZnJhbWVXaW5kb3cgPSBpZnJhbWUuY29udGVudFdpbmRvdyBhcyBhbnk7XG5cbiAgICAgICAgaWYgKCFpZnJhbWVXaW5kb3cuU3NBbmRyb2lkU2RrKSB7XG4gICAgICAgICAgaWZyYW1lV2luZG93LlNzQW5kcm9pZFNkayA9IHtcbiAgICAgICAgICAgIHNoYXJlRGF0YTogZnVuY3Rpb24gKCkgeyB9LFxuICAgICAgICAgICAgc2VuZFBhcnRpYWxTdWJtaXNzaW9uRGF0YTogZnVuY3Rpb24gKCkgeyB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaWZyYW1lV2luZG93LkFuZHJvaWQpIHtcbiAgICAgICAgICBpZnJhbWVXaW5kb3cuQW5kcm9pZCA9IHtcbiAgICAgICAgICAgIG9uTWVzc2FnZVJlY2VpdmU6IGZ1bmN0aW9uICgpIHsgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlmcmFtZVdpbmRvdy53ZWJraXQpIHtcbiAgICAgICAgICBpZnJhbWVXaW5kb3cud2Via2l0ID0ge1xuICAgICAgICAgICAgbWVzc2FnZUhhbmRsZXJzOiB7XG4gICAgICAgICAgICAgIHN1cnZleVJlc3BvbnNlOiB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uICgpIHsgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzcG90Q2hlY2tEYXRhOiB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uICgpIHsgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmbHV0dGVyU3BvdENoZWNrRGF0YToge1xuICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAoKSB7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlmcmFtZVdpbmRvdy5mbHV0dGVyU3BvdENoZWNrRGF0YSkge1xuICAgICAgICAgIGlmcmFtZVdpbmRvdy5mbHV0dGVyU3BvdENoZWNrRGF0YSA9IHtcbiAgICAgICAgICAgIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAoKSB7IH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxuICBvbk1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gZXZlbnQ7XG4gICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgICBjYXNlICdzbGlkZUluRnJhbWUnOlxuICAgICAgICAgIGlmIChkYXRhLm1vdW50ZWQpIHtcbiAgICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzTW91bnRlZDogdHJ1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVzaXplV2luZG93JzpcbiAgICAgICAgICBpZiAoZGF0YS5zaXplKSB7XG4gICAgICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBjdXJyZW50UXVlc3Rpb25IZWlnaHQ6IGRhdGEuc2l6ZS5oZWlnaHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBkYXRhLmlzQ2xvc2VCdXR0b25FbmFibGVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3N1cnZleUNvbXBsZXRlZCc6XG4gICAgICAgICAgY2xvc2VTcG90Q2hlY2tBbmRIYW5kbGVTdXJ2ZXlFbmQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGdldFNwb3RDaGVja0V2ZW50TGlzdGVuZXIoKS5lbWl0KCdzdXJ2ZXlDb21wbGV0ZWQnLCBkYXRhLnJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzdXJ2ZXlMb2FkU3RhcnRlZCc6XG4gICAgICAgICAgZ2V0U3BvdENoZWNrRXZlbnRMaXN0ZW5lcigpLmVtaXQoJ3N1cnZleUxvYWRTdGFydGVkJywgZGF0YS5zdXJ2ZXlEZXRhaWxzKTtcbiAgICAgICAgICBicmVhaztcblxuXG4gICAgICAgIGNhc2UgJ2NsYXNzaWNMb2FkRXZlbnQnOlxuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2xhc3NpY0xvYWRFdmVudFJlY2VpdmVkOiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NoYXRMb2FkRXZlbnQnOlxuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2hhdExvYWRFdmVudFJlY2VpdmVkOiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xvc2Utc3ZnJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3ZnXG4gICAgICBbYXR0ci53aWR0aF09XCJzaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJzaXplXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMzIgMzJcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTAuNjY2NSAxMC42NjdMMjEuMzMzMiAyMS4zMzM3TTIxLjMzMzIgMTAuNjY3TDEwLjY2NjUgMjEuMzMzN1wiXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCJzdHJva2VcIlxuICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic3Ryb2tlV2lkdGhcIlxuICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENsb3NlU1ZHQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gMzI7XG4gIEBJbnB1dCgpIHN0cm9rZTogc3RyaW5nID0gJyM5MTkxOTEnO1xuICBASW5wdXQoKSBzdHJva2VXaWR0aDogbnVtYmVyID0gMS41O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcG90Y2hlY2stY2xvc2UtYnV0dG9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTM2cHg7IHJpZ2h0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7IGN1cnNvcjogcG9pbnRlcjsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6IDUwcHg7XCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiICpuZ0lmPVwiaXNWaXNpYmxlICYmIGlzTWluaUNhcmRcIj5cbiAgICAgICAgPGNsb3NlLXN2ZyBbc2l6ZV09XCJzaXplXCIgW3N0cm9rZV09XCJzdHJva2VcIiBbc3Ryb2tlV2lkdGhdPVwic3Ryb2tlV2lkdGhcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNnB4OyByaWdodDogMTZweDsgei1pbmRleDogMTAwMDAxOyBjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiICpuZ0lmPVwiaXNWaXNpYmxlICYmICFpc01pbmlDYXJkXCI+XG4gICAgICAgIDxjbG9zZS1zdmcgW3NpemVdPVwic2l6ZVwiIFtzdHJva2VdPVwic3Ryb2tlXCIgW3N0cm9rZVdpZHRoXT1cInN0cm9rZVdpZHRoXCIvPlxuICAgICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENsb3NlU1ZHQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xvc2VCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHNpemU6IG51bWJlciA9IDMwO1xuICBASW5wdXQoKSBzdHJva2VXaWR0aDogbnVtYmVyID0gMS4yO1xuXG4gIHN0YXRlOiBTcG90Y2hlY2tTdGF0ZTtcbiAgcHJpdmF0ZSBzdGF0ZVNlcnZpY2U6IFNwb3RjaGVja1N0YXRlU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNNaW5pQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzdHJva2U6IHN0cmluZyA9ICdibGFjayc7XG4gIHByaXZhdGUgaXNDbG9zaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnRTdGF0ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3RhdGVTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoXG4gICAgICAobmV3U3RhdGU6IFNwb3RjaGVja1N0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUoKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29tcG9uZW50U3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPVxuICAgICAgdGhpcy5zdGF0ZS5pc0Nsb3NlQnV0dG9uRW5hYmxlZCAmJlxuICAgICAgKCh0aGlzLnN0YXRlLmN1cnJlbnRRdWVzdGlvbkhlaWdodCA+IDAgJiYgIXRoaXMuc3RhdGUuaXNGdWxsU2NyZWVuTW9kZSkgfHxcbiAgICAgICAgKHRoaXMuc3RhdGUuaXNGdWxsU2NyZWVuTW9kZSAmJlxuICAgICAgICAgICgoIXRoaXMuc3RhdGUuaXNDbGFzc2ljTG9hZGluZyAmJlxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2xhc3NpYycpIHx8XG4gICAgICAgICAgICAoIXRoaXMuc3RhdGUuaXNDaGF0TG9hZGluZyAmJlxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjaGF0JykpKSk7XG4gICAgdGhpcy5pc01pbmlDYXJkID0gdGhpcy5zdGF0ZS5zcG90Q2hlY2tzTW9kZSA9PT0gJ21pbmlDYXJkJztcbiAgICB0aGlzLnN0cm9rZSA9IHRoaXMuaXNNaW5pQ2FyZCA/ICdibGFjaycgOiB0aGlzLnN0YXRlLmNsb3NlQnV0dG9uU3R5bGU/LlsnY3RhQnV0dG9uJ10gfHwgJ2JsYWNrJztcbiAgICBpZiAodGhpcy5pc1Zpc2libGUpIHtcbiAgICAgIHRoaXMuaXNDbG9zaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25DbGljayA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGhpcy5pc0Nsb3NpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0Nsb3NpbmcgPSB0cnVlO1xuICAgIGF3YWl0IGNsb3NlU3BvdENoZWNrKCk7XG4gICAgaGFuZGxlU3VydmV5RW5kKCk7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTcG90Q2hlY2tDb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9TcG90Q2hlY2tDb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdlYlZpZXdDb21wb25lbnQsIENsb3NlQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BvdENoZWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIGNvbXBvbmVudFN0eWxlczogYW55ID0ge307XG4gIGF2YXRhclVybDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnRTdHlsZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgKG5ld1N0YXRlOiBTcG90Y2hlY2tTdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0eWxlcygpO1xuICAgICAgICAgIHRoaXMuYXZhdGFyVXJsID0gdGhpcy5zdGF0ZS5hdmF0YXJVcmwgfHwgXCJodHRwczovL3N0YXRpYy5zdXJ2ZXlzcGFycm93LmNvbS9hcHBsaWNhdGlvbi9pbWFnZXMvcHJvZmlsZS5wbmdcIjtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29tcG9uZW50U3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50U3R5bGVzID0gZ2V0U3BvdGNoZWNrQ29tcG9uZW50Q3NzU3R5bGVzKHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUNvbXBvbmVudCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZG9tYWluTmFtZSA9IHRoaXMuc3RhdGUuZG9tYWluTmFtZTtcbiAgICAgIGNvbnN0IHRhcmdldFRva2VuID0gdGhpcy5zdGF0ZS50YXJnZXRUb2tlbjtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQ8YW55PihcbiAgICAgICAgYGh0dHBzOi8vJHtkb21haW5OYW1lfS9hcGkvaW50ZXJuYWwvc3BvdGNoZWNrL3dpZGdldC8ke3RhcmdldFRva2VufS9pbml0YFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG5cbiAgICAgIGlmIChkYXRhLmZpbHRlcmVkU3BvdENoZWNrcyAmJiBkYXRhLmZpbHRlcmVkU3BvdENoZWNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBjbGFzc2ljSWZyYW1lID0gZmFsc2U7XG4gICAgICAgIGxldCBjaGF0SWZyYW1lID0gZmFsc2U7XG5cbiAgICAgICAgZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MuZm9yRWFjaCgoc3BvdGNoZWNrOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzcG90Y2hlY2suYXBwZWFyYW5jZS5tb2RlID09PSAnZnVsbFNjcmVlbicgJiZcbiAgICAgICAgICAgIGlzY2hhdFN1cnZleShzcG90Y2hlY2s/LnN1cnZleT8uc3VydmV5VHlwZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNoYXRJZnJhbWUgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGFzc2ljSWZyYW1lID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG5ld0NsYXNzaWNVcmwgPSBjbGFzc2ljSWZyYW1lXG4gICAgICAgICAgPyBgaHR0cHM6Ly8ke2RvbWFpbk5hbWV9L2V1aS10ZW1wbGF0ZS9jbGFzc2ljYFxuICAgICAgICAgIDogJyc7XG4gICAgICAgIGNvbnN0IG5ld0NoYXRVcmwgPSBjaGF0SWZyYW1lXG4gICAgICAgICAgPyBgaHR0cHM6Ly8ke2RvbWFpbk5hbWV9L2V1aS10ZW1wbGF0ZS9jaGF0YFxuICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgdGhpcy5zcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICAgIGZpbHRlcmVkU3BvdENoZWNrczogZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MsXG4gICAgICAgICAgY2xhc3NpY1VybDogbmV3Q2xhc3NpY1VybCxcbiAgICAgICAgICBjaGF0VXJsOiBuZXdDaGF0VXJsLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluaXRpYWxpemluZyB3aWRnZXQ6JywgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTtcbiAgICB9XG4gIH07XG59XG4iLCI8ZGl2IFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlcy53cmFwcGVyU3R5bGVzXCIgY2xhc3M9XCJzYWZlLWFyZWFcIj5cbiAgPGRpdiBbbmdTdHlsZV09XCJjb21wb25lbnRTdHlsZXMuc3R5bGVzXCI+XG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAxMDAlO1wiPlxuICAgICAgPHNwb3RjaGVjay1jbG9zZS1idXR0b24gLz5cbiAgXG4gICAgICA8V2ViVmlld0NvbXBvbmVudFxuICAgICAgICAqbmdJZj1cInN0YXRlLmNsYXNzaWNVcmwgJiYgc3RhdGUuY2xhc3NpY1VybC5sZW5ndGggPiAwICYmIHN0YXRlLnNwb3RjaGVja1VSTC5sZW5ndGggPiAwICYmIHN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjbGFzc2ljJ1wiXG4gICAgICAgIFt1cmxdPVwic3RhdGUuY2xhc3NpY1VybFwiXG4gICAgICAgIFt3ZWJ2aWV3VHlwZV09XCInY2xhc3NpYydcIlxuICAgICAgICBbaXNNaW5pQ2FyZF09XCJzdGF0ZS5zcG90Q2hlY2tzTW9kZSA9PT0gJ21pbmlDYXJkJ1wiXG4gICAgICAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2hhdFVybCAmJiBzdGF0ZS5jaGF0VXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jaGF0VXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjaGF0J1wiXG4gICAgICAgIFtpc01pbmlDYXJkXT1cInN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0ZS5zcG90Q2hlY2tzTW9kZSA9PT0gJ21pbmlDYXJkJyAmJiBzdGF0ZS5hdmF0YXJFbmFibGVkXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogLTY2cHg7IGxlZnQ6IDE2cHg7IHotaW5kZXg6IDEwMDAwMTtcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyVXJsXCIgc3R5bGU9XCJ3aWR0aDogNTZweDsgaGVpZ2h0OiA1NnB4OyBib3JkZXItcmFkaXVzOiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -683,6 +683,8 @@ class CloseButtonComponent {
683
683
  this.stateService = getSpotcheckStateService();
684
684
  this.state = this.stateService.getState();
685
685
  this.updateComponentState();
686
+ }
687
+ ngOnInit() {
686
688
  this.stateSubscription = this.stateService.state$.subscribe((newState) => {
687
689
  this.ngZone.run(() => {
688
690
  this.state = newState;
@@ -766,6 +768,8 @@ class SpotCheckComponent {
766
768
  this.spotcheckStateService = getSpotcheckStateService();
767
769
  this.state = this.spotcheckStateService.getState();
768
770
  this.updateComponentStyles();
771
+ }
772
+ ngOnInit() {
769
773
  this.stateSubscription = this.spotcheckStateService.state$.subscribe((newState) => {
770
774
  this.ngZone.run(() => {
771
775
  this.state = newState;
@@ -774,8 +778,6 @@ class SpotCheckComponent {
774
778
  this.cdr.detectChanges();
775
779
  });
776
780
  });
777
- }
778
- ngOnInit() {
779
781
  this.initializeComponent();
780
782
  }
781
783
  ngOnDestroy() {
@@ -1 +1 @@
1
- {"version":3,"file":"angular-ui.mjs","sources":["../../../src/angular-ui/lib/spotchecks/SpotcheckStateService.ts","../../../src/angular-ui/lib/spotchecks/SpotCheckEventListener.ts","../../../src/angular-ui/lib/spotchecks/helpers.ts","../../../src/angular-ui/lib/spotchecks/SpotCheckComponent.ts","../../../src/angular-ui/lib/spotchecks/SpotCheckComponent.html","../../../src/angular-ui/lib/spotcheck.component.ts","../../../src/angular-ui/lib/spotchecks/storage.ts","../../../src/angular-ui/lib/spotchecks/api.ts","../../../src/angular-ui/lib/spotchecks/SpotCheck.ts","../../../src/angular-ui/lib/angular-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { SpotcheckState } from './types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SpotcheckStateService {\n private initialState: SpotcheckState = {\n isVisible: false,\n spotcheckPosition: 'bottom',\n spotcheckURL: '',\n spotcheckID: 0,\n spotcheckContactID: 0,\n afterDelay: 0.0,\n maxHeight: 0.5,\n currentQuestionHeight: 0,\n isFullScreenMode: false,\n isBannerImageOn: false,\n triggerToken: '',\n closeButtonStyle: {},\n isCloseButtonEnabled: false,\n isSpotPassed: false,\n isChecksPassed: false,\n customEventsSpotChecks: [],\n targetToken: '',\n domainName: '',\n userDetails: {},\n variables: {},\n customProperties: {},\n traceId: '',\n isClassicLoading: true,\n isChatLoading: true,\n isClassicLoadEventReceived: false,\n isChatLoadEventReceived: false,\n classicUrl: '',\n chatUrl: '',\n classicWebViewRef: null,\n chatWebViewRef: null,\n filteredSpotChecks: [],\n spotCheckType: '',\n isMounted: false,\n textPosition: 0,\n screenHeight: 0,\n keyBoardHeight: 0,\n spotChecksMode: '',\n avatarEnabled: false,\n avatarUrl: '',\n screenwiseUserDetails: {}\n };\n \n private spotcheckState = new BehaviorSubject<SpotcheckState>(this.initialState);\n state$ = this.spotcheckState.asObservable();\n\n setState(state: Partial<SpotcheckState>) {\n this.spotcheckState.next({ ...this.spotcheckState.value, ...state });\n }\n \n clearState() {\n this.spotcheckState.next(this.initialState);\n }\n\n getState() {\n return this.spotcheckState.getValue();\n }\n}\n","import { Subject } from 'rxjs';\nimport type { Subscription } from 'rxjs';\n\nexport type SpotCheckEventType =\n | 'surveyCompleted'\n | 'surveyDismissed'\n | 'surveyLoadStarted';\n\nexport interface SpotCheckEvent {\n type: SpotCheckEventType;\n data?: any;\n}\n\ntype EventCallback = (data?: any) => void;\n\nclass SpotCheckEventListenerService {\n private eventSubject = new Subject<SpotCheckEvent>();\n private event$ = this.eventSubject.asObservable();\n\n emit(type: SpotCheckEventType, data?: any): void {\n this.eventSubject.next({ type, data });\n }\n\n addListener(\n eventType: SpotCheckEventType,\n callback: EventCallback\n ): Subscription {\n return this.event$.subscribe((event: SpotCheckEvent) => {\n if (event.type === eventType) {\n callback(event.data);\n }\n });\n }\n}\n\nlet globalInstance: SpotCheckEventListenerService;\n\nexport const getSpotCheckEventListener = (): SpotCheckEventListenerService => {\n if (!globalInstance) {\n globalInstance = new SpotCheckEventListenerService();\n }\n return globalInstance;\n};\n\nexport const addSpotCheckListener = (\n eventType: SpotCheckEventType,\n callback: EventCallback\n): Subscription => {\n return getSpotCheckEventListener().addListener(eventType, callback);\n};\n","import { v4 as uuidv4 } from 'uuid';\nimport { Device } from '@capacitor/device';\nimport { SpotcheckState } from './types';\nimport axios from 'axios';\nimport { SpotcheckStateService } from './SpotcheckStateService';\nimport { getSpotCheckEventListener } from './SpotCheckEventListener';\n\nlet globalSpotcheckStateService: SpotcheckStateService;\nlet globalOS: string | null = null;\n\nexport const getSpotcheckStateService = (): SpotcheckStateService => {\n if (!globalSpotcheckStateService) {\n globalSpotcheckStateService = new SpotcheckStateService();\n }\n return globalSpotcheckStateService;\n};\n\nexport function generateTraceId() {\n const uuidString = uuidv4();\n const timestamp = Date.now();\n return `${uuidString}-${timestamp}`;\n}\n\nexport const ischatSurvey = (type: String) => {\n return (\n type === 'Conversational' ||\n type === 'CESChat' ||\n type === 'NPSChat' ||\n type === 'CSATChat'\n );\n};\n\nexport const getOS = async () => {\n const info = await Device.getInfo();\n globalOS = info.operatingSystem;\n return globalOS;\n};\n\nexport const setAppearance = async (\n responseJson: any,\n screen: string,\n domainName: string,\n traceId: string,\n variables: Record<string, any>\n) => {\n try {\n const spotcheckStateService = getSpotcheckStateService();\n let state = spotcheckStateService.getState();\n\n if (responseJson) {\n const currentSpotcheck = state.filteredSpotChecks.find(\n (spotcheck) =>\n spotcheck['id'] === responseJson?.spotCheckId ||\n spotcheck['id'] === responseJson?.id\n );\n\n const appearance = responseJson?.appearance;\n let chat = false;\n\n let updatedState: Partial<SpotcheckState> = {};\n\n if (appearance) {\n const {\n position,\n closeButton,\n colors,\n cardProperties,\n mode,\n bannerImage,\n } = appearance;\n const { maxHeight } = cardProperties || {};\n\n updatedState = {\n spotcheckPosition:\n position === 'top_full' || position === 'center_top'\n ? 'top'\n : position === 'center_center'\n ? 'center'\n : 'bottom',\n isCloseButtonEnabled: closeButton ?? true,\n closeButtonStyle: colors?.overrides ?? {},\n maxHeight: maxHeight ? parseFloat(maxHeight) / 100 : 0,\n spotCheckType:\n ischatSurvey(currentSpotcheck?.['survey']?.surveyType) &&\n mode === 'fullScreen'\n ? 'chat'\n : 'classic',\n isFullScreenMode: mode === 'fullScreen',\n isBannerImageOn: bannerImage?.enabled ?? false,\n spotChecksMode: mode,\n avatarEnabled: appearance?.avatar?.enabled ?? false,\n avatarUrl: appearance?.avatar?.avatarUrl ?? '',\n };\n\n chat = updatedState.spotCheckType === 'chat';\n }\n\n const spotCheckId = responseJson?.spotCheckId ?? 0;\n const spotCheckContactId =\n responseJson?.spotCheckContactId ??\n responseJson?.spotCheckContact?.id ??\n 0;\n const triggerToken = responseJson?.triggerToken ?? '';\n\n updatedState = {\n ...updatedState,\n spotcheckID: spotCheckId,\n spotcheckContactID: spotCheckContactId,\n triggerToken,\n };\n\n const baseSpotcheckURL = `https://${domainName}/s/spotcheck/${triggerToken}/${\n chat ? 'config' : 'bootstrap'\n }?spotcheckContactId=${spotCheckContactId}&traceId=${traceId}&spotcheckUrl=${screen}`;\n\n let fullSpotcheckURL = baseSpotcheckURL;\n\n Object.entries(variables).forEach(([key, value]) => {\n fullSpotcheckURL += `&${key}=${value}`;\n });\n\n updatedState.spotcheckURL = fullSpotcheckURL;\n spotcheckStateService.setState(updatedState);\n\n try {\n const response = await axios.get<any>(fullSpotcheckURL);\n const themeInfo = response.data?.config?.generatedCSS;\n const theme_payload = { type: 'THEME_UPDATE_SPOTCHECK', themeInfo };\n state = spotcheckStateService.getState();\n\n let webViewRef = chat ? state.chatWebViewRef : state.classicWebViewRef;\n let isLoading = chat ? state.isChatLoading || !state.isChatLoadEventReceived : state.isClassicLoading || !state.isClassicLoadEventReceived;\n\n const resetStateData = {\n type: 'RESET_STATE',\n state: {\n ...(response.data || {}),\n skip: true,\n spotCheckAppearance: {\n ...(appearance || {}),\n targetType: 'MOBILE',\n },\n spotcheckUrl: screen,\n traceId,\n elementBuilderParams: {\n ...(variables || {}),\n },\n },\n };\n\n const sendMessageToIframe = (iframe: HTMLIFrameElement, data: any) => {\n if (iframe && iframe.contentWindow) {\n try {\n iframe.contentWindow.postMessage(data, '*');\n } catch (error) {\n console.error('❌ Failed to send message to iframe:', error);\n }\n }\n };\n\n const communicateWithWebView = async (iframe: HTMLIFrameElement) => {\n await new Promise(resolve => setTimeout(() => {\n sendMessageToIframe(iframe, resetStateData);\n sendMessageToIframe(iframe, theme_payload);\n resolve(true);\n }, 2000));\n };\n\n if (webViewRef) {\n if (isLoading === false) {\n communicateWithWebView(webViewRef);\n start();\n return true;\n } else {\n // todo: recheck this\n const unsubscribe = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const {\n isChatLoading,\n isClassicLoading,\n chatWebViewRef,\n classicWebViewRef,\n isClassicLoadEventReceived,\n isChatLoadEventReceived,\n } = currentState;\n\n \n if ((!isChatLoading && chat && isChatLoadEventReceived) || (!isClassicLoading && !chat && isClassicLoadEventReceived)) {\n unsubscribe.unsubscribe();\n const activeWebViewRef = chat\n ? chatWebViewRef\n : classicWebViewRef;\n if (activeWebViewRef) {\n communicateWithWebView(activeWebViewRef);\n start();\n } else {\n console.warn(\n '⚠️ Active WebView ref is null after loading completed'\n );\n }\n }\n }\n );\n return true;\n }\n } else {\n const unsubscribeWebView = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const updatedWebViewRef = chat\n ? currentState.chatWebViewRef\n : currentState.classicWebViewRef;\n const updatedIsLoading = chat\n ? currentState.isChatLoading || !currentState.isChatLoadEventReceived\n : currentState.isClassicLoading || !currentState.isClassicLoadEventReceived;\n\n if (updatedWebViewRef) {\n if (!updatedIsLoading) {\n unsubscribeWebView.unsubscribe();\n communicateWithWebView(updatedWebViewRef);\n start();\n } else {\n console.log('⏳ WebView ref available but still loading...');\n }\n }\n }\n );\n return true;\n }\n } catch (error: any) {\n throw new Error(error.message);\n }\n }\n throw new Error('Something went wrong');\n } catch (error: any) {\n throw new Error(error.message);\n }\n};\n\nexport const start = () => {\n const state = getSpotcheckStateService().getState();\n setTimeout(() => {\n getSpotcheckStateService().setState({ isVisible: true });\n }, state.afterDelay * 1000);\n};\n\nexport const closeSpotCheck = async () => {\n try {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const payload = {\n traceId: state.traceId,\n triggerToken: state.triggerToken,\n };\n\n const response = await fetch(\n `https://${state.domainName}/api/internal/spotcheck/dismiss/${state.spotcheckContactID}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n }\n );\n if(response.status == 200) {\n getSpotCheckEventListener().emit('surveyDismissed');\n }\n else{\n console.log(`Error: ${response.status}`);\n }\n } catch (error) {\n console.log('Error parsing JSON:', error);\n }\n};\n\nexport const handleSurveyEnd = () => {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const webViewRef =\n state.spotCheckType === 'chat'\n ? state.chatWebViewRef\n : state.classicWebViewRef;\n\n webViewRef?.current?.injectJavaScript(`\n (function() {\n window.dispatchEvent(new MessageEvent('message', {\n data: ${JSON.stringify({ type: 'UNMOUNT_APP' })}\n }));\n })();\n `);\n\n const updatedState: Partial<SpotcheckState> = {\n isVisible: false,\n isCloseButtonEnabled: false,\n isFullScreenMode: false,\n spotcheckID: 0,\n currentQuestionHeight: 0,\n closeButtonStyle: {},\n spotcheckContactID: 0,\n spotcheckURL: '',\n spotcheckPosition: 'bottom',\n isMounted: false,\n spotCheckType: '',\n screenHeight: 0,\n keyBoardHeight: 0,\n textPosition: 0,\n spotChecksMode: '',\n avatarEnabled: false,\n avatarUrl: '',\n };\n\n stateService.setState(updatedState);\n};\n\nexport const getSpotcheckComponentCssStyles = (state: SpotcheckState) => { \n let styles = {}\n let wrapperStyles = {}\n let extraPaddingForMiniCardCloseButtonIfTopPosition = 0;\n if (state.isFullScreenMode && state.isVisible) {\n wrapperStyles = {\n display: 'flex',\n height: '100%',\n };\n styles = {\n display: 'flex',\n height: '100%',\n };\n }\n\n let marginBottom = globalOS !== 'ios' ? 18 : 0;\n \n if (state.isVisible && state.isMounted) {\n\n let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));\n if(state.spotChecksMode === 'miniCard') {\n if(state.avatarEnabled) {\n height = height - 56;\n if(state.spotcheckPosition === 'bottom') {\n marginBottom += 56;\n }\n }\n if(state.isCloseButtonEnabled) {\n height = height - 40;\n }\n }\n\n switch (state.spotcheckPosition) {\n case 'bottom': \n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-end',\n };\n break;\n \n case 'top':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-start',\n };\n if(state.spotChecksMode === 'miniCard' && state.isCloseButtonEnabled) {\n extraPaddingForMiniCardCloseButtonIfTopPosition = 30;\n }\n break;\n \n case 'center':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'center',\n };\n break;\n \n default:\n break;\n }\n }\n \n return {\n wrapperStyles: {\n position: 'fixed', \n width: '100%', \n height: '100%', \n top: '0', \n left: '0', \n backgroundColor: 'rgba(0, 0, 0, 0.3)', \n zIndex: '100001',\n display: 'none',\n flexDirection: 'column',\n ...wrapperStyles\n },\n styles: {\n display: 'none',\n flexDirection: 'column',\n paddingTop: extraPaddingForMiniCardCloseButtonIfTopPosition+'px',\n marginBottom: marginBottom+'px',\n ...styles,\n }\n };\n};\n\nexport const closeSpotCheckAndHandleSurveyEnd = async () => {\n handleSurveyEnd();\n};","import {\n OnInit,\n Component,\n Input,\n OnDestroy,\n ViewChild,\n ElementRef,\n AfterViewInit,\n HostListener,\n NgZone,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { closeSpotCheck, closeSpotCheckAndHandleSurveyEnd, getSpotcheckComponentCssStyles, handleSurveyEnd, ischatSurvey } from './helpers';\nimport { SpotcheckState } from './types';\nimport { getSpotcheckStateService } from './helpers';\nimport { SpotcheckStateService } from './SpotcheckStateService';\nimport { getSpotCheckEventListener } from './SpotCheckEventListener';\nimport axios from 'axios';\n\n@Component({\n selector: 'WebViewComponent',\n template: `\n <div style=\"overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;\">\n <iframe\n allow=\"camera; microphone; geolocation; display-capture; autoplay; clipboard-read; clipboard-write; fullscreen\"\n allowfullscreen\n #iframeRef\n [src]=\"safeUrl\"\n style=\"width: 100%; height: 100%; display: block; border-radius: {{isMiniCard ? 12 : 0}}px;\"\n frameborder=\"0\"\n >\n </iframe>\n </div>\n `,\n standalone: true,\n imports: [CommonModule],\n})\nexport class WebViewComponent implements OnInit, AfterViewInit {\n @Input() url: string = '';\n @Input() webviewType: 'classic' | 'chat' = 'classic';\n @Input() isMiniCard: boolean = false;\n\n safeUrl: SafeResourceUrl | null = null;\n @ViewChild('iframeRef') iframe!: ElementRef<HTMLIFrameElement>;\n\n constructor(\n private sanitizer: DomSanitizer,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) { }\n ngOnInit() {\n if (this.url) {\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.url);\n }\n }\n\n ngAfterViewInit() {\n const stateService = getSpotcheckStateService();\n const webViewRef = this.iframe.nativeElement;\n\n if (this.webviewType === 'classic') {\n stateService.setState({\n classicWebViewRef: webViewRef,\n isClassicLoading: false,\n });\n } else {\n stateService.setState({\n chatWebViewRef: webViewRef,\n isChatLoading: false,\n });\n }\n this.setupIframeLoadListener();\n }\n\n private setupIframeLoadListener() {\n const iframe = this.iframe.nativeElement;\n iframe.addEventListener('load', () => {\n this.ngZone.run(() => {\n this.injectNativeBridgeAdapters(iframe);\n const stateService = getSpotcheckStateService();\n if (this.webviewType === 'classic') {\n stateService.setState({ isClassicLoading: false });\n } else {\n stateService.setState({ isChatLoading: false });\n }\n });\n });\n }\n\n private injectNativeBridgeAdapters(iframe: HTMLIFrameElement) {\n if (iframe && iframe.contentWindow) {\n try {\n const iframeWindow = iframe.contentWindow as any;\n\n if (!iframeWindow.SsAndroidSdk) {\n iframeWindow.SsAndroidSdk = {\n shareData: function () { },\n sendPartialSubmissionData: function () { }\n };\n }\n\n if (!iframeWindow.Android) {\n iframeWindow.Android = {\n onMessageReceive: function () { }\n };\n }\n\n if (!iframeWindow.webkit) {\n iframeWindow.webkit = {\n messageHandlers: {\n surveyResponse: {\n postMessage: function () { }\n },\n spotCheckData: {\n postMessage: function () { }\n },\n flutterSpotCheckData: {\n postMessage: function () { }\n }\n }\n };\n }\n\n if (!iframeWindow.flutterSpotCheckData) {\n iframeWindow.flutterSpotCheckData = {\n postMessage: function () { }\n };\n }\n } catch (error) { }\n }\n }\n\n @HostListener('window:message', ['$event'])\n onMessage(event: MessageEvent) {\n this.ngZone.run(() => {\n const stateService = getSpotcheckStateService();\n const { data } = event;\n switch (data.type) {\n case 'slideInFrame':\n if (data.mounted) {\n stateService.setState({ isMounted: true });\n }\n break;\n\n case 'resizeWindow':\n if (data.size) {\n stateService.setState({\n currentQuestionHeight: data.size.height,\n });\n } else if (data.isCloseButtonEnabled) {\n stateService.setState({\n isCloseButtonEnabled: data.isCloseButtonEnabled,\n });\n }\n break;\n\n case 'surveyCompleted':\n closeSpotCheckAndHandleSurveyEnd().then(() => {\n getSpotCheckEventListener().emit('surveyCompleted', data.response);\n this.cdr.detectChanges();\n });\n break;\n\n case 'surveyLoadStarted':\n getSpotCheckEventListener().emit('surveyLoadStarted', data.surveyDetails);\n break;\n\n\n case 'classicLoadEvent':\n stateService.setState({ isClassicLoadEventReceived: true });\n break;\n\n case 'chatLoadEvent':\n stateService.setState({ isChatLoadEventReceived: true });\n break;\n\n default:\n break;\n }\n this.cdr.detectChanges();\n });\n }\n}\n\n@Component({\n selector: 'close-svg',\n template: `\n <svg\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"https://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.6665 10.667L21.3332 21.3337M21.3332 10.667L10.6665 21.3337\"\n [attr.stroke]=\"stroke\"\n [attr.stroke-width]=\"strokeWidth\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n `,\n standalone: true,\n imports: [CommonModule],\n})\nexport class CloseSVGComponent {\n @Input() size: number = 32;\n @Input() stroke: string = '#919191';\n @Input() strokeWidth: number = 1.5;\n}\n\n@Component({\n selector: 'spotcheck-close-button',\n template: `\n <div style=\"position: absolute; top: -36px; right: 16px; z-index: 100001; cursor: pointer; background-color: white; border-radius: 50px;\" (click)=\"onClick()\" *ngIf=\"isVisible && isMiniCard\">\n <close-svg [size]=\"size\" [stroke]=\"stroke\" [strokeWidth]=\"strokeWidth\" style=\"display: flex; align-items: center; justify-content: center;\"/>\n </div>\n <div style=\"position: absolute; top: 16px; right: 16px; z-index: 100001; cursor: pointer;\" (click)=\"onClick()\" *ngIf=\"isVisible && !isMiniCard\">\n <close-svg [size]=\"size\" [stroke]=\"stroke\" [strokeWidth]=\"strokeWidth\"/>\n </div>\n `,\n standalone: true,\n imports: [CommonModule, CloseSVGComponent],\n})\nexport class CloseButtonComponent implements OnDestroy {\n @Input() size: number = 30;\n @Input() strokeWidth: number = 1.2;\n\n state: SpotcheckState;\n private stateService: SpotcheckStateService;\n private stateSubscription!: Subscription;\n\n isVisible: boolean = false;\n isMiniCard: boolean = false;\n stroke: string = 'black';\n private isClosing: boolean = false;\n\n constructor(\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n this.stateService = getSpotcheckStateService();\n this.state = this.stateService.getState();\n this.updateComponentState();\n\n this.stateSubscription = this.stateService.state$.subscribe(\n (newState: SpotcheckState) => {\n this.ngZone.run(() => {\n this.state = newState;\n this.updateComponentState();\n this.cdr.detectChanges();\n });\n }\n );\n }\n\n ngOnDestroy(): void {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n private updateComponentState(): void {\n this.isVisible =\n this.state.isCloseButtonEnabled &&\n ((this.state.currentQuestionHeight > 0 && !this.state.isFullScreenMode) ||\n (this.state.isFullScreenMode &&\n ((!this.state.isClassicLoading &&\n this.state.spotCheckType === 'classic') ||\n (!this.state.isChatLoading &&\n this.state.spotCheckType === 'chat'))));\n this.isMiniCard = this.state.spotChecksMode === 'miniCard';\n this.stroke = this.isMiniCard ? 'black' : this.state.closeButtonStyle?.['ctaButton'] || 'black';\n if (this.isVisible) {\n this.isClosing = false;\n }\n }\n\n onClick = async () => {\n if (this.isClosing) {\n return;\n }\n this.isClosing = true;\n await closeSpotCheck();\n handleSurveyEnd();\n this.ngZone.run(() => {\n this.cdr.detectChanges();\n });\n };\n}\n\n\n@Component({\n selector: 'SpotCheckComponent',\n templateUrl: './SpotCheckComponent.html',\n styleUrls: ['./SpotCheckComponent.css'],\n standalone: true,\n imports: [CommonModule, WebViewComponent, CloseButtonComponent],\n})\nexport class SpotCheckComponent implements OnInit, OnDestroy {\n state: SpotcheckState;\n private spotcheckStateService: SpotcheckStateService;\n private stateSubscription: Subscription;\n componentStyles: any = {};\n avatarUrl: string = '';\n\n constructor(\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n this.spotcheckStateService = getSpotcheckStateService();\n this.state = this.spotcheckStateService.getState();\n this.updateComponentStyles();\n\n this.stateSubscription = this.spotcheckStateService.state$.subscribe(\n (newState: SpotcheckState) => {\n this.ngZone.run(() => {\n this.state = newState;\n this.updateComponentStyles();\n this.avatarUrl = this.state.avatarUrl || \"https://static.surveysparrow.com/application/images/profile.png\";\n this.cdr.detectChanges();\n });\n }\n );\n }\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n ngOnDestroy(): void {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n private updateComponentStyles(): void {\n this.componentStyles = getSpotcheckComponentCssStyles(this.state);\n }\n\n initializeComponent = async () => {\n try {\n const domainName = this.state.domainName;\n const targetToken = this.state.targetToken;\n\n const response = await axios.get<any>(\n `https://${domainName}/api/internal/spotcheck/widget/${targetToken}/init`\n );\n\n const data = response.data;\n\n if (data.filteredSpotChecks && data.filteredSpotChecks.length > 0) {\n let classicIframe = false;\n let chatIframe = false;\n\n data.filteredSpotChecks.forEach((spotcheck: any) => {\n if (\n spotcheck.appearance.mode === 'fullScreen' &&\n ischatSurvey(spotcheck?.survey?.surveyType)\n ) {\n chatIframe = true;\n } else {\n classicIframe = true;\n }\n });\n\n const newClassicUrl = classicIframe\n ? `https://${domainName}/eui-template/classic`\n : '';\n const newChatUrl = chatIframe\n ? `https://${domainName}/eui-template/chat`\n : '';\n\n this.spotcheckStateService.setState({\n filteredSpotChecks: data.filteredSpotChecks,\n classicUrl: newClassicUrl,\n chatUrl: newChatUrl,\n });\n }\n } catch (error) {\n console.log('Error initializing widget:', JSON.stringify(error));\n }\n };\n}\n","<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { SpotCheckComponent } from './spotchecks/SpotCheckComponent';\n\n@Component({\n selector: 'SpotCheck',\n template: `<SpotCheckComponent />`,\n standalone: true,\n imports: [SpotCheckComponent],\n})\nexport class SpotCheck {}\n","export const getStoredUUID = () => {\n return localStorage.getItem('SurveySparrowUUID') || null;\n}\n\nexport const setUUID = (uuid: string) => {\n localStorage.setItem('SurveySparrowUUID', uuid);\n}","import { generateTraceId, getOS, setAppearance } from './helpers';\nimport { getStoredUUID, setUUID } from './storage';\nimport { TrackScreenProps, UserDetails, Variables, CustomProperties, TrackEventProps } from './types';\nimport { getSpotcheckStateService } from './helpers';\nimport axios from 'axios';\n\nexport const sendTrackScreenRequest = async ({\n screen,\n options,\n}: TrackScreenProps) => {\n try {\n const spotcheckStateService = getSpotcheckStateService();\n const oldState = spotcheckStateService.getState();\n let variables = { ...oldState.variables } as Variables;\n let customProperties = { ...oldState.customProperties } as CustomProperties;\n let userDetails = { ...oldState.userDetails } as UserDetails; \n\n if (options && options.variables && Object.keys(options.variables).length > 0) {\n variables = { ...variables, ...options.variables };\n }\n if (options && options.customProperties && Object.keys(options.customProperties).length > 0) {\n customProperties = { ...customProperties, ...options.customProperties };\n }\n if (options && options.userDetails && Object.keys(options.userDetails).length > 0) {\n userDetails = { ...userDetails, ...options.userDetails };\n }\n\n let traceId = oldState.traceId;\n if (!traceId) {\n traceId = generateTraceId();\n }\n\n if (!userDetails.uuid && !userDetails.email && !userDetails.mobile) {\n const uuid = getStoredUUID();\n if (uuid) {\n userDetails.uuid = uuid;\n }\n }\n\n spotcheckStateService.setState({\n traceId,\n screenwiseUserDetails: {\n [screen]: userDetails\n },\n });\n\n const state = spotcheckStateService.getState();\n let { isSpotPassed, isChecksPassed } = state;\n const payload = {\n screenName: screen,\n variables: variables,\n userDetails: userDetails,\n visitor: {\n deviceType: 'MOBILE',\n operatingSystem: await getOS(),\n screenResolution: {\n height: window.innerHeight,\n width: window.innerWidth,\n },\n currentDate: new Date().toISOString(),\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n traceId: state.traceId,\n customProperties: customProperties,\n };\n\n const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/properties?isSpotCheck=true&sdk=IONIC`;\n const response = await axios.post<any>(url, payload, {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if(response.status === 200) {\n const responseJson = response.data;\n\n if (responseJson.uuid) {\n setUUID(responseJson.uuid);\n }\n\n if (responseJson?.show) {\n if (responseJson?.show) {\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n traceId,\n variables\n );\n if (appearance_response) {\n isSpotPassed = true;\n spotcheckStateService.setState({ isSpotPassed });\n return { valid: true };\n }\n } else {\n throw new Error('');\n }\n }\n \n if (!isSpotPassed && responseJson?.checkPassed) {\n if (responseJson.checkCondition) {\n const checkCondition = responseJson.checkCondition;\n spotcheckStateService.setState({ afterDelay: checkCondition.afterDelay || 0 });\n if (checkCondition.customEvent) {\n spotcheckStateService.setState({ customEventsSpotChecks: [responseJson] });\n throw new Error('');\n }\n }\n\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n traceId,\n variables\n );\n if (appearance_response) {\n isChecksPassed = true;\n spotcheckStateService.setState({ isChecksPassed });\n return { valid: true };\n }\n }\n\n if (!isSpotPassed && !isChecksPassed && responseJson?.multiShow != null) {\n if (responseJson.multiShow) {\n spotcheckStateService.setState({ customEventsSpotChecks: responseJson.resultantSpotCheck });\n\n let selectedSpotCheck = {};\n let minDelay: number = Number.POSITIVE_INFINITY;\n\n for (const spotcheck of responseJson.resultantSpotCheck) {\n const checks = spotcheck?.checks || {};\n if (Object.keys(checks).length === 0) {\n minDelay = 0;\n selectedSpotCheck = spotcheck;\n } else if (checks.afterDelay != null) {\n const delay = parseFloat(checks.afterDelay);\n if (minDelay > delay) {\n minDelay = delay;\n selectedSpotCheck = spotcheck;\n }\n }\n }\n\n if (Object.keys(selectedSpotCheck).length > 0) {\n spotcheckStateService.setState({ afterDelay: minDelay });\n const appearance_response = await setAppearance(\n selectedSpotCheck,\n screen,\n state.domainName,\n traceId,\n variables\n );\n if (appearance_response) {\n return { valid: true };\n }\n }\n }\n }\n\n throw new Error(responseJson?.reason?.toString() ?? 'Spotcheck conditions not met');\n } else {\n throw new Error(`Received status code ${response.status}`);\n }\n } catch (error: any) {\n return { valid: false, error: error.message };\n }\n};\n\n\nexport const sendTrackEventRequest = async ({ screen, event }: TrackEventProps) => {\n try {\n const intMax = Number.POSITIVE_INFINITY;\n const state = getSpotcheckStateService().getState();\n let selectedSpotCheckID = intMax;\n let { isSpotPassed } = state;\n if (state.customEventsSpotChecks.length > 0) {\n const eventKeys = Object.keys(event);\n for (const spotCheck of state.customEventsSpotChecks) {\n const checks = spotCheck?.['checks'] ?? spotCheck?.['checkCondition'];\n\n if (checks) {\n const customEvent = checks?.customEvent;\n\n if (eventKeys.includes(customEvent?.eventName)) {\n selectedSpotCheckID =\n spotCheck?.['id'] ?? spotCheck?.['spotCheckId'] ?? intMax;\n\n if (selectedSpotCheckID !== intMax) {\n const payload = {\n screenName: screen,\n variables: state.variables,\n userDetails: state.screenwiseUserDetails[screen] || {},\n visitor: {\n deviceType: 'MOBILE',\n operatingSystem: await getOS(),\n screenResolution: {\n height: window.innerHeight,\n width: window.innerWidth,\n },\n currentDate: new Date().toISOString(),\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n spotCheckId: selectedSpotCheckID,\n eventTrigger: {\n customEvent: event,\n },\n traceId: state.traceId,\n customProperties: state.customProperties,\n };\n\n const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/eventTrigger?isSpotCheck=true`;\n\n try {\n const response = await axios.post<any>(url, payload, {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (response.status === 200) {\n const responseJson = response.data;\n if (responseJson?.show != null) {\n if (responseJson?.show) {\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n state.traceId,\n state.variables\n );\n\n if (appearance_response) {\n getSpotcheckStateService().setState({ isSpotPassed: true });\n isSpotPassed = true;\n return { valid: true };\n }\n }\n }\n\n if (!isSpotPassed && responseJson?.eventShow) {\n if (responseJson?.checkCondition != null) {\n const checkCondition = responseJson?.checkCondition;\n getSpotcheckStateService().setState({\n afterDelay: checkCondition?.afterDelay ?? 0,\n });\n\n if (checkCondition?.customEvent != null) {\n getSpotcheckStateService().setState({\n afterDelay: checkCondition?.customEvent?.delayInSeconds ?? 0,\n });\n }\n }\n\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n state.traceId,\n state.variables\n );\n\n if (appearance_response) {\n return { valid: true };\n }\n }\n\n throw new Error(responseJson?.reason?.toString() ?? 'Event conditions not met');\n } else {\n throw new Error(`Received status code ${response.status}`);\n }\n } catch (error: any) {\n throw new Error(error.message);\n }\n }\n }\n }\n }\n throw new Error('');\n } else {\n throw new Error('');\n }\n } catch (error: any) {\n return { valid: false, error: error.message };\n }\n};","import { InitializeSpotChecksProps, TrackEventProps, TrackScreenProps } from './types';\nimport { sendTrackScreenRequest, sendTrackEventRequest } from './api';\nimport { getSpotcheckStateService } from './helpers';\n\nexport const initializeSpotChecks = ({\n domainName,\n targetToken,\n userDetails = {},\n variables = {},\n customProperties = {},\n}: InitializeSpotChecksProps) => {\n const spotcheckStateService = getSpotcheckStateService();\n spotcheckStateService.setState({\n domainName,\n targetToken,\n userDetails,\n variables,\n customProperties,\n });\n};\n\nexport const trackScreen = async ({ screen, options }: TrackScreenProps) => {\n try {\n const response = await sendTrackScreenRequest({ screen, options });\n if (response.valid) {\n console.log('Screen Tracking succeeded.');\n } else {\n if ('error' in response) {\n throw new Error(response.error.toString());\n } else {\n throw new Error('Tracking failed without an explicit error.');\n }\n }\n } catch (error: any) {\n console.log(`Screen Tracking Failed. ${error.message}`);\n }\n};\n\nexport const trackEvent = async ({ screen, event }: TrackEventProps) => {\n try {\n const response = await sendTrackEventRequest({ screen, event });\n if (response.valid) {\n console.log('TrackEvent succeeded.');\n } else {\n if ('error' in response) {\n throw new Error(response.error.toString());\n } else {\n throw new Error('Tracking failed without an explicit error.');\n }\n }\n } catch (error: any) {\n console.log(`Event Tracking Failed. ${error.message}`);\n }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
1
+ {"version":3,"file":"angular-ui.mjs","sources":["../../../src/angular-ui/lib/spotchecks/SpotcheckStateService.ts","../../../src/angular-ui/lib/spotchecks/SpotCheckEventListener.ts","../../../src/angular-ui/lib/spotchecks/helpers.ts","../../../src/angular-ui/lib/spotchecks/SpotCheckComponent.ts","../../../src/angular-ui/lib/spotchecks/SpotCheckComponent.html","../../../src/angular-ui/lib/spotcheck.component.ts","../../../src/angular-ui/lib/spotchecks/storage.ts","../../../src/angular-ui/lib/spotchecks/api.ts","../../../src/angular-ui/lib/spotchecks/SpotCheck.ts","../../../src/angular-ui/lib/angular-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { SpotcheckState } from './types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SpotcheckStateService {\n private initialState: SpotcheckState = {\n isVisible: false,\n spotcheckPosition: 'bottom',\n spotcheckURL: '',\n spotcheckID: 0,\n spotcheckContactID: 0,\n afterDelay: 0.0,\n maxHeight: 0.5,\n currentQuestionHeight: 0,\n isFullScreenMode: false,\n isBannerImageOn: false,\n triggerToken: '',\n closeButtonStyle: {},\n isCloseButtonEnabled: false,\n isSpotPassed: false,\n isChecksPassed: false,\n customEventsSpotChecks: [],\n targetToken: '',\n domainName: '',\n userDetails: {},\n variables: {},\n customProperties: {},\n traceId: '',\n isClassicLoading: true,\n isChatLoading: true,\n isClassicLoadEventReceived: false,\n isChatLoadEventReceived: false,\n classicUrl: '',\n chatUrl: '',\n classicWebViewRef: null,\n chatWebViewRef: null,\n filteredSpotChecks: [],\n spotCheckType: '',\n isMounted: false,\n textPosition: 0,\n screenHeight: 0,\n keyBoardHeight: 0,\n spotChecksMode: '',\n avatarEnabled: false,\n avatarUrl: '',\n screenwiseUserDetails: {}\n };\n \n private spotcheckState = new BehaviorSubject<SpotcheckState>(this.initialState);\n state$ = this.spotcheckState.asObservable();\n\n setState(state: Partial<SpotcheckState>) {\n this.spotcheckState.next({ ...this.spotcheckState.value, ...state });\n }\n \n clearState() {\n this.spotcheckState.next(this.initialState);\n }\n\n getState() {\n return this.spotcheckState.getValue();\n }\n}\n","import { Subject } from 'rxjs';\nimport type { Subscription } from 'rxjs';\n\nexport type SpotCheckEventType =\n | 'surveyCompleted'\n | 'surveyDismissed'\n | 'surveyLoadStarted';\n\nexport interface SpotCheckEvent {\n type: SpotCheckEventType;\n data?: any;\n}\n\ntype EventCallback = (data?: any) => void;\n\nclass SpotCheckEventListenerService {\n private eventSubject = new Subject<SpotCheckEvent>();\n private event$ = this.eventSubject.asObservable();\n\n emit(type: SpotCheckEventType, data?: any): void {\n this.eventSubject.next({ type, data });\n }\n\n addListener(\n eventType: SpotCheckEventType,\n callback: EventCallback\n ): Subscription {\n return this.event$.subscribe((event: SpotCheckEvent) => {\n if (event.type === eventType) {\n callback(event.data);\n }\n });\n }\n}\n\nlet globalInstance: SpotCheckEventListenerService;\n\nexport const getSpotCheckEventListener = (): SpotCheckEventListenerService => {\n if (!globalInstance) {\n globalInstance = new SpotCheckEventListenerService();\n }\n return globalInstance;\n};\n\nexport const addSpotCheckListener = (\n eventType: SpotCheckEventType,\n callback: EventCallback\n): Subscription => {\n return getSpotCheckEventListener().addListener(eventType, callback);\n};\n","import { v4 as uuidv4 } from 'uuid';\nimport { Device } from '@capacitor/device';\nimport { SpotcheckState } from './types';\nimport axios from 'axios';\nimport { SpotcheckStateService } from './SpotcheckStateService';\nimport { getSpotCheckEventListener } from './SpotCheckEventListener';\n\nlet globalSpotcheckStateService: SpotcheckStateService;\nlet globalOS: string | null = null;\n\nexport const getSpotcheckStateService = (): SpotcheckStateService => {\n if (!globalSpotcheckStateService) {\n globalSpotcheckStateService = new SpotcheckStateService();\n }\n return globalSpotcheckStateService;\n};\n\nexport function generateTraceId() {\n const uuidString = uuidv4();\n const timestamp = Date.now();\n return `${uuidString}-${timestamp}`;\n}\n\nexport const ischatSurvey = (type: String) => {\n return (\n type === 'Conversational' ||\n type === 'CESChat' ||\n type === 'NPSChat' ||\n type === 'CSATChat'\n );\n};\n\nexport const getOS = async () => {\n const info = await Device.getInfo();\n globalOS = info.operatingSystem;\n return globalOS;\n};\n\nexport const setAppearance = async (\n responseJson: any,\n screen: string,\n domainName: string,\n traceId: string,\n variables: Record<string, any>\n) => {\n try {\n const spotcheckStateService = getSpotcheckStateService();\n let state = spotcheckStateService.getState();\n\n if (responseJson) {\n const currentSpotcheck = state.filteredSpotChecks.find(\n (spotcheck) =>\n spotcheck['id'] === responseJson?.spotCheckId ||\n spotcheck['id'] === responseJson?.id\n );\n\n const appearance = responseJson?.appearance;\n let chat = false;\n\n let updatedState: Partial<SpotcheckState> = {};\n\n if (appearance) {\n const {\n position,\n closeButton,\n colors,\n cardProperties,\n mode,\n bannerImage,\n } = appearance;\n const { maxHeight } = cardProperties || {};\n\n updatedState = {\n spotcheckPosition:\n position === 'top_full' || position === 'center_top'\n ? 'top'\n : position === 'center_center'\n ? 'center'\n : 'bottom',\n isCloseButtonEnabled: closeButton ?? true,\n closeButtonStyle: colors?.overrides ?? {},\n maxHeight: maxHeight ? parseFloat(maxHeight) / 100 : 0,\n spotCheckType:\n ischatSurvey(currentSpotcheck?.['survey']?.surveyType) &&\n mode === 'fullScreen'\n ? 'chat'\n : 'classic',\n isFullScreenMode: mode === 'fullScreen',\n isBannerImageOn: bannerImage?.enabled ?? false,\n spotChecksMode: mode,\n avatarEnabled: appearance?.avatar?.enabled ?? false,\n avatarUrl: appearance?.avatar?.avatarUrl ?? '',\n };\n\n chat = updatedState.spotCheckType === 'chat';\n }\n\n const spotCheckId = responseJson?.spotCheckId ?? 0;\n const spotCheckContactId =\n responseJson?.spotCheckContactId ??\n responseJson?.spotCheckContact?.id ??\n 0;\n const triggerToken = responseJson?.triggerToken ?? '';\n\n updatedState = {\n ...updatedState,\n spotcheckID: spotCheckId,\n spotcheckContactID: spotCheckContactId,\n triggerToken,\n };\n\n const baseSpotcheckURL = `https://${domainName}/s/spotcheck/${triggerToken}/${\n chat ? 'config' : 'bootstrap'\n }?spotcheckContactId=${spotCheckContactId}&traceId=${traceId}&spotcheckUrl=${screen}`;\n\n let fullSpotcheckURL = baseSpotcheckURL;\n\n Object.entries(variables).forEach(([key, value]) => {\n fullSpotcheckURL += `&${key}=${value}`;\n });\n\n updatedState.spotcheckURL = fullSpotcheckURL;\n spotcheckStateService.setState(updatedState);\n\n try {\n const response = await axios.get<any>(fullSpotcheckURL);\n const themeInfo = response.data?.config?.generatedCSS;\n const theme_payload = { type: 'THEME_UPDATE_SPOTCHECK', themeInfo };\n state = spotcheckStateService.getState();\n\n let webViewRef = chat ? state.chatWebViewRef : state.classicWebViewRef;\n let isLoading = chat ? state.isChatLoading || !state.isChatLoadEventReceived : state.isClassicLoading || !state.isClassicLoadEventReceived;\n\n const resetStateData = {\n type: 'RESET_STATE',\n state: {\n ...(response.data || {}),\n skip: true,\n spotCheckAppearance: {\n ...(appearance || {}),\n targetType: 'MOBILE',\n },\n spotcheckUrl: screen,\n traceId,\n elementBuilderParams: {\n ...(variables || {}),\n },\n },\n };\n\n const sendMessageToIframe = (iframe: HTMLIFrameElement, data: any) => {\n if (iframe && iframe.contentWindow) {\n try {\n iframe.contentWindow.postMessage(data, '*');\n } catch (error) {\n console.error('❌ Failed to send message to iframe:', error);\n }\n }\n };\n\n const communicateWithWebView = async (iframe: HTMLIFrameElement) => {\n await new Promise(resolve => setTimeout(() => {\n sendMessageToIframe(iframe, resetStateData);\n sendMessageToIframe(iframe, theme_payload);\n resolve(true);\n }, 2000));\n };\n\n if (webViewRef) {\n if (isLoading === false) {\n communicateWithWebView(webViewRef);\n start();\n return true;\n } else {\n // todo: recheck this\n const unsubscribe = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const {\n isChatLoading,\n isClassicLoading,\n chatWebViewRef,\n classicWebViewRef,\n isClassicLoadEventReceived,\n isChatLoadEventReceived,\n } = currentState;\n\n \n if ((!isChatLoading && chat && isChatLoadEventReceived) || (!isClassicLoading && !chat && isClassicLoadEventReceived)) {\n unsubscribe.unsubscribe();\n const activeWebViewRef = chat\n ? chatWebViewRef\n : classicWebViewRef;\n if (activeWebViewRef) {\n communicateWithWebView(activeWebViewRef);\n start();\n } else {\n console.warn(\n '⚠️ Active WebView ref is null after loading completed'\n );\n }\n }\n }\n );\n return true;\n }\n } else {\n const unsubscribeWebView = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const updatedWebViewRef = chat\n ? currentState.chatWebViewRef\n : currentState.classicWebViewRef;\n const updatedIsLoading = chat\n ? currentState.isChatLoading || !currentState.isChatLoadEventReceived\n : currentState.isClassicLoading || !currentState.isClassicLoadEventReceived;\n\n if (updatedWebViewRef) {\n if (!updatedIsLoading) {\n unsubscribeWebView.unsubscribe();\n communicateWithWebView(updatedWebViewRef);\n start();\n } else {\n console.log('⏳ WebView ref available but still loading...');\n }\n }\n }\n );\n return true;\n }\n } catch (error: any) {\n throw new Error(error.message);\n }\n }\n throw new Error('Something went wrong');\n } catch (error: any) {\n throw new Error(error.message);\n }\n};\n\nexport const start = () => {\n const state = getSpotcheckStateService().getState();\n setTimeout(() => {\n getSpotcheckStateService().setState({ isVisible: true });\n }, state.afterDelay * 1000);\n};\n\nexport const closeSpotCheck = async () => {\n try {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const payload = {\n traceId: state.traceId,\n triggerToken: state.triggerToken,\n };\n\n const response = await fetch(\n `https://${state.domainName}/api/internal/spotcheck/dismiss/${state.spotcheckContactID}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n }\n );\n if(response.status == 200) {\n getSpotCheckEventListener().emit('surveyDismissed');\n }\n else{\n console.log(`Error: ${response.status}`);\n }\n } catch (error) {\n console.log('Error parsing JSON:', error);\n }\n};\n\nexport const handleSurveyEnd = () => {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const webViewRef =\n state.spotCheckType === 'chat'\n ? state.chatWebViewRef\n : state.classicWebViewRef;\n\n webViewRef?.current?.injectJavaScript(`\n (function() {\n window.dispatchEvent(new MessageEvent('message', {\n data: ${JSON.stringify({ type: 'UNMOUNT_APP' })}\n }));\n })();\n `);\n\n const updatedState: Partial<SpotcheckState> = {\n isVisible: false,\n isCloseButtonEnabled: false,\n isFullScreenMode: false,\n spotcheckID: 0,\n currentQuestionHeight: 0,\n closeButtonStyle: {},\n spotcheckContactID: 0,\n spotcheckURL: '',\n spotcheckPosition: 'bottom',\n isMounted: false,\n spotCheckType: '',\n screenHeight: 0,\n keyBoardHeight: 0,\n textPosition: 0,\n spotChecksMode: '',\n avatarEnabled: false,\n avatarUrl: '',\n };\n\n stateService.setState(updatedState);\n};\n\nexport const getSpotcheckComponentCssStyles = (state: SpotcheckState) => { \n let styles = {}\n let wrapperStyles = {}\n let extraPaddingForMiniCardCloseButtonIfTopPosition = 0;\n if (state.isFullScreenMode && state.isVisible) {\n wrapperStyles = {\n display: 'flex',\n height: '100%',\n };\n styles = {\n display: 'flex',\n height: '100%',\n };\n }\n\n let marginBottom = globalOS !== 'ios' ? 18 : 0;\n \n if (state.isVisible && state.isMounted) {\n\n let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));\n if(state.spotChecksMode === 'miniCard') {\n if(state.avatarEnabled) {\n height = height - 56;\n if(state.spotcheckPosition === 'bottom') {\n marginBottom += 56;\n }\n }\n if(state.isCloseButtonEnabled) {\n height = height - 40;\n }\n }\n\n switch (state.spotcheckPosition) {\n case 'bottom': \n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-end',\n };\n break;\n \n case 'top':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-start',\n };\n if(state.spotChecksMode === 'miniCard' && state.isCloseButtonEnabled) {\n extraPaddingForMiniCardCloseButtonIfTopPosition = 30;\n }\n break;\n \n case 'center':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'center',\n };\n break;\n \n default:\n break;\n }\n }\n \n return {\n wrapperStyles: {\n position: 'fixed', \n width: '100%', \n height: '100%', \n top: '0', \n left: '0', \n backgroundColor: 'rgba(0, 0, 0, 0.3)', \n zIndex: '100001',\n display: 'none',\n flexDirection: 'column',\n ...wrapperStyles\n },\n styles: {\n display: 'none',\n flexDirection: 'column',\n paddingTop: extraPaddingForMiniCardCloseButtonIfTopPosition+'px',\n marginBottom: marginBottom+'px',\n ...styles,\n }\n };\n};\n\nexport const closeSpotCheckAndHandleSurveyEnd = async () => {\n handleSurveyEnd();\n};","import {\n OnInit,\n Component,\n Input,\n OnDestroy,\n ViewChild,\n ElementRef,\n AfterViewInit,\n HostListener,\n NgZone,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { closeSpotCheck, closeSpotCheckAndHandleSurveyEnd, getSpotcheckComponentCssStyles, handleSurveyEnd, ischatSurvey } from './helpers';\nimport { SpotcheckState } from './types';\nimport { getSpotcheckStateService } from './helpers';\nimport { SpotcheckStateService } from './SpotcheckStateService';\nimport { getSpotCheckEventListener } from './SpotCheckEventListener';\nimport axios from 'axios';\n\n@Component({\n selector: 'WebViewComponent',\n template: `\n <div style=\"overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;\">\n <iframe\n allow=\"camera; microphone; geolocation; display-capture; autoplay; clipboard-read; clipboard-write; fullscreen\"\n allowfullscreen\n #iframeRef\n [src]=\"safeUrl\"\n style=\"width: 100%; height: 100%; display: block; border-radius: {{isMiniCard ? 12 : 0}}px;\"\n frameborder=\"0\"\n >\n </iframe>\n </div>\n `,\n standalone: true,\n imports: [CommonModule],\n})\nexport class WebViewComponent implements OnInit, AfterViewInit {\n @Input() url: string = '';\n @Input() webviewType: 'classic' | 'chat' = 'classic';\n @Input() isMiniCard: boolean = false;\n\n safeUrl: SafeResourceUrl | null = null;\n @ViewChild('iframeRef') iframe!: ElementRef<HTMLIFrameElement>;\n\n constructor(\n private sanitizer: DomSanitizer,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) { }\n ngOnInit() {\n if (this.url) {\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.url);\n }\n }\n\n ngAfterViewInit() {\n const stateService = getSpotcheckStateService();\n const webViewRef = this.iframe.nativeElement;\n\n if (this.webviewType === 'classic') {\n stateService.setState({\n classicWebViewRef: webViewRef,\n isClassicLoading: false,\n });\n } else {\n stateService.setState({\n chatWebViewRef: webViewRef,\n isChatLoading: false,\n });\n }\n this.setupIframeLoadListener();\n }\n\n private setupIframeLoadListener() {\n const iframe = this.iframe.nativeElement;\n iframe.addEventListener('load', () => {\n this.ngZone.run(() => {\n this.injectNativeBridgeAdapters(iframe);\n const stateService = getSpotcheckStateService();\n if (this.webviewType === 'classic') {\n stateService.setState({ isClassicLoading: false });\n } else {\n stateService.setState({ isChatLoading: false });\n }\n });\n });\n }\n\n private injectNativeBridgeAdapters(iframe: HTMLIFrameElement) {\n if (iframe && iframe.contentWindow) {\n try {\n const iframeWindow = iframe.contentWindow as any;\n\n if (!iframeWindow.SsAndroidSdk) {\n iframeWindow.SsAndroidSdk = {\n shareData: function () { },\n sendPartialSubmissionData: function () { }\n };\n }\n\n if (!iframeWindow.Android) {\n iframeWindow.Android = {\n onMessageReceive: function () { }\n };\n }\n\n if (!iframeWindow.webkit) {\n iframeWindow.webkit = {\n messageHandlers: {\n surveyResponse: {\n postMessage: function () { }\n },\n spotCheckData: {\n postMessage: function () { }\n },\n flutterSpotCheckData: {\n postMessage: function () { }\n }\n }\n };\n }\n\n if (!iframeWindow.flutterSpotCheckData) {\n iframeWindow.flutterSpotCheckData = {\n postMessage: function () { }\n };\n }\n } catch (error) { }\n }\n }\n\n @HostListener('window:message', ['$event'])\n onMessage(event: MessageEvent) {\n this.ngZone.run(() => {\n const stateService = getSpotcheckStateService();\n const { data } = event;\n switch (data.type) {\n case 'slideInFrame':\n if (data.mounted) {\n stateService.setState({ isMounted: true });\n }\n break;\n\n case 'resizeWindow':\n if (data.size) {\n stateService.setState({\n currentQuestionHeight: data.size.height,\n });\n } else if (data.isCloseButtonEnabled) {\n stateService.setState({\n isCloseButtonEnabled: data.isCloseButtonEnabled,\n });\n }\n break;\n\n case 'surveyCompleted':\n closeSpotCheckAndHandleSurveyEnd().then(() => {\n getSpotCheckEventListener().emit('surveyCompleted', data.response);\n this.cdr.detectChanges();\n });\n break;\n\n case 'surveyLoadStarted':\n getSpotCheckEventListener().emit('surveyLoadStarted', data.surveyDetails);\n break;\n\n\n case 'classicLoadEvent':\n stateService.setState({ isClassicLoadEventReceived: true });\n break;\n\n case 'chatLoadEvent':\n stateService.setState({ isChatLoadEventReceived: true });\n break;\n\n default:\n break;\n }\n this.cdr.detectChanges();\n });\n }\n}\n\n@Component({\n selector: 'close-svg',\n template: `\n <svg\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"https://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.6665 10.667L21.3332 21.3337M21.3332 10.667L10.6665 21.3337\"\n [attr.stroke]=\"stroke\"\n [attr.stroke-width]=\"strokeWidth\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n `,\n standalone: true,\n imports: [CommonModule],\n})\nexport class CloseSVGComponent {\n @Input() size: number = 32;\n @Input() stroke: string = '#919191';\n @Input() strokeWidth: number = 1.5;\n}\n\n@Component({\n selector: 'spotcheck-close-button',\n template: `\n <div style=\"position: absolute; top: -36px; right: 16px; z-index: 100001; cursor: pointer; background-color: white; border-radius: 50px;\" (click)=\"onClick()\" *ngIf=\"isVisible && isMiniCard\">\n <close-svg [size]=\"size\" [stroke]=\"stroke\" [strokeWidth]=\"strokeWidth\" style=\"display: flex; align-items: center; justify-content: center;\"/>\n </div>\n <div style=\"position: absolute; top: 16px; right: 16px; z-index: 100001; cursor: pointer;\" (click)=\"onClick()\" *ngIf=\"isVisible && !isMiniCard\">\n <close-svg [size]=\"size\" [stroke]=\"stroke\" [strokeWidth]=\"strokeWidth\"/>\n </div>\n `,\n standalone: true,\n imports: [CommonModule, CloseSVGComponent],\n})\nexport class CloseButtonComponent implements OnInit, OnDestroy {\n @Input() size: number = 30;\n @Input() strokeWidth: number = 1.2;\n\n state: SpotcheckState;\n private stateService: SpotcheckStateService;\n private stateSubscription!: Subscription;\n\n isVisible: boolean = false;\n isMiniCard: boolean = false;\n stroke: string = 'black';\n private isClosing: boolean = false;\n\n constructor(\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n this.stateService = getSpotcheckStateService();\n this.state = this.stateService.getState();\n this.updateComponentState();\n }\n\n ngOnInit(): void {\n this.stateSubscription = this.stateService.state$.subscribe(\n (newState: SpotcheckState) => {\n this.ngZone.run(() => {\n this.state = newState;\n this.updateComponentState();\n this.cdr.detectChanges();\n });\n }\n );\n }\n\n ngOnDestroy(): void {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n private updateComponentState(): void {\n this.isVisible =\n this.state.isCloseButtonEnabled &&\n ((this.state.currentQuestionHeight > 0 && !this.state.isFullScreenMode) ||\n (this.state.isFullScreenMode &&\n ((!this.state.isClassicLoading &&\n this.state.spotCheckType === 'classic') ||\n (!this.state.isChatLoading &&\n this.state.spotCheckType === 'chat'))));\n this.isMiniCard = this.state.spotChecksMode === 'miniCard';\n this.stroke = this.isMiniCard ? 'black' : this.state.closeButtonStyle?.['ctaButton'] || 'black';\n if (this.isVisible) {\n this.isClosing = false;\n }\n }\n\n onClick = async () => {\n if (this.isClosing) {\n return;\n }\n this.isClosing = true;\n await closeSpotCheck();\n handleSurveyEnd();\n this.ngZone.run(() => {\n this.cdr.detectChanges();\n });\n };\n}\n\n\n@Component({\n selector: 'SpotCheckComponent',\n templateUrl: './SpotCheckComponent.html',\n styleUrls: ['./SpotCheckComponent.css'],\n standalone: true,\n imports: [CommonModule, WebViewComponent, CloseButtonComponent],\n})\nexport class SpotCheckComponent implements OnInit, OnDestroy {\n state: SpotcheckState;\n private spotcheckStateService: SpotcheckStateService;\n private stateSubscription!: Subscription;\n componentStyles: any = {};\n avatarUrl: string = '';\n\n constructor(\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n this.spotcheckStateService = getSpotcheckStateService();\n this.state = this.spotcheckStateService.getState();\n this.updateComponentStyles();\n }\n\n ngOnInit(): void {\n this.stateSubscription = this.spotcheckStateService.state$.subscribe(\n (newState: SpotcheckState) => {\n this.ngZone.run(() => {\n this.state = newState;\n this.updateComponentStyles();\n this.avatarUrl = this.state.avatarUrl || \"https://static.surveysparrow.com/application/images/profile.png\";\n this.cdr.detectChanges();\n });\n }\n );\n this.initializeComponent();\n }\n\n ngOnDestroy(): void {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n private updateComponentStyles(): void {\n this.componentStyles = getSpotcheckComponentCssStyles(this.state);\n }\n\n initializeComponent = async () => {\n try {\n const domainName = this.state.domainName;\n const targetToken = this.state.targetToken;\n\n const response = await axios.get<any>(\n `https://${domainName}/api/internal/spotcheck/widget/${targetToken}/init`\n );\n\n const data = response.data;\n\n if (data.filteredSpotChecks && data.filteredSpotChecks.length > 0) {\n let classicIframe = false;\n let chatIframe = false;\n\n data.filteredSpotChecks.forEach((spotcheck: any) => {\n if (\n spotcheck.appearance.mode === 'fullScreen' &&\n ischatSurvey(spotcheck?.survey?.surveyType)\n ) {\n chatIframe = true;\n } else {\n classicIframe = true;\n }\n });\n\n const newClassicUrl = classicIframe\n ? `https://${domainName}/eui-template/classic`\n : '';\n const newChatUrl = chatIframe\n ? `https://${domainName}/eui-template/chat`\n : '';\n\n this.spotcheckStateService.setState({\n filteredSpotChecks: data.filteredSpotChecks,\n classicUrl: newClassicUrl,\n chatUrl: newChatUrl,\n });\n }\n } catch (error) {\n console.log('Error initializing widget:', JSON.stringify(error));\n }\n };\n}\n","<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { SpotCheckComponent } from './spotchecks/SpotCheckComponent';\n\n@Component({\n selector: 'SpotCheck',\n template: `<SpotCheckComponent />`,\n standalone: true,\n imports: [SpotCheckComponent],\n})\nexport class SpotCheck {}\n","export const getStoredUUID = () => {\n return localStorage.getItem('SurveySparrowUUID') || null;\n}\n\nexport const setUUID = (uuid: string) => {\n localStorage.setItem('SurveySparrowUUID', uuid);\n}","import { generateTraceId, getOS, setAppearance } from './helpers';\nimport { getStoredUUID, setUUID } from './storage';\nimport { TrackScreenProps, UserDetails, Variables, CustomProperties, TrackEventProps } from './types';\nimport { getSpotcheckStateService } from './helpers';\nimport axios from 'axios';\n\nexport const sendTrackScreenRequest = async ({\n screen,\n options,\n}: TrackScreenProps) => {\n try {\n const spotcheckStateService = getSpotcheckStateService();\n const oldState = spotcheckStateService.getState();\n let variables = { ...oldState.variables } as Variables;\n let customProperties = { ...oldState.customProperties } as CustomProperties;\n let userDetails = { ...oldState.userDetails } as UserDetails; \n\n if (options && options.variables && Object.keys(options.variables).length > 0) {\n variables = { ...variables, ...options.variables };\n }\n if (options && options.customProperties && Object.keys(options.customProperties).length > 0) {\n customProperties = { ...customProperties, ...options.customProperties };\n }\n if (options && options.userDetails && Object.keys(options.userDetails).length > 0) {\n userDetails = { ...userDetails, ...options.userDetails };\n }\n\n let traceId = oldState.traceId;\n if (!traceId) {\n traceId = generateTraceId();\n }\n\n if (!userDetails.uuid && !userDetails.email && !userDetails.mobile) {\n const uuid = getStoredUUID();\n if (uuid) {\n userDetails.uuid = uuid;\n }\n }\n\n spotcheckStateService.setState({\n traceId,\n screenwiseUserDetails: {\n [screen]: userDetails\n },\n });\n\n const state = spotcheckStateService.getState();\n let { isSpotPassed, isChecksPassed } = state;\n const payload = {\n screenName: screen,\n variables: variables,\n userDetails: userDetails,\n visitor: {\n deviceType: 'MOBILE',\n operatingSystem: await getOS(),\n screenResolution: {\n height: window.innerHeight,\n width: window.innerWidth,\n },\n currentDate: new Date().toISOString(),\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n traceId: state.traceId,\n customProperties: customProperties,\n };\n\n const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/properties?isSpotCheck=true&sdk=IONIC`;\n const response = await axios.post<any>(url, payload, {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if(response.status === 200) {\n const responseJson = response.data;\n\n if (responseJson.uuid) {\n setUUID(responseJson.uuid);\n }\n\n if (responseJson?.show) {\n if (responseJson?.show) {\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n traceId,\n variables\n );\n if (appearance_response) {\n isSpotPassed = true;\n spotcheckStateService.setState({ isSpotPassed });\n return { valid: true };\n }\n } else {\n throw new Error('');\n }\n }\n \n if (!isSpotPassed && responseJson?.checkPassed) {\n if (responseJson.checkCondition) {\n const checkCondition = responseJson.checkCondition;\n spotcheckStateService.setState({ afterDelay: checkCondition.afterDelay || 0 });\n if (checkCondition.customEvent) {\n spotcheckStateService.setState({ customEventsSpotChecks: [responseJson] });\n throw new Error('');\n }\n }\n\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n traceId,\n variables\n );\n if (appearance_response) {\n isChecksPassed = true;\n spotcheckStateService.setState({ isChecksPassed });\n return { valid: true };\n }\n }\n\n if (!isSpotPassed && !isChecksPassed && responseJson?.multiShow != null) {\n if (responseJson.multiShow) {\n spotcheckStateService.setState({ customEventsSpotChecks: responseJson.resultantSpotCheck });\n\n let selectedSpotCheck = {};\n let minDelay: number = Number.POSITIVE_INFINITY;\n\n for (const spotcheck of responseJson.resultantSpotCheck) {\n const checks = spotcheck?.checks || {};\n if (Object.keys(checks).length === 0) {\n minDelay = 0;\n selectedSpotCheck = spotcheck;\n } else if (checks.afterDelay != null) {\n const delay = parseFloat(checks.afterDelay);\n if (minDelay > delay) {\n minDelay = delay;\n selectedSpotCheck = spotcheck;\n }\n }\n }\n\n if (Object.keys(selectedSpotCheck).length > 0) {\n spotcheckStateService.setState({ afterDelay: minDelay });\n const appearance_response = await setAppearance(\n selectedSpotCheck,\n screen,\n state.domainName,\n traceId,\n variables\n );\n if (appearance_response) {\n return { valid: true };\n }\n }\n }\n }\n\n throw new Error(responseJson?.reason?.toString() ?? 'Spotcheck conditions not met');\n } else {\n throw new Error(`Received status code ${response.status}`);\n }\n } catch (error: any) {\n return { valid: false, error: error.message };\n }\n};\n\n\nexport const sendTrackEventRequest = async ({ screen, event }: TrackEventProps) => {\n try {\n const intMax = Number.POSITIVE_INFINITY;\n const state = getSpotcheckStateService().getState();\n let selectedSpotCheckID = intMax;\n let { isSpotPassed } = state;\n if (state.customEventsSpotChecks.length > 0) {\n const eventKeys = Object.keys(event);\n for (const spotCheck of state.customEventsSpotChecks) {\n const checks = spotCheck?.['checks'] ?? spotCheck?.['checkCondition'];\n\n if (checks) {\n const customEvent = checks?.customEvent;\n\n if (eventKeys.includes(customEvent?.eventName)) {\n selectedSpotCheckID =\n spotCheck?.['id'] ?? spotCheck?.['spotCheckId'] ?? intMax;\n\n if (selectedSpotCheckID !== intMax) {\n const payload = {\n screenName: screen,\n variables: state.variables,\n userDetails: state.screenwiseUserDetails[screen] || {},\n visitor: {\n deviceType: 'MOBILE',\n operatingSystem: await getOS(),\n screenResolution: {\n height: window.innerHeight,\n width: window.innerWidth,\n },\n currentDate: new Date().toISOString(),\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n spotCheckId: selectedSpotCheckID,\n eventTrigger: {\n customEvent: event,\n },\n traceId: state.traceId,\n customProperties: state.customProperties,\n };\n\n const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/eventTrigger?isSpotCheck=true`;\n\n try {\n const response = await axios.post<any>(url, payload, {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (response.status === 200) {\n const responseJson = response.data;\n if (responseJson?.show != null) {\n if (responseJson?.show) {\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n state.traceId,\n state.variables\n );\n\n if (appearance_response) {\n getSpotcheckStateService().setState({ isSpotPassed: true });\n isSpotPassed = true;\n return { valid: true };\n }\n }\n }\n\n if (!isSpotPassed && responseJson?.eventShow) {\n if (responseJson?.checkCondition != null) {\n const checkCondition = responseJson?.checkCondition;\n getSpotcheckStateService().setState({\n afterDelay: checkCondition?.afterDelay ?? 0,\n });\n\n if (checkCondition?.customEvent != null) {\n getSpotcheckStateService().setState({\n afterDelay: checkCondition?.customEvent?.delayInSeconds ?? 0,\n });\n }\n }\n\n const appearance_response = await setAppearance(\n responseJson,\n screen,\n state.domainName,\n state.traceId,\n state.variables\n );\n\n if (appearance_response) {\n return { valid: true };\n }\n }\n\n throw new Error(responseJson?.reason?.toString() ?? 'Event conditions not met');\n } else {\n throw new Error(`Received status code ${response.status}`);\n }\n } catch (error: any) {\n throw new Error(error.message);\n }\n }\n }\n }\n }\n throw new Error('');\n } else {\n throw new Error('');\n }\n } catch (error: any) {\n return { valid: false, error: error.message };\n }\n};","import { InitializeSpotChecksProps, TrackEventProps, TrackScreenProps } from './types';\nimport { sendTrackScreenRequest, sendTrackEventRequest } from './api';\nimport { getSpotcheckStateService } from './helpers';\n\nexport const initializeSpotChecks = ({\n domainName,\n targetToken,\n userDetails = {},\n variables = {},\n customProperties = {},\n}: InitializeSpotChecksProps) => {\n const spotcheckStateService = getSpotcheckStateService();\n spotcheckStateService.setState({\n domainName,\n targetToken,\n userDetails,\n variables,\n customProperties,\n });\n};\n\nexport const trackScreen = async ({ screen, options }: TrackScreenProps) => {\n try {\n const response = await sendTrackScreenRequest({ screen, options });\n if (response.valid) {\n console.log('Screen Tracking succeeded.');\n } else {\n if ('error' in response) {\n throw new Error(response.error.toString());\n } else {\n throw new Error('Tracking failed without an explicit error.');\n }\n }\n } catch (error: any) {\n console.log(`Screen Tracking Failed. ${error.message}`);\n }\n};\n\nexport const trackEvent = async ({ screen, event }: TrackEventProps) => {\n try {\n const response = await sendTrackEventRequest({ screen, event });\n if (response.valid) {\n console.log('TrackEvent succeeded.');\n } else {\n if ('error' in response) {\n throw new Error(response.error.toString());\n } else {\n throw new Error('Tracking failed without an explicit error.');\n }\n }\n } catch (error: any) {\n console.log(`Event Tracking Failed. ${error.message}`);\n }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
@@ -27,7 +27,7 @@ export declare class CloseSVGComponent {
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<CloseSVGComponent, never>;
28
28
  static ɵcmp: i0.ɵɵComponentDeclaration<CloseSVGComponent, "close-svg", never, { "size": { "alias": "size"; "required": false; }; "stroke": { "alias": "stroke"; "required": false; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; }; }, {}, never, never, true, never>;
29
29
  }
30
- export declare class CloseButtonComponent implements OnDestroy {
30
+ export declare class CloseButtonComponent implements OnInit, OnDestroy {
31
31
  private ngZone;
32
32
  private cdr;
33
33
  size: number;
@@ -40,6 +40,7 @@ export declare class CloseButtonComponent implements OnDestroy {
40
40
  stroke: string;
41
41
  private isClosing;
42
42
  constructor(ngZone: NgZone, cdr: ChangeDetectorRef);
43
+ ngOnInit(): void;
43
44
  ngOnDestroy(): void;
44
45
  private updateComponentState;
45
46
  onClick: () => Promise<void>;
@@ -22,7 +22,7 @@ export declare class CloseSVGComponent {
22
22
  stroke: string;
23
23
  strokeWidth: number;
24
24
  }
25
- export declare class CloseButtonComponent implements OnDestroy {
25
+ export declare class CloseButtonComponent implements OnInit, OnDestroy {
26
26
  private ngZone;
27
27
  private cdr;
28
28
  size: number;
@@ -35,6 +35,7 @@ export declare class CloseButtonComponent implements OnDestroy {
35
35
  stroke: string;
36
36
  private isClosing;
37
37
  constructor(ngZone: NgZone, cdr: ChangeDetectorRef);
38
+ ngOnInit(): void;
38
39
  ngOnDestroy(): void;
39
40
  private updateComponentState;
40
41
  onClick: () => Promise<void>;