{"version":3,"file":"chunk-oyf1ei6z.js","sources":["packages/vanilla/lib/features/header/src/header-item-base.ts","packages/global-search/productstub-lib/src/events.ts","packages/global-search/productstub-lib/src/entrypoints/header-leftmenu-entry.component.html","packages/global-search/productstub-lib/src/entrypoints/header-leftmenu-entry.component.ts","packages/bingo/app/src/shared/components/timer/timertoggleview.directive.ts","packages/bingo/frontend-lib/core/src/shared/components/confirm-message/confirm-message.service.ts","packages/bingo/frontend-lib/core/src/shared/services/windowref.service.ts","packages/bingo/frontend-lib/core/src/bingo-url-utility/services/bingo-url-utility.service.ts","packages/bingo/frontend-lib/core/src/client-config/bingo-api-paths.config.ts","packages/bingo/frontend-lib/core/src/client-config/bingo-modular-configuration-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/bingo-modular-configuration-features-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/bingo-tournaments-clients.config.ts","packages/bingo/frontend-lib/core/src/client-config/bingo.config.ts","packages/bingo/frontend-lib/core/src/client-config/cache-settings-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/casino-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/features-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/jackpot-data-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/modular-casino-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/playing-now-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/prebuy-optimization-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/screen-name-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/single-entry-point-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/super-links-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/tag-manager-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/teaser-client.config.ts","packages/bingo/frontend-lib/core/src/client-config/thunder-bite-client.config.ts","packages/bingo/frontend-lib/core/src/bingo-config-provider/services/bingo-config-provider.service.ts","packages/bingo/frontend-lib/core/src/bingo-platform-api/services/bingo-platform-api.service.ts","packages/bingo/frontend-lib/core/src/my-tickets/services/tickets-resource.service.ts","packages/bingo/frontend-lib/core/src/schedule/services/schedule.service.ts","node_modules/@angular/forms/fesm2022/forms.mjs","node_modules/@angular/material/fesm2022/slider.mjs","packages/bingo/app/src/shared/components/Tracking/TrackingModel.ts","packages/bingo/app/src/shared/components/Tracking/tracking-modal-service.ts","packages/bingo/app/src/shared/components/feature-icon/feature-icon.component.html","packages/bingo/app/src/shared/components/feature-icon/feature-icon.component.ts","packages/bingo/app/src/shared/components/bonus-supression/bonus-supression-popup.component.ts","packages/bingo/app/src/shared/components/bonus-supression/bonus-supression-popup.component.html","packages/bingo/app/src/tickets/pre-buy-grid/team-modal-popup/team-modal-popup.component.html","packages/bingo/app/src/tickets/pre-buy-grid/team-modal-popup/team-modal-popup.component.ts","packages/bingo/app/src/tickets/pre-buy-grid/topandtail-popup/topandtail-popup.component.html","packages/bingo/app/src/tickets/pre-buy-grid/topandtail-popup/topandtail-popup.component.ts","packages/bingo/app/src/tickets/pre-buy-grid/MultiPriceSlider.component.ts","packages/bingo/app/src/tickets/pre-buy-grid/MultiPriceSlider.component.html","packages/bingo/app/src/tickets/pre-buy-grid/pricemodalinfo-popup/price-modal-info-popup.component.html","packages/bingo/app/src/tickets/pre-buy-grid/pricemodalinfo-popup/price-modal-info-popup.component.ts","packages/bingo/app/src/tickets/pre-buy-grid/pricemodal-popup/price-modal-popup.component.ts","packages/bingo/app/src/tickets/pre-buy-grid/pricemodal-popup/price-modal-popup.component.html","node_modules/@angular/cdk/fesm2022/observers/private.mjs","node_modules/@angular/material/fesm2022/tabs.mjs","packages/bingo/frontend-lib/core/src/shared/services/ds-enabler.service.ts","packages/bingo/frontend-lib/core/src/shared/directives/decorator-class.directive.ts","packages/bingo/frontend-lib/core/src/shared/pipes/capitalize.pipe.ts","packages/bingo/frontend-lib/core/src/shared/components/designsystems/custombutton.component.html","packages/bingo/frontend-lib/core/src/shared/components/designsystems/custombutton.component.ts","packages/bingo/app/src/shared/components/alert-message/alert-message.service.ts","packages/bingo/frontend-lib/core/src/shared/services/eventemit.service.ts","packages/bingo/frontend-lib/core/src/shared/services/rooms-info.service.ts","packages/vanilla/lib/features/message-panel/src/message-panel-registry.service.ts","packages/vanilla/lib/features/message-panel/src/message-panel.html","packages/vanilla/lib/features/message-panel/src/message-panel.component.ts","packages/vanilla/lib/features/balance-properties/src/balance-properties.client-config.ts","packages/vanilla/lib/features/balance-properties/src/balance-properties.service.ts","packages/vanilla/lib/features/balance-properties/src/balance-properties-bootstrap.service.ts","packages/vanilla/lib/features/balance-properties/src/balance-properties-dsl-values-provider.ts","packages/vanilla/lib/features/balance-properties/src/balance-properties.feature.ts","packages/vanilla/lib/features/balance-properties/src/balance-properties.models.ts","packages/bingo/app/src/shared/components/collapsible-container/collapsible-container.component.html","packages/bingo/app/src/shared/components/collapsible-container/collapsible-container.component.ts","packages/bingo/app/src/shared/components/select-dropdown/select-dropdown.component.html","packages/bingo/app/src/shared/components/select-dropdown/select-dropdown.component.ts","packages/bingo/app/src/tickets/pre-buy-grid/preBuy-Slider.component.html","packages/bingo/app/src/tickets/pre-buy-grid/preBuy-slider.component.ts","packages/bingo/app/src/tickets/my-tickets/my-tickets-resource.service.ts","packages/bingo/app/src/tickets/my-tickets/my-tickets.component.html","packages/bingo/app/src/tickets/my-tickets/my-tickets.component.ts","packages/bingo/app/src/shared/components/Tracking/CartTrackingModel.ts","packages/bingo/app/src/tickets/pre-buy-grid/pre-buy-grid.component.html","packages/bingo/app/src/tickets/pre-buy-grid/pre-buy-grid.component.ts","packages/bingo/app/src/tickets/purchase-error/overlay.component.ts","packages/bingo/app/src/tickets/purchase-error/overlay.component.html","packages/bingo/app/src/tickets/tickets.component.html","packages/bingo/app/src/tickets/tickets.component.ts","packages/bingo/app/src/shared/services/login-Service.ts","packages/bingo/frontend-lib/core/src/shared/services/bingo-widget.service.ts","packages/vanilla/lib/shared/current-session/src/current-session.client-config.ts","packages/bingo/frontend-lib/core/src/game-launch/services/game-launch.service.ts","packages/bingo/app/src/screen-name/screen-name.component.html","packages/bingo/app/src/screen-name/screen-name.component.ts","packages/bingo/app/src/shared/services/screen-name.service.ts","packages/bingo/app/src/shared/services/session-package.service.ts","packages/bingo/app/src/session-bingo/buy-now-body/buynow-body.component.html","packages/bingo/app/src/session-bingo/buy-now-body/buynow-body.component.ts","packages/bingo/app/src/session-bingo/confirm-model/sessionbingo-confirm.component.ts","packages/bingo/app/src/session-bingo/confirm-model/sessionbingo-confirm.component.html","packages/bingo/app/src/session-bingo/buy-now-grid/buy-now-grid.component.ts","packages/bingo/app/src/session-bingo/buy-now-grid/buy-now-grid.component.html","packages/bingo/app/src/shared/services/pre-buy.service.ts","packages/bingo/app/src/force-redirect/pre-buy-redirect.component.ts","packages/bingo/app/src/shared/services/performanceMarker.service.ts","packages/vanilla/lib/shared/browser/src/trust-as-resource-url.pipe.ts","packages/vanilla/lib/shared/browser/src/trust-as-html.pipe.ts","packages/vanilla/lib/shared/browser/src/format.pipe.ts","packages/vanilla/lib/shared/browser/src/html-attrs.directive.ts","packages/vanilla/lib/shared/browser/src/iframe.component.ts","packages/bingo/app/src/shared/components/timer/timer.component.ts","packages/bingo/app/src/shared/components/timer/timer.component.html","packages/bingo/frontend-lib/core/src/shared/services/free-bingo-ticket.service.ts","node_modules/ng-circle-progress/fesm2020/ng-circle-progress.mjs","node_modules/@rx-angular/cdk/fesm2022/cdk-internals-scheduler.mjs","node_modules/@rx-angular/cdk/fesm2022/cdk-coercing.mjs","node_modules/@rx-angular/cdk/fesm2022/cdk-render-strategies.mjs","node_modules/swiper/shared/ssr-window.esm.mjs","node_modules/swiper/shared/utils.mjs","node_modules/swiper/modules/keyboard.mjs","node_modules/swiper/shared/create-element-if-not-defined.mjs","node_modules/swiper/modules/navigation.mjs","node_modules/swiper/shared/classes-to-selector.mjs","node_modules/swiper/modules/pagination.mjs","node_modules/swiper/modules/autoplay.mjs","node_modules/swiper/modules/virtual.mjs","node_modules/swiper/modules/mousewheel.mjs","node_modules/swiper/modules/free-mode.mjs","node_modules/swiper/shared/effect-init.mjs","node_modules/swiper/shared/effect-target.mjs","node_modules/swiper/shared/create-shadow.mjs","node_modules/swiper/modules/effect-coverflow.mjs","node_modules/swiper/shared/swiper-core.mjs","packages/vanilla/lib/shared/swiper/src/swiper.html","packages/vanilla/lib/shared/swiper/src/swiper.component.ts","packages/casino/ui-lib/src/containers/container-description/container-description.component.html","packages/casino/ui-lib/src/containers/container-description/container-description.component.ts","node_modules/ng-lazyload-image/fesm2020/ng-lazyload-image.mjs","packages/casino/ui-lib/src/game-tiles/top-ten/feature-container/feature-container.component.ts","packages/casino/ui-lib/src/game-tiles/top-ten/feature-container/feature-container.component.html","packages/design-system/ui/badge/src/badge.component.ts","packages/casino/ui-lib/src/badges/badge.component.ts","packages/casino/ui-lib/src/chevron/chevron.component.html","packages/casino/ui-lib/src/chevron/chevron.component.ts","packages/casino/ui-lib/src/cta/cs-cta/cs-cta.component.ts","packages/casino/ui-lib/src/cta/gametile-cta/gametile-cta.component.html","packages/casino/ui-lib/src/cta/gametile-cta/gametile-cta.component.ts","packages/casino/ui-lib/src/cta/hyperlink-cta/hyperlink-cta.component.html","packages/casino/ui-lib/src/cta/hyperlink-cta/hyperlink-cta.component.ts","packages/casino/ui-lib/src/icons/class-icon/class-icon.component.ts","packages/casino/ui-lib/src/cta/rp-fav-cta/rp-fav-cta-legacy.component.ts","packages/casino/ui-lib/src/cta/rp-fav-cta/rp-fav-cta-legacy.component.html","packages/casino/ui-lib/src/cta/rp-fav-cta/rp-fav-cta.component.html","packages/casino/ui-lib/src/cta/rp-fav-cta/rp-fav-cta.component.ts","packages/casino/ui-lib/src/icons/image-icon/image-icon.component.ts","packages/casino/ui-lib/src/cta/slot-race-widget/slotrace-cta.component.html","packages/casino/ui-lib/src/cta/slot-race-widget/slotrace-cta.component.ts","packages/casino/ui-lib/src/game-tiles/tile-footer/tile-footer.component.html","packages/casino/ui-lib/src/game-tiles/tile-footer/tile-footer.component.ts","packages/casino/ui-lib/src/game-tiles/image-loader/image-loader.component.html","packages/casino/ui-lib/src/game-tiles/image-loader/image-loader.component.ts","packages/casino/ui-lib/src/game-tiles/top-ten/freespins-summary/freespins-summary-icon.component.html","packages/casino/ui-lib/src/game-tiles/top-ten/freespins-summary/freespins-summary-icon.component.ts","packages/casino/ui-lib/src/game-tiles/top-ten/gradient-numbers/gradient-number.component.html","packages/casino/ui-lib/src/game-tiles/top-ten/gradient-numbers/gradient-number.component.ts","packages/casino/ui-lib/src/game-tiles/top-ten/tile-aggregation/tile-aggregation.component.html","packages/casino/ui-lib/src/game-tiles/top-ten/tile-aggregation/tile-aggregation.component.ts","packages/casino/ui-lib/src/icons/fav-cta/fav-cta.component.html","packages/casino/ui-lib/src/icons/fav-cta/fav-cta.component.ts","packages/casino/ui-lib/src/icons/quick-info/quick-info-icon.component.html","packages/casino/ui-lib/src/icons/quick-info/quick-info-icon.component.ts","packages/casino/ui-lib/src/utils/class-decoration/decorator-class.directive.ts","packages/casino/ui-lib/src/image/image.component.html","packages/casino/ui-lib/src/image/image.component.ts","node_modules/hammerjs/hammer.js","packages/vanilla/lib/features/gamification/src/gamification.service.ts","packages/vanilla/lib/features/gamification/src/gamification-bootstrap.service.ts","packages/vanilla/lib/features/gamification/src/gamification-dsl-values-provider.ts","packages/vanilla/lib/features/gamification/src/gamification.feature.ts","packages/vanilla/lib/shared/icons/src/icons.client-config.ts","packages/vanilla/lib/shared/icons/src/icon-fast.service.ts","packages/vanilla/lib/shared/icons/src/icon-fast.component.ts","packages/vanilla/lib/features/popper/src/popper-content.html","packages/vanilla/lib/features/popper/src/popper-content.component.ts"],"sourcesContent":["import { Directive, Input, inject } from '@angular/core';\n\nimport {\n MenuActionOrigin,\n MenuActionsService,\n MenuContentItem,\n MenuSection,\n Page,\n UtilsService,\n VanillaElements,\n trackByProp,\n} from '@frontend/vanilla/core';\n\n/**\n * A base class for responsive header components registered with {@link HeaderService}.\n *\n * @stable\n */\n@Directive()\nexport abstract class HeaderItemBase {\n @Input() item: MenuContentItem;\n readonly trackByText = trackByProp('text');\n\n menuActionsService = inject(MenuActionsService);\n MenuSection = MenuSection;\n VanillaElements = VanillaElements;\n private pageConfig = inject(Page);\n get useFastIconType(): boolean {\n return this.pageConfig.htmlSourceTypeReplace ? UtilsService.indexableTypeContainsKey(this.pageConfig.htmlSourceTypeReplace, 'header') : false;\n }\n\n processClick(event: Event, item?: any) {\n this.menuActionsService.processClick(event, item || this.item, MenuActionOrigin.Header);\n }\n}\n","export const __SEARCH_ACCESSIBLE__ = 'gs:presentation:search:accessible';\nexport const __LAUNCH_SEARCH__ = 'gs:presentation:launchsearch';\nexport const __PRESENTATION_BOOTSTRAPPED__ = 'gs:presentation:bootstrapped';\nexport const __FETCH_CONTEXT__ = 'gs:search:service:context:fetch';\nexport const __CONTEXT__ = 'gs:search:service:context:result';\nexport const __TRACK__ = 'gs:search:tracking';\nexport const __USER_EVENT__ = 'gs:productstub:vnuserevent';\nexport const __ENTRY_POINT_ACTIVE__ = 'gs:productstub:entrypoint:active';\nexport const __READ_CLIENT_CONFIG__ = 'gs:productstub:clientconfig:read';\nexport const __CLIENT_CONFIG_UPDATE_AVAILABLE__ = 'gs:productstub:clientconfig:updateavailable';\nexport const SearchIndexLoadEvent = 'gs:searchindex:load';\nexport const __BOOTSTRAP_APP__ = 'gs:search:bootstrap:app';\n\nexport const ServiceTokenHeader = '--x-globalsearch-service-servicetoken';\nexport const TransportTokenHeader = '--x-globalsearch-security-transporttoken';\nexport const SearchAppEnablerQuery = '--globalsearch.app.isenabled';\nexport const SearchContextWrittenEventIdentifier = 'gs:searchContextWritten';\nexport const ReadSearchContextEventIdentifier = 'gs:readSearchContext';\nexport const SearchAppLoadingEventIdentifier = 'gs:searchAppLoading';\nexport const SearchAppLoadedEventIdentifier = 'gs:searchAppLoaded';\nexport const SearchServiceInitializingEventIdentifier = 'gs:searchServiceInitializing';\nexport const SearchServiceInitializedEventIdentifier = 'gs:searchServiceInitialized';\nexport const SearchServiceLoadingEventIdentifier = 'gs:searchServiceLoading';\nexport const SearchServiceLoadedEventIdentifier = 'gs:searchServiceLoaded';\nexport const SearchContextLoadingEventIdentifier = 'gs:searchContextLoading';\nexport const SearchContextLoadedEventIdentifier = 'gs:searchContextLoaded';\nexport const SearchAppQueryEventIdentifier = 'gs:query';\nexport const SearchAppQueryResultEventIdentifier = 'gs:queryresult';\n","\n","/* eslint-disable no-console */\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { HeaderItemBase } from '@frontend/vanilla/features/header';\n\nimport { IGlobalSearchContext } from '../context/search';\nimport { __CONTEXT__, __ENTRY_POINT_ACTIVE__, __FETCH_CONTEXT__, __LAUNCH_SEARCH__, __PRESENTATION_BOOTSTRAPPED__ } from '../events';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'vn-h-global-search',\n templateUrl: 'header-leftmenu-entry.component.html',\n styleUrls: ['header-leftmenu-entry.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class HeaderLeftMenuEntryComponent extends HeaderItemBase implements OnInit, OnDestroy {\n isEnabled = false;\n searchContext: any;\n\n constructor() {\n // private readonly menuActionService: MenuActionsService // private readonly searchLauncherService: SearchLauncherService,\n super();\n // this.menuActionService = this.menuActionService; // Hack\n }\n\n private displayIcon = true;\n private desktopClassValue = 'theme-search-i tab-nav-link';\n\n ngOnInit() {\n this.registerEventHandlers();\n this.raiseIsAppEnabledQuery();\n }\n\n ngOnDestroy() {\n this.unregisterEventHandlers();\n }\n\n showsearch() {\n dispatchEvent(new CustomEvent(__LAUNCH_SEARCH__, { detail: { launchChannel: 'desktop', launchedFrom: 'top' } }));\n }\n\n get canDisplayIcon(): boolean {\n return this.displayIcon;\n }\n\n get desktopClass(): string {\n return this.desktopClassValue;\n }\n\n private setState(searchContext: IGlobalSearchContext) {\n this.desktopClassValue = this.getDesktopClassFromClientConfig(searchContext);\n console.log('desktopClassvalue', this.desktopClassValue);\n if (this.desktopClassValue) {\n this.displayIcon = true;\n } else {\n this.displayIcon = true;\n this.desktopClassValue = 'theme-search tab-nav-link';\n }\n }\n\n private getDesktopClassFromClientConfig(searchContext: IGlobalSearchContext): string {\n const presentationContext = searchContext && searchContext.presentationContext;\n return (\n (presentationContext &&\n presentationContext.entryPoints &&\n presentationContext.entryPoints['sticky'] &&\n presentationContext.entryPoints['sticky'].parameters &&\n (presentationContext.entryPoints['sticky'].parameters['DesktopClass'] ||\n presentationContext.entryPoints['sticky'].parameters['desktopClass'])) ||\n ''\n );\n }\n\n private raiseIsAppEnabledQuery() {\n dispatchEvent(new CustomEvent(__FETCH_CONTEXT__));\n }\n\n private registerEventHandlers() {\n addEventListener('gs:hideHeaderEntry', this.hideHeaderEntryEventHandler);\n addEventListener('gs:showHeaderEntry', this.showHeaderEntryEventHandler);\n addEventListener(__CONTEXT__, this.contextResultEventHandler);\n addEventListener(__PRESENTATION_BOOTSTRAPPED__, this.presentationBootstarppedEventHandler);\n addEventListener('message', this.messageEventHandler);\n }\n\n private unregisterEventHandlers() {\n removeEventListener('gs:hideHeaderEntry', this.hideHeaderEntryEventHandler);\n removeEventListener('gs:showHeaderEntry', this.showHeaderEntryEventHandler);\n removeEventListener(__CONTEXT__, this.contextResultEventHandler);\n removeEventListener(__PRESENTATION_BOOTSTRAPPED__, this.presentationBootstarppedEventHandler);\n removeEventListener('message', this.messageEventHandler);\n }\n\n private readonly hideHeaderEntryEventHandler = (event: Event): void => {\n this.isEnabled = false;\n if (event && event?.stopImmediatePropagation && typeof event?.stopImmediatePropagation === typeof (() => {})) {\n event?.stopImmediatePropagation();\n }\n };\n\n private readonly showHeaderEntryEventHandler = (event: Event): void => {\n this.isEnabled = true;\n if (event && event?.stopImmediatePropagation && typeof event?.stopImmediatePropagation === typeof (() => {})) {\n event?.stopImmediatePropagation();\n }\n };\n\n private readonly presentationBootstarppedEventHandler = (messageEvent: CustomEventInit) => {\n if (messageEvent && messageEvent.detail && messageEvent.detail) {\n const searchHost: any = messageEvent.detail;\n this.searchContext = searchHost.searchContext;\n this.setState(this.searchContext);\n this.isEnabled = searchHost.searchContext.appContext.isEnabled || false;\n }\n if (this.isEnabled) {\n dispatchEvent(new CustomEvent(__ENTRY_POINT_ACTIVE__, { detail: { activeFrom: 'header' } }));\n }\n };\n\n private readonly contextResultEventHandler = (customEvent: CustomEventInit) => {\n if (customEvent && customEvent?.detail && customEvent?.detail?.appContext) {\n this.isEnabled = customEvent?.detail?.appContext.isEnabled || false;\n this.setState(customEvent?.detail);\n }\n if (this.isEnabled) {\n dispatchEvent(new CustomEvent(__ENTRY_POINT_ACTIVE__, { detail: { activeFrom: 'header' } }));\n }\n };\n\n private readonly messageEventHandler = (messageEvent: MessageEvent): void => {\n if (\n messageEvent &&\n messageEvent.data &&\n messageEvent.data.eventIdentifier &&\n typeof messageEvent.data.eventIdentifier === typeof '' &&\n messageEvent.data.eventIdentifier?.trim()\n ) {\n switch (messageEvent.data.eventIdentifier?.trim().toLowerCase()) {\n case 'gs:hideheaderentry':\n this.hideHeaderEntryEventHandler(messageEvent);\n break;\n case 'gs:showheaderentry':\n this.showHeaderEntryEventHandler(messageEvent);\n break;\n default:\n break;\n }\n }\n };\n}\n","import { Directive, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[bgTimer]',\n standalone: true,\n})\nexport class TimerToggleViewDirective {\n @Input() timerBgColor: string = '';\n @Input() timerColor: string = '';\n @HostBinding('class.toggle-timer-set') _toggleTimerClass = false;\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n addClass() {\n this._toggleTimerClass = true;\n if (this.timerBgColor != '') {\n this.renderer.setStyle(this.elementRef.nativeElement, 'background', this.timerBgColor);\n }\n if (this.timerColor != '') {\n this.renderer.setStyle(this.elementRef.nativeElement, 'color', this.timerColor);\n }\n }\n\n removeClass() {\n this._toggleTimerClass = false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmMessageService {\n public confirmFunction: () => void;\n public cancelFunction: () => void;\n public subject = new Subject();\n\n constructor() {}\n confirmThis(\n header: string,\n message: string,\n note: string,\n confirmButtonText: string,\n closeButton: string,\n confirmFn: () => void,\n cancelFn: () => void,\n ) {\n this.setConfirmation(header, message, note, confirmButtonText, closeButton, confirmFn, cancelFn);\n }\n setConfirmation(\n header: string,\n message: string,\n note: string,\n confirmButtonText: string,\n closeButton: string,\n confirmFn: () => void,\n cancelFn: () => void,\n ) {\n this.confirmFunction = confirmFn;\n this.cancelFunction = cancelFn;\n this.subject.next({\n type: 'confirm',\n header: header,\n text: message,\n note: note,\n confirmButtonText: confirmButtonText,\n closeButton: closeButton,\n confirmFn: this.confirmFn,\n cancelFn: this.cancelFn,\n });\n }\n\n confirmFn(that: any): void {\n that.confirmMessageService.subject.next();\n that.confirmMessageService.confirmFunction();\n }\n\n cancelFn(that: any): void {\n that.confirmMessageService.subject.next();\n that.confirmMessageService.cancelFunction();\n }\n\n getMessage(): Observable {\n return this.subject.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n get nativeWindow(): any {\n return window;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, Page, ProductHomepagesConfig } from '@frontend/vanilla/core';\n\nimport { WindowRef } from '../../../src/shared/services/windowref.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BingoUrlUtilityService {\n isDev: boolean;\n devUrl: string;\n\n constructor(\n private products: ProductHomepagesConfig,\n private page: Page,\n private appInfoConfig: AppInfoConfig,\n private windowRef: WindowRef,\n ) {}\n\n getBingoBaseUrl = (): string => this.getUrl('bingo') || '';\n\n //getProductBaseUrl = (): string => this.getUrl() || '';\n getProductBaseUrl = (productOverride?: string) => this.getUrl('', true, productOverride);\n\n getApiBaseUrl = (): string => this.getBingoBaseUrl() + '/' + this.page.lang;\n\n getProductApiBaseUrl = (productOverride?: string): string => this.getProductBaseUrl(productOverride) + '/' + this.page.lang;\n\n getApiurl = (url: string): string => this.getApiBaseUrl() + '/bingo/api/' + url;\n\n getClientConfigUrl = () => `${this.windowRef.nativeWindow.location.origin}/${this.page.lang}/api/clientconfig`;\n\n getProductMapConfiguration = (bingoModularConfigurationClientConfig: any) => {\n return bingoModularConfigurationClientConfig?.productMap?.find((f: any) =>\n f?.invokerProduct?.toLowerCase()?.includes(this.appInfoConfig?.product?.toLowerCase()),\n );\n };\n\n private getUrl = (type: string, isProduct: boolean = false, productOverride?: string) => {\n const product: any = isProduct && productOverride ? productOverride : isProduct ? this.appInfoConfig?.product?.toLowerCase() : type;\n const productUrl = new URL(this.products[product as keyof ProductHomepagesConfig]);\n return productUrl.origin;\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'bgApiPathsConfig', product: ClientConfigProductName.BINGO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: bingoApiPathsClientConfigFactory,\n})\nexport class BingoApiPathsClientConfig {\n bingoTournaments: any;\n}\nexport function bingoApiPathsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(BingoApiPathsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'bgBingoModularConfiguration', product: ClientConfigProductName.BINGO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: bingoModularConfigurationClientConfigFactory,\n})\nexport class BingoModularConfigurationClientConfig {\n productMap: any;\n}\nexport function bingoModularConfigurationClientConfigFactory(service: LazyClientConfigService) {\n return service.get(BingoModularConfigurationClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'bgBingoModularConfigurationFeatures', product: ClientConfigProductName.BINGO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: bingoModularConfigurationFeaturesClientConfigFactory,\n})\nexport class BingoModularConfigurationFeaturesClientConfig {\n enableBingoTournamentsForOtherProducts: boolean;\n}\nexport function bingoModularConfigurationFeaturesClientConfigFactory(service: LazyClientConfigService) {\n return service.get(BingoModularConfigurationFeaturesClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'bgBingoTournaments', product: ClientConfigProductName.BINGO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: bingoTournamentsClientConfigFactory,\n})\nexport class BingoTournamentsClientConfig {\n enableOptIn: any;\n host: string;\n joinUrlTemplate: string;\n leaderboardUrl: string;\n raceListUrl: string;\n racesListPollingInterval: any;\n notificationPopupTimeout: any;\n leaderboardPollingInterval: any;\n showAwardsAndPrizes: any;\n maxLeaderboardRows: any;\n upcomingSlotsDuration: any;\n noOfCards: any;\n resultsForNoOfDays: any;\n enablePreLogin: any;\n disableWhenNoPromotions: any;\n enableResultsHistoryPage: any;\n enableMaxBet: any;\n enableStickersFreeToPlay: boolean;\n enableStickersFreePlayTech: any;\n enableSlotRacesStickers: boolean;\n enableJpRibbonOnFreeTourney: any;\n enable24HrTimeFormat: any;\n displayBonusAsText: any;\n upcomingSlotStickersDuration: any;\n enableBetterVisualization: any;\n hideGenericPoints: any;\n enableUpcomingOptinForPlaytech: any;\n disablePreloginApiCalls: any;\n disablePrizesApiCall: any;\n disableBingoTournamentsPoints: any;\n enableRaceNotification: any;\n enableCoinEconomy: any;\n enableConfigMaps: any;\n enableCoinShower: any;\n scheduleFeedTimeInterval: any;\n bingoTournamentSource: string;\n enableBingoTournamentsAsWidget: any;\n enableBingoTournaments: any;\n displayTournamentsOnTop: boolean;\n btSitecoreItemText: string;\n resultsDateFormat: string;\n matDialogResultsDateFormat: string;\n enableBingoTournamentsWidget: boolean;\n}\nexport function bingoTournamentsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(BingoTournamentsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: bingoConfigFactory,\n})\n@LazyClientConfig({ key: 'bgConfig', product: ClientConfigProductName.BINGO })\nexport class BingoConfig {\n alertMessageTimeout: number;\n friendsBingoRoom: number;\n hiddenGames: any;\n bingoGameClientDomain: any;\n bingoHomePage: any;\n pinnedRoomId: number;\n brandID: string;\n bingoMultiline: boolean;\n invokerProduct: string;\n SessionBingoDetailsEndPoint: string;\n SessionBingoListEndPoint: string;\n SessionBingoPurchaseEndPoint: string;\n SessionBingoCancelEndPoint: string;\n enableSchedulePostMethod: boolean;\n scheduleTimerColorScheme: any;\n bingoClientAssetsDomain: string;\n schedulePagePolling: boolean;\n scheduleLobbyRefreshTimeFrame: number;\n currencyForSchedulePage: any;\n webTrackingMeasurementId: any;\n webTrackingApiKey: any;\n webTrackingCookieNameId: any;\n}\nexport function bingoConfigFactory(service: LazyClientConfigService) {\n return service.get(BingoConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: cacheSettingsClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgCacheSettingsConfig', product: ClientConfigProductName.BINGO })\nexport class CacheSettingsClientConfig {\n preBuy: any;\n}\nexport function cacheSettingsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(CacheSettingsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: casinoClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgCasinoConfig', product: ClientConfigProductName.BINGO })\nexport class CasinoClientConfig {\n gymlFeedId: string;\n GYMLFeedId: string;\n gameIconUrlTemplate: string;\n casinoLobbyWidgetUrl: string;\n casinoRPWidgetUrl: string;\n}\nexport function casinoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(CasinoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: featuresClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgFeatureConfig', product: ClientConfigProductName.BINGO })\nexport class FeaturesClientConfig {\n enableRoomsGrouping: boolean;\n EnableDesktopGameLaunch: boolean;\n HekatonCache: boolean;\n ShowJackpotOnGameTiles: boolean;\n RecentlyPlayedGames: string;\n UseLMTFeed: boolean;\n UseDisabledGames: string;\n EnableMultiGameView: string;\n EGVFavourites: boolean;\n BingoFavourites: boolean;\n isFavouriteEnabled: boolean;\n isPreBuyEnabled: boolean;\n showIconImage: boolean;\n isRoomTabEnabled: boolean;\n casinoPane: boolean;\n isFilterSortEnabled: boolean;\n showCasinoPane: boolean;\n enableAccountUpgrade: boolean;\n showRoomTilesOnly: boolean;\n enableSubNavigation: boolean;\n enablePrebuyDate: boolean;\n enableCasinoWidget: boolean;\n enableV6Navigation: boolean;\n enableCasinoRPWidget: boolean;\n enablePlayBingoButtonOnTeasers: boolean;\n enableScreenNameCheck: boolean;\n enableProgressBar: boolean;\n progressbarTime: number;\n enableOptimove: boolean;\n enablePerformanceMarking: boolean;\n enableFreeBingoTickets: boolean;\n enableGameLaunchinPortalIframe: boolean;\n bingoPinningRoom: boolean;\n enableRTMSSubscription: boolean;\n favouritesConfirmationPopUp: boolean;\n disableUserValidationCheck: boolean;\n sessionDays: number;\n dateFormat: string;\n displayTimerInClient: boolean;\n timeMilliseconds: any;\n enableScreenNameForPrebuy: boolean;\n enableNewCozyLobby: boolean;\n grayedOutConvertion: number;\n preBuyTimeDuration: number;\n isEnablePrebuyBonusDetails: boolean;\n //preBuyBonusDetailsLink: any;\n preBuyBonusDetailsSetInterval: any;\n bingoWidgetGridCount: number;\n enablePrivateRooms: boolean;\n enableTeasersInRooms: boolean;\n enableNewPrebuySliderIcons: boolean;\n enableLastLoginTimeCheck: boolean;\n timeOutForRoomsFilter: number;\n enableScrollForRoomFilters: boolean;\n isAutoFeedSortEnabled: boolean;\n disableTimeSessions: boolean;\n timeOutForPostMessage: number;\n disableUnnecessaryCalls: boolean;\n isEnableFullTakeOverStaticImage: boolean;\n enable2By1RoomTile: boolean;\n displayTeasersAboveNav: boolean;\n enableHomeTeasers: boolean;\n showVerticalRoomsInHomePage: boolean;\n enableVanillaLoginDuration: boolean;\n friendsBingoCopyRightToggle: boolean;\n sessionBingoMaxPurchaseEnable: boolean;\n navigationBarTimeFrame: number;\n enableBonusImplementation: boolean;\n enableBallTypeImages: boolean;\n enableChannelInLaunchURL: boolean;\n displaySeeAllOnLobby: boolean;\n enableNavigationInIframe: boolean;\n enableClickInteraction: boolean;\n enableStickerSchedule: boolean;\n playerCount: number;\n potPlayerCurrencyDigits: number;\n isEnablePromotionsBanner: boolean;\n showPromotionsCount: boolean;\n disableAllPrebuy: boolean;\n ticketIconTimeout: number;\n enableInfoIconOnRooms: boolean;\n featureIconImgPaths: any;\n activateDesignSystem: any;\n enableNewBingoTile: any;\n ballTypeIconPaths: any;\n packagesfilterMap: any;\n}\n\nexport function featuresClientConfigFactory(service: LazyClientConfigService) {\n return service.get(FeaturesClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: jackpotDataClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgJackpotData', product: ClientConfigProductName.BINGO })\nexport class JackpotDataClientConfig {\n showOnTiles: boolean;\n jpInterval: number;\n showJackpotCurrencyOnRight: boolean;\n}\nexport function jackpotDataClientConfigFactory(service: LazyClientConfigService) {\n return service.get(JackpotDataClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: modularCasinoClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgModularCasinoConfig', product: ClientConfigProductName.BINGO })\nexport class ModularCasinoClientConfig {\n isEnabled: boolean;\n rpFavNpmEnabled: boolean;\n enableCasinoNpmGrid: boolean;\n casinoNpmDefaultCategoryroute: string;\n casinoNpmDefaultlobbyType: string;\n disableProductLobbyDataFetch: boolean;\n lobbyTypeMap: any;\n navigationLobbyType: string;\n enableCasinoNavCategories: boolean;\n enableNewsFeedNpm: boolean;\n newsFeedWidgetContainerPath: string;\n enableCasinoNavCategoriesInGameClient: boolean;\n}\n\nexport function modularCasinoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ModularCasinoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: playingNowClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgPlayingNowConfig', product: ClientConfigProductName.BINGO })\nexport class PlayingNowClientConfig {\n playingNowIframeUrl: string;\n ssoKey: string;\n}\n\nexport function playingNowClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PlayingNowClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: prebuyOptimizationClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgPrebuyOptimizationConfig', product: ClientConfigProductName.BINGO })\nexport class PrebuyOptimizationClientConfig {\n enableLazyPrebuyFeed: boolean;\n prebuyListTimeInterval: string;\n timeoutInteravalForEachCall: string;\n}\nexport function prebuyOptimizationClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PrebuyOptimizationClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: screenNameClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgScreenName', product: ClientConfigProductName.BINGO })\nexport class ScreenNameClientConfig {\n //messages: any;\n host: string;\n screenNameGetApi: string;\n screenNameSetApi: string;\n enableClientScreenName: boolean;\n}\nexport function screenNameClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ScreenNameClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: singleEntryPointClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgSingleEntryPoint', product: ClientConfigProductName.BINGO })\nexport class SingleEntryPointClientConfig {\n //singleEntryPointData: any;\n enableRoomsGrouping: boolean;\n groupingRoomsData: any;\n enableGroupingForMultiVariants: boolean;\n enableIconReplacement: boolean;\n //globalSEPTexts: any;\n}\nexport function singleEntryPointClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SingleEntryPointClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: superLinksClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgSuperLinks', product: ClientConfigProductName.BINGO })\nexport class SuperLinksClientConfig {\n enableSuperLinkPopup: boolean;\n enableSuperLinks: boolean;\n superlinkText: string;\n superLinksData: any;\n //superLinksSitecoreData: any;\n}\nexport function superLinksClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SuperLinksClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: tagManagerClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgTagManagerConfig', product: ClientConfigProductName.BINGO })\nexport class TagManagerClientConfig {\n triggerGoogleTagManagerClientInjection: boolean;\n googleTagManagerInjectionDelay: number;\n}\nexport function tagManagerClientConfigFactory(service: LazyClientConfigService) {\n return service.get(TagManagerClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: teaserClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgTeaser', product: ClientConfigProductName.BINGO })\nexport class TeaserClientConfig {\n teaserOptimization: boolean;\n teaserDefaultHorizontalAlignment: string;\n teaserDefaultVerticalAlignment: string;\n teaserDefaultImageAlignment: string;\n teaserDefaultHorizontalTextAlignment: string;\n teaserDefaultTermsTextAlignment: string;\n maxRenderedTeasers: number;\n desktopViewTeaserHeight: number;\n mobileViewTeaserHeight: number;\n tabletViewTeaserHeight: number;\n enableTickingForJackpotOnTeasers: boolean;\n enableOptMiniTeasers: boolean;\n enableLobbyBackgroundImage: boolean;\n teaserSetIndexTimeout: any;\n iconTypeMapping: string[];\n normalTeasers: any;\n enableBingoNpm: boolean;\n showEmbeddedTeasersAboveGames: boolean;\n}\nexport function teaserClientConfigFactory(service: LazyClientConfigService) {\n return service.get(TeaserClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: thunderBiteClientConfigFactory,\n})\n@LazyClientConfig({ key: 'bgThunderBiteConfig', product: ClientConfigProductName.BINGO })\nexport class ThunderBiteClientConfig {\n gameIdPath: string;\n isThunderBiteEnabled: boolean;\n thunderBiteIframeHeight: number;\n}\nexport function thunderBiteClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ThunderBiteClientConfig);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ClientConfigService, Page } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { BingoUrlUtilityService } from '../../bingo-url-utility/services/bingo-url-utility.service';\nimport { BingoApiPathsClientConfig } from '../../client-config/bingo-api-paths.config';\nimport { BingoModularConfigurationClientConfig } from '../../client-config/bingo-modular-configuration-client.config';\nimport { BingoModularConfigurationFeaturesClientConfig } from '../../client-config/bingo-modular-configuration-features-client.config';\nimport { BingoTournamentsClientConfig } from '../../client-config/bingo-tournaments-clients.config';\nimport { BingoConfig } from '../../client-config/bingo.config';\nimport { CacheSettingsClientConfig } from '../../client-config/cache-settings-client.config';\nimport { CasinoClientConfig } from '../../client-config/casino-client.config';\nimport { FeaturesClientConfig } from '../../client-config/features-client.config';\nimport { JackpotDataClientConfig } from '../../client-config/jackpot-data-client.config';\nimport { ModularCasinoClientConfig } from '../../client-config/modular-casino-client.config';\nimport { PlayingNowClientConfig } from '../../client-config/playing-now-client.config';\nimport { PrebuyOptimizationClientConfig } from '../../client-config/prebuy-optimization-client.config';\nimport { ScreenNameClientConfig } from '../../client-config/screen-name-client.config';\nimport { SingleEntryPointClientConfig } from '../../client-config/single-entry-point-client.config';\nimport { SuperLinksClientConfig } from '../../client-config/super-links-client.config';\nimport { TagManagerClientConfig } from '../../client-config/tag-manager-client.config';\nimport { TeaserClientConfig } from '../../client-config/teaser-client.config';\nimport { ThunderBiteClientConfig } from '../../client-config/thunder-bite-client.config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BingoConfigProviderService {\n bingoApiPathsClientConfig: BingoApiPathsClientConfig;\n bingoConfig: BingoConfig;\n bingoTournamentsClientConfig: BingoTournamentsClientConfig;\n cacheSettingsClientConfig: CacheSettingsClientConfig;\n casinoClientConfig: CasinoClientConfig;\n featuresClientConfig: FeaturesClientConfig;\n jackpotDataClientConfig: JackpotDataClientConfig;\n modularCasinoClientConfig: ModularCasinoClientConfig;\n playingNowClientConfig: PlayingNowClientConfig;\n prebuyOptimizationClientConfig: PrebuyOptimizationClientConfig;\n screenNameClientConfig: ScreenNameClientConfig;\n singleEntryPointClientConfig: SingleEntryPointClientConfig;\n superLinksClientConfig: SuperLinksClientConfig;\n tagManagerClientConfig: TagManagerClientConfig;\n teaserClientConfig: TeaserClientConfig;\n thunderBiteClientConfig: ThunderBiteClientConfig;\n bingoClientConfigLoadedSubject = new BehaviorSubject(false);\n //Subscribe to this observable to get the status of the bingo client config\n bingoClientConfigObservable: Observable = this.bingoClientConfigLoadedSubject.asObservable();\n bingoModularConfigurationClientConfig: BingoModularConfigurationClientConfig;\n bingoModularConfigurationFeaturesClientConfig: BingoModularConfigurationFeaturesClientConfig;\n constructor(\n private urlUtility: BingoUrlUtilityService,\n private clientConfigService: ClientConfigService,\n private httpClient: HttpClient,\n private page: Page,\n ) {}\n\n initiateBingo(isDll: boolean) {\n this.fillClientConfig(isDll);\n }\n\n fillClientConfig(isDll: boolean) {\n if (isDll) {\n this.bingoApiPathsClientConfig = this.clientConfigService.get(BingoApiPathsClientConfig);\n this.bingoConfig = this.clientConfigService.get(BingoConfig);\n this.bingoTournamentsClientConfig = this.clientConfigService.get(BingoTournamentsClientConfig);\n this.cacheSettingsClientConfig = this.clientConfigService.get(CacheSettingsClientConfig);\n this.casinoClientConfig = this.clientConfigService.get(CasinoClientConfig);\n this.featuresClientConfig = this.clientConfigService.get(FeaturesClientConfig);\n this.jackpotDataClientConfig = this.clientConfigService.get(JackpotDataClientConfig);\n this.modularCasinoClientConfig = this.clientConfigService.get(ModularCasinoClientConfig);\n this.bingoModularConfigurationClientConfig = this.clientConfigService.get(BingoModularConfigurationClientConfig);\n this.bingoModularConfigurationFeaturesClientConfig = this.clientConfigService.get(BingoModularConfigurationFeaturesClientConfig);\n this.playingNowClientConfig = this.clientConfigService.get(PlayingNowClientConfig);\n this.prebuyOptimizationClientConfig = this.clientConfigService.get(PrebuyOptimizationClientConfig);\n this.screenNameClientConfig = this.clientConfigService.get(ScreenNameClientConfig);\n this.singleEntryPointClientConfig = this.clientConfigService.get(SingleEntryPointClientConfig);\n this.superLinksClientConfig = this.clientConfigService.get(SuperLinksClientConfig);\n this.tagManagerClientConfig = this.clientConfigService.get(TagManagerClientConfig);\n this.teaserClientConfig = this.clientConfigService.get(TeaserClientConfig);\n this.thunderBiteClientConfig = this.clientConfigService.get(ThunderBiteClientConfig);\n this.setClientConfigLoadedObservable();\n } else {\n const apiurl: string = this.urlUtility.getClientConfigUrl();\n const options: any = { headers: {} };\n if (options && options.headers) {\n options.headers['Cache-Control'] = 'no-cache';\n options.headers['Pragma'] = 'no-cache';\n options.headers['Expires'] = '0';\n options.headers['x-bwin-bingo-api'] = this.page.environment;\n options.withCredentials = true;\n }\n this.httpClient.get(apiurl, options).subscribe((response: any) => {\n if (response) {\n this.bingoApiPathsClientConfig = response.bgApiPathsConfig;\n this.bingoConfig = response.bgConfig;\n this.bingoTournamentsClientConfig = response.bgBingoTournaments;\n this.cacheSettingsClientConfig = response.bgCacheSettingsConfig;\n this.featuresClientConfig = response.bgFeatureConfig;\n this.bingoModularConfigurationClientConfig = response.bgBingoModularConfiguration;\n this.bingoModularConfigurationFeaturesClientConfig = response.bgBingoModularConfigurationFeatures;\n this.playingNowClientConfig = response.bgPlayingNowConfig;\n this.prebuyOptimizationClientConfig = response.bgPrebuyOptimizationConfig;\n this.screenNameClientConfig = response.bgScreenName;\n this.singleEntryPointClientConfig = response.bgSingleEntryPoint;\n this.superLinksClientConfig = response.bgSuperLinks;\n this.casinoClientConfig = response.bgCasinoConfig;\n this.jackpotDataClientConfig = response.bgJackpotData;\n this.modularCasinoClientConfig = response.bgModularCasinoConfig;\n this.tagManagerClientConfig = response.bgTagManagerConfig;\n this.teaserClientConfig = response.bgTeaser;\n this.thunderBiteClientConfig = response.bgThunderBiteConfig;\n this.setClientConfigLoadedObservable();\n }\n });\n }\n }\n\n setClientConfigLoadedObservable() {\n this.bingoClientConfigLoadedSubject.next(true);\n }\n\n // provideBingoPageClientConfig() {\n // if(this.bingoPageClientConfig == undefined)\n // this.initiateBingo(true);\n // return this.bingoPageClientConfig;\n // }\n\n provideBingoConfig() {\n return this.bingoConfig;\n }\n\n provideBingoTournamentsClientConfig() {\n return this.bingoTournamentsClientConfig;\n }\n\n provideCacheSettingsClientConfig() {\n return this.cacheSettingsClientConfig;\n }\n\n provideCasinoClientConfig() {\n return this.casinoClientConfig;\n }\n\n provideFeaturesConfig() {\n // if(this.bingoPageClientConfig == undefined)\n // this.initiateBingo(true);\n return this.featuresClientConfig;\n }\n\n provideJackpotDataClientConfig() {\n return this.jackpotDataClientConfig;\n }\n\n provideModularCasinoClientConfig() {\n // if(this.bingoPageClientConfig == undefined)\n // this.initiateBingo(true);\n return this.modularCasinoClientConfig;\n }\n\n providePlayingNowClientConfig() {\n return this.playingNowClientConfig;\n }\n\n providePrebuyOptimizationClientConfig() {\n return this.prebuyOptimizationClientConfig;\n }\n\n provideScreenNameClientConfig() {\n return this.screenNameClientConfig;\n }\n\n provideSingleEntryPointClientConfig() {\n return this.singleEntryPointClientConfig;\n }\n\n provideSuperLinksClientConfig() {\n return this.superLinksClientConfig;\n }\n\n provideTagManagerClientConfig() {\n return this.tagManagerClientConfig;\n }\n\n provideTeaserClientConfig() {\n return this.teaserClientConfig;\n }\n\n provideThunderBiteClientConfig() {\n return this.thunderBiteClientConfig;\n }\n\n provideApiPathsConfig() {\n return this.bingoApiPathsClientConfig;\n }\n\n provideBingoModularConfigurationClientConfig() {\n return this.bingoModularConfigurationClientConfig;\n }\n\n provideBingoModularConfigurationFeaturesClientConfig() {\n return this.bingoModularConfigurationFeaturesClientConfig;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiBase, ApiServiceFactory, ClientConfigProductName, ProductService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n useFactory: apiServiceFactory,\n deps: [ApiServiceFactory, ProductService],\n})\nexport class BingoPlatformApiService extends ApiBase {}\n\nexport function apiServiceFactory(apiServiceFactory: ApiServiceFactory, productService: ProductService) {\n return apiServiceFactory.createForProduct(BingoPlatformApiService, {\n product: ClientConfigProductName.BINGO,\n area: 'bingo',\n forwardProductApiRequestHeader: productService.getMetadata(ClientConfigProductName.BINGO).isEnabledProductApi,\n });\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { BingoPlatformApiService } from '../../bingo-platform-api/services/bingo-platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TicketsResourceService {\n constructor(private api: BingoPlatformApiService) {}\n\n buyTickets(body: any): Observable {\n return this.api.post('prebuy', body);\n }\n\n getPrebuyData(selectedRoomId: number, from_time: number, end_time: number): Observable {\n return this.api.get('prebuy' + '?rooms=' + selectedRoomId + '&start_time=' + from_time + '&end_time=' + end_time);\n }\n\n getPrebuyDataforConfigTime(roomIds: number[], from_time: number, end_time: number): Observable {\n return this.api.get('prebuy', { rooms: roomIds, start_time: from_time, end_time: end_time });\n }\n\n getPrebuyDateData(Ids: any, gameTypeId: string, allRoomsData: boolean): Observable {\n return this.api.get('PrebuyScheduleDates' + '?rooms=' + Ids + '&gameTypeId=' + gameTypeId + '&allRoomsData=' + allRoomsData);\n }\n\n getPreBuyBonusInfo(Id: any, gameTypeId: string): Observable {\n return this.api.get('PrebuyBonusInfo' + '?id=' + Id + '&gameTypeId=' + gameTypeId);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SessionStoreService, UserService } from '@frontend/vanilla/core';\nimport * as __ from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { BingoConfigProviderService } from '../../bingo-config-provider/services/bingo-config-provider.service';\nimport { BingoPlatformApiService } from '../../bingo-platform-api/services/bingo-platform-api.service';\nimport { BingoConfig } from '../../client-config/bingo.config';\nimport { CacheSettingsClientConfig } from '../../client-config/cache-settings-client.config';\nimport { FeaturesClientConfig } from '../../client-config/features-client.config';\nimport { SingleEntryPointClientConfig } from '../../client-config/single-entry-point-client.config';\nimport { SuperLinksClientConfig } from '../../client-config/super-links-client.config';\nimport { TicketsResourceService } from '../../my-tickets/services/tickets-resource.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScheduleService {\n gameData: any;\n toBeRemoved: any;\n PlayerSegmentData: {};\n globalClientConfig: any;\n UserFreeTickets: any;\n playerSegmentionSubject = new BehaviorSubject(null);\n UserFreeTicketsSubject = new BehaviorSubject(null);\n iscozyUserSubject = new BehaviorSubject(false);\n scheduleDataSubject = new BehaviorSubject(null);\n lockedRoomIdsArray: number[] = [];\n locationFilterIdsArray: number[] = [];\n scheduleData: any;\n insuranceRoomIds: number[] = [];\n clientConfig: any = JSON.parse(localStorage.getItem('config') || '');\n\n playerSegmentDataObservable: Observable = this.playerSegmentionSubject.asObservable();\n UserFreeTicketsDataObservable: Observable = this.UserFreeTicketsSubject.asObservable();\n scheduleDataObservable: Observable = this.scheduleDataSubject.asObservable();\n differentVariantTypeOfRooms: any = [];\n\n isCozyUserObservable: Observable = this.iscozyUserSubject.asObservable();\n public dataSubject = new Subject();\n public dataSubjectval = new Subject();\n public dataSubjectslider = new Subject();\n\n constructor(\n private api: BingoPlatformApiService,\n private bingoConfigProviderService: BingoConfigProviderService,\n private user: UserService,\n private session: SessionStoreService,\n private ticketsResource: TicketsResourceService,\n ) {}\n checkforscheduleData() {\n return this.scheduleData && this.scheduleData.length > 0;\n }\n\n getFeatureTypesbyRoomId(roomId: any) {\n for (let i = 0; i < this.scheduleData.length; i++) {\n if (this.scheduleData[i].id == roomId && !this.scheduleData[i].isHidden) {\n return this.scheduleData[i];\n }\n }\n }\n getFeaturebyRoomId(roomId: any) {\n for (let i = 0; i < this.scheduleData.length; i++) {\n if (this.scheduleData[i].id == roomId) {\n return this.scheduleData[i];\n }\n }\n }\n getRoomsbyRoomId(roomId: any) {\n const room = this.getFeatureTypesbyRoomId(roomId);\n const roomIdsArray: any = [];\n if (room?.isCombinedRoom || room?.isHidden) {\n for (let i = 0; i < this.scheduleData.length; i++) {\n if (this.scheduleData[i].bingo_variant == room?.bingo_variant) {\n roomIdsArray.push(this.scheduleData[i].id);\n }\n }\n }\n return roomIdsArray;\n }\n getroomIdsData() {\n const bingoConfig: BingoConfig = this.bingoConfigProviderService.provideBingoConfig();\n const hiddenGameList = bingoConfig?.hiddenGames?.Id;\n return this.scheduleData.reduce((ids: any, game: any) => {\n if (!ids.includes(game.id) && !game.isHidden && game.prebuy_enabled && hiddenGameList.indexOf(game.id) < 0) {\n ids.push(game.id);\n }\n return ids;\n }, []);\n }\n getGameData(callback: any) {\n const bingoConfig: BingoConfig = this.bingoConfigProviderService.provideBingoConfig();\n this.toBeRemoved = [];\n if (bingoConfig.enableSchedulePostMethod) {\n this.api.post('schedulePost').subscribe((response) => {\n if (response && response.result && response.result.games_list) {\n this.initializeScheduleFeatures(response);\n }\n return callback(response);\n });\n } else {\n this.api.get('schedule').subscribe((response) => {\n if (response && response.result && response.result.games_list) {\n this.initializeScheduleFeatures(response);\n }\n return callback(response);\n });\n }\n }\n initializeScheduleFeatures(response: any) {\n const bingoConfig: BingoConfig = this.bingoConfigProviderService.provideBingoConfig();\n const singleEntryPointConfig: SingleEntryPointClientConfig = this.bingoConfigProviderService.provideSingleEntryPointClientConfig();\n const superLinksConfig: SuperLinksClientConfig = this.bingoConfigProviderService.provideSuperLinksClientConfig();\n const hiddenGameList = bingoConfig?.hiddenGames?.Id;\n //let nonGroupRooms: any[]=[];\n let roomsDataFromDynacon: any[] = [];\n let roomNamesFromDynacon: string[] = [];\n let parentIdsFromDynacon: string[] = [];\n this.emitScheduleData(response.result.games_list);\n this.differentVariantTypeOfRooms = [];\n const parentDataFromDynacon: any = superLinksConfig.superLinksData;\n const parentDataFromSitecore: any = this.clientConfig?.superLinksSitecoreData;\n if (superLinksConfig.enableSuperLinks && parentDataFromDynacon && parentDataFromDynacon.length > 0) {\n parentDataFromDynacon.forEach((parent: any) => {\n parentIdsFromDynacon.push(parent?.parentId);\n });\n }\n if (singleEntryPointConfig.enableRoomsGrouping && singleEntryPointConfig.enableGroupingForMultiVariants) {\n roomsDataFromDynacon = singleEntryPointConfig.groupingRoomsData;\n if (roomsDataFromDynacon.length > 0) {\n roomsDataFromDynacon.forEach((singleRoom: any) => {\n roomNamesFromDynacon.push(singleRoom?.variantName);\n });\n }\n }\n if (singleEntryPointConfig.enableRoomsGrouping && !singleEntryPointConfig.enableGroupingForMultiVariants) {\n roomNamesFromDynacon = ['bingobeats'];\n roomsDataFromDynacon = [{ variantName: 'bingobeats' }];\n }\n response.result.games_list.forEach((item: any) => {\n // by default all rooms are non grouped\n item.isCombinedRoom = false;\n if (hiddenGameList?.indexOf(item.id) != -1) {\n this.toBeRemoved.push(item);\n } else {\n if (this.user.isAuthenticated && response.result.favouriteRooms != undefined) {\n item.isFavourite = response.result.favouriteRooms.indexOf(item.id) >= 0;\n }\n item.feedname = item.name;\n item.name = this.getGameNameFromMappings(item.id, item.name);\n\n if (item.insurance) {\n this.insuranceRoomIds.push(Number(item.id));\n }\n }\n if (\n (singleEntryPointConfig.enableRoomsGrouping || singleEntryPointConfig.enableGroupingForMultiVariants) &&\n roomNamesFromDynacon.includes(item?.bingo_variant)\n ) {\n roomsDataFromDynacon.forEach((singleRoom: any) => {\n if (singleRoom.variantName == item?.bingo_variant) {\n item.isHidden = true;\n item.combinedFeatureType = item.bingo_variant;\n this.differentVariantTypeOfRooms.push(item);\n }\n });\n }\n if (\n superLinksConfig.enableSuperLinks &&\n parentIdsFromDynacon?.length > 0 &&\n (parentIdsFromDynacon.includes(item.superLink?.parentRoomId) || (parentIdsFromDynacon.includes(item.id) && item.superLink))\n ) {\n parentDataFromDynacon.forEach((parent: any) => {\n if (parent.parentId == item.superLink?.parentRoomId || parent.parentId == item.id) {\n const superLinksData = parentDataFromSitecore[parent.sitecoreFolder];\n if (superLinksData.length > 0) {\n superLinksData.forEach((data: any) => {\n if (item.id == data.childId) {\n item.isSuperLink = true;\n item.roomImage = data.roomImage?.src;\n item.bgImage = data.backgroundImage?.src;\n item.childPlayDescription = data.childGameplayDescription;\n }\n });\n }\n }\n });\n }\n });\n //response.result.games_list=[];\n //response.result.games_list=nonGroupRooms;\n if (this.differentVariantTypeOfRooms.length > 0) {\n this.getConfigDataFromLocalstorage();\n let similarVariantTypeOfRooms: any[];\n //let groupedVariantRoomsArray: any[];\n //groupedVariantRoomsArray = [];\n\n roomsDataFromDynacon.forEach((singleRoom: any) => {\n let sitecoreObject: any = {};\n if (singleEntryPointConfig.enableRoomsGrouping && singleEntryPointConfig.enableGroupingForMultiVariants) {\n sitecoreObject = this.clientConfig?.singleEntryPointData?.find(\n (data: any) => data.bingoVariantName === singleRoom.sitecoreFolder,\n );\n if (sitecoreObject) {\n sitecoreObject.variantName = singleRoom.variantName;\n sitecoreObject.hasPrize = singleRoom.hasPrize;\n sitecoreObject.hasPrice = singleRoom.hasPrice;\n sitecoreObject.combinedFeature = singleRoom.combinedFeature;\n }\n } else {\n sitecoreObject = {\n combinedRoomName: this.globalClientConfig.messages?.CombinedRoomName,\n bingoVariantName: 'bingobeats',\n preBuyBonusId: this.globalClientConfig.messages?.PreBuyBonusId,\n variantName: 'bingobeats',\n hasPrize: true,\n hasPrice: true,\n combinedFeature: 'multi_price',\n };\n }\n similarVariantTypeOfRooms = [];\n this.differentVariantTypeOfRooms.forEach((item: any) => {\n if (singleRoom.variantName == item?.bingo_variant) {\n similarVariantTypeOfRooms.push(item);\n }\n });\n //groupedVariantRoomsArray.push(similarVariantTypeOfRooms);\n if (sitecoreObject && similarVariantTypeOfRooms && similarVariantTypeOfRooms.length > 0) {\n const combinedRoomExists = response.result.games_list?.find((x: any) => x.name == sitecoreObject?.combinedRoomName);\n\n if (!combinedRoomExists) {\n response.result.games_list.push(this.createCombinedRoom(similarVariantTypeOfRooms, sitecoreObject));\n }\n }\n });\n }\n this.scheduleData = response.result.games_list;\n this.toBeRemoved.forEach((item: any) => {\n const index = response.result.games_list.indexOf(item);\n if (index > -1) response.result.games_list.splice(index, 1);\n });\n // if (this.insuranceRoomIds && this.insuranceRoomIds.length > 0) {\n // this.insuranceRoomIds.forEach((item: any) => {\n // let index = response.result.games_list.indexOf(item);\n // if (index > 0) {\n // response.result.games_list.splice(index, 1);\n // response.result.games_list.push(item);\n // }\n // });\n // }\n this.session.set('ScheduleFeed', response);\n }\n getConfigDataFromLocalstorage() {\n if (!this.globalClientConfig && localStorage.getItem('config')) {\n const globalConfig = JSON.parse(localStorage.getItem('config') || '');\n this.globalClientConfig = globalConfig.global;\n }\n }\n createCombinedRoom(newCombinedRooms: any, sitecoreData: any) {\n // considered 1 item from the combinedRooms for its schema\n let combinedRoom: any;\n const combinedRooms = __.cloneDeep(newCombinedRooms);\n if (sitecoreData.preBuyBonusId) {\n const siteCoreRooms = combinedRooms.filter((x: any) => x.id == sitecoreData.preBuyBonusId);\n if (siteCoreRooms.length == 0) {\n combinedRoom = this.getRandomCombinedRoom(combinedRooms);\n } else {\n combinedRoom = siteCoreRooms[0];\n }\n } else {\n combinedRoom = this.getRandomCombinedRoom(combinedRooms);\n }\n const featuresSet = new Set();\n //combinedRoom.id=this.globalClientConfig.messages?.PreBuyBonusId ? this.globalClientConfig.messages?.PreBuyBonusId : combinedRoom.id;\n combinedRoom.isFavourite = false;\n combinedRoom.isCombinedRoom = true;\n combinedRoom.isHidden = false;\n combinedRoom.gameCount = combinedRooms.length;\n combinedRoom.number_of_players = 0;\n combinedRoom.name = sitecoreData?.combinedRoomName;\n combinedRoom.combinedRoomPrebuyId = sitecoreData?.preBuyBonusId;\n combinedRoom.combinedVariantName = sitecoreData?.bingoVariantName;\n combinedRoom.combinedFeatureType = sitecoreData?.variantName;\n combinedRoom.roomImage = sitecoreData.roomImage?.src;\n combinedRoom.combinedRoomHasPrize = sitecoreData?.hasPrize;\n combinedRoom.combinedRoomHasPrice = sitecoreData?.hasPrice;\n combinedRoom.combinedRoomFeature = sitecoreData?.combinedFeature;\n combinedRoom.sit_n_go_enabled = false;\n combinedRooms?.forEach((element: any) => {\n // If any of the combined room is favorite then the grouped room is also favorite\n if (element?.isFavourite) combinedRoom.isFavourite = true;\n // If any of the combined room is sitngo then the grouped room is also sitngo\n if (element?.sit_n_go_enabled) combinedRoom.sit_n_go_enabled = true;\n // player count of combined room is summataion of all rooms players count\n combinedRoom.number_of_players += element.number_of_players;\n // clubbing all feature icons and assigning to this room\n element.features?.forEach((ele: any) => {\n featuresSet.add(ele);\n });\n });\n if (featuresSet && featuresSet.size > 0) combinedRoom.features = Array.from(featuresSet);\n //combinedRoom.status.state_end_time=\n return combinedRoom;\n }\n\n getRandomCombinedRoom(combinedRooms: any) {\n // sort to get minimum time start time\n let combinedRoom: any;\n const roomsWaiting = combinedRooms.filter((x: any) => x.status.state_end_time != null || x.status.state_end_time != undefined);\n if (roomsWaiting?.length > 0) {\n combinedRoom = __.cloneDeep(roomsWaiting?.sort((a: any, b: any) => (a.status.state_end_time > b.status.state_end_time ? 1 : -1))[0]);\n } else {\n combinedRoom = __.cloneDeep(combinedRooms[0]);\n }\n return combinedRoom;\n }\n\n getGameNameFromMappings(id: any, name: string): string {\n const bingoPage: any = this.clientConfig?.pageConfig?.value;\n const bingoGameMappings = bingoPage['bingoGameMappings'];\n return bingoGameMappings[id] == null || bingoGameMappings[id] == undefined ? name : bingoGameMappings[id];\n }\n\n setPlayerSegmentationData() {\n const features: FeaturesClientConfig = this.bingoConfigProviderService.provideFeaturesConfig();\n if (this.user.isAuthenticated && features.enableOptimove) {\n this.api.get('PosContent', {}, { withCredentials: true }).subscribe((response) => {\n this.PlayerSegmentData = response;\n this.playerSegmentionSubject.next(response);\n });\n }\n }\n // setUserFreeBingoTickets() {\n // if (this.user.isAuthenticated && this.features.enableFreeBingoTickets)\n // this.api\n // .get('WalletBalance', {}, { withCredentials: true })\n // .subscribe((response) => {\n // this.UserFreeTickets = response;\n // this.UserFreeTicketsSubject.next(response);\n // });\n // }\n getPlayerSegmentationData() {\n return this.UserFreeTickets;\n }\n storeLockedRooms(roomId: any) {\n this.lockedRoomIdsArray.push(roomId);\n this.lockedRoomIdsArray = this.lockedRoomIdsArray.filter((v, i, a) => a.indexOf(v) === i);\n }\n getLockedRooms(): any {\n return this.lockedRoomIdsArray;\n }\n\n getInsuranceRoomIds() {\n return this.insuranceRoomIds;\n }\n setlocationFilterRooms(roomId: any) {\n this.locationFilterIdsArray.push(roomId);\n this.locationFilterIdsArray = this.locationFilterIdsArray.filter((v, i, a) => a.indexOf(v) === i);\n }\n getlocationFilterRooms() {\n return this.locationFilterIdsArray;\n }\n segmentationRules(bgRoom: any, playerValueSegment: any) {\n const str = bgRoom.values;\n const attribute: string = bgRoom.attributes;\n if (str && attribute) {\n if (str.startsWith('>')) {\n const value = Number(str.substring(1));\n if (playerValueSegment[attribute] > value) {\n return true;\n }\n return false;\n } else if (str.startsWith('<')) {\n const value = Number(str.substring(1));\n if (playerValueSegment[attribute] < value) {\n return true;\n }\n return false;\n } else if (str.match('-?[0-9]+,-?[0-9]+')) {\n const array: string[] = str.split(',');\n for (let i = 0; i < array.length; i++) {\n if (Number(array[i]) === Number(playerValueSegment[attribute])) {\n return true;\n }\n }\n return false;\n } else if (str.match('-?[0-9]+--?[0-9]+')) {\n const array: string[] = str.split('-');\n const num = Number(playerValueSegment[attribute]);\n if (num > Number(array[0]) && num < Number(array[1])) {\n return true;\n }\n return false;\n } else {\n if (String(playerValueSegment[attribute]) === str) {\n return true;\n }\n return false;\n }\n }\n return true;\n }\n setIsCozyUser(value: boolean) {\n this.iscozyUserSubject.next(value);\n }\n triggerPreBuyDatesData() {\n const cacheSettingsConfig: CacheSettingsClientConfig = this.bingoConfigProviderService.provideCacheSettingsClientConfig();\n const Ids = this.getroomIdsData().reduce((ids: String, ele: any) => {\n ids = ids.length > 0 ? ids + ',' + ele.toString() : ele.toString();\n return ids;\n }, '');\n this.ticketsResource.getPrebuyDateData(Ids, '', true).subscribe((response) => {\n if (response && cacheSettingsConfig.preBuy.enableSessionStorage) {\n sessionStorage.setItem('PrebuyScheduleDates', JSON.stringify(response));\n }\n });\n }\n emitScheduleData(games_list: any) {\n this.scheduleDataSubject.next(games_list);\n }\n\n sendPopupData(data: any) {\n this.dataSubject.next(data);\n }\n sendLocalData(data: any) {\n this.dataSubjectval.next(data);\n }\n sendSliderData(data: any) {\n this.dataSubjectslider.next(data);\n }\n}\n","/**\n * @license Angular v18.2.6\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise, ɵisSubscribable, ɵRuntimeError, Self, computed, signal, untracked, EventEmitter, Input, Host, SkipSelf, booleanAttribute, ChangeDetectorRef, Output, Injectable, inject, NgModule, Version } from '@angular/core';\nimport { ɵgetDOM } from '@angular/common';\nimport { from, forkJoin, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * Base class for all ControlValueAccessor classes defined in Forms package.\n * Contains common logic and utility functions.\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nlet BaseControlValueAccessor = /*#__PURE__*/(() => {\n class BaseControlValueAccessor {\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * The registered callback function called when a change or input event occurs on the input\n * element.\n * @nodoc\n */\n this.onChange = _ => {};\n /**\n * The registered callback function called when a blur event occurs on the input element.\n * @nodoc\n */\n this.onTouched = () => {};\n }\n /**\n * Helper method that sets a property on a target element using the current Renderer\n * implementation.\n * @nodoc\n */\n setProperty(key, value) {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n /**\n * Registers a function called when the control is touched.\n * @nodoc\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Sets the \"disabled\" property on the range input element.\n * @nodoc\n */\n setDisabledState(isDisabled) {\n this.setProperty('disabled', isDisabled);\n }\n static {\n this.ɵfac = function BaseControlValueAccessor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BaseControlValueAccessor)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BaseControlValueAccessor\n });\n }\n }\n return BaseControlValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is\n * used in case no other CVAs can be found). We use this class to distinguish between default CVA,\n * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom\n * ones with higher priority (when both built-in and custom CVAs are present).\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nlet BuiltInControlValueAccessor = /*#__PURE__*/(() => {\n class BuiltInControlValueAccessor extends BaseControlValueAccessor {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵBuiltInControlValueAccessor_BaseFactory;\n return function BuiltInControlValueAccessor_Factory(__ngFactoryType__) {\n return (ɵBuiltInControlValueAccessor_BaseFactory || (ɵBuiltInControlValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(BuiltInControlValueAccessor)))(__ngFactoryType__ || BuiltInControlValueAccessor);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BuiltInControlValueAccessor,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return BuiltInControlValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Used to provide a `ControlValueAccessor` for form controls.\n *\n * See `DefaultValueAccessor` for how to implement one.\n *\n * @publicApi\n */\nconst NG_VALUE_ACCESSOR = /*#__PURE__*/new InjectionToken(ngDevMode ? 'NgValueAccessor' : '');\nconst CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => CheckboxControlValueAccessor),\n multi: true\n};\n/**\n * @description\n * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input\n * element.\n *\n * @usageNotes\n *\n * ### Using a checkbox with a reactive form.\n *\n * The following example shows how to use a checkbox with a reactive form.\n *\n * ```ts\n * const rememberLoginControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet CheckboxControlValueAccessor = /*#__PURE__*/(() => {\n class CheckboxControlValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"checked\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this.setProperty('checked', value);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵCheckboxControlValueAccessor_BaseFactory;\n return function CheckboxControlValueAccessor_Factory(__ngFactoryType__) {\n return (ɵCheckboxControlValueAccessor_BaseFactory || (ɵCheckboxControlValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(CheckboxControlValueAccessor)))(__ngFactoryType__ || CheckboxControlValueAccessor);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CheckboxControlValueAccessor,\n selectors: [[\"input\", \"type\", \"checkbox\", \"formControlName\", \"\"], [\"input\", \"type\", \"checkbox\", \"formControl\", \"\"], [\"input\", \"type\", \"checkbox\", \"ngModel\", \"\"]],\n hostBindings: function CheckboxControlValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function CheckboxControlValueAccessor_change_HostBindingHandler($event) {\n return ctx.onChange($event.target.checked);\n })(\"blur\", function CheckboxControlValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([CHECKBOX_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return CheckboxControlValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => DefaultValueAccessor),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n const userAgent = ɵgetDOM() ? ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\n/**\n * @description\n * Provide this token to control if form directives buffer IME input until\n * the \"compositionend\" event occurs.\n * @publicApi\n */\nconst COMPOSITION_BUFFER_MODE = /*#__PURE__*/new InjectionToken(ngDevMode ? 'CompositionEventMode' : '');\n/**\n * The default `ControlValueAccessor` for writing a value and listening to changes on input\n * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n *\n * @usageNotes\n *\n * ### Using the default value accessor\n *\n * The following example shows how to use an input element that activates the default value accessor\n * (in this case, a text field).\n *\n * ```ts\n * const firstNameControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * This value accessor is used by default for `` and `