{"version":3,"file":"chunk-cc8qy3iq.js","sources":["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/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","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/shared/swiper-core.mjs","node_modules/swiper/modules/virtual.mjs","node_modules/swiper/modules/mousewheel.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/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","packages/vanilla/lib/shared/swiper/src/swiper.html","packages/vanilla/lib/shared/swiper/src/swiper.component.ts","packages/vanilla/lib/features/icons/src/icons.client-config.ts","packages/vanilla/lib/features/icons/src/icon-fast.service.ts","packages/vanilla/lib/features/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","packages/vanilla/lib/shared/current-session/src/current-session.client-config.ts","node_modules/@angular/forms/fesm2022/forms.mjs","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/trust-as-resource-url.pipe.ts","packages/vanilla/lib/shared/browser/src/iframe.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","node_modules/dexie/dist/dexie.js","packages/casino/platform-lib/core/client-config/abtesting-config.ts","packages/casino/platform-lib/core/client-config/advance-game-data.config.ts","packages/casino/platform-lib/core/client-config/api-paths.config.ts","packages/casino/platform-lib/core/client-config/arcadelobby-config.ts","packages/casino/platform-lib/core/client-config/betmgmoriginals-config.ts","packages/casino/platform-lib/core/client-config/casino-config.config.ts","packages/casino/platform-lib/core/client-config/casino-overlay.config.ts","packages/casino/platform-lib/core/client-config/clientside-config.ts","packages/casino/platform-lib/core/client-config/common.config.ts","packages/casino/platform-lib/core/client-config/cozy-bingo.config.ts","packages/casino/platform-lib/core/client-config/dev-settings.config.ts","packages/casino/platform-lib/core/client-config/discover-feed.config.ts","packages/casino/platform-lib/core/client-config/download-app-from-device.config.ts","packages/casino/platform-lib/core/client-config/features.config.ts","packages/casino/platform-lib/core/client-config/feed-cache.config.ts","packages/casino/platform-lib/core/client-config/freespins.config.ts","packages/casino/platform-lib/core/client-config/game-launch-tracking.config.ts","packages/casino/platform-lib/core/client-config/game-premiere.config.ts","packages/casino/platform-lib/core/client-config/game-selector-widget.config.ts","packages/casino/platform-lib/core/client-config/game-show-hub.config.ts","packages/casino/platform-lib/core/client-config/game.config.ts","packages/casino/platform-lib/core/client-config/gameimpressions-config.ts","packages/casino/platform-lib/core/client-config/gamification-widget-config.ts","packages/casino/platform-lib/core/client-config/gaming-stories-config.ts","packages/casino/platform-lib/core/client-config/gaming-stories-phase2-config.ts","packages/casino/platform-lib/core/client-config/geo-location.config.ts","packages/casino/platform-lib/core/client-config/global-jackpot.config.ts","packages/casino/platform-lib/core/client-config/global-search.config.ts","packages/casino/platform-lib/core/client-config/global.config.ts","packages/casino/platform-lib/core/client-config/header-teaser.config.ts","packages/casino/platform-lib/core/client-config/image-load-optimization.config.ts","packages/casino/platform-lib/core/client-config/immersive-lobby.config.ts","packages/casino/platform-lib/core/client-config/jackpot-data.config.ts","packages/casino/platform-lib/core/client-config/live-casino-lounge.config.ts","packages/casino/platform-lib/core/client-config/live-dealer.config.ts","packages/casino/platform-lib/core/client-config/livecasino-config.ts","packages/casino/platform-lib/core/client-config/lmt-data.config.ts","packages/casino/platform-lib/core/client-config/mc-page.config.ts","packages/casino/platform-lib/core/client-config/minbetgames-config.ts","packages/casino/platform-lib/core/client-config/modular-bingo.config.ts","packages/casino/platform-lib/core/client-config/modular-settings.config.ts","packages/casino/platform-lib/core/client-config/modularization-config.ts","packages/casino/platform-lib/core/client-config/native-game-launch.config.ts","packages/casino/platform-lib/core/client-config/news-feed.config.ts","packages/casino/platform-lib/core/client-config/noncritical-config.ts","packages/casino/platform-lib/core/client-config/optimized-teaser.config.ts","packages/casino/platform-lib/core/client-config/player-stats-config.ts","packages/casino/platform-lib/core/client-config/pre-login.config.ts","packages/casino/platform-lib/core/client-config/promo-coin-economy-config.ts","packages/casino/platform-lib/core/client-config/promo-offer-widget-config.ts","packages/casino/platform-lib/core/client-config/promoted-games.config.ts","packages/casino/platform-lib/core/client-config/promotions-banner.config.ts","packages/casino/platform-lib/core/client-config/promotions-info.config.ts","packages/casino/platform-lib/core/client-config/quick-info.config.ts","packages/casino/platform-lib/core/client-config/recent-winners-config.ts","packages/casino/platform-lib/core/client-config/recentlyplayed-games.config.ts","packages/casino/platform-lib/core/client-config/search.config.ts","packages/casino/platform-lib/core/client-config/slot-races.config.ts","packages/casino/platform-lib/core/client-config/smart-lobby.config.ts","packages/casino/platform-lib/core/client-config/sub-nav.config.ts","packages/casino/platform-lib/core/client-config/super-button.config.ts","packages/casino/platform-lib/core/client-config/thumbnailconfig.ts","packages/casino/platform-lib/core/client-config/video-preview.config.ts","packages/casino/platform-lib/core/client-config/widget.config.ts","packages/casino/platform-lib/core/public-api.ts","packages/casino/platform-lib/core/cashier-iframe/cashier-iframe.component.ts","packages/casino/platform-lib/core/cashier-iframe/cashier-iframe.component.html","packages/casino/platform-lib/core/cashier-iframe/game-pop-out.component.ts","packages/casino/platform-lib/core/cashier-iframe/game-pop-out.component.html","packages/casino/platform-lib/core/casino-lobby-manager/lobby-details-model/lobby-item.model.ts","packages/casino/platform-lib/core/casino-lobby-manager/casino-lobby.models.ts","packages/casino/platform-lib/utils/utils.ts","packages/casino/platform-lib/core/platform-api/platform-api.service.ts","packages/casino/platform-lib/core/shared/models/common.model.ts","packages/casino/platform-lib/core/shared/models/game-show-hub.model.ts","packages/casino/platform-lib/core/shared/game-show-hub.service.ts","packages/casino/platform-lib/core/casino-lobby-manager/game-manager/game-manager.service.ts","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/containers/container-description/container-description.component.html","packages/casino/ui-lib/src/containers/container-description/container-description.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/global-jackpot/global-jackpot-cta.component.html","packages/casino/ui-lib/src/cta/global-jackpot/global-jackpot-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","node_modules/ng-lazyload-image/fesm2020/ng-lazyload-image.mjs","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/feature-container/feature-container.component.ts","packages/casino/ui-lib/src/game-tiles/top-ten/feature-container/feature-container.component.html","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","packages/casino/platform-lib/core/image-loader/image-loader.component.ts","packages/casino/platform-lib/core/image-loader/image-loader.component.html","packages/casino/platform-lib/core/shared/invoker-product.service.ts","packages/casino/platform-lib/core/shared/casino-widget.service.ts","packages/casino/platform-lib/core/shared/models/home-lobby.model.ts","packages/casino/platform-lib/core/shared/nativeapi.service.ts","packages/casino/platform-lib/core/shared/casino-manager.service.ts","packages/casino/platform-lib/core/shared/const.service.ts","packages/casino/platform-lib/core/tracking/vanilla-tracking-adapter.model.ts","packages/casino/platform-lib/core/tracking/vanilla-tracking-adapter.service.ts","packages/casino/platform-lib/core/platform-api/platform-bingo-api.service.ts","packages/casino/platform-lib/core/utilities/url-utility.service.ts","packages/casino/platform-lib/core/shared/api-paths-helper-service.ts","packages/casino/platform-lib/core/shared/bingo-favorite-service.ts","packages/casino/platform-lib/core/shared/casino-core-npm-params.service.ts","packages/casino/platform-lib/core/shared/casino-iframe-overlay.service.ts","packages/casino/platform-lib/core/shared/casino-api.service.ts","packages/casino/platform-lib/core/shared/cozybingodata.service.ts","packages/casino/platform-lib/core/shared/favourite.service.ts","packages/casino/platform-lib/core/shared/gamelaunchfactory.service.ts","packages/casino/platform-lib/core/shared/jackpotdata-service.ts","node_modules/dexie/import-wrapper.mjs","packages/casino/platform-lib/core/indexed-db/indexed-db.model.ts","packages/casino/platform-lib/core/indexed-db/indexed-db.service.ts","packages/casino/platform-lib/core/indexed-db/indexed-db-manager.service.ts","packages/casino/platform-lib/core/shared/localstorage.expirable.persistence.service.ts","packages/casino/platform-lib/core/shared/models/gameDataFromCacheResponse.model.ts","packages/casino/platform-lib/core/shared/cache-manager.service.ts","packages/casino/platform-lib/core/shared/unfinished-games-service.ts","packages/casino/platform-lib/core/game-embed/game-embed.component.html","packages/casino/platform-lib/core/game-embed/game-embed.component.ts","packages/casino/platform-lib/core/search-desktop/lazy-search-desktop.component.ts","packages/casino/platform-lib/core/shared/models/advance-game-data.model.ts","packages/casino/platform-lib/core/shared/advance-game-data.service.ts","packages/casino/platform-lib/core/shared/cashier.service.ts","packages/casino/platform-lib/core/shared/freespins-summary.service.ts","packages/casino/platform-lib/core/shared/models/game-lobby.model.ts","packages/casino/platform-lib/core/shared/game-data-manager.service.ts","packages/casino/platform-lib/core/shared/game-launch-tracking.service.ts","packages/casino/platform-lib/core/shared/jackpot.service.ts","packages/casino/platform-lib/core/shared/models/gamelaunch.model.ts","packages/casino/platform-lib/core/shared/open-login-dialog-v6.ts","packages/casino/platform-lib/core/shared/recent-games.service.ts","packages/casino/platform-lib/core/slot-races/shared/slot-races.service.ts","packages/casino/platform-lib/core/embedded-game-view/embedded-game-view.component.html","packages/casino/platform-lib/core/embedded-game-view/embedded-game-view.component.ts","packages/casino/platform-lib/core/shared/teaser.service.ts","packages/casino/platform-lib/core/embedded-game-popup/embedded-game-popup.component.html","packages/casino/platform-lib/core/embedded-game-popup/embedded-game-popup.component.ts","packages/casino/platform-lib/core/directives/globaltranslate/globaltranslate.component.ts","packages/casino/platform-lib/core/header-box/header-box.component.html","packages/casino/platform-lib/core/header-box/header-box.component.ts","packages/casino/platform-lib/core/shared/game-launch-places.service.ts","packages/casino/platform-lib/core/game-detail/game-detail-buttons/game-detail-buttons.component.html","packages/casino/platform-lib/core/game-detail/game-detail-buttons/game-detail-buttons.component.ts","packages/casino/platform-lib/core/game-detail/game-detail.component.html","packages/casino/platform-lib/core/game-detail/game-detail.component.ts","packages/casino/platform-lib/core/geolocation/services/activator.service.ts","packages/geo-coordinator-lib/permissions-manager/src/permissions-manager.component.ts","packages/geo-coordinator-lib/permissions-manager/src/permissions-manager.component.html","packages/geo-coordinator-lib/permissions-manager/src/geocoordinator-permissions-manager.service.ts","packages/casino/platform-lib/core/geolocation/services/coordinator.service.ts","packages/geo-coordinator-lib/client-stub/src/coordinator.models.ts","packages/casino/platform-lib/core/geolocation/geo-location-error/geo-location-error.html","packages/casino/platform-lib/core/geolocation/geo-location-error/geo-location-error.component.ts","packages/casino/platform-lib/core/geolocation/services/geolocation-validation.service.ts","packages/casino/platform-lib/core/directives/browser-state.directive.ts","packages/casino/platform-lib/core/shared/geolocation-tracking.service.ts","packages/casino/platform-lib/core/geolocation/installer/installer.component.html","packages/casino/platform-lib/core/geolocation/installer/installer.component.ts","packages/casino/platform-lib/core/geolocation/services/installer-dialog.service.ts","packages/casino/platform-lib/core/geolocation/services/geolocation-check.service.ts","packages/casino/platform-lib/core/shared/utility.service.ts","packages/casino/platform-lib/core/shared/cookie.service.ts","packages/casino/platform-lib/core/shared/gamelaunch-url-formation.service.ts","packages/casino/platform-lib/core/shared/globalsearch-helper.service.ts","packages/casino/platform-lib/core/shared/monitor.service.ts","packages/casino/platform-lib/core/shared/nativeapphelper.service.ts","packages/casino/platform-lib/core/shared/navigator.service.ts","packages/casino/platform-lib/core/shared/search-section.service.ts","packages/casino/platform-lib/core/shared/vc-client.service.ts","packages/casino/platform-lib/core/shared/gamelaunch.service.ts","packages/casino/platform-lib/core/shared/models/immersive-lobby.model.ts","packages/casino/platform-lib/core/shared/immersive-lobby.service.ts","packages/casino/platform-lib/core/shared/models/live-casino-lounge.model.ts","packages/casino/platform-lib/core/shared/live-casino-lounge.service.ts","packages/casino/platform-lib/core/components/casino-audio-button/casino-audio-button.component.ts","packages/casino/platform-lib/core/components/casino-audio-button/casino-audio-button.component.html","packages/casino/platform-lib/core/confirm-message/confirm-message.component.html","packages/casino/platform-lib/core/confirm-message/confirm-message.component.ts","packages/casino/platform-lib/core/directives/custom-carousel-pagination.component.ts","packages/casino/platform-lib/core/directives/draggable.directive.ts","packages/casino/platform-lib/core/directives/intersection-observer/from-intersection-observer.ts","packages/casino/platform-lib/core/directives/intersection-observer/intersection-observer.directive.ts","packages/casino/platform-lib/core/directives/long-press.directive.ts","packages/casino/platform-lib/core/directives/search-highlight-filter/search-highlight.filter.ts","packages/casino/platform-lib/core/geolocation/services/oobee-intimation-toaster.service.ts","packages/casino/platform-lib/core/gif-tag/gif-tag.component.html","packages/casino/platform-lib/core/gif-tag/gif-tag.component.ts","packages/casino/platform-lib/core/shared/time-zone.service.ts","packages/casino/platform-lib/core/lc-timer/lc-timer.component.html","packages/casino/platform-lib/core/lc-timer/lc-timer.component.ts","packages/casino/platform-lib/core/shared/arcade-lobby-tracking.service.ts","packages/casino/platform-lib/core/shared/betmgm-originals.service.ts","packages/casino/platform-lib/core/shared/bingo-vf-services/bingo-game-launch.service.ts","packages/casino/platform-lib/core/shared/category-manager.service.ts","packages/casino/platform-lib/core/shared/cozybingo-toast-message.service.ts","packages/casino/platform-lib/core/shared/discover-feed.service.ts","packages/casino/platform-lib/core/shared/ds-enabler.service.ts","packages/casino/platform-lib/core/shared/forceGameLaunchHandler.service.ts","packages/casino/platform-lib/core/shared/game-premiere.service.ts","packages/casino/platform-lib/core/shared/game-selector-widget.service.ts","packages/casino/platform-lib/core/shared/game.service.ts","packages/casino/platform-lib/core/shared/models/gaming-stories.model.ts","packages/casino/platform-lib/core/shared/gaming-stories.service.ts","packages/casino/platform-lib/core/shared/global-jackpot-constants.service.ts","packages/casino/platform-lib/core/shared/global-jackpot-mod.service.ts","packages/casino/platform-lib/core/shared/global-jackpots.service.ts","packages/casino/platform-lib/core/shared/livecasino.service.ts","packages/casino/platform-lib/core/shared/models/casino-core-npm.params.ts","packages/casino/platform-lib/core/shared/models/game-premiere.model.ts","packages/casino/platform-lib/core/shared/models/game-selector-widget.model.ts","packages/casino/platform-lib/core/shared/new-quick-info.service.ts","packages/casino/platform-lib/core/shared/news-feed-v2.service.ts","packages/casino/platform-lib/core/shared/news-feed.service.ts","packages/casino/platform-lib/core/shared/optimizedTeaser-manager.service.ts","packages/casino/platform-lib/core/shared/pipes/culture-date.pipe.ts","packages/casino/platform-lib/core/shared/pipes/currencySymbol.pipe.ts","packages/casino/platform-lib/core/shared/pipes/currencyformat.pipe.ts","packages/casino/platform-lib/core/shared/pipes/safe.pipe.ts","packages/casino/platform-lib/core/shared/pipes/sitecore-image-resize.pipe.ts","packages/casino/platform-lib/core/shared/player-stats.service.ts","packages/casino/platform-lib/core/shared/promoted-games.service.ts","packages/casino/platform-lib/core/shared/promotions-banner.service.ts","packages/casino/platform-lib/core/shared/quick-info-modal.service.ts","packages/casino/platform-lib/core/shared/recent-winners.service.ts","packages/casino/platform-lib/core/shared/sign-posting.service.ts","packages/casino/platform-lib/core/shared/smartBanner.service.ts","packages/casino/platform-lib/core/shared/super-button.service.ts","packages/casino/platform-lib/core/shared/thumbnail.service.ts","packages/casino/platform-lib/core/shared/timezone-format.pipe.ts","packages/casino/platform-lib/core/shared/windowref.service.ts","packages/casino/platform-lib/core/slot-races/shared/slot-races-tracking.service.ts","packages/casino/platform-lib/core/slot-races/shared/slot-races.models.ts","packages/casino/platform-lib/core/toaster-msg/toaster-msg.component.html","packages/casino/platform-lib/core/toaster-msg/toaster-msg.component.ts","packages/casino/platform-lib/core/casino-lobby-manager/global-search/global-search.model.ts","packages/casino/platform-lib/core/casino-lobby-manager/global-search/global-search.service.ts","packages/casino/platform-lib/core/casino-lobby-manager/casino-styles/casino-styles.service.ts","node_modules/@rx-angular/state/fesm2022/state-effects.mjs","packages/casino/platform-lib/core/casino-lobby-manager/jackpot-and-promotions/jackpot-and-promotions.service.ts","packages/casino/platform-lib/core/config-provider/config-provider.service.ts","packages/casino/platform-lib/core/casino-lobby-manager/geo-location/geo-location.model.ts","packages/casino/platform-lib/core/casino-lobby-manager/geo-location/geo-location.service.ts","packages/casino/platform-lib/core/casino-lobby-manager/casino-lobby.service.ts","packages/casino/platform-lib/core/search-desktop/search-desktop.component.ts","packages/casino/platform-lib/core/search-desktop/search-desktop.component.html"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService } from '@frontend/vanilla/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport interface CoinsBalance {\n balance: string;\n status: number;\n statusCode: number;\n statusMessage: number;\n additionalAttribs: number;\n productBalances: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GamificationService {\n isLoaded: boolean = false;\n\n private coinBalanceEvents = new ReplaySubject<CoinsBalance>(1);\n get coinBalance(): Observable<CoinsBalance> {\n return this.coinBalanceEvents;\n }\n\n constructor(private apiService: SharedFeaturesApiService) {}\n\n load() {\n this.apiService.get('gamification').subscribe((response) => {\n this.coinBalanceEvents.next(response);\n this.isLoaded = true;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OnFeatureInit, RtmsService, RtmsType, UserService } from '@frontend/vanilla/core';\nimport { filter } from 'rxjs/operators';\n\nimport { GamificationService } from './gamification.service';\n\n@Injectable()\nexport class GamificationBootstrapService implements OnFeatureInit {\n constructor(\n private gamificationService: GamificationService,\n private user: UserService,\n private rtmsService: RtmsService,\n ) {}\n\n onFeatureInit() {\n if (this.user.isAuthenticated) {\n this.gamificationService.load();\n\n this.rtmsService.messages.pipe(filter((m) => m.type == RtmsType.COIN_BAL_UPDATE_EVENT)).subscribe(() => {\n this.gamificationService.load();\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n DSL_NOT_READY,\n DslCacheService,\n DslRecordable,\n DslRecorderService,\n DslValuesProvider,\n EventsService,\n UserService,\n VanillaEventNames,\n} from '@frontend/vanilla/core';\nimport { distinctUntilChanged } from 'rxjs';\n\nimport { CoinsBalance, GamificationService } from './gamification.service';\n\n@Injectable()\nexport class GamificationDslValuesProvider implements DslValuesProvider {\n private balance: CoinsBalance | null;\n\n constructor(\n private userService: UserService,\n readonly dslCacheService: DslCacheService,\n private readonly dslRecorderService: DslRecorderService,\n private readonly gamificationService: GamificationService,\n private eventsService: EventsService,\n ) {\n this.gamificationService.coinBalance\n .pipe(distinctUntilChanged((previous, current) => previous.balance === current.balance))\n .subscribe((balance: CoinsBalance) => {\n this.balance = balance;\n dslCacheService.invalidate(['gamification']);\n this.eventsService.raise({ eventName: VanillaEventNames.TriggerAnimation });\n });\n }\n\n getProviders(): { [provider: string]: DslRecordable } {\n return {\n Gamification: this.dslRecorderService.createRecordable('gamification').createProperty({\n name: 'CoinsBalance',\n get: () => this.getCurrentValue<string>(() => (this.balance ? this.balance.balance : DSL_NOT_READY)),\n deps: () => ['gamification', 'user.isAuthenticated'],\n }),\n };\n }\n\n private getCurrentValue<T>(get: () => T, defaultValue = '') {\n if (!this.userService.isAuthenticated) {\n return defaultValue;\n }\n\n if (!this.gamificationService.isLoaded) {\n this.gamificationService.load();\n }\n\n return get();\n }\n}\n","import { registerLazyDslOnModuleInit, runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { GamificationBootstrapService } from './gamification-bootstrap.service';\nimport { GamificationDslValuesProvider } from './gamification-dsl-values-provider';\n\nexport function provide() {\n return [runOnFeatureInit(GamificationBootstrapService), registerLazyDslOnModuleInit(GamificationDslValuesProvider)];\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { IMessagePanelComponent, MessagePanelRegistryEvent } from './message-panel.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessagePanelRegistry {\n get onChange(): Observable<MessagePanelRegistryEvent> {\n return this.onChangeSubject.asObservable();\n }\n\n private onChangeSubject = new Subject<MessagePanelRegistryEvent>();\n private components = [] as IMessagePanelComponent[];\n\n add(component: IMessagePanelComponent) {\n this.components.push(component);\n this.onChangeSubject.next({ component });\n }\n\n remove(component: IMessagePanelComponent) {\n const index = this.components.indexOf(component);\n this.components.splice(index, 1);\n\n const componentsInScope = this.components.filter((c: IMessagePanelComponent) => c.currentScope === component.currentScope);\n const lastMessagePanelComponent = componentsInScope[componentsInScope.length - 1] || null;\n\n this.onChangeSubject.next({\n component: lastMessagePanelComponent,\n });\n }\n}\n","@if (messages.length && isLatest) {\n <div class=\"message-panel\">\n @for (message of messages; track trackByHtml($index, message)) {\n <div\n [class.theme-error-i]=\"message.type === 'Error'\"\n [class.theme-success-i]=\"message.type === 'Success'\"\n [class.theme-info-i]=\"message.type === 'Information' || message.type === 'Warning'\"\n [ngClass]=\"message.type === 'Warning' ? 'theme-warning warning' : ''\">\n <div class=\"cms-container\" [vnDynamicHtml]=\"message.html\"></div>\n </div>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EffectRef, ElementRef, Input, OnDestroy, OnInit, ViewEncapsulation, effect } from '@angular/core';\n\nimport {\n DynamicHtmlDirective,\n Message,\n MessageQueueService,\n WebWorkerService,\n WindowOffsetModifierService,\n WorkerType,\n trackByProp,\n} from '@frontend/vanilla/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { MessagePanelRegistry } from './message-panel-registry.service';\nimport { IMessagePanelComponent, MessagePanelRegistryEvent } from './message-panel.models';\n\n/**\n * @whatItDoes Displays messages that have been added by {@link MessageQueueService}.\n *\n * @howToUse\n *\n * Place this component on a page where you want to display messages.\n *\n * ```\n * <vn-message-panel scope=\"example-scope\" />\n * ```\n *\n * @stable\n */\n@Component({\n standalone: true,\n imports: [CommonModule, DynamicHtmlDirective],\n selector: 'vn-message-panel',\n templateUrl: 'message-panel.html',\n styleUrls: ['../../../../../themepark/themes/whitelabel/components/message-panel/styles.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MessagePanelComponent implements IMessagePanelComponent, OnInit, OnDestroy {\n @Input() scope: string;\n\n messages: Message[] = [];\n isLatest: boolean;\n readonly trackByHtml = trackByProp<Message>('html');\n\n private unsubscribe = new Subject<void>();\n private messagesEffectRef: EffectRef;\n\n constructor(\n private service: MessageQueueService,\n private elementRef: ElementRef<HTMLElement>,\n private windowOffsetModifierService: WindowOffsetModifierService,\n private registry: MessagePanelRegistry,\n private webWorkerService: WebWorkerService,\n ) {\n this.messagesEffectRef = effect(() => {\n this.messages = this.service.messages().filter((message: Message) => (message.scope || '') === this.currentScope);\n\n if (this.messages.length) {\n const offset = this.elementRef.nativeElement.getBoundingClientRect().top;\n this.windowOffsetModifierService.scrollBy(offset);\n }\n });\n }\n\n get currentScope(): string {\n return this.scope || '';\n }\n\n ngOnInit() {\n this.registry.onChange\n .pipe(\n takeUntil(this.unsubscribe),\n filter((c: MessagePanelRegistryEvent) => c.component?.currentScope === this.currentScope),\n )\n .subscribe((c: MessagePanelRegistryEvent) => {\n const workerType = WorkerType.MessagePanelTimeout + this.currentScope;\n\n this.webWorkerService.createWorker(workerType, { timeout: 0 }, () => {\n this.isLatest = c.component === this;\n this.webWorkerService.removeWorker(workerType);\n });\n });\n\n this.registry.add(this);\n }\n\n ngOnDestroy() {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n this.messagesEffectRef.destroy();\n this.registry.remove(this);\n this.webWorkerService.removeWorker(WorkerType.MessagePanelTimeout + this.currentScope);\n }\n}\n","import { ɵglobal as _global } from '@angular/core';\nfunction push(heap, node) {\n const index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n const first = heap[0];\n return first === undefined ? null : first;\n}\nfunction pop(heap) {\n const first = heap[0];\n if (first !== undefined) {\n const last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n return first;\n } else {\n return null;\n }\n}\nfunction siftUp(heap, node, i) {\n let index = i;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const parentIndex = index - 1 >>> 1;\n const parent = heap[parentIndex];\n if (parent !== undefined && compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\nfunction siftDown(heap, node, i) {\n let index = i;\n const length = heap.length;\n while (index < length) {\n const leftIndex = (index + 1) * 2 - 1;\n const left = heap[leftIndex];\n const rightIndex = leftIndex + 1;\n const right = heap[rightIndex];\n // If the left or right node is smaller, swap with the smaller of those.\n if (left !== undefined && compare(left, node) < 0) {\n if (right !== undefined && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (right !== undefined && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n const diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// see https://github.com/facebook/react/blob/main/packages/scheduler/src/forks/Scheduler.js\nlet getCurrentTime;\nconst hasPerformanceNow = typeof _global.performance === 'object' && typeof _global.performance.now === 'function';\nif (hasPerformanceNow) {\n const localPerformance = _global.performance;\n getCurrentTime = () => localPerformance.now();\n} else {\n const localDate = Date;\n const initialTime = localDate.now();\n getCurrentTime = () => localDate.now() - initialTime;\n}\n// Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\nconst maxSigned31BitInt = 1073741823;\n// Times out immediately\nconst IMMEDIATE_PRIORITY_TIMEOUT = -1;\n// Eventually times out\nconst USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nconst NORMAL_PRIORITY_TIMEOUT = 5000;\nconst LOW_PRIORITY_TIMEOUT = 10000;\n// Never times out\nconst IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt;\n// Tasks are stored on a min heap\nconst taskQueue = [];\nconst timerQueue = [];\n// Incrementing id counter. Used to maintain insertion order.\nlet taskIdCounter = 1;\nlet currentTask = null;\nlet currentPriorityLevel = 3 /* PriorityLevel.NormalPriority */;\n// This is set while performing work, to prevent re-entrancy.\nlet isPerformingWork = false;\nlet isHostCallbackScheduled = false;\nlet isHostTimeoutScheduled = false;\n// Capture local references to native APIs, in case a polyfill overrides them.\nconst setTimeout = _global.setTimeout;\nconst clearTimeout = _global.clearTimeout;\nconst setImmediate = _global.setImmediate; // IE and Node.js + jsdom\nconst messageChannel = _global.MessageChannel;\nconst defaultZone = {\n run: fn => fn()\n};\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n let timer = peek(timerQueue);\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n } else {\n // Remaining timers are pending.\n return;\n }\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else {\n const firstTimer = peek(timerQueue);\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n // We'll need a host callback the next time work is scheduled.\n isHostCallbackScheduled = false;\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n isPerformingWork = true;\n const previousPriorityLevel = currentPriorityLevel;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime, _currentTask) {\n let currentTime = initialTime;\n if (_currentTask) {\n currentTask = _currentTask;\n } else {\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n }\n let zoneChanged = false;\n const hitDeadline = () => currentTask && currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost());\n if (!hitDeadline()) {\n const ngZone = currentTask.ngZone || defaultZone;\n ngZone.run(() => {\n while (currentTask !== null && !zoneChanged) {\n if (hitDeadline()) {\n break;\n }\n const callback = currentTask.callback;\n if (typeof callback === 'function') {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n const continuationCallback = callback(didUserCallbackTimeout);\n currentTime = getCurrentTime();\n if (typeof continuationCallback === 'function') {\n currentTask.callback = continuationCallback;\n } else {\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n }\n advanceTimers(currentTime);\n } else {\n pop(taskQueue);\n }\n currentTask = peek(taskQueue);\n zoneChanged = currentTask?.ngZone != null && currentTask.ngZone !== ngZone;\n }\n });\n }\n // we need to check if leaving `NgZone` (tick => detectChanges) caused other\n // directives to add tasks to the queue. If there is one and we still didn't\n // hit the deadline, run the workLoop again in order to flush everything thats\n // left.\n // Otherwise, newly added tasks won't run as `performingWork` is still `true`\n currentTask = currentTask ?? peek(taskQueue);\n // We should also re-calculate the currentTime, as we need to account for the execution\n // time of the NgZone tasks as well.\n // If there is still a task in the queue, but no time is left for executing it,\n // the scheduler will re-schedule the next tick anyway\n currentTime = getCurrentTime();\n if (zoneChanged || currentTask && !hitDeadline()) {\n return workLoop(hasTimeRemaining, currentTime, currentTask);\n }\n // Return whether there's additional work\n if (currentTask !== null) {\n return true;\n } else {\n const firstTimer = peek(timerQueue);\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n return false;\n }\n}\nfunction scheduleCallback(priorityLevel, callback, options) {\n const currentTime = getCurrentTime();\n let startTime;\n if (typeof options === 'object' && options !== null) {\n const delay = options.delay;\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n } else {\n startTime = currentTime;\n }\n let timeout;\n switch (priorityLevel) {\n case 1 /* PriorityLevel.ImmediatePriority */:\n timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n break;\n case 2 /* PriorityLevel.UserBlockingPriority */:\n timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n break;\n case 5 /* PriorityLevel.IdlePriority */:\n timeout = IDLE_PRIORITY_TIMEOUT;\n break;\n case 4 /* PriorityLevel.LowPriority */:\n timeout = LOW_PRIORITY_TIMEOUT;\n break;\n case 3 /* PriorityLevel.NormalPriority */:\n default:\n timeout = NORMAL_PRIORITY_TIMEOUT;\n break;\n }\n const expirationTime = startTime + timeout;\n const newTask = {\n id: taskIdCounter++,\n callback,\n priorityLevel,\n startTime,\n expirationTime,\n sortIndex: -1,\n ngZone: options?.ngZone || null\n };\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n }\n // Schedule a timeout.\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n // Schedule a host callback, if needed. If we're already performing work,\n // wait until the next time we yield.\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n // Null out the callback to indicate the task has been canceled. (Can't\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n task.callback = null;\n}\nlet isMessageLoopRunning = false;\nlet scheduledHostCallback = null;\nlet taskTimeoutID = -1;\n// Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\nlet yieldInterval = 16;\nlet needsPaint = false;\nlet queueStartTime = -1;\nfunction shouldYieldToHost() {\n if (needsPaint) {\n // There's a pending paint (signaled by `requestPaint`). Yield now.\n return true;\n }\n const timeElapsed = getCurrentTime() - queueStartTime;\n if (timeElapsed < yieldInterval) {\n // The main thread has only been blocked for a really short amount of time;\n // smaller than a single frame. Don't yield yet.\n return false;\n }\n // `isInputPending` isn't available. Yield now.\n return true;\n}\nfunction requestPaint() {\n needsPaint = true;\n}\nfunction forceFrameRate(fps) {\n if (fps < 0 || fps > 125) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.error('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n }\n return;\n }\n if (fps > 0) {\n yieldInterval = Math.floor(1000 / fps);\n } else {\n // reset the framerate\n yieldInterval = 5;\n }\n // be aware of browser housekeeping work (~6ms per frame)\n // according to https://developers.google.com/web/fundamentals/performance/rendering\n yieldInterval = Math.max(5, yieldInterval - 6);\n}\nconst performWorkUntilDeadline = () => {\n if (scheduledHostCallback !== null) {\n const currentTime = getCurrentTime();\n // Yield after `yieldInterval` ms, regardless of where we are in the vsync\n // cycle. This means there's always time remaining at the beginning of\n // the message event.\n queueStartTime = currentTime;\n const hasTimeRemaining = true;\n // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n //\n // Intentionally not using a try-catch, since that makes some debugging\n // techniques harder. Instead, if `scheduledHostCallback` errors, then\n // `hasMoreWork` will remain true, and we'll continue the work loop.\n let hasMoreWork = true;\n try {\n hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n } finally {\n if (hasMoreWork) {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n schedulePerformWorkUntilDeadline();\n } else {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n }\n }\n } else {\n isMessageLoopRunning = false;\n }\n // Yielding to the browser will give it a chance to paint, so we can\n // reset this.\n needsPaint = false;\n};\nlet schedulePerformWorkUntilDeadline;\nif (typeof setImmediate === 'function') {\n // Node.js and old IE.\n // There's a few reasons for why we prefer setImmediate.\n //\n // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n // (Even though this is a DOM fork of the Scheduler, you could get here\n // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n // https://github.com/facebook/react/issues/20756\n //\n // But also, it runs earlier which is the semantic we want.\n // If other browsers ever implement it, it's better to use it.\n // Although both of these would be inferior to native scheduling.\n schedulePerformWorkUntilDeadline = () => {\n setImmediate(performWorkUntilDeadline);\n };\n} else if (typeof messageChannel !== 'undefined') {\n const channel = new messageChannel();\n const port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = () => {\n port.postMessage(null);\n };\n} else {\n // We should only fallback here in non-browser environments.\n schedulePerformWorkUntilDeadline = () => {\n setTimeout(performWorkUntilDeadline, 0);\n };\n}\nfunction requestHostCallback(callback) {\n scheduledHostCallback = callback;\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n schedulePerformWorkUntilDeadline();\n }\n}\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = setTimeout(() => {\n callback(getCurrentTime());\n }, ms);\n}\nfunction cancelHostTimeout() {\n clearTimeout(taskTimeoutID);\n taskTimeoutID = -1;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { cancelCallback, forceFrameRate, scheduleCallback };\n","import { isObservable, of, Subject } from 'rxjs';\nimport { map, switchAll, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * This Observable factory creates an Observable out of a static value or an Observable.\n *\n * @param o - the value to coerce\n */\nfunction coerceObservable(o) {\n return isObservable(o) ? o : of(o);\n}\n\n/**\n * This operator maps an Observable out of a static value or an Observable.\n *\n */\nfunction coerceObservableWith() {\n return o$ => map(coerceObservable)(o$);\n}\n\n/**\n * This operator takes an Observable of values ot Observables aof values and\n * It forwards only distinct values from distinct incoming Observables or values.\n * This comes in handy in any environment where you handle processing of incoming dynamic values and their state.\n *\n * Optionally you can pass a flatten strategy to get find grained control of the flattening process. E.g. mergeAll, switchAll\n *\n * @param flattenOperator - determines the flattening strategy e.g. mergeAll, concatAll, exhaust, switchAll. default is switchAll\n *\n */\nfunction coerceDistinctWith(flattenOperator) {\n flattenOperator = flattenOperator || switchAll();\n return o$ => o$.pipe(coerceObservableWith(), distinctUntilChanged(), flattenOperator, distinctUntilChanged());\n}\n\n/**\n * A factory function returning an object to handle the process of merging Observable next notifications into one\n * Observable. This API takes away the clumsy handling of static values and Observable, reduces the number of\n * emissions by:\n * - only merging distinct Observables\n * - only emit distinct values of the merged result\n *\n * You can next a Observable of `U` multiple times and merge them into the Observable exposed under one optimized\n * `values$`\n *\n */\nfunction coerceAllFactory(subjectFactory, flattenOperator) {\n const observablesSubject = subjectFactory ? subjectFactory() : new Subject();\n flattenOperator = flattenOperator || switchAll();\n const values$ = observablesSubject.pipe(coerceDistinctWith(flattenOperator));\n return {\n next(observable) {\n observablesSubject.next(observable);\n },\n values$\n };\n}\n\n/**\n * This Observable factory creates an Observable out of a static value or an Observable.\n * It forwards only distinct values from distinct incoming Observables or values.\n * This comes in handy in any environment where you handle processing of incoming dynamic values and their state.\n *\n * Optionally you can pass a flatten strategy to get find grained control of the flattening process. E.g. mergeAll, switchAll\n *\n * @param o$ - The Observable to coerce and map to a Observable with distinct values\n * @param flattenOperator - determines the flattening strategy e.g. mergeAll, concatAll, exhaust, switchAll. default is switchAll\n */\nfunction coerceDistinctObservable(o$, flattenOperator) {\n flattenOperator = flattenOperator || switchAll();\n return coerceObservable(o$).pipe(distinctUntilChanged(), flattenOperator, distinctUntilChanged());\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { coerceAllFactory, coerceDistinctObservable, coerceDistinctWith, coerceObservable, coerceObservableWith };\n","import { coalescingManager, coalesceWith } from '@rx-angular/cdk/coalescing';\nimport { forceFrameRate, scheduleCallback, cancelCallback } from '@rx-angular/cdk/internals/scheduler';\nimport { Observable, throwError, ReplaySubject, BehaviorSubject, fromEvent } from 'rxjs';\nimport { filter, switchMap, mapTo, tap, catchError, map, take, switchAll, startWith, share, shareReplay, takeUntil } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { NgZone, InjectionToken, Injectable, Optional, Inject } from '@angular/core';\nimport { getZoneUnPatchedApi } from '@rx-angular/cdk/internals/core';\nimport { coerceAllFactory } from '@rx-angular/cdk/coercing';\n\n// set default to 60fps\nforceFrameRate(60);\nconst immediateStrategy = {\n name: 'immediate',\n work: cdRef => cdRef.detectChanges(),\n behavior: ({\n work,\n scope,\n ngZone\n }) => {\n return o$ => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 1 /* PriorityLevel.ImmediatePriority */,\n scope\n }));\n }\n};\nconst userBlockingStrategy = {\n name: 'userBlocking',\n work: cdRef => cdRef.detectChanges(),\n behavior: ({\n work,\n scope,\n ngZone\n }) => {\n return o$ => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 2 /* PriorityLevel.UserBlockingPriority */,\n scope\n }));\n }\n};\nconst normalStrategy = {\n name: 'normal',\n work: cdRef => cdRef.detectChanges(),\n behavior: ({\n work,\n scope,\n ngZone\n }) => {\n return o$ => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 3 /* PriorityLevel.NormalPriority */,\n scope\n }));\n }\n};\nconst lowStrategy = {\n name: 'low',\n work: cdRef => cdRef.detectChanges(),\n behavior: ({\n work,\n scope,\n ngZone\n }) => {\n return o$ => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 4 /* PriorityLevel.LowPriority */,\n scope\n }));\n }\n};\nconst idleStrategy = {\n name: 'idle',\n work: cdRef => cdRef.detectChanges(),\n behavior: ({\n work,\n scope,\n ngZone\n }) => {\n return o$ => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 5 /* PriorityLevel.IdlePriority */,\n scope\n }));\n }\n};\nfunction scheduleOnQueue(work, options) {\n const scope = options.scope || {};\n return o$ => o$.pipe(filter(() => !coalescingManager.isCoalescing(scope)), switchMap(v => new Observable(subscriber => {\n coalescingManager.add(scope);\n const task = scheduleCallback(options.priority, () => {\n work();\n coalescingManager.remove(scope);\n subscriber.next(v);\n }, {\n delay: options.delay,\n ngZone: options.ngZone\n });\n return () => {\n coalescingManager.remove(scope);\n cancelCallback(task);\n };\n }).pipe(mapTo(v))));\n}\nconst RX_CONCURRENT_STRATEGIES = {\n immediate: immediateStrategy,\n userBlocking: userBlockingStrategy,\n normal: normalStrategy,\n low: lowStrategy,\n idle: idleStrategy\n};\nconst animationFrameTick = () => new Observable(subscriber => {\n // use the unpatched API no avoid zone interference\n const id = getZoneUnPatchedApi('requestAnimationFrame')(() => {\n subscriber.next(0);\n subscriber.complete();\n });\n return () => {\n // use the unpatched API no avoid zone interference\n getZoneUnPatchedApi('cancelAnimationFrame')(id);\n };\n});\nconst localCredentials = {\n name: 'local',\n work: (cdRef, _, notification) => {\n cdRef.detectChanges();\n },\n behavior: ({\n work,\n scope,\n ngZone\n }) => o$ => o$.pipe(coalesceWith(animationFrameTick(), scope), tap(() => ngZone ? ngZone.run(() => work()) : work()))\n};\nconst noopCredentials = {\n name: 'noop',\n work: () => void 0,\n behavior: () => o$ => o$\n};\nconst nativeCredentials = {\n name: 'native',\n work: cdRef => cdRef.markForCheck(),\n behavior: ({\n work,\n ngZone\n }) => o$ => o$.pipe(tap(() => ngZone && !NgZone.isInAngularZone() ? ngZone.run(() => work()) : work()))\n};\nconst RX_NATIVE_STRATEGIES = {\n native: nativeCredentials,\n noop: noopCredentials,\n local: localCredentials\n};\nconst RX_RENDER_STRATEGIES_CONFIG = new InjectionToken('rxa-render-strategies-config');\nconst RX_RENDER_STRATEGIES_DEFAULTS = {\n primaryStrategy: 'normal',\n customStrategies: {\n ...RX_NATIVE_STRATEGIES,\n ...RX_CONCURRENT_STRATEGIES\n },\n patchZone: true,\n parent: false\n};\nfunction mergeDefaultConfig(cfg) {\n const custom = cfg ? cfg : {\n customStrategies: {}\n };\n return {\n ...RX_RENDER_STRATEGIES_DEFAULTS,\n ...custom,\n customStrategies: {\n ...custom.customStrategies,\n ...RX_RENDER_STRATEGIES_DEFAULTS.customStrategies\n }\n };\n}\n\n/**\n * @internal\n *\n * @param value\n * @param strategy\n * @param workFactory\n * @param options\n */\nfunction onStrategy(value, strategy, workFactory, options = {}) {\n return new Observable(subscriber => {\n subscriber.next(value);\n }).pipe(strategy.behavior({\n work: () => workFactory(value, strategy.work, options),\n scope: options.scope || {},\n ngZone: options.ngZone\n }), catchError(error => throwError(() => [error, value])), map(() => value), take(1));\n}\n\n/**\n * @internal\n *\n * A factory function returning an object to handle the process of turning strategy names into `RxStrategyCredentials`\n * You can next a strategy name as Observable or string and get an Observable of `RxStrategyCredentials`\n *\n * @param defaultStrategyName\n * @param strategies\n */\nfunction strategyHandling(defaultStrategyName, strategies) {\n const hotFlattened = coerceAllFactory(() => new ReplaySubject(1), switchAll());\n return {\n strategy$: hotFlattened.values$.pipe(startWith(defaultStrategyName), nameToStrategyCredentials(strategies, defaultStrategyName), share()),\n next(name) {\n hotFlattened.next(name);\n }\n };\n}\n/**\n * @internal\n */\nfunction nameToStrategyCredentials(strategies, defaultStrategyName) {\n return o$ => o$.pipe(map(name => name && Object.keys(strategies).includes(name) ? strategies[name] : strategies[defaultStrategyName]));\n}\n\n/**\n * @description\n * RxStrategyProvider is a wrapper service that you can use to consume strategies and schedule your code execution.\n *\n * @example\n * Component({\n * selector: 'app-service-communicator',\n * template: ``\n * });\n * export class ServiceCommunicationComponent {\n * private currentUserSettings;\n *\n * constructor(\n * private strategyProvider: RxStrategyProvider,\n * private userService: UserService,\n * private backgroundSync: BackgroundSyncService\n * ) {\n * this.userService.fetchCurrentUserSettings\n * .pipe(\n * tap(settings => (this.currentUserSettings = settings)),\n * this.strategyProvider.scheduleWith(\n * settings => this.backgroundSync.openConnection(settings),\n * { strategy: 'idle' }\n * )\n * )\n * .subscribe();\n * }\n * }\n *\n * @docsCategory RxStrategyProvider\n * @docsPage RxStrategyProvider\n */\nlet RxStrategyProvider = /*#__PURE__*/(() => {\n class RxStrategyProvider {\n _strategies$ = new BehaviorSubject(undefined);\n _primaryStrategy$ = new BehaviorSubject(undefined);\n _cfg;\n /**\n * @description\n * Returns current `RxAngularConfig` used in the service.\n * Config includes:\n * - strategy that currently in use - `primaryStrategy`\n * - array of custom user defined strategies - `customStrategies`\n * - setting that is responsible for running in our outside of the zone.js - `patchZone`\n */\n get config() {\n return this._cfg;\n }\n /**\n * @description\n * Returns object that contains key-value pairs of strategy names and their credentials (settings) that are available in the service.\n */\n get strategies() {\n return this._strategies$.getValue();\n }\n /**\n * @description\n * Returns an array of strategy names available in the service.\n */\n get strategyNames() {\n return Object.values(this.strategies).map(s => s.name);\n }\n /**\n * @description\n * Returns current strategy of the service.\n */\n get primaryStrategy() {\n return this._primaryStrategy$.getValue().name;\n }\n /**\n * @description\n * Set's the strategy that will be used by the service.\n */\n set primaryStrategy(strategyName) {\n this._primaryStrategy$.next(this.strategies[strategyName]);\n }\n /**\n * @description\n * Current strategy of the service as an observable.\n */\n primaryStrategy$ = this._primaryStrategy$.asObservable();\n /**\n * @description\n * Returns observable of an object that contains key-value pairs of strategy names and their credentials (settings) that are available in the service.\n */\n strategies$ = this._strategies$.asObservable();\n /**\n * @description\n * Returns an observable of an array of strategy names available in the service.\n */\n strategyNames$ = this.strategies$.pipe(map(strategies => Object.values(strategies).map(s => s.name)), shareReplay({\n bufferSize: 1,\n refCount: true\n }));\n /**\n * @internal\n */\n constructor(cfg) {\n this._cfg = mergeDefaultConfig(cfg);\n this._strategies$.next(this._cfg.customStrategies);\n this.primaryStrategy = this.config.primaryStrategy;\n }\n /**\n * @description\n * Allows to schedule a work inside rxjs `pipe`. Accepts the work and configuration options object.\n * - work is any function that should be executed\n * - (optional) options includes strategy, patchZone and scope\n *\n * Scope is by default a subscription but you can also pass `this` and then the scope will be current component.\n * Scope setup is useful if your work is some of the methods of `ChangeDetectorRef`. Only one change detection will be triggered if you have multiple schedules of change detection methods and scope is set to `this`.\n *\n * @example\n * myObservable$.pipe(\n * this.strategyProvider.scheduleWith(() => myWork(), {strategy: 'idle', patchZone: false})\n * ).subscribe();\n *\n * @return MonoTypeOperatorFunction<R>\n */\n scheduleWith(work, options) {\n const strategy = this.strategies[options?.strategy || this.primaryStrategy];\n const scope = options?.scope || {};\n const _work = getWork(work, options?.patchZone);\n const ngZone = options?.patchZone || undefined;\n return o$ => o$.pipe(switchMap(v => onStrategy(v, strategy, _v => {\n _work(_v);\n }, {\n scope,\n ngZone\n })));\n }\n /**\n * @description\n * Allows to schedule a work as an observable. Accepts the work and configuration options object.\n * - work is any function that should be executed\n * - (optional) options includes strategy, patchZone and scope\n *\n * Scope is by default a subscription but you can also pass `this` and then the scope will be current component.\n * Scope setup is especially useful if you provide work that will trigger a change detection.\n *\n * @example\n * this.strategyProvider.schedule(() => myWork(), {strategy: 'idle', patchZone: false}).subscribe();\n *\n * @return Observable<R>\n */\n schedule(work, options) {\n const strategy = this.strategies[options?.strategy || this.primaryStrategy];\n const scope = options?.scope || {};\n const _work = getWork(work, options?.patchZone);\n const ngZone = options?.patchZone || undefined;\n let returnVal;\n return onStrategy(null, strategy, () => {\n returnVal = _work();\n }, {\n scope,\n ngZone\n }).pipe(map(() => returnVal));\n }\n /**\n * @description\n * Allows to schedule a change detection cycle. Accepts the ChangeDetectorRef and configuration options object.\n * Options include:\n * - afterCD which is the work that should be executed after change detection cycle.\n * - abortCtrl is an AbortController that you can use to cancel the scheduled cycle.\n *\n * @example\n * this.strategyProvider.scheduleCd(this.changeDetectorRef, {afterCD: myWork()});\n *\n * @return AbortController\n */\n scheduleCD(cdRef, options) {\n const strategy = this.strategies[options?.strategy || this.primaryStrategy];\n const scope = options?.scope || cdRef;\n const abC = options?.abortCtrl || new AbortController();\n const ngZone = options?.patchZone || undefined;\n const work = getWork(() => {\n strategy.work(cdRef, scope);\n if (options?.afterCD) {\n options.afterCD();\n }\n }, options.patchZone);\n onStrategy(null, strategy, () => {\n work();\n }, {\n scope,\n ngZone\n }).pipe(takeUntil(fromEvent(abC.signal, 'abort'))).subscribe();\n return abC;\n }\n /** @nocollapse */\n static ɵfac = function RxStrategyProvider_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RxStrategyProvider)(i0.ɵɵinject(RX_RENDER_STRATEGIES_CONFIG, 8));\n };\n /** @nocollapse */\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RxStrategyProvider,\n factory: RxStrategyProvider.ɵfac,\n providedIn: 'root'\n });\n }\n return RxStrategyProvider;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction getWork(work, patchZone) {\n let _work = work;\n if (patchZone) {\n _work = args => patchZone.run(() => work(args));\n }\n return _work;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RX_CONCURRENT_STRATEGIES, RX_NATIVE_STRATEGIES, RX_RENDER_STRATEGIES_CONFIG, RxStrategyProvider, onStrategy, strategyHandling };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\nexport { getWindow as a, getDocument as g };","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\nvar classes = {\n addClasses,\n removeClasses\n};\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport { Swiper as S, defaults as d };","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\nexport { Virtual as default };","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\nexport { Mousewheel as default };","import { e as elementChildren, c as createElement } from './utils.mjs';\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\nexport { createElementIfNotDefined as c };","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\nexport { Navigation as default };","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\nexport { classesToSelector as c };","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\nexport { Pagination as default };","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\nexport { Autoplay as default };","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\nexport { freeMode as default };","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\nexport { effectInit as e };","import { g as getSlideTransformEl } from './utils.mjs';\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\nexport { effectTarget as e };","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\nexport { createShadow as c };","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\nexport { EffectCoverflow as default };","<div #swiperContainer class=\"swiper\" [ngClass]=\"swiperClass()\">\n <div class=\"swiper-wrapper\">\n <ng-content />\n </div>\n @if (showPagination()) {\n @if (swiperOptions().pagination) {\n <div class=\"swiper-pagination\"></div>\n }\n @if (swiperOptions().navigation) {\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n }\n }\n</div>\n","import { NgClass } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, NgZone, OnDestroy, ViewChild, effect, inject, input } from '@angular/core';\n\nimport { RxStrategyProvider } from '@rx-angular/cdk/render-strategies';\nimport Swiper from 'swiper';\nimport { Autoplay, Navigation, Pagination } from 'swiper/modules';\nimport { SwiperModule, SwiperOptions } from 'swiper/types';\nimport { NavigationOptions } from 'swiper/types/modules/navigation';\nimport { PaginationOptions } from 'swiper/types/modules/pagination';\n\n@Component({\n standalone: true,\n selector: 'vn-swiper',\n templateUrl: 'swiper.html',\n imports: [NgClass],\n})\nexport class SwiperComponent implements AfterViewInit, OnDestroy {\n private ngZone = inject(NgZone);\n private strategy = inject(RxStrategyProvider);\n\n @ViewChild('swiperContainer') swiperRef: ElementRef;\n\n private readonly defaultOptions: SwiperOptions = {\n modules: [],\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n pagination: {\n clickable: true,\n el: '.swiper-pagination',\n type: 'bullets',\n },\n };\n\n showPagination = input<boolean>(true);\n swiperOptions = input<SwiperOptions, SwiperOptions>(this.defaultOptions, {\n transform: (options) => this.sanitizeOptions(options),\n });\n swiperClass = input<string | string[], string | string[] | undefined>('', {\n transform: (value) => (Array.isArray(value) ? value.filter((v: string) => v !== undefined) : value || ''),\n });\n\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.swiper = new Swiper(this.swiperRef.nativeElement, this.swiperOptions());\n });\n }\n\n constructor() {\n effect(() => {\n const options = this.swiperOptions();\n if (this.swiper) {\n this.swiper.params = this.syncedSwiperParams(options, this.swiper.params);\n }\n });\n }\n\n swiper: Swiper;\n\n private sanitizeOptions(options: SwiperOptions): SwiperOptions {\n const extendedModules: SwiperModule[] = [];\n\n if (options.navigation === true) {\n options.navigation = <NavigationOptions>this.defaultOptions.navigation;\n extendedModules.push(Navigation);\n }\n\n if (options.pagination === true) {\n options.pagination = <PaginationOptions>this.defaultOptions.pagination;\n extendedModules.push(Pagination);\n }\n\n if (options.autoplay === true) {\n extendedModules.push(Autoplay);\n }\n\n options.modules = [...new Set([...(options.modules || []), ...(extendedModules || [])])];\n\n return options;\n }\n\n private syncedSwiperParams(updatedOptions: SwiperOptions, params: SwiperOptions): SwiperOptions {\n return Object.entries(updatedOptions).reduce(\n (acc, [key, value]) => {\n const paramKey = key as keyof SwiperOptions;\n const param = params[paramKey];\n const isObjParam = typeof value === 'object' && typeof param === 'object';\n return { ...acc, [paramKey]: isObjParam ? { ...param, ...value } : value };\n },\n { ...params },\n );\n }\n\n ngOnDestroy() {\n this.strategy.schedule(() => this.swiper.destroy(false, false)).subscribe();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\nimport { IconsModel } from './icons-model';\n\n@LazyClientConfig({ key: 'vnIconset', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: iconsFactory,\n})\nexport class IconsetConfig extends LazyClientConfigBase {\n iconItems: IconsModel[];\n}\n\nexport function iconsFactory(service: LazyClientConfigService) {\n return service.get(IconsetConfig);\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { IconsModel } from './icons-model';\nimport { IconsetConfig } from './icons.client-config';\n\n@Injectable({ providedIn: 'root' })\nexport class IconFastService {\n config = inject(IconsetConfig);\n\n getIconParameter(uniqueIconName: string, parameter: string) {\n if (this.config.iconItems) {\n const matchingIcon: IconsModel = this.config.iconItems.find(\n (data: IconsModel) => data.name === uniqueIconName || data.iconName === uniqueIconName,\n ) || {\n name: 'notfound',\n iconName: '',\n parameters: { urlId: '' },\n image: { src: '' },\n };\n\n if (matchingIcon.name != 'notfound') {\n return this.getAvailableValues(parameter, matchingIcon);\n }\n }\n return '';\n }\n\n getAvailableValues(parameter: string, icon: IconsModel) {\n switch (parameter) {\n case 'urlId':\n return icon.parameters?.urlId ?? icon.image?.src ?? icon.imageUrl;\n case 'size':\n return icon.parameters?.size ?? icon.size;\n case 'extraClass':\n return icon.parameters?.extraClass ?? icon.extraClass;\n case 'fillColor':\n return icon.parameters?.fillColor ?? icon.fillColor;\n case 'title':\n return icon.parameters?.title ?? icon.title;\n default:\n return '';\n }\n }\n\n static isValueHere(obj: any, searchValue: string): boolean {\n for (let key in obj) {\n if (obj[key] === searchValue) {\n return true;\n }\n }\n return false;\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';\n\nimport { DeviceService, IconFastCoreService } from '@frontend/vanilla/core';\nimport { FastSvgComponent } from '@push-based/ngx-fast-svg';\nimport { firstValueFrom } from 'rxjs';\n\nimport { IconFastService } from './icon-fast.service';\nimport { IconsetConfig } from './icons.client-config';\n\n/**\n * <vn-icon [name]=\"dynamicName\" />\n * @input `name` is required and should be the name of the icon in site core.\n * @input `size` if provided then width and height not required.\n * @input `width` if provided then height is required.\n * @input `height` if provided then width is required.\n * @input `extraClass` if provided as input then it will apply to svg otherwise extraClass witll be taken from sitecore item parameters if available.\n *\n */\n\n@Component({\n standalone: true,\n imports: [FastSvgComponent],\n selector: 'vn-icon',\n template: ` @if (!deviceService.isRobot) {\n @if (width && height) {\n <fast-svg [name]=\"name\" [width]=\"width\" [height]=\"height\" [class]=\"extraClass\"></fast-svg>\n } @else {\n <fast-svg [name]=\"name\" [size]=\"size\" [class]=\"extraClass\"></fast-svg>\n }\n }`,\n styles: ['vn-icon {display: contents;} .fast-svg {margin: 0!important; height: auto; width: auto;}'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IconCustomComponent implements OnInit, AfterViewInit {\n @Input({ required: true }) name: string;\n @Input() size: string;\n @Input() width: string;\n @Input() height: string;\n @Input() extraClass: string;\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private iconFastCoreService: IconFastCoreService,\n private iconFastService: IconFastService,\n private iconsConfig: IconsetConfig,\n public deviceService: DeviceService,\n ) {}\n\n async ngOnInit(): Promise<void> {\n await firstValueFrom(this.iconsConfig.whenReady);\n this.iconFastCoreService.set(this.iconFastService);\n\n const hostElement = this.el.nativeElement as HTMLElement;\n if (this.name === undefined) {\n this.name = hostElement.getAttribute('name') || hostElement.getAttribute('text') || 'not defined';\n }\n\n if (this.size === undefined) {\n const parentSize = <string>hostElement.getAttribute('size') || '21';\n this.size = this.iconFastService.getIconParameter(this.name, 'size') || parentSize;\n }\n\n if (!this.extraClass) {\n this.extraClass = this.iconFastService.getIconParameter(this.name, 'extraClass') || '';\n }\n }\n\n ngAfterViewInit(): void {\n const svgElement = this.el.nativeElement.querySelector('svg') as HTMLElement;\n\n if (svgElement) {\n this.renderer.setAttribute(svgElement, 'role', 'img');\n\n this.iconsConfig.whenReady.subscribe(() => {\n const fillColor = this.iconFastService.getIconParameter(this.name, 'fillColor');\n if (fillColor) this.renderer.setAttribute(svgElement, 'fill', fillColor);\n\n const iconTitle = this.iconFastService.getIconParameter(this.name, 'title');\n if (iconTitle) this.renderer.setAttribute(svgElement, 'title', iconTitle);\n });\n }\n }\n}\n","<float-ui-content class=\"ngxp__tooltip\" [ngClass]=\"cssClass\">\n @if (closeType === 'button') {\n <vn-icon name=\"theme-ex\" extraClass=\"ui-icon ui-close\" (click)=\"close()\" size=\"12\" />\n }\n <div [ngClass]=\"cssTextClass\">\n <ng-content select=\"[content]\" />\n </div>\n <div class=\"popper-buttons\">\n <ng-content select=\"[buttons]\" />\n @if (closeType === 'link') {\n <div class=\"ngxp__close-link\">\n <span class=\"popper-close-link dh\" (click)=\"close()\">\n {{ closeLinkText || commonMessages?.PopoverCloseText }}\n </span>\n </div>\n }\n </div>\n</float-ui-content>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\nimport { CommonMessages } from '@frontend/vanilla/core';\nimport { IconCustomComponent } from '@frontend/vanilla/features/icons';\nimport { NgxFloatUiContentComponent, NgxFloatUiModule } from 'ngx-float-ui';\n\n/**\n * @whatItDoes Provides wrapper around `ngx-float-ui` component and adds a close link.\n *\n * @howToUse\n *\n * ```\n * <vn-icon name=\"theme-info-i\" [floatUi]=\"popper.content\" />\n * <vn-popper-content #popper>\n * <p>text</p>\n * </vn-popper-content>\n * ```\n *\n * @description\n *\n * This component is meant to be used in conjunction with [ngx-float-ui](https://github.com/tonysamperi/ngx-float-ui) library.\n * It adds a close link to the bottom of the popout.\n *\n * @stable\n */\n@Component({\n standalone: true,\n imports: [CommonModule, NgxFloatUiModule, IconCustomComponent],\n selector: 'vn-popper-content',\n templateUrl: 'popper-content.html',\n})\nexport class PopperContentComponent {\n /**\n * Type of close for the popout (default: `link`). `Button` as `X` on right upper corner, `link` as clicable text below the content and `none` not to have close.\n */\n @Input() closeType: 'button' | 'link' | 'none' = 'link';\n /**\n * Text of the close link (default: `CommonMessages['GotIt']`).\n */\n @Input() closeLinkText: string;\n /**\n * A css class to apply to `float-ui-content` element to control the color scheme.\n *\n * Options: `tooltip-primary` | `tooltip-secondary` | `tooltip-success` | `tooltip-warning` | `tooltip-danger` | `tooltip-info` | `tooltip-light`\n */\n @Input() cssClass: string;\n /**\n * A css class name to apply for text content from TooltipTextCss resource key\n *\n *\n */\n @Input() cssTextClass: string;\n\n /**\n * An event that is fired when the close link is clicked.\n */\n @Output() onCloseLinkClick = new EventEmitter<boolean | undefined>();\n\n /**\n * Reference to the `float-ui-content` directive.\n */\n @ViewChild(NgxFloatUiContentComponent, { static: true }) content: NgxFloatUiContentComponent;\n\n constructor(public commonMessages: CommonMessages) {}\n\n close(autoClose: boolean = false) {\n this.content.hide();\n this.onCloseLinkClick.next(autoClose);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'vnCurrentSession', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n useFactory: currentSessionConfigFactory,\n deps: [LazyClientConfigService],\n})\nexport class CurrentSessionConfig extends LazyClientConfigBase {\n loginDuration: number | null;\n remainingLoginTime: number | null;\n}\n\nexport function currentSessionConfigFactory(service: LazyClientConfigService) {\n return service.get(CurrentSessionConfig);\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 * <input type=\"checkbox\" [formControl]=\"rememberLoginControl\">\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 * <input type=\"text\" [formControl]=\"firstNameControl\">\n * ```\n *\n * This value accessor is used by default for `<input type=\"text\">` and `<textarea>` elements, but\n * you could also use it for custom components that have similar behavior and do not require special\n * processing. In order to attach the default value accessor to a custom element, add the\n * `ngDefaultControl` attribute as shown below.\n *\n * ```\n * <custom-input-component ngDefaultControl [(ngModel)]=\"value\"></custom-input-component>\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet DefaultValueAccessor = /*#__PURE__*/(() => {\n class DefaultValueAccessor extends BaseControlValueAccessor {\n constructor(renderer, elementRef, _compositionMode) {\n super(renderer, elementRef);\n this._compositionMode = _compositionMode;\n /** Whether the user is creating a composition string (IME events). */\n this._composing = false;\n if (this._compositionMode == null) {\n this._compositionMode = !_isAndroid();\n }\n }\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n const normalizedValue = value == null ? '' : value;\n this.setProperty('value', normalizedValue);\n }\n /** @internal */\n _handleInput(value) {\n if (!this._compositionMode || this._compositionMode && !this._composing) {\n this.onChange(value);\n }\n }\n /** @internal */\n _compositionStart() {\n this._composing = true;\n }\n /** @internal */\n _compositionEnd(value) {\n this._composing = false;\n this._compositionMode && this.onChange(value);\n }\n static {\n this.ɵfac = function DefaultValueAccessor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DefaultValueAccessor)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(COMPOSITION_BUFFER_MODE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DefaultValueAccessor,\n selectors: [[\"input\", \"formControlName\", \"\", 3, \"type\", \"checkbox\"], [\"textarea\", \"formControlName\", \"\"], [\"input\", \"formControl\", \"\", 3, \"type\", \"checkbox\"], [\"textarea\", \"formControl\", \"\"], [\"input\", \"ngModel\", \"\", 3, \"type\", \"checkbox\"], [\"textarea\", \"ngModel\", \"\"], [\"\", \"ngDefaultControl\", \"\"]],\n hostBindings: function DefaultValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"input\", function DefaultValueAccessor_input_HostBindingHandler($event) {\n return ctx._handleInput($event.target.value);\n })(\"blur\", function DefaultValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n })(\"compositionstart\", function DefaultValueAccessor_compositionstart_HostBindingHandler() {\n return ctx._compositionStart();\n })(\"compositionend\", function DefaultValueAccessor_compositionend_HostBindingHandler($event) {\n return ctx._compositionEnd($event.target.value);\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([DEFAULT_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return DefaultValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction isEmptyInputValue(value) {\n /**\n * Check if the object is a string or array before evaluating the length attribute.\n * This avoids falsely rejecting objects that contain a custom length attribute.\n * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\n */\n return value == null || (typeof value === 'string' || Array.isArray(value)) && value.length === 0;\n}\nfunction hasValidLength(value) {\n // non-strict comparison is intentional, to check for both `null` and `undefined` values\n return value != null && typeof value.length === 'number';\n}\n/**\n * @description\n * An `InjectionToken` for registering additional synchronous validators used with\n * `AbstractControl`s.\n *\n * @see {@link NG_ASYNC_VALIDATORS}\n *\n * @usageNotes\n *\n * ### Providing a custom validator\n *\n * The following example registers a custom validator directive. Adding the validator to the\n * existing collection of validators requires the `multi: true` option.\n *\n * ```typescript\n * @Directive({\n * selector: '[customValidator]',\n * providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]\n * })\n * class CustomValidatorDirective implements Validator {\n * validate(control: AbstractControl): ValidationErrors | null {\n * return { 'custom': true };\n * }\n * }\n * ```\n *\n * @publicApi\n */\nconst NG_VALIDATORS = /*#__PURE__*/new InjectionToken(ngDevMode ? 'NgValidators' : '');\n/**\n * @description\n * An `InjectionToken` for registering additional asynchronous validators used with\n * `AbstractControl`s.\n *\n * @see {@link NG_VALIDATORS}\n *\n * @usageNotes\n *\n * ### Provide a custom async validator directive\n *\n * The following example implements the `AsyncValidator` interface to create an\n * async validator directive with a custom error key.\n *\n * ```typescript\n * @Directive({\n * selector: '[customAsyncValidator]',\n * providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:\n * true}]\n * })\n * class CustomAsyncValidatorDirective implements AsyncValidator {\n * validate(control: AbstractControl): Promise<ValidationErrors|null> {\n * return Promise.resolve({'custom': true});\n * }\n * }\n * ```\n *\n * @publicApi\n */\nconst NG_ASYNC_VALIDATORS = /*#__PURE__*/new InjectionToken(ngDevMode ? 'NgAsyncValidators' : '');\n/**\n * A regular expression that matches valid e-mail addresses.\n *\n * At a high level, this regexp matches e-mail addresses of the format `local-part@tld`, where:\n * - `local-part` consists of one or more of the allowed characters (alphanumeric and some\n * punctuation symbols).\n * - `local-part` cannot begin or end with a period (`.`).\n * - `local-part` cannot be longer than 64 characters.\n * - `tld` consists of one or more `labels` separated by periods (`.`). For example `localhost` or\n * `foo.com`.\n * - A `label` consists of one or more of the allowed characters (alphanumeric, dashes (`-`) and\n * periods (`.`)).\n * - A `label` cannot begin or end with a dash (`-`) or a period (`.`).\n * - A `label` cannot be longer than 63 characters.\n * - The whole address cannot be longer than 254 characters.\n *\n * ## Implementation background\n *\n * This regexp was ported over from AngularJS (see there for git history):\n * https://github.com/angular/angular.js/blob/c133ef836/src/ng/directive/input.js#L27\n * It is based on the\n * [WHATWG version](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address). The main differences from the WHATWG version are:\n * - Disallow `local-part` to begin or end with a period (`.`).\n * - Disallow `local-part` length to exceed 64 characters.\n * - Disallow total address length to exceed 254 characters.\n *\n * See [this commit](https://github.com/angular/angular.js/commit/f3f5cf72e) for more details.\n */\nconst EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/**\n * @description\n * Provides a set of built-in validators that can be used by form controls.\n *\n * A validator is a function that processes a `FormControl` or collection of\n * controls and returns an error map or null. A null map means that validation has passed.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @publicApi\n */\nclass Validators {\n /**\n * @description\n * Validator that requires the control's value to be greater than or equal to the provided number.\n *\n * @usageNotes\n *\n * ### Validate against a minimum of 3\n *\n * ```typescript\n * const control = new FormControl(2, Validators.min(3));\n *\n * console.log(control.errors); // {min: {min: 3, actual: 2}}\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `min` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static min(min) {\n return minValidator(min);\n }\n /**\n * @description\n * Validator that requires the control's value to be less than or equal to the provided number.\n *\n * @usageNotes\n *\n * ### Validate against a maximum of 15\n *\n * ```typescript\n * const control = new FormControl(16, Validators.max(15));\n *\n * console.log(control.errors); // {max: {max: 15, actual: 16}}\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `max` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static max(max) {\n return maxValidator(max);\n }\n /**\n * @description\n * Validator that requires the control have a non-empty value.\n *\n * @usageNotes\n *\n * ### Validate that the field is non-empty\n *\n * ```typescript\n * const control = new FormControl('', Validators.required);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @returns An error map with the `required` property\n * if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static required(control) {\n return requiredValidator(control);\n }\n /**\n * @description\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n *\n * @usageNotes\n *\n * ### Validate that the field value is true\n *\n * ```typescript\n * const control = new FormControl('some value', Validators.requiredTrue);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @returns An error map that contains the `required` property\n * set to `true` if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static requiredTrue(control) {\n return requiredTrueValidator(control);\n }\n /**\n * @description\n * Validator that requires the control's value pass an email validation test.\n *\n * Tests the value using a [regular\n * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)\n * pattern suitable for common use cases. The pattern is based on the definition of a valid email\n * address in the [WHATWG HTML\n * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address).\n *\n * The differences from the WHATWG version include:\n * - Disallow `local-part` (the part before the `@` symbol) to begin or end with a period (`.`).\n * - Disallow `local-part` to be longer than 64 characters.\n * - Disallow the whole address to be longer than 254 characters.\n *\n * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to\n * validate the value against a different pattern.\n *\n * @usageNotes\n *\n * ### Validate that the field matches a valid email pattern\n *\n * ```typescript\n * const control = new FormControl('bad@', Validators.email);\n *\n * console.log(control.errors); // {email: true}\n * ```\n *\n * @returns An error map with the `email` property\n * if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static email(control) {\n return emailValidator(control);\n }\n /**\n * @description\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. This validator is also provided by default if you use the\n * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays. The\n * `minLength` validator logic is also not invoked for values when their `length` property is 0\n * (for example in case of an empty string or an empty array), to support optional controls. You\n * can use the standard `required` validator if empty values should not be considered valid.\n *\n * @usageNotes\n *\n * ### Validate that the field has a minimum of 3 characters\n *\n * ```typescript\n * const control = new FormControl('ng', Validators.minLength(3));\n *\n * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}}\n * ```\n *\n * ```html\n * <input minlength=\"5\">\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minlength` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static minLength(minLength) {\n return minLengthValidator(minLength);\n }\n /**\n * @description\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. This validator is also provided by default if you use the\n * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays.\n *\n * @usageNotes\n *\n * ### Validate that the field has maximum of 5 characters\n *\n * ```typescript\n * const control = new FormControl('Angular', Validators.maxLength(5));\n *\n * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}}\n * ```\n *\n * ```html\n * <input maxlength=\"5\">\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxlength` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static maxLength(maxLength) {\n return maxLengthValidator(maxLength);\n }\n /**\n * @description\n * Validator that requires the control's value to match a regex pattern. This validator is also\n * provided by default if you use the HTML5 `pattern` attribute.\n *\n * @usageNotes\n *\n * ### Validate that the field only contains letters or spaces\n *\n * ```typescript\n * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*'));\n *\n * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}}\n * ```\n *\n * ```html\n * <input pattern=\"[a-zA-Z ]*\">\n * ```\n *\n * ### Pattern matching with the global or sticky flag\n *\n * `RegExp` objects created with the `g` or `y` flags that are passed into `Validators.pattern`\n * can produce different results on the same input when validations are run consecutively. This is\n * due to how the behavior of `RegExp.prototype.test` is\n * specified in [ECMA-262](https://tc39.es/ecma262/#sec-regexpbuiltinexec)\n * (`RegExp` preserves the index of the last match when the global or sticky flag is used).\n * Due to this behavior, it is recommended that when using\n * `Validators.pattern` you **do not** pass in a `RegExp` object with either the global or sticky\n * flag enabled.\n *\n * ```typescript\n * // Not recommended (since the `g` flag is used)\n * const controlOne = new FormControl('1', Validators.pattern(/foo/g));\n *\n * // Good\n * const controlTwo = new FormControl('1', Validators.pattern(/foo/));\n * ```\n *\n * @param pattern A regular expression to be used as is to test the values, or a string.\n * If a string is passed, the `^` character is prepended and the `$` character is\n * appended to the provided string (if not already present), and the resulting regular\n * expression is used to test the values.\n *\n * @returns A validator function that returns an error map with the\n * `pattern` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static pattern(pattern) {\n return patternValidator(pattern);\n }\n /**\n * @description\n * Validator that performs no operation.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static nullValidator(control) {\n return nullValidator(control);\n }\n static compose(validators) {\n return compose(validators);\n }\n /**\n * @description\n * Compose multiple async validators into a single function that returns the union\n * of the individual error objects for the provided control.\n *\n * @returns A validator function that returns an error map with the\n * merged error objects of the async validators if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static composeAsync(validators) {\n return composeAsync(validators);\n }\n}\n/**\n * Validator that requires the control's value to be greater than or equal to the provided number.\n * See `Validators.min` for additional information.\n */\nfunction minValidator(min) {\n return control => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(min)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // minimum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-min\n return !isNaN(value) && value < min ? {\n 'min': {\n 'min': min,\n 'actual': control.value\n }\n } : null;\n };\n}\n/**\n * Validator that requires the control's value to be less than or equal to the provided number.\n * See `Validators.max` for additional information.\n */\nfunction maxValidator(max) {\n return control => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(max)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // maximum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-max\n return !isNaN(value) && value > max ? {\n 'max': {\n 'max': max,\n 'actual': control.value\n }\n } : null;\n };\n}\n/**\n * Validator that requires the control have a non-empty value.\n * See `Validators.required` for additional information.\n */\nfunction requiredValidator(control) {\n return isEmptyInputValue(control.value) ? {\n 'required': true\n } : null;\n}\n/**\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n * See `Validators.requiredTrue` for additional information.\n */\nfunction requiredTrueValidator(control) {\n return control.value === true ? null : {\n 'required': true\n };\n}\n/**\n * Validator that requires the control's value pass an email validation test.\n * See `Validators.email` for additional information.\n */\nfunction emailValidator(control) {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n return EMAIL_REGEXP.test(control.value) ? null : {\n 'email': true\n };\n}\n/**\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. See `Validators.minLength` for additional information.\n */\nfunction minLengthValidator(minLength) {\n return control => {\n if (isEmptyInputValue(control.value) || !hasValidLength(control.value)) {\n // don't validate empty values to allow optional controls\n // don't validate values without `length` property\n return null;\n }\n return control.value.length < minLength ? {\n 'minlength': {\n 'requiredLength': minLength,\n 'actualLength': control.value.length\n }\n } : null;\n };\n}\n/**\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. See `Validators.maxLength` for additional information.\n */\nfunction maxLengthValidator(maxLength) {\n return control => {\n return hasValidLength(control.value) && control.value.length > maxLength ? {\n 'maxlength': {\n 'requiredLength': maxLength,\n 'actualLength': control.value.length\n }\n } : null;\n };\n}\n/**\n * Validator that requires the control's value to match a regex pattern.\n * See `Validators.pattern` for additional information.\n */\nfunction patternValidator(pattern) {\n if (!pattern) return nullValidator;\n let regex;\n let regexStr;\n if (typeof pattern === 'string') {\n regexStr = '';\n if (pattern.charAt(0) !== '^') regexStr += '^';\n regexStr += pattern;\n if (pattern.charAt(pattern.length - 1) !== '$') regexStr += '$';\n regex = new RegExp(regexStr);\n } else {\n regexStr = pattern.toString();\n regex = pattern;\n }\n return control => {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = control.value;\n return regex.test(value) ? null : {\n 'pattern': {\n 'requiredPattern': regexStr,\n 'actualValue': value\n }\n };\n };\n}\n/**\n * Function that has `ValidatorFn` shape, but performs no operation.\n */\nfunction nullValidator(control) {\n return null;\n}\nfunction isPresent(o) {\n return o != null;\n}\nfunction toObservable(value) {\n const obs = ɵisPromise(value) ? from(value) : value;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ɵisSubscribable(obs)) {\n let errorMessage = `Expected async validator to return Promise or Observable.`;\n // A synchronous validator will return object or null.\n if (typeof value === 'object') {\n errorMessage += ' Are you using a synchronous validator where an async validator is expected?';\n }\n throw new ɵRuntimeError(-1101 /* RuntimeErrorCode.WRONG_VALIDATOR_RETURN_TYPE */, errorMessage);\n }\n return obs;\n}\nfunction mergeErrors(arrayOfErrors) {\n let res = {};\n arrayOfErrors.forEach(errors => {\n res = errors != null ? {\n ...res,\n ...errors\n } : res;\n });\n return Object.keys(res).length === 0 ? null : res;\n}\nfunction executeValidators(control, validators) {\n return validators.map(validator => validator(control));\n}\nfunction isValidatorFn(validator) {\n return !validator.validate;\n}\n/**\n * Given the list of validators that may contain both functions as well as classes, return the list\n * of validator functions (convert validator classes into validator functions). This is needed to\n * have consistent structure in validators list before composing them.\n *\n * @param validators The set of validators that may contain validators both in plain function form\n * as well as represented as a validator class.\n */\nfunction normalizeValidators(validators) {\n return validators.map(validator => {\n return isValidatorFn(validator) ? validator : c => validator.validate(c);\n });\n}\n/**\n * Merges synchronous validators into a single validator function.\n * See `Validators.compose` for additional information.\n */\nfunction compose(validators) {\n if (!validators) return null;\n const presentValidators = validators.filter(isPresent);\n if (presentValidators.length == 0) return null;\n return function (control) {\n return mergeErrors(executeValidators(control, presentValidators));\n };\n}\n/**\n * Accepts a list of validators of different possible shapes (`Validator` and `ValidatorFn`),\n * normalizes the list (converts everything to `ValidatorFn`) and merges them into a single\n * validator function.\n */\nfunction composeValidators(validators) {\n return validators != null ? compose(normalizeValidators(validators)) : null;\n}\n/**\n * Merges asynchronous validators into a single validator function.\n * See `Validators.composeAsync` for additional information.\n */\nfunction composeAsync(validators) {\n if (!validators) return null;\n const presentValidators = validators.filter(isPresent);\n if (presentValidators.length == 0) return null;\n return function (control) {\n const observables = executeValidators(control, presentValidators).map(toObservable);\n return forkJoin(observables).pipe(map(mergeErrors));\n };\n}\n/**\n * Accepts a list of async validators of different possible shapes (`AsyncValidator` and\n * `AsyncValidatorFn`), normalizes the list (converts everything to `AsyncValidatorFn`) and merges\n * them into a single validator function.\n */\nfunction composeAsyncValidators(validators) {\n return validators != null ? composeAsync(normalizeValidators(validators)) : null;\n}\n/**\n * Merges raw control validators with a given directive validator and returns the combined list of\n * validators as an array.\n */\nfunction mergeValidators(controlValidators, dirValidator) {\n if (controlValidators === null) return [dirValidator];\n return Array.isArray(controlValidators) ? [...controlValidators, dirValidator] : [controlValidators, dirValidator];\n}\n/**\n * Retrieves the list of raw synchronous validators attached to a given control.\n */\nfunction getControlValidators(control) {\n return control._rawValidators;\n}\n/**\n * Retrieves the list of raw asynchronous validators attached to a given control.\n */\nfunction getControlAsyncValidators(control) {\n return control._rawAsyncValidators;\n}\n/**\n * Accepts a singleton validator, an array, or null, and returns an array type with the provided\n * validators.\n *\n * @param validators A validator, validators, or null.\n * @returns A validators array.\n */\nfunction makeValidatorsArray(validators) {\n if (!validators) return [];\n return Array.isArray(validators) ? validators : [validators];\n}\n/**\n * Determines whether a validator or validators array has a given validator.\n *\n * @param validators The validator or validators to compare against.\n * @param validator The validator to check.\n * @returns Whether the validator is present.\n */\nfunction hasValidator(validators, validator) {\n return Array.isArray(validators) ? validators.includes(validator) : validators === validator;\n}\n/**\n * Combines two arrays of validators into one. If duplicates are provided, only one will be added.\n *\n * @param validators The new validators.\n * @param currentValidators The base array of current validators.\n * @returns An array of validators.\n */\nfunction addValidators(validators, currentValidators) {\n const current = makeValidatorsArray(currentValidators);\n const validatorsToAdd = makeValidatorsArray(validators);\n validatorsToAdd.forEach(v => {\n // Note: if there are duplicate entries in the new validators array,\n // only the first one would be added to the current list of validators.\n // Duplicate ones would be ignored since `hasValidator` would detect\n // the presence of a validator function and we update the current list in place.\n if (!hasValidator(current, v)) {\n current.push(v);\n }\n });\n return current;\n}\nfunction removeValidators(validators, currentValidators) {\n return makeValidatorsArray(currentValidators).filter(v => !hasValidator(validators, v));\n}\n\n/**\n * @description\n * Base class for control directives.\n *\n * This class is only used internally in the `ReactiveFormsModule` and the `FormsModule`.\n *\n * @publicApi\n */\nclass AbstractControlDirective {\n constructor() {\n /**\n * Set of synchronous validators as they were provided while calling `setValidators` function.\n * @internal\n */\n this._rawValidators = [];\n /**\n * Set of asynchronous validators as they were provided while calling `setAsyncValidators`\n * function.\n * @internal\n */\n this._rawAsyncValidators = [];\n /*\n * The set of callbacks to be invoked when directive instance is being destroyed.\n */\n this._onDestroyCallbacks = [];\n }\n /**\n * @description\n * Reports the value of the control if it is present, otherwise null.\n */\n get value() {\n return this.control ? this.control.value : null;\n }\n /**\n * @description\n * Reports whether the control is valid. A control is considered valid if no\n * validation errors exist with the current value.\n * If the control is not present, null is returned.\n */\n get valid() {\n return this.control ? this.control.valid : null;\n }\n /**\n * @description\n * Reports whether the control is invalid, meaning that an error exists in the input value.\n * If the control is not present, null is returned.\n */\n get invalid() {\n return this.control ? this.control.invalid : null;\n }\n /**\n * @description\n * Reports whether a control is pending, meaning that async validation is occurring and\n * errors are not yet available for the input value. If the control is not present, null is\n * returned.\n */\n get pending() {\n return this.control ? this.control.pending : null;\n }\n /**\n * @description\n * Reports whether the control is disabled, meaning that the control is disabled\n * in the UI and is exempt from validation checks and excluded from aggregate\n * values of ancestor controls. If the control is not present, null is returned.\n */\n get disabled() {\n return this.control ? this.control.disabled : null;\n }\n /**\n * @description\n * Reports whether the control is enabled, meaning that the control is included in ancestor\n * calculations of validity or value. If the control is not present, null is returned.\n */\n get enabled() {\n return this.control ? this.control.enabled : null;\n }\n /**\n * @description\n * Reports the control's validation errors. If the control is not present, null is returned.\n */\n get errors() {\n return this.control ? this.control.errors : null;\n }\n /**\n * @description\n * Reports whether the control is pristine, meaning that the user has not yet changed\n * the value in the UI. If the control is not present, null is returned.\n */\n get pristine() {\n return this.control ? this.control.pristine : null;\n }\n /**\n * @description\n * Reports whether the control is dirty, meaning that the user has changed\n * the value in the UI. If the control is not present, null is returned.\n */\n get dirty() {\n return this.control ? this.control.dirty : null;\n }\n /**\n * @description\n * Reports whether the control is touched, meaning that the user has triggered\n * a `blur` event on it. If the control is not present, null is returned.\n */\n get touched() {\n return this.control ? this.control.touched : null;\n }\n /**\n * @description\n * Reports the validation status of the control. Possible values include:\n * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'.\n * If the control is not present, null is returned.\n */\n get status() {\n return this.control ? this.control.status : null;\n }\n /**\n * @description\n * Reports whether the control is untouched, meaning that the user has not yet triggered\n * a `blur` event on it. If the control is not present, null is returned.\n */\n get untouched() {\n return this.control ? this.control.untouched : null;\n }\n /**\n * @description\n * Returns a multicasting observable that emits a validation status whenever it is\n * calculated for the control. If the control is not present, null is returned.\n */\n get statusChanges() {\n return this.control ? this.control.statusChanges : null;\n }\n /**\n * @description\n * Returns a multicasting observable of value changes for the control that emits every time the\n * value of the control changes in the UI or programmatically.\n * If the control is not present, null is returned.\n */\n get valueChanges() {\n return this.control ? this.control.valueChanges : null;\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return null;\n }\n /**\n * Sets synchronous validators for this directive.\n * @internal\n */\n _setValidators(validators) {\n this._rawValidators = validators || [];\n this._composedValidatorFn = composeValidators(this._rawValidators);\n }\n /**\n * Sets asynchronous validators for this directive.\n * @internal\n */\n _setAsyncValidators(validators) {\n this._rawAsyncValidators = validators || [];\n this._composedAsyncValidatorFn = composeAsyncValidators(this._rawAsyncValidators);\n }\n /**\n * @description\n * Synchronous validator function composed of all the synchronous validators registered with this\n * directive.\n */\n get validator() {\n return this._composedValidatorFn || null;\n }\n /**\n * @description\n * Asynchronous validator function composed of all the asynchronous validators registered with\n * this directive.\n */\n get asyncValidator() {\n return this._composedAsyncValidatorFn || null;\n }\n /**\n * Internal function to register callbacks that should be invoked\n * when directive instance is being destroyed.\n * @internal\n */\n _registerOnDestroy(fn) {\n this._onDestroyCallbacks.push(fn);\n }\n /**\n * Internal function to invoke all registered \"on destroy\" callbacks.\n * Note: calling this function also clears the list of callbacks.\n * @internal\n */\n _invokeOnDestroyCallbacks() {\n this._onDestroyCallbacks.forEach(fn => fn());\n this._onDestroyCallbacks = [];\n }\n /**\n * @description\n * Resets the control with the provided value if the control is present.\n */\n reset(value = undefined) {\n if (this.control) this.control.reset(value);\n }\n /**\n * @description\n * Reports whether the control with the given path has the error specified.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @returns whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return this.control ? this.control.hasError(errorCode, path) : false;\n }\n /**\n * @description\n * Reports error data for the control with the given path.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @returns error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n return this.control ? this.control.getError(errorCode, path) : null;\n }\n}\n\n/**\n * @description\n * A base class for directives that contain multiple registered instances of `NgControl`.\n * Only used by the forms module.\n *\n * @publicApi\n */\nclass ControlContainer extends AbstractControlDirective {\n /**\n * @description\n * The top-level form directive for the control.\n */\n get formDirective() {\n return null;\n }\n /**\n * @description\n * The path to this group.\n */\n get path() {\n return null;\n }\n}\n\n/**\n * @description\n * A base class that all `FormControl`-based directives extend. It binds a `FormControl`\n * object to a DOM element.\n *\n * @publicApi\n */\nclass NgControl extends AbstractControlDirective {\n constructor() {\n super(...arguments);\n /**\n * @description\n * The parent form for the control.\n *\n * @internal\n */\n this._parent = null;\n /**\n * @description\n * The name for the control\n */\n this.name = null;\n /**\n * @description\n * The value accessor for the control\n */\n this.valueAccessor = null;\n }\n}\n\n// DO NOT REFACTOR!\n// Each status is represented by a separate function to make sure that\n// advanced Closure Compiler optimizations related to property renaming\n// can work correctly.\nclass AbstractControlStatus {\n constructor(cd) {\n this._cd = cd;\n }\n get isTouched() {\n // track the touched signal\n this._cd?.control?._touched?.();\n return !!this._cd?.control?.touched;\n }\n get isUntouched() {\n return !!this._cd?.control?.untouched;\n }\n get isPristine() {\n // track the pristine signal\n this._cd?.control?._pristine?.();\n return !!this._cd?.control?.pristine;\n }\n get isDirty() {\n // pristine signal already tracked above\n return !!this._cd?.control?.dirty;\n }\n get isValid() {\n // track the status signal\n this._cd?.control?._status?.();\n return !!this._cd?.control?.valid;\n }\n get isInvalid() {\n // status signal already tracked above\n return !!this._cd?.control?.invalid;\n }\n get isPending() {\n // status signal already tracked above\n return !!this._cd?.control?.pending;\n }\n get isSubmitted() {\n // track the submitted signal\n this._cd?._submitted?.();\n // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but\n // we avoid instanceof checks to prevent non-tree-shakable references to those types.\n return !!this._cd?.submitted;\n }\n}\nconst ngControlStatusHost = {\n '[class.ng-untouched]': 'isUntouched',\n '[class.ng-touched]': 'isTouched',\n '[class.ng-pristine]': 'isPristine',\n '[class.ng-dirty]': 'isDirty',\n '[class.ng-valid]': 'isValid',\n '[class.ng-invalid]': 'isInvalid',\n '[class.ng-pending]': 'isPending'\n};\nconst ngGroupStatusHost = {\n ...ngControlStatusHost,\n '[class.ng-submitted]': 'isSubmitted'\n};\n/**\n * @description\n * Directive automatically applied to Angular form controls that sets CSS classes\n * based on control status.\n *\n * @usageNotes\n *\n * ### CSS classes applied\n *\n * The following classes are applied as the properties become true:\n *\n * * ng-valid\n * * ng-invalid\n * * ng-pending\n * * ng-pristine\n * * ng-dirty\n * * ng-untouched\n * * ng-touched\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet NgControlStatus = /*#__PURE__*/(() => {\n class NgControlStatus extends AbstractControlStatus {\n constructor(cd) {\n super(cd);\n }\n static {\n this.ɵfac = function NgControlStatus_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgControlStatus)(i0.ɵɵdirectiveInject(NgControl, 2));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgControlStatus,\n selectors: [[\"\", \"formControlName\", \"\"], [\"\", \"ngModel\", \"\"], [\"\", \"formControl\", \"\"]],\n hostVars: 14,\n hostBindings: function NgControlStatus_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ng-untouched\", ctx.isUntouched)(\"ng-touched\", ctx.isTouched)(\"ng-pristine\", ctx.isPristine)(\"ng-dirty\", ctx.isDirty)(\"ng-valid\", ctx.isValid)(\"ng-invalid\", ctx.isInvalid)(\"ng-pending\", ctx.isPending);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgControlStatus;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Directive automatically applied to Angular form groups that sets CSS classes\n * based on control status (valid/invalid/dirty/etc). On groups, this includes the additional\n * class ng-submitted.\n *\n * @see {@link NgControlStatus}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet NgControlStatusGroup = /*#__PURE__*/(() => {\n class NgControlStatusGroup extends AbstractControlStatus {\n constructor(cd) {\n super(cd);\n }\n static {\n this.ɵfac = function NgControlStatusGroup_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgControlStatusGroup)(i0.ɵɵdirectiveInject(ControlContainer, 10));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgControlStatusGroup,\n selectors: [[\"\", \"formGroupName\", \"\"], [\"\", \"formArrayName\", \"\"], [\"\", \"ngModelGroup\", \"\"], [\"\", \"formGroup\", \"\"], [\"form\", 3, \"ngNoForm\", \"\"], [\"\", \"ngForm\", \"\"]],\n hostVars: 16,\n hostBindings: function NgControlStatusGroup_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ng-untouched\", ctx.isUntouched)(\"ng-touched\", ctx.isTouched)(\"ng-pristine\", ctx.isPristine)(\"ng-dirty\", ctx.isDirty)(\"ng-valid\", ctx.isValid)(\"ng-invalid\", ctx.isInvalid)(\"ng-pending\", ctx.isPending)(\"ng-submitted\", ctx.isSubmitted);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgControlStatusGroup;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst formControlNameExample = `\n <div [formGroup]=\"myGroup\">\n <input formControlName=\"firstName\">\n </div>\n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });`;\nconst formGroupNameExample = `\n <div [formGroup]=\"myGroup\">\n <div formGroupName=\"person\">\n <input formControlName=\"firstName\">\n </div>\n </div>\n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });`;\nconst formArrayNameExample = `\n <div [formGroup]=\"myGroup\">\n <div formArrayName=\"cities\">\n <div *ngFor=\"let city of cityArray.controls; index as i\">\n <input [formControlName]=\"i\">\n </div>\n </div>\n </div>\n\n In your class:\n\n this.cityArray = new FormArray([new FormControl('SF')]);\n this.myGroup = new FormGroup({\n cities: this.cityArray\n });`;\nconst ngModelGroupExample = `\n <form>\n <div ngModelGroup=\"person\">\n <input [(ngModel)]=\"person.name\" name=\"firstName\">\n </div>\n </form>`;\nconst ngModelWithFormGroupExample = `\n <div [formGroup]=\"myGroup\">\n <input formControlName=\"firstName\">\n <input [(ngModel)]=\"showMoreControls\" [ngModelOptions]=\"{standalone: true}\">\n </div>\n`;\nfunction controlParentException(nameOrIndex) {\n return new ɵRuntimeError(1050 /* RuntimeErrorCode.FORM_CONTROL_NAME_MISSING_PARENT */, `formControlName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n ${describeFormControl(nameOrIndex)}\n\n Example:\n\n ${formControlNameExample}`);\n}\nfunction describeFormControl(nameOrIndex) {\n if (nameOrIndex == null || nameOrIndex === '') {\n return '';\n }\n const valueType = typeof nameOrIndex === 'string' ? 'name' : 'index';\n return `Affected Form Control ${valueType}: \"${nameOrIndex}\"`;\n}\nfunction ngModelGroupException() {\n return new ɵRuntimeError(1051 /* RuntimeErrorCode.FORM_CONTROL_NAME_INSIDE_MODEL_GROUP */, `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n that also have a \"form\" prefix: formGroupName, formArrayName, or formGroup.\n\n Option 1: Update the parent to be formGroupName (reactive form strategy)\n\n ${formGroupNameExample}\n\n Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n ${ngModelGroupExample}`);\n}\nfunction missingFormException() {\n return new ɵRuntimeError(1052 /* RuntimeErrorCode.FORM_GROUP_MISSING_INSTANCE */, `formGroup expects a FormGroup instance. Please pass one in.\n\n Example:\n\n ${formControlNameExample}`);\n}\nfunction groupParentException() {\n return new ɵRuntimeError(1053 /* RuntimeErrorCode.FORM_GROUP_NAME_MISSING_PARENT */, `formGroupName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formGroupNameExample}`);\n}\nfunction arrayParentException() {\n return new ɵRuntimeError(1054 /* RuntimeErrorCode.FORM_ARRAY_NAME_MISSING_PARENT */, `formArrayName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formArrayNameExample}`);\n}\nconst disabledAttrWarning = `\n It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n you. We recommend using this approach to avoid 'changed after checked' errors.\n\n Example:\n // Specify the \\`disabled\\` property at control creation time:\n form = new FormGroup({\n first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n last: new FormControl('Drew', Validators.required)\n });\n\n // Controls can also be enabled/disabled after creation:\n form.get('first')?.enable();\n form.get('last')?.disable();\n`;\nconst asyncValidatorsDroppedWithOptsWarning = `\n It looks like you're constructing using a FormControl with both an options argument and an\n async validators argument. Mixing these arguments will cause your async validators to be dropped.\n You should either put all your validators in the options object, or in separate validators\n arguments. For example:\n\n // Using validators arguments\n fc = new FormControl(42, Validators.required, myAsyncValidator);\n\n // Using AbstractControlOptions\n fc = new FormControl(42, {validators: Validators.required, asyncValidators: myAV});\n\n // Do NOT mix them: async validators will be dropped!\n fc = new FormControl(42, {validators: Validators.required}, /* Oops! */ myAsyncValidator);\n`;\nfunction ngModelWarning(directiveName) {\n return `\n It looks like you're using ngModel on the same form field as ${directiveName}.\n Support for using the ngModel input property and ngModelChange event with\n reactive form directives has been deprecated in Angular v6 and will be removed\n in a future version of Angular.\n\n For more information on this, see our API docs here:\n https://angular.io/api/forms/${directiveName === 'formControl' ? 'FormControlDirective' : 'FormControlName'}#use-with-ngmodel\n `;\n}\nfunction describeKey(isFormGroup, key) {\n return isFormGroup ? `with name: '${key}'` : `at index: ${key}`;\n}\nfunction noControlsError(isFormGroup) {\n return `\n There are no form controls registered with this ${isFormGroup ? 'group' : 'array'} yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n `;\n}\nfunction missingControlError(isFormGroup, key) {\n return `Cannot find form control ${describeKey(isFormGroup, key)}`;\n}\nfunction missingControlValueError(isFormGroup, key) {\n return `Must supply a value for form control ${describeKey(isFormGroup, key)}`;\n}\n\n/**\n * Reports that a control is valid, meaning that no errors exist in the input value.\n *\n * @see {@link status}\n */\nconst VALID = 'VALID';\n/**\n * Reports that a control is invalid, meaning that an error exists in the input value.\n *\n * @see {@link status}\n */\nconst INVALID = 'INVALID';\n/**\n * Reports that a control is pending, meaning that async validation is occurring and\n * errors are not yet available for the input value.\n *\n * @see {@link markAsPending}\n * @see {@link status}\n */\nconst PENDING = 'PENDING';\n/**\n * Reports that a control is disabled, meaning that the control is exempt from ancestor\n * calculations of validity or value.\n *\n * @see {@link markAsDisabled}\n * @see {@link status}\n */\nconst DISABLED = 'DISABLED';\n/**\n * Base class for every event sent by `AbstractControl.events()`\n *\n * @publicApi\n */\nclass ControlEvent {}\n/**\n * Event fired when the value of a control changes.\n *\n * @publicApi\n */\nclass ValueChangeEvent extends ControlEvent {\n constructor(value, source) {\n super();\n this.value = value;\n this.source = source;\n }\n}\n/**\n * Event fired when the control's pristine state changes (pristine <=> dirty).\n *\n * @publicApi */\nclass PristineChangeEvent extends ControlEvent {\n constructor(pristine, source) {\n super();\n this.pristine = pristine;\n this.source = source;\n }\n}\n/**\n * Event fired when the control's touched status changes (touched <=> untouched).\n *\n * @publicApi\n */\nclass TouchedChangeEvent extends ControlEvent {\n constructor(touched, source) {\n super();\n this.touched = touched;\n this.source = source;\n }\n}\n/**\n * Event fired when the control's status changes.\n *\n * @publicApi\n */\nclass StatusChangeEvent extends ControlEvent {\n constructor(status, source) {\n super();\n this.status = status;\n this.source = source;\n }\n}\n/**\n * Event fired when a form is submitted\n *\n * @publicApi\n */\nclass FormSubmittedEvent extends ControlEvent {\n constructor(source) {\n super();\n this.source = source;\n }\n}\n/**\n * Event fired when a form is reset.\n *\n * @publicApi\n */\nclass FormResetEvent extends ControlEvent {\n constructor(source) {\n super();\n this.source = source;\n }\n}\n/**\n * Gets validators from either an options object or given validators.\n */\nfunction pickValidators(validatorOrOpts) {\n return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts) || null;\n}\n/**\n * Creates validator function by combining provided validators.\n */\nfunction coerceToValidator(validator) {\n return Array.isArray(validator) ? composeValidators(validator) : validator || null;\n}\n/**\n * Gets async validators from either an options object or given validators.\n */\nfunction pickAsyncValidators(asyncValidator, validatorOrOpts) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (isOptionsObj(validatorOrOpts) && asyncValidator) {\n console.warn(asyncValidatorsDroppedWithOptsWarning);\n }\n }\n return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator) || null;\n}\n/**\n * Creates async validator function by combining provided async validators.\n */\nfunction coerceToAsyncValidator(asyncValidator) {\n return Array.isArray(asyncValidator) ? composeAsyncValidators(asyncValidator) : asyncValidator || null;\n}\nfunction isOptionsObj(validatorOrOpts) {\n return validatorOrOpts != null && !Array.isArray(validatorOrOpts) && typeof validatorOrOpts === 'object';\n}\nfunction assertControlPresent(parent, isGroup, key) {\n const controls = parent.controls;\n const collection = isGroup ? Object.keys(controls) : controls;\n if (!collection.length) {\n throw new ɵRuntimeError(1000 /* RuntimeErrorCode.NO_CONTROLS */, typeof ngDevMode === 'undefined' || ngDevMode ? noControlsError(isGroup) : '');\n }\n if (!controls[key]) {\n throw new ɵRuntimeError(1001 /* RuntimeErrorCode.MISSING_CONTROL */, typeof ngDevMode === 'undefined' || ngDevMode ? missingControlError(isGroup, key) : '');\n }\n}\nfunction assertAllValuesPresent(control, isGroup, value) {\n control._forEachChild((_, key) => {\n if (value[key] === undefined) {\n throw new ɵRuntimeError(1002 /* RuntimeErrorCode.MISSING_CONTROL_VALUE */, typeof ngDevMode === 'undefined' || ngDevMode ? missingControlValueError(isGroup, key) : '');\n }\n });\n}\n/**\n * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.\n *\n * It provides some of the shared behavior that all controls and groups of controls have, like\n * running validators, calculating status, and resetting state. It also defines the properties\n * that are shared between all sub-classes, like `value`, `valid`, and `dirty`. It shouldn't be\n * instantiated directly.\n *\n * The first type parameter TValue represents the value type of the control (`control.value`).\n * The optional type parameter TRawValue represents the raw value type (`control.getRawValue()`).\n *\n * @see [Forms Guide](guide/forms)\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n * @see [Dynamic Forms Guide](guide/forms/dynamic-forms)\n *\n * @publicApi\n */\nclass AbstractControl {\n /**\n * Initialize the AbstractControl instance.\n *\n * @param validators The function or array of functions that is used to determine the validity of\n * this control synchronously.\n * @param asyncValidators The function or array of functions that is used to determine validity of\n * this control asynchronously.\n */\n constructor(validators, asyncValidators) {\n /** @internal */\n this._pendingDirty = false;\n /**\n * Indicates that a control has its own pending asynchronous validation in progress.\n * It also stores if the control should emit events when the validation status changes.\n *\n * @internal\n */\n this._hasOwnPendingAsyncValidator = null;\n /** @internal */\n this._pendingTouched = false;\n /** @internal */\n this._onCollectionChange = () => {};\n this._parent = null;\n /** @internal */\n this._status = computed(() => this.statusReactive());\n this.statusReactive = signal(undefined);\n /** @internal */\n this._pristine = computed(() => this.pristineReactive());\n this.pristineReactive = signal(true);\n /** @internal */\n this._touched = computed(() => this.touchedReactive());\n this.touchedReactive = signal(false);\n /**\n * Exposed as observable, see below.\n *\n * @internal\n */\n this._events = new Subject();\n /**\n * A multicasting observable that emits an event every time the state of the control changes.\n * It emits for value, status, pristine or touched changes.\n *\n * **Note**: On value change, the emit happens right after a value of this control is updated. The\n * value of a parent control (for example if this FormControl is a part of a FormGroup) is updated\n * later, so accessing a value of a parent control (using the `value` property) from the callback\n * of this event might result in getting a value that has not been updated yet. Subscribe to the\n * `events` of the parent control instead.\n * For other event types, the events are emitted after the parent control has been updated.\n *\n */\n this.events = this._events.asObservable();\n /** @internal */\n this._onDisabledChange = [];\n this._assignValidators(validators);\n this._assignAsyncValidators(asyncValidators);\n }\n /**\n * Returns the function that is used to determine the validity of this control synchronously.\n * If multiple validators have been added, this will be a single composed function.\n * See `Validators.compose()` for additional information.\n */\n get validator() {\n return this._composedValidatorFn;\n }\n set validator(validatorFn) {\n this._rawValidators = this._composedValidatorFn = validatorFn;\n }\n /**\n * Returns the function that is used to determine the validity of this control asynchronously.\n * If multiple validators have been added, this will be a single composed function.\n * See `Validators.compose()` for additional information.\n */\n get asyncValidator() {\n return this._composedAsyncValidatorFn;\n }\n set asyncValidator(asyncValidatorFn) {\n this._rawAsyncValidators = this._composedAsyncValidatorFn = asyncValidatorFn;\n }\n /**\n * The parent control.\n */\n get parent() {\n return this._parent;\n }\n /**\n * The validation status of the control.\n *\n * @see {@link FormControlStatus}\n *\n * These status values are mutually exclusive, so a control cannot be\n * both valid AND invalid or invalid AND disabled.\n */\n get status() {\n return untracked(this.statusReactive);\n }\n set status(v) {\n untracked(() => this.statusReactive.set(v));\n }\n /**\n * A control is `valid` when its `status` is `VALID`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if the control has passed all of its validation tests,\n * false otherwise.\n */\n get valid() {\n return this.status === VALID;\n }\n /**\n * A control is `invalid` when its `status` is `INVALID`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if this control has failed one or more of its validation checks,\n * false otherwise.\n */\n get invalid() {\n return this.status === INVALID;\n }\n /**\n * A control is `pending` when its `status` is `PENDING`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if this control is in the process of conducting a validation check,\n * false otherwise.\n */\n get pending() {\n return this.status == PENDING;\n }\n /**\n * A control is `disabled` when its `status` is `DISABLED`.\n *\n * Disabled controls are exempt from validation checks and\n * are not included in the aggregate value of their ancestor\n * controls.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if the control is disabled, false otherwise.\n */\n get disabled() {\n return this.status === DISABLED;\n }\n /**\n * A control is `enabled` as long as its `status` is not `DISABLED`.\n *\n * @returns True if the control has any status other than 'DISABLED',\n * false if the status is 'DISABLED'.\n *\n * @see {@link AbstractControl.status}\n *\n */\n get enabled() {\n return this.status !== DISABLED;\n }\n /**\n * A control is `pristine` if the user has not yet changed\n * the value in the UI.\n *\n * @returns True if the user has not yet changed the value in the UI; compare `dirty`.\n * Programmatic changes to a control's value do not mark it dirty.\n */\n get pristine() {\n return untracked(this.pristineReactive);\n }\n set pristine(v) {\n untracked(() => this.pristineReactive.set(v));\n }\n /**\n * A control is `dirty` if the user has changed the value\n * in the UI.\n *\n * @returns True if the user has changed the value of this control in the UI; compare `pristine`.\n * Programmatic changes to a control's value do not mark it dirty.\n */\n get dirty() {\n return !this.pristine;\n }\n /**\n * True if the control is marked as `touched`.\n *\n * A control is marked `touched` once the user has triggered\n * a `blur` event on it.\n */\n get touched() {\n return untracked(this.touchedReactive);\n }\n set touched(v) {\n untracked(() => this.touchedReactive.set(v));\n }\n /**\n * True if the control has not been marked as touched\n *\n * A control is `untouched` if the user has not yet triggered\n * a `blur` event on it.\n */\n get untouched() {\n return !this.touched;\n }\n /**\n * Reports the update strategy of the `AbstractControl` (meaning\n * the event on which the control updates itself).\n * Possible values: `'change'` | `'blur'` | `'submit'`\n * Default value: `'change'`\n */\n get updateOn() {\n return this._updateOn ? this._updateOn : this.parent ? this.parent.updateOn : 'change';\n }\n /**\n * Sets the synchronous validators that are active on this control. Calling\n * this overwrites any existing synchronous validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * If you want to add a new validator without affecting existing ones, consider\n * using `addValidators()` method instead.\n */\n setValidators(validators) {\n this._assignValidators(validators);\n }\n /**\n * Sets the asynchronous validators that are active on this control. Calling this\n * overwrites any existing asynchronous validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * If you want to add a new validator without affecting existing ones, consider\n * using `addAsyncValidators()` method instead.\n */\n setAsyncValidators(validators) {\n this._assignAsyncValidators(validators);\n }\n /**\n * Add a synchronous validator or validators to this control, without affecting other validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * Adding a validator that already exists will have no effect. If duplicate validator functions\n * are present in the `validators` array, only the first instance would be added to a form\n * control.\n *\n * @param validators The new validator function or functions to add to this control.\n */\n addValidators(validators) {\n this.setValidators(addValidators(validators, this._rawValidators));\n }\n /**\n * Add an asynchronous validator or validators to this control, without affecting other\n * validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * Adding a validator that already exists will have no effect.\n *\n * @param validators The new asynchronous validator function or functions to add to this control.\n */\n addAsyncValidators(validators) {\n this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators));\n }\n /**\n * Remove a synchronous validator from this control, without affecting other validators.\n * Validators are compared by function reference; you must pass a reference to the exact same\n * validator function as the one that was originally set. If a provided validator is not found,\n * it is ignored.\n *\n * @usageNotes\n *\n * ### Reference to a ValidatorFn\n *\n * ```\n * // Reference to the RequiredValidator\n * const ctrl = new FormControl<string | null>('', Validators.required);\n * ctrl.removeValidators(Validators.required);\n *\n * // Reference to anonymous function inside MinValidator\n * const minValidator = Validators.min(3);\n * const ctrl = new FormControl<string | null>('', minValidator);\n * expect(ctrl.hasValidator(minValidator)).toEqual(true)\n * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)\n *\n * ctrl.removeValidators(minValidator);\n * ```\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * @param validators The validator or validators to remove.\n */\n removeValidators(validators) {\n this.setValidators(removeValidators(validators, this._rawValidators));\n }\n /**\n * Remove an asynchronous validator from this control, without affecting other validators.\n * Validators are compared by function reference; you must pass a reference to the exact same\n * validator function as the one that was originally set. If a provided validator is not found, it\n * is ignored.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * @param validators The asynchronous validator or validators to remove.\n */\n removeAsyncValidators(validators) {\n this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators));\n }\n /**\n * Check whether a synchronous validator function is present on this control. The provided\n * validator must be a reference to the exact same function that was provided.\n *\n * @usageNotes\n *\n * ### Reference to a ValidatorFn\n *\n * ```\n * // Reference to the RequiredValidator\n * const ctrl = new FormControl<number | null>(0, Validators.required);\n * expect(ctrl.hasValidator(Validators.required)).toEqual(true)\n *\n * // Reference to anonymous function inside MinValidator\n * const minValidator = Validators.min(3);\n * const ctrl = new FormControl<number | null>(0, minValidator);\n * expect(ctrl.hasValidator(minValidator)).toEqual(true)\n * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)\n * ```\n *\n * @param validator The validator to check for presence. Compared by function reference.\n * @returns Whether the provided validator was found on this control.\n */\n hasValidator(validator) {\n return hasValidator(this._rawValidators, validator);\n }\n /**\n * Check whether an asynchronous validator function is present on this control. The provided\n * validator must be a reference to the exact same function that was provided.\n *\n * @param validator The asynchronous validator to check for presence. Compared by function\n * reference.\n * @returns Whether the provided asynchronous validator was found on this control.\n */\n hasAsyncValidator(validator) {\n return hasValidator(this._rawAsyncValidators, validator);\n }\n /**\n * Empties out the synchronous validator list.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n */\n clearValidators() {\n this.validator = null;\n }\n /**\n * Empties out the async validator list.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n */\n clearAsyncValidators() {\n this.asyncValidator = null;\n }\n markAsTouched(opts = {}) {\n const changed = this.touched === false;\n this.touched = true;\n const sourceControl = opts.sourceControl ?? this;\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsTouched({\n ...opts,\n sourceControl\n });\n }\n if (changed && opts.emitEvent !== false) {\n this._events.next(new TouchedChangeEvent(true, sourceControl));\n }\n }\n /**\n * Marks the control and all its descendant controls as `touched`.\n * @see {@link markAsTouched()}\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after marking is applied.\n * * `emitEvent`: When true or not supplied (the default), the `events`\n * observable emits a `TouchedChangeEvent` with the `touched` property being `true`.\n * When false, no events are emitted.\n */\n markAllAsTouched(opts = {}) {\n this.markAsTouched({\n onlySelf: true,\n emitEvent: opts.emitEvent,\n sourceControl: this\n });\n this._forEachChild(control => control.markAllAsTouched(opts));\n }\n markAsUntouched(opts = {}) {\n const changed = this.touched === true;\n this.touched = false;\n this._pendingTouched = false;\n const sourceControl = opts.sourceControl ?? this;\n this._forEachChild(control => {\n control.markAsUntouched({\n onlySelf: true,\n emitEvent: opts.emitEvent,\n sourceControl\n });\n });\n if (this._parent && !opts.onlySelf) {\n this._parent._updateTouched(opts, sourceControl);\n }\n if (changed && opts.emitEvent !== false) {\n this._events.next(new TouchedChangeEvent(false, sourceControl));\n }\n }\n markAsDirty(opts = {}) {\n const changed = this.pristine === true;\n this.pristine = false;\n const sourceControl = opts.sourceControl ?? this;\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsDirty({\n ...opts,\n sourceControl\n });\n }\n if (changed && opts.emitEvent !== false) {\n this._events.next(new PristineChangeEvent(false, sourceControl));\n }\n }\n markAsPristine(opts = {}) {\n const changed = this.pristine === false;\n this.pristine = true;\n this._pendingDirty = false;\n const sourceControl = opts.sourceControl ?? this;\n this._forEachChild(control => {\n /** We don't propagate the source control downwards */\n control.markAsPristine({\n onlySelf: true,\n emitEvent: opts.emitEvent\n });\n });\n if (this._parent && !opts.onlySelf) {\n this._parent._updatePristine(opts, sourceControl);\n }\n if (changed && opts.emitEvent !== false) {\n this._events.next(new PristineChangeEvent(true, sourceControl));\n }\n }\n markAsPending(opts = {}) {\n this.status = PENDING;\n const sourceControl = opts.sourceControl ?? this;\n if (opts.emitEvent !== false) {\n this._events.next(new StatusChangeEvent(this.status, sourceControl));\n this.statusChanges.emit(this.status);\n }\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsPending({\n ...opts,\n sourceControl\n });\n }\n }\n disable(opts = {}) {\n // If parent has been marked artificially dirty we don't want to re-calculate the\n // parent's dirtiness based on the children.\n const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);\n this.status = DISABLED;\n this.errors = null;\n this._forEachChild(control => {\n /** We don't propagate the source control downwards */\n control.disable({\n ...opts,\n onlySelf: true\n });\n });\n this._updateValue();\n const sourceControl = opts.sourceControl ?? this;\n if (opts.emitEvent !== false) {\n this._events.next(new ValueChangeEvent(this.value, sourceControl));\n this._events.next(new StatusChangeEvent(this.status, sourceControl));\n this.valueChanges.emit(this.value);\n this.statusChanges.emit(this.status);\n }\n this._updateAncestors({\n ...opts,\n skipPristineCheck\n }, this);\n this._onDisabledChange.forEach(changeFn => changeFn(true));\n }\n /**\n * Enables the control. This means the control is included in validation checks and\n * the aggregate value of its parent. Its status recalculates based on its value and\n * its validators.\n *\n * By default, if the control has children, all children are enabled.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configure options that control how the control propagates changes and\n * emits events when marked as untouched\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), the `statusChanges`,\n * `valueChanges` and `events`\n * observables emit events with the latest status and value when the control is enabled.\n * When false, no events are emitted.\n */\n enable(opts = {}) {\n // If parent has been marked artificially dirty we don't want to re-calculate the\n // parent's dirtiness based on the children.\n const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);\n this.status = VALID;\n this._forEachChild(control => {\n control.enable({\n ...opts,\n onlySelf: true\n });\n });\n this.updateValueAndValidity({\n onlySelf: true,\n emitEvent: opts.emitEvent\n });\n this._updateAncestors({\n ...opts,\n skipPristineCheck\n }, this);\n this._onDisabledChange.forEach(changeFn => changeFn(false));\n }\n _updateAncestors(opts, sourceControl) {\n if (this._parent && !opts.onlySelf) {\n this._parent.updateValueAndValidity(opts);\n if (!opts.skipPristineCheck) {\n this._parent._updatePristine({}, sourceControl);\n }\n this._parent._updateTouched({}, sourceControl);\n }\n }\n /**\n * Sets the parent of the control\n *\n * @param parent The new parent.\n */\n setParent(parent) {\n this._parent = parent;\n }\n /**\n * The raw value of this control. For most control implementations, the raw value will include\n * disabled children.\n */\n getRawValue() {\n return this.value;\n }\n updateValueAndValidity(opts = {}) {\n this._setInitialStatus();\n this._updateValue();\n if (this.enabled) {\n const shouldHaveEmitted = this._cancelExistingSubscription();\n this.errors = this._runValidator();\n this.status = this._calculateStatus();\n if (this.status === VALID || this.status === PENDING) {\n // If the canceled subscription should have emitted\n // we make sure the async validator emits the status change on completion\n this._runAsyncValidator(shouldHaveEmitted, opts.emitEvent);\n }\n }\n const sourceControl = opts.sourceControl ?? this;\n if (opts.emitEvent !== false) {\n this._events.next(new ValueChangeEvent(this.value, sourceControl));\n this._events.next(new StatusChangeEvent(this.status, sourceControl));\n this.valueChanges.emit(this.value);\n this.statusChanges.emit(this.status);\n }\n if (this._parent && !opts.onlySelf) {\n this._parent.updateValueAndValidity({\n ...opts,\n sourceControl\n });\n }\n }\n /** @internal */\n _updateTreeValidity(opts = {\n emitEvent: true\n }) {\n this._forEachChild(ctrl => ctrl._updateTreeValidity(opts));\n this.updateValueAndValidity({\n onlySelf: true,\n emitEvent: opts.emitEvent\n });\n }\n _setInitialStatus() {\n this.status = this._allControlsDisabled() ? DISABLED : VALID;\n }\n _runValidator() {\n return this.validator ? this.validator(this) : null;\n }\n _runAsyncValidator(shouldHaveEmitted, emitEvent) {\n if (this.asyncValidator) {\n this.status = PENDING;\n this._hasOwnPendingAsyncValidator = {\n emitEvent: emitEvent !== false\n };\n const obs = toObservable(this.asyncValidator(this));\n this._asyncValidationSubscription = obs.subscribe(errors => {\n this._hasOwnPendingAsyncValidator = null;\n // This will trigger the recalculation of the validation status, which depends on\n // the state of the asynchronous validation (whether it is in progress or not). So, it is\n // necessary that we have updated the `_hasOwnPendingAsyncValidator` boolean flag first.\n this.setErrors(errors, {\n emitEvent,\n shouldHaveEmitted\n });\n });\n }\n }\n _cancelExistingSubscription() {\n if (this._asyncValidationSubscription) {\n this._asyncValidationSubscription.unsubscribe();\n // we're cancelling the validator subscribtion, we keep if it should have emitted\n // because we want to emit eventually if it was required at least once.\n const shouldHaveEmitted = this._hasOwnPendingAsyncValidator?.emitEvent ?? false;\n this._hasOwnPendingAsyncValidator = null;\n return shouldHaveEmitted;\n }\n return false;\n }\n setErrors(errors, opts = {}) {\n this.errors = errors;\n this._updateControlsErrors(opts.emitEvent !== false, this, opts.shouldHaveEmitted);\n }\n /**\n * Retrieves a child control given the control's name or path.\n *\n * @param path A dot-delimited string or array of string/number values that define the path to the\n * control. If a string is provided, passing it as a string literal will result in improved type\n * information. Likewise, if an array is provided, passing it `as const` will cause improved type\n * information to be available.\n *\n * @usageNotes\n * ### Retrieve a nested control\n *\n * For example, to get a `name` control nested within a `person` sub-group:\n *\n * * `this.form.get('person.name');`\n *\n * -OR-\n *\n * * `this.form.get(['person', 'name'] as const);` // `as const` gives improved typings\n *\n * ### Retrieve a control in a FormArray\n *\n * When accessing an element inside a FormArray, you can use an element index.\n * For example, to get a `price` control from the first element in an `items` array you can use:\n *\n * * `this.form.get('items.0.price');`\n *\n * -OR-\n *\n * * `this.form.get(['items', 0, 'price']);`\n */\n get(path) {\n let currPath = path;\n if (currPath == null) return null;\n if (!Array.isArray(currPath)) currPath = currPath.split('.');\n if (currPath.length === 0) return null;\n return currPath.reduce((control, name) => control && control._find(name), this);\n }\n /**\n * @description\n * Reports error data for the control with the given path.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @returns error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n const control = path ? this.get(path) : this;\n return control && control.errors ? control.errors[errorCode] : null;\n }\n /**\n * @description\n * Reports whether the control with the given path has the error specified.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @returns whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return !!this.getError(errorCode, path);\n }\n /**\n * Retrieves the top-level ancestor of this control.\n */\n get root() {\n let x = this;\n while (x._parent) {\n x = x._parent;\n }\n return x;\n }\n /** @internal */\n _updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted) {\n this.status = this._calculateStatus();\n if (emitEvent) {\n this.statusChanges.emit(this.status);\n }\n // The Events Observable expose a slight different bevahior than the statusChanges obs\n // An async validator will still emit a StatusChangeEvent is a previously cancelled\n // async validator has emitEvent set to true\n if (emitEvent || shouldHaveEmitted) {\n this._events.next(new StatusChangeEvent(this.status, changedControl));\n }\n if (this._parent) {\n this._parent._updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted);\n }\n }\n /** @internal */\n _initObservables() {\n this.valueChanges = new EventEmitter();\n this.statusChanges = new EventEmitter();\n }\n _calculateStatus() {\n if (this._allControlsDisabled()) return DISABLED;\n if (this.errors) return INVALID;\n if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING)) return PENDING;\n if (this._anyControlsHaveStatus(INVALID)) return INVALID;\n return VALID;\n }\n /** @internal */\n _anyControlsHaveStatus(status) {\n return this._anyControls(control => control.status === status);\n }\n /** @internal */\n _anyControlsDirty() {\n return this._anyControls(control => control.dirty);\n }\n /** @internal */\n _anyControlsTouched() {\n return this._anyControls(control => control.touched);\n }\n /** @internal */\n _updatePristine(opts, changedControl) {\n const newPristine = !this._anyControlsDirty();\n const changed = this.pristine !== newPristine;\n this.pristine = newPristine;\n if (this._parent && !opts.onlySelf) {\n this._parent._updatePristine(opts, changedControl);\n }\n if (changed) {\n this._events.next(new PristineChangeEvent(this.pristine, changedControl));\n }\n }\n /** @internal */\n _updateTouched(opts = {}, changedControl) {\n this.touched = this._anyControlsTouched();\n this._events.next(new TouchedChangeEvent(this.touched, changedControl));\n if (this._parent && !opts.onlySelf) {\n this._parent._updateTouched(opts, changedControl);\n }\n }\n /** @internal */\n _registerOnCollectionChange(fn) {\n this._onCollectionChange = fn;\n }\n /** @internal */\n _setUpdateStrategy(opts) {\n if (isOptionsObj(opts) && opts.updateOn != null) {\n this._updateOn = opts.updateOn;\n }\n }\n /**\n * Check to see if parent has been marked artificially dirty.\n *\n * @internal\n */\n _parentMarkedDirty(onlySelf) {\n const parentDirty = this._parent && this._parent.dirty;\n return !onlySelf && !!parentDirty && !this._parent._anyControlsDirty();\n }\n /** @internal */\n _find(name) {\n return null;\n }\n /**\n * Internal implementation of the `setValidators` method. Needs to be separated out into a\n * different method, because it is called in the constructor and it can break cases where\n * a control is extended.\n */\n _assignValidators(validators) {\n this._rawValidators = Array.isArray(validators) ? validators.slice() : validators;\n this._composedValidatorFn = coerceToValidator(this._rawValidators);\n }\n /**\n * Internal implementation of the `setAsyncValidators` method. Needs to be separated out into a\n * different method, because it is called in the constructor and it can break cases where\n * a control is extended.\n */\n _assignAsyncValidators(validators) {\n this._rawAsyncValidators = Array.isArray(validators) ? validators.slice() : validators;\n this._composedAsyncValidatorFn = coerceToAsyncValidator(this._rawAsyncValidators);\n }\n}\n\n/**\n * Tracks the value and validity state of a group of `FormControl` instances.\n *\n * A `FormGroup` aggregates the values of each child `FormControl` into one object,\n * with each control name as the key. It calculates its status by reducing the status values\n * of its children. For example, if one of the controls in a group is invalid, the entire\n * group becomes invalid.\n *\n * `FormGroup` is one of the four fundamental building blocks used to define forms in Angular,\n * along with `FormControl`, `FormArray`, and `FormRecord`.\n *\n * When instantiating a `FormGroup`, pass in a collection of child controls as the first\n * argument. The key for each child registers the name for the control.\n *\n * `FormGroup` is intended for use cases where the keys are known ahead of time.\n * If you need to dynamically add and remove controls, use {@link FormRecord} instead.\n *\n * `FormGroup` accepts an optional type parameter `TControl`, which is an object type with inner\n * control types as values.\n *\n * @usageNotes\n *\n * ### Create a form group with 2 controls\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl('Nancy', Validators.minLength(2)),\n * last: new FormControl('Drew'),\n * });\n *\n * console.log(form.value); // {first: 'Nancy', last; 'Drew'}\n * console.log(form.status); // 'VALID'\n * ```\n *\n * ### The type argument, and optional controls\n *\n * `FormGroup` accepts one generic argument, which is an object containing its inner controls.\n * This type will usually be inferred automatically, but you can always specify it explicitly if you\n * wish.\n *\n * If you have controls that are optional (i.e. they can be removed, you can use the `?` in the\n * type):\n *\n * ```\n * const form = new FormGroup<{\n * first: FormControl<string|null>,\n * middle?: FormControl<string|null>, // Middle name is optional.\n * last: FormControl<string|null>,\n * }>({\n * first: new FormControl('Nancy'),\n * last: new FormControl('Drew'),\n * });\n * ```\n *\n * ### Create a form group with a group-level validator\n *\n * You include group-level validators as the second arg, or group-level async\n * validators as the third arg. These come in handy when you want to perform validation\n * that considers the value of more than one child control.\n *\n * ```\n * const form = new FormGroup({\n * password: new FormControl('', Validators.minLength(2)),\n * passwordConfirm: new FormControl('', Validators.minLength(2)),\n * }, passwordMatchValidator);\n *\n *\n * function passwordMatchValidator(g: FormGroup) {\n * return g.get('password').value === g.get('passwordConfirm').value\n * ? null : {'mismatch': true};\n * }\n * ```\n *\n * Like `FormControl` instances, you choose to pass in\n * validators and async validators as part of an options object.\n *\n * ```\n * const form = new FormGroup({\n * password: new FormControl('')\n * passwordConfirm: new FormControl('')\n * }, { validators: passwordMatchValidator, asyncValidators: otherValidator });\n * ```\n *\n * ### Set the updateOn property for all controls in a form group\n *\n * The options object is used to set a default value for each child\n * control's `updateOn` property. If you set `updateOn` to `'blur'` at the\n * group level, all child controls default to 'blur', unless the child\n * has explicitly specified a different `updateOn` value.\n *\n * ```ts\n * const c = new FormGroup({\n * one: new FormControl()\n * }, { updateOn: 'blur' });\n * ```\n *\n * ### Using a FormGroup with optional controls\n *\n * It is possible to have optional controls in a FormGroup. An optional control can be removed later\n * using `removeControl`, and can be omitted when calling `reset`. Optional controls must be\n * declared optional in the group's type.\n *\n * ```ts\n * const c = new FormGroup<{one?: FormControl<string>}>({\n * one: new FormControl('')\n * });\n * ```\n *\n * Notice that `c.value.one` has type `string|null|undefined`. This is because calling `c.reset({})`\n * without providing the optional key `one` will cause it to become `null`.\n *\n * @publicApi\n */\nclass FormGroup extends AbstractControl {\n /**\n * Creates a new `FormGroup` instance.\n *\n * @param controls A collection of child controls. The key for each child is the name\n * under which it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(controls, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateFormGroupControls(controls);\n this.controls = controls;\n this._initObservables();\n this._setUpdateStrategy(validatorOrOpts);\n this._setUpControls();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable,\n // so we set `emitEvent` to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n }\n registerControl(name, control) {\n if (this.controls[name]) return this.controls[name];\n this.controls[name] = control;\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n return control;\n }\n addControl(name, control, options = {}) {\n this.registerControl(name, control);\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n this._onCollectionChange();\n }\n /**\n * Remove a control from this group. In a strongly-typed group, required controls cannot be\n * removed.\n *\n * This method also updates the value and validity of the control.\n *\n * @param name The control name to remove from the collection\n * @param options Specifies whether this FormGroup instance should emit events after a\n * control is removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * removed. When false, no events are emitted.\n */\n removeControl(name, options = {}) {\n if (this.controls[name]) this.controls[name]._registerOnCollectionChange(() => {});\n delete this.controls[name];\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n this._onCollectionChange();\n }\n setControl(name, control, options = {}) {\n if (this.controls[name]) this.controls[name]._registerOnCollectionChange(() => {});\n delete this.controls[name];\n if (control) this.registerControl(name, control);\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n this._onCollectionChange();\n }\n contains(controlName) {\n return this.controls.hasOwnProperty(controlName) && this.controls[controlName].enabled;\n }\n /**\n * Sets the value of the `FormGroup`. It accepts an object that matches\n * the structure of the group, with control names as keys.\n *\n * @usageNotes\n * ### Set the complete value for the form group\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl(),\n * last: new FormControl()\n * });\n *\n * console.log(form.value); // {first: null, last: null}\n *\n * form.setValue({first: 'Nancy', last: 'Drew'});\n * console.log(form.value); // {first: 'Nancy', last: 'Drew'}\n * ```\n *\n * @throws When strict checks fail, such as setting the value of a control\n * that doesn't exist or if you exclude a value of a control that does exist.\n *\n * @param value The new value for the control that matches the structure of the group.\n * @param options Configuration options that determine how the control propagates changes\n * and emits events after the value changes.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n */\n setValue(value, options = {}) {\n assertAllValuesPresent(this, true, value);\n Object.keys(value).forEach(name => {\n assertControlPresent(this, true, name);\n this.controls[name].setValue(value[name], {\n onlySelf: true,\n emitEvent: options.emitEvent\n });\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of the `FormGroup`. It accepts an object with control\n * names as keys, and does its best to match the values to the correct controls\n * in the group.\n *\n * It accepts both super-sets and sub-sets of the group without throwing an error.\n *\n * @usageNotes\n * ### Patch the value for a form group\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl(),\n * last: new FormControl()\n * });\n * console.log(form.value); // {first: null, last: null}\n *\n * form.patchValue({first: 'Nancy'});\n * console.log(form.value); // {first: 'Nancy', last: null}\n * ```\n *\n * @param value The object that matches the structure of the group.\n * @param options Configuration options that determine how the control propagates changes and\n * emits events after the value is patched.\n * * `onlySelf`: When true, each change only affects this control and not its parent. Default is\n * true.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control value\n * is updated. When false, no events are emitted. The configuration options are passed to\n * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.\n */\n patchValue(value, options = {}) {\n // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n // `patchValue` can be called recursively and inner data structures might have these values, so\n // we just ignore such cases when a field containing FormGroup instance receives `null` or\n // `undefined` as a value.\n if (value == null /* both `null` and `undefined` */) return;\n Object.keys(value).forEach(name => {\n // The compiler cannot see through the uninstantiated conditional type of `this.controls`, so\n // `as any` is required.\n const control = this.controls[name];\n if (control) {\n control.patchValue(/* Guaranteed to be present, due to the outer forEach. */value[name], {\n onlySelf: true,\n emitEvent: options.emitEvent\n });\n }\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Resets the `FormGroup`, marks all descendants `pristine` and `untouched` and sets\n * the value of all descendants to their default values, or null if no defaults were provided.\n *\n * You reset to a specific form state by passing in a map of states\n * that matches the structure of your form, with control names as keys. The state\n * is a standalone value or a form state object with both a value and a disabled\n * status.\n *\n * @param value Resets the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param options Configuration options that determine how the control propagates changes\n * and emits events when the group is reset.\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * @usageNotes\n *\n * ### Reset the form group values\n *\n * ```ts\n * const form = new FormGroup({\n * first: new FormControl('first name'),\n * last: new FormControl('last name')\n * });\n *\n * console.log(form.value); // {first: 'first name', last: 'last name'}\n *\n * form.reset({ first: 'name', last: 'last name' });\n *\n * console.log(form.value); // {first: 'name', last: 'last name'}\n * ```\n *\n * ### Reset the form group values and disabled status\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl('first name'),\n * last: new FormControl('last name')\n * });\n *\n * form.reset({\n * first: {value: 'name', disabled: true},\n * last: 'last'\n * });\n *\n * console.log(form.value); // {last: 'last'}\n * console.log(form.get('first').status); // 'DISABLED'\n * ```\n */\n reset(value = {}, options = {}) {\n this._forEachChild((control, name) => {\n control.reset(value ? value[name] : null, {\n onlySelf: true,\n emitEvent: options.emitEvent\n });\n });\n this._updatePristine(options, this);\n this._updateTouched(options, this);\n this.updateValueAndValidity(options);\n }\n /**\n * The aggregate value of the `FormGroup`, including any disabled controls.\n *\n * Retrieves all values regardless of disabled status.\n */\n getRawValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n acc[name] = control.getRawValue();\n return acc;\n });\n }\n /** @internal */\n _syncPendingControls() {\n let subtreeUpdated = this._reduceChildren(false, (updated, child) => {\n return child._syncPendingControls() ? true : updated;\n });\n if (subtreeUpdated) this.updateValueAndValidity({\n onlySelf: true\n });\n return subtreeUpdated;\n }\n /** @internal */\n _forEachChild(cb) {\n Object.keys(this.controls).forEach(key => {\n // The list of controls can change (for ex. controls might be removed) while the loop\n // is running (as a result of invoking Forms API in `valueChanges` subscription), so we\n // have to null check before invoking the callback.\n const control = this.controls[key];\n control && cb(control, key);\n });\n }\n /** @internal */\n _setUpControls() {\n this._forEachChild(control => {\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n });\n }\n /** @internal */\n _updateValue() {\n this.value = this._reduceValue();\n }\n /** @internal */\n _anyControls(condition) {\n for (const [controlName, control] of Object.entries(this.controls)) {\n if (this.contains(controlName) && condition(control)) {\n return true;\n }\n }\n return false;\n }\n /** @internal */\n _reduceValue() {\n let acc = {};\n return this._reduceChildren(acc, (acc, control, name) => {\n if (control.enabled || this.disabled) {\n acc[name] = control.value;\n }\n return acc;\n });\n }\n /** @internal */\n _reduceChildren(initValue, fn) {\n let res = initValue;\n this._forEachChild((control, name) => {\n res = fn(res, control, name);\n });\n return res;\n }\n /** @internal */\n _allControlsDisabled() {\n for (const controlName of Object.keys(this.controls)) {\n if (this.controls[controlName].enabled) {\n return false;\n }\n }\n return Object.keys(this.controls).length > 0 || this.disabled;\n }\n /** @internal */\n _find(name) {\n return this.controls.hasOwnProperty(name) ? this.controls[name] : null;\n }\n}\n/**\n * Will validate that none of the controls has a key with a dot\n * Throws other wise\n */\nfunction validateFormGroupControls(controls) {\n const invalidKeys = Object.keys(controls).filter(key => key.includes('.'));\n if (invalidKeys.length > 0) {\n // TODO: make this an error once there are no more uses in G3\n console.warn(`FormGroup keys cannot include \\`.\\`, please replace the keys for: ${invalidKeys.join(',')}.`);\n }\n}\nconst UntypedFormGroup = FormGroup;\n/**\n * @description\n * Asserts that the given control is an instance of `FormGroup`\n *\n * @publicApi\n */\nconst isFormGroup = control => control instanceof FormGroup;\n/**\n * Tracks the value and validity state of a collection of `FormControl` instances, each of which has\n * the same value type.\n *\n * `FormRecord` is very similar to {@link FormGroup}, except it can be used with a dynamic keys,\n * with controls added and removed as needed.\n *\n * `FormRecord` accepts one generic argument, which describes the type of the controls it contains.\n *\n * @usageNotes\n *\n * ```\n * let numbers = new FormRecord({bill: new FormControl('415-123-456')});\n * numbers.addControl('bob', new FormControl('415-234-567'));\n * numbers.removeControl('bill');\n * ```\n *\n * @publicApi\n */\nclass FormRecord extends FormGroup {}\n/**\n * @description\n * Asserts that the given control is an instance of `FormRecord`\n *\n * @publicApi\n */\nconst isFormRecord = control => control instanceof FormRecord;\n\n/**\n * Token to provide to allow SetDisabledState to always be called when a CVA is added, regardless of\n * whether the control is disabled or enabled.\n *\n * @see {@link FormsModule#withconfig}\n */\nconst CALL_SET_DISABLED_STATE = /*#__PURE__*/new InjectionToken('CallSetDisabledState', {\n providedIn: 'root',\n factory: () => setDisabledStateDefault\n});\n/**\n * Whether to use the fixed setDisabledState behavior by default.\n */\nconst setDisabledStateDefault = 'always';\nfunction controlPath(name, parent) {\n return [...parent.path, name];\n}\n/**\n * Links a Form control and a Form directive by setting up callbacks (such as `onChange`) on both\n * instances. This function is typically invoked when form directive is being initialized.\n *\n * @param control Form control instance that should be linked.\n * @param dir Directive that should be linked with a given control.\n */\nfunction setUpControl(control, dir, callSetDisabledState = setDisabledStateDefault) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!control) _throwError(dir, 'Cannot find control with');\n if (!dir.valueAccessor) _throwMissingValueAccessorError(dir);\n }\n setUpValidators(control, dir);\n dir.valueAccessor.writeValue(control.value);\n // The legacy behavior only calls the CVA's `setDisabledState` if the control is disabled.\n // If the `callSetDisabledState` option is set to `always`, then this bug is fixed and\n // the method is always called.\n if (control.disabled || callSetDisabledState === 'always') {\n dir.valueAccessor.setDisabledState?.(control.disabled);\n }\n setUpViewChangePipeline(control, dir);\n setUpModelChangePipeline(control, dir);\n setUpBlurPipeline(control, dir);\n setUpDisabledChangeHandler(control, dir);\n}\n/**\n * Reverts configuration performed by the `setUpControl` control function.\n * Effectively disconnects form control with a given form directive.\n * This function is typically invoked when corresponding form directive is being destroyed.\n *\n * @param control Form control which should be cleaned up.\n * @param dir Directive that should be disconnected from a given control.\n * @param validateControlPresenceOnChange Flag that indicates whether onChange handler should\n * contain asserts to verify that it's not called once directive is destroyed. We need this flag\n * to avoid potentially breaking changes caused by better control cleanup introduced in #39235.\n */\nfunction cleanUpControl(control, dir, validateControlPresenceOnChange = true) {\n const noop = () => {\n if (validateControlPresenceOnChange && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n _noControlError(dir);\n }\n };\n // The `valueAccessor` field is typically defined on FromControl and FormControlName directive\n // instances and there is a logic in `selectValueAccessor` function that throws if it's not the\n // case. We still check the presence of `valueAccessor` before invoking its methods to make sure\n // that cleanup works correctly if app code or tests are setup to ignore the error thrown from\n // `selectValueAccessor`. See https://github.com/angular/angular/issues/40521.\n if (dir.valueAccessor) {\n dir.valueAccessor.registerOnChange(noop);\n dir.valueAccessor.registerOnTouched(noop);\n }\n cleanUpValidators(control, dir);\n if (control) {\n dir._invokeOnDestroyCallbacks();\n control._registerOnCollectionChange(() => {});\n }\n}\nfunction registerOnValidatorChange(validators, onChange) {\n validators.forEach(validator => {\n if (validator.registerOnValidatorChange) validator.registerOnValidatorChange(onChange);\n });\n}\n/**\n * Sets up disabled change handler function on a given form control if ControlValueAccessor\n * associated with a given directive instance supports the `setDisabledState` call.\n *\n * @param control Form control where disabled change handler should be setup.\n * @param dir Corresponding directive instance associated with this control.\n */\nfunction setUpDisabledChangeHandler(control, dir) {\n if (dir.valueAccessor.setDisabledState) {\n const onDisabledChange = isDisabled => {\n dir.valueAccessor.setDisabledState(isDisabled);\n };\n control.registerOnDisabledChange(onDisabledChange);\n // Register a callback function to cleanup disabled change handler\n // from a control instance when a directive is destroyed.\n dir._registerOnDestroy(() => {\n control._unregisterOnDisabledChange(onDisabledChange);\n });\n }\n}\n/**\n * Sets up sync and async directive validators on provided form control.\n * This function merges validators from the directive into the validators of the control.\n *\n * @param control Form control where directive validators should be setup.\n * @param dir Directive instance that contains validators to be setup.\n */\nfunction setUpValidators(control, dir) {\n const validators = getControlValidators(control);\n if (dir.validator !== null) {\n control.setValidators(mergeValidators(validators, dir.validator));\n } else if (typeof validators === 'function') {\n // If sync validators are represented by a single validator function, we force the\n // `Validators.compose` call to happen by executing the `setValidators` function with\n // an array that contains that function. We need this to avoid possible discrepancies in\n // validators behavior, so sync validators are always processed by the `Validators.compose`.\n // Note: we should consider moving this logic inside the `setValidators` function itself, so we\n // have consistent behavior on AbstractControl API level. The same applies to the async\n // validators logic below.\n control.setValidators([validators]);\n }\n const asyncValidators = getControlAsyncValidators(control);\n if (dir.asyncValidator !== null) {\n control.setAsyncValidators(mergeValidators(asyncValidators, dir.asyncValidator));\n } else if (typeof asyncValidators === 'function') {\n control.setAsyncValidators([asyncValidators]);\n }\n // Re-run validation when validator binding changes, e.g. minlength=3 -> minlength=4\n const onValidatorChange = () => control.updateValueAndValidity();\n registerOnValidatorChange(dir._rawValidators, onValidatorChange);\n registerOnValidatorChange(dir._rawAsyncValidators, onValidatorChange);\n}\n/**\n * Cleans up sync and async directive validators on provided form control.\n * This function reverts the setup performed by the `setUpValidators` function, i.e.\n * removes directive-specific validators from a given control instance.\n *\n * @param control Form control from where directive validators should be removed.\n * @param dir Directive instance that contains validators to be removed.\n * @returns true if a control was updated as a result of this action.\n */\nfunction cleanUpValidators(control, dir) {\n let isControlUpdated = false;\n if (control !== null) {\n if (dir.validator !== null) {\n const validators = getControlValidators(control);\n if (Array.isArray(validators) && validators.length > 0) {\n // Filter out directive validator function.\n const updatedValidators = validators.filter(validator => validator !== dir.validator);\n if (updatedValidators.length !== validators.length) {\n isControlUpdated = true;\n control.setValidators(updatedValidators);\n }\n }\n }\n if (dir.asyncValidator !== null) {\n const asyncValidators = getControlAsyncValidators(control);\n if (Array.isArray(asyncValidators) && asyncValidators.length > 0) {\n // Filter out directive async validator function.\n const updatedAsyncValidators = asyncValidators.filter(asyncValidator => asyncValidator !== dir.asyncValidator);\n if (updatedAsyncValidators.length !== asyncValidators.length) {\n isControlUpdated = true;\n control.setAsyncValidators(updatedAsyncValidators);\n }\n }\n }\n }\n // Clear onValidatorChange callbacks by providing a noop function.\n const noop = () => {};\n registerOnValidatorChange(dir._rawValidators, noop);\n registerOnValidatorChange(dir._rawAsyncValidators, noop);\n return isControlUpdated;\n}\nfunction setUpViewChangePipeline(control, dir) {\n dir.valueAccessor.registerOnChange(newValue => {\n control._pendingValue = newValue;\n control._pendingChange = true;\n control._pendingDirty = true;\n if (control.updateOn === 'change') updateControl(control, dir);\n });\n}\nfunction setUpBlurPipeline(control, dir) {\n dir.valueAccessor.registerOnTouched(() => {\n control._pendingTouched = true;\n if (control.updateOn === 'blur' && control._pendingChange) updateControl(control, dir);\n if (control.updateOn !== 'submit') control.markAsTouched();\n });\n}\nfunction updateControl(control, dir) {\n if (control._pendingDirty) control.markAsDirty();\n control.setValue(control._pendingValue, {\n emitModelToViewChange: false\n });\n dir.viewToModelUpdate(control._pendingValue);\n control._pendingChange = false;\n}\nfunction setUpModelChangePipeline(control, dir) {\n const onChange = (newValue, emitModelEvent) => {\n // control -> view\n dir.valueAccessor.writeValue(newValue);\n // control -> ngModel\n if (emitModelEvent) dir.viewToModelUpdate(newValue);\n };\n control.registerOnChange(onChange);\n // Register a callback function to cleanup onChange handler\n // from a control instance when a directive is destroyed.\n dir._registerOnDestroy(() => {\n control._unregisterOnChange(onChange);\n });\n}\n/**\n * Links a FormGroup or FormArray instance and corresponding Form directive by setting up validators\n * present in the view.\n *\n * @param control FormGroup or FormArray instance that should be linked.\n * @param dir Directive that provides view validators.\n */\nfunction setUpFormContainer(control, dir) {\n if (control == null && (typeof ngDevMode === 'undefined' || ngDevMode)) _throwError(dir, 'Cannot find control with');\n setUpValidators(control, dir);\n}\n/**\n * Reverts the setup performed by the `setUpFormContainer` function.\n *\n * @param control FormGroup or FormArray instance that should be cleaned up.\n * @param dir Directive that provided view validators.\n * @returns true if a control was updated as a result of this action.\n */\nfunction cleanUpFormContainer(control, dir) {\n return cleanUpValidators(control, dir);\n}\nfunction _noControlError(dir) {\n return _throwError(dir, 'There is no FormControl instance attached to form control element with');\n}\nfunction _throwError(dir, message) {\n const messageEnd = _describeControlLocation(dir);\n throw new Error(`${message} ${messageEnd}`);\n}\nfunction _describeControlLocation(dir) {\n const path = dir.path;\n if (path && path.length > 1) return `path: '${path.join(' -> ')}'`;\n if (path?.[0]) return `name: '${path}'`;\n return 'unspecified name attribute';\n}\nfunction _throwMissingValueAccessorError(dir) {\n const loc = _describeControlLocation(dir);\n throw new ɵRuntimeError(-1203 /* RuntimeErrorCode.NG_MISSING_VALUE_ACCESSOR */, `No value accessor for form control ${loc}.`);\n}\nfunction _throwInvalidValueAccessorError(dir) {\n const loc = _describeControlLocation(dir);\n throw new ɵRuntimeError(1200 /* RuntimeErrorCode.NG_VALUE_ACCESSOR_NOT_PROVIDED */, `Value accessor was not provided as an array for form control with ${loc}. ` + `Check that the \\`NG_VALUE_ACCESSOR\\` token is configured as a \\`multi: true\\` provider.`);\n}\nfunction isPropertyUpdated(changes, viewModel) {\n if (!changes.hasOwnProperty('model')) return false;\n const change = changes['model'];\n if (change.isFirstChange()) return true;\n return !Object.is(viewModel, change.currentValue);\n}\nfunction isBuiltInAccessor(valueAccessor) {\n // Check if a given value accessor is an instance of a class that directly extends\n // `BuiltInControlValueAccessor` one.\n return Object.getPrototypeOf(valueAccessor.constructor) === BuiltInControlValueAccessor;\n}\nfunction syncPendingControls(form, directives) {\n form._syncPendingControls();\n directives.forEach(dir => {\n const control = dir.control;\n if (control.updateOn === 'submit' && control._pendingChange) {\n dir.viewToModelUpdate(control._pendingValue);\n control._pendingChange = false;\n }\n });\n}\n// TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented\nfunction selectValueAccessor(dir, valueAccessors) {\n if (!valueAccessors) return null;\n if (!Array.isArray(valueAccessors) && (typeof ngDevMode === 'undefined' || ngDevMode)) _throwInvalidValueAccessorError(dir);\n let defaultAccessor = undefined;\n let builtinAccessor = undefined;\n let customAccessor = undefined;\n valueAccessors.forEach(v => {\n if (v.constructor === DefaultValueAccessor) {\n defaultAccessor = v;\n } else if (isBuiltInAccessor(v)) {\n if (builtinAccessor && (typeof ngDevMode === 'undefined' || ngDevMode)) _throwError(dir, 'More than one built-in value accessor matches form control with');\n builtinAccessor = v;\n } else {\n if (customAccessor && (typeof ngDevMode === 'undefined' || ngDevMode)) _throwError(dir, 'More than one custom value accessor matches form control with');\n customAccessor = v;\n }\n });\n if (customAccessor) return customAccessor;\n if (builtinAccessor) return builtinAccessor;\n if (defaultAccessor) return defaultAccessor;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _throwError(dir, 'No valid value accessor for form control with');\n }\n return null;\n}\nfunction removeListItem$1(list, el) {\n const index = list.indexOf(el);\n if (index > -1) list.splice(index, 1);\n}\n// TODO(kara): remove after deprecation period\nfunction _ngModelWarning(name, type, instance, warningConfig) {\n if (warningConfig === 'never') return;\n if ((warningConfig === null || warningConfig === 'once') && !type._ngModelWarningSentOnce || warningConfig === 'always' && !instance._ngModelWarningSent) {\n console.warn(ngModelWarning(name));\n type._ngModelWarningSentOnce = true;\n instance._ngModelWarningSent = true;\n }\n}\nconst formDirectiveProvider$1 = {\n provide: ControlContainer,\n useExisting: /*#__PURE__*/forwardRef(() => NgForm)\n};\nconst resolvedPromise$1 = /*#__PURE__*/(() => Promise.resolve())();\n/**\n * @description\n * Creates a top-level `FormGroup` instance and binds it to a form\n * to track aggregate form value and validation status.\n *\n * As soon as you import the `FormsModule`, this directive becomes active by default on\n * all `<form>` tags. You don't need to add a special selector.\n *\n * You optionally export the directive into a local template variable using `ngForm` as the key\n * (ex: `#myForm=\"ngForm\"`). This is optional, but useful. Many properties from the underlying\n * `FormGroup` instance are duplicated on the directive itself, so a reference to it\n * gives you access to the aggregate value and validity status of the form, as well as\n * user interaction properties like `dirty` and `touched`.\n *\n * To register child controls with the form, use `NgModel` with a `name`\n * attribute. You may use `NgModelGroup` to create sub-groups within the form.\n *\n * If necessary, listen to the directive's `ngSubmit` event to be notified when the user has\n * triggered a form submission. The `ngSubmit` event emits the original form\n * submission event.\n *\n * In template driven forms, all `<form>` tags are automatically tagged as `NgForm`.\n * To import the `FormsModule` but skip its usage in some forms,\n * for example, to use native HTML5 validation, add the `ngNoForm` and the `<form>`\n * tags won't create an `NgForm` directive. In reactive forms, using `ngNoForm` is\n * unnecessary because the `<form>` tags are inert. In that case, you would\n * refrain from using the `formGroup` directive.\n *\n * @usageNotes\n *\n * ### Listening for form submission\n *\n * The following example shows how to capture the form values from the \"ngSubmit\" event.\n *\n * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}\n *\n * ### Setting the update options\n *\n * The following example shows you how to change the \"updateOn\" option from its default using\n * ngFormOptions.\n *\n * ```html\n * <form [ngFormOptions]=\"{updateOn: 'blur'}\">\n * <input name=\"one\" ngModel> <!-- this ngModel will update on blur -->\n * </form>\n * ```\n *\n * ### Native DOM validation UI\n *\n * In order to prevent the native DOM form validation UI from interfering with Angular's form\n * validation, Angular automatically adds the `novalidate` attribute on any `<form>` whenever\n * `FormModule` or `ReactiveFormModule` are imported into the application.\n * If you want to explicitly enable native DOM validation UI with Angular forms, you can add the\n * `ngNativeValidate` attribute to the `<form>` element:\n *\n * ```html\n * <form ngNativeValidate>\n * ...\n * </form>\n * ```\n *\n * @ngModule FormsModule\n * @publicApi\n */\nlet NgForm = /*#__PURE__*/(() => {\n class NgForm extends ControlContainer {\n /**\n * @description\n * Returns whether the form submission has been triggered.\n */\n get submitted() {\n return untracked(this.submittedReactive);\n }\n constructor(validators, asyncValidators, callSetDisabledState) {\n super();\n this.callSetDisabledState = callSetDisabledState;\n /** @internal */\n this._submitted = computed(() => this.submittedReactive());\n this.submittedReactive = signal(false);\n this._directives = new Set();\n /**\n * @description\n * Event emitter for the \"ngSubmit\" event\n */\n this.ngSubmit = new EventEmitter();\n this.form = new FormGroup({}, composeValidators(validators), composeAsyncValidators(asyncValidators));\n }\n /** @nodoc */\n ngAfterViewInit() {\n this._setUpdateStrategy();\n }\n /**\n * @description\n * The directive instance.\n */\n get formDirective() {\n return this;\n }\n /**\n * @description\n * The internal `FormGroup` instance.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Returns an array representing the path to this group. Because this directive\n * always lives at the top level of a form, it is always an empty array.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * Returns a map of the controls in this group.\n */\n get controls() {\n return this.form.controls;\n }\n /**\n * @description\n * Method that sets up the control directive in this group, re-calculates its value\n * and validity, and adds the instance to the internal list of directives.\n *\n * @param dir The `NgModel` directive instance.\n */\n addControl(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n dir.control = container.registerControl(dir.name, dir.control);\n setUpControl(dir.control, dir, this.callSetDisabledState);\n dir.control.updateValueAndValidity({\n emitEvent: false\n });\n this._directives.add(dir);\n });\n }\n /**\n * @description\n * Retrieves the `FormControl` instance from the provided `NgModel` directive.\n *\n * @param dir The `NgModel` directive instance.\n */\n getControl(dir) {\n return this.form.get(dir.path);\n }\n /**\n * @description\n * Removes the `NgModel` instance from the internal list of directives\n *\n * @param dir The `NgModel` directive instance.\n */\n removeControl(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n if (container) {\n container.removeControl(dir.name);\n }\n this._directives.delete(dir);\n });\n }\n /**\n * @description\n * Adds a new `NgModelGroup` directive instance to the form.\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n addFormGroup(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n const group = new FormGroup({});\n setUpFormContainer(group, dir);\n container.registerControl(dir.name, group);\n group.updateValueAndValidity({\n emitEvent: false\n });\n });\n }\n /**\n * @description\n * Removes the `NgModelGroup` directive instance from the form.\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n removeFormGroup(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n if (container) {\n container.removeControl(dir.name);\n }\n });\n }\n /**\n * @description\n * Retrieves the `FormGroup` for a provided `NgModelGroup` directive instance\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n getFormGroup(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Sets the new value for the provided `NgControl` directive.\n *\n * @param dir The `NgControl` directive instance.\n * @param value The new value for the directive's control.\n */\n updateModel(dir, value) {\n resolvedPromise$1.then(() => {\n const ctrl = this.form.get(dir.path);\n ctrl.setValue(value);\n });\n }\n /**\n * @description\n * Sets the value for this `FormGroup`.\n *\n * @param value The new value\n */\n setValue(value) {\n this.control.setValue(value);\n }\n /**\n * @description\n * Method called when the \"submit\" event is triggered on the form.\n * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.\n *\n * @param $event The \"submit\" event object\n */\n onSubmit($event) {\n this.submittedReactive.set(true);\n syncPendingControls(this.form, this._directives);\n this.ngSubmit.emit($event);\n // Forms with `method=\"dialog\"` have some special behavior\n // that won't reload the page and that shouldn't be prevented.\n return $event?.target?.method === 'dialog';\n }\n /**\n * @description\n * Method called when the \"reset\" event is triggered on the form.\n */\n onReset() {\n this.resetForm();\n }\n /**\n * @description\n * Resets the form to an initial value and resets its submitted status.\n *\n * @param value The new value for the form.\n */\n resetForm(value = undefined) {\n this.form.reset(value);\n this.submittedReactive.set(false);\n }\n _setUpdateStrategy() {\n if (this.options && this.options.updateOn != null) {\n this.form._updateOn = this.options.updateOn;\n }\n }\n _findContainer(path) {\n path.pop();\n return path.length ? this.form.get(path) : this.form;\n }\n static {\n this.ɵfac = function NgForm_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgForm)(i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), i0.ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgForm,\n selectors: [[\"form\", 3, \"ngNoForm\", \"\", 3, \"formGroup\", \"\"], [\"ng-form\"], [\"\", \"ngForm\", \"\"]],\n hostBindings: function NgForm_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"submit\", function NgForm_submit_HostBindingHandler($event) {\n return ctx.onSubmit($event);\n })(\"reset\", function NgForm_reset_HostBindingHandler() {\n return ctx.onReset();\n });\n }\n },\n inputs: {\n options: [0, \"ngFormOptions\", \"options\"]\n },\n outputs: {\n ngSubmit: \"ngSubmit\"\n },\n exportAs: [\"ngForm\"],\n features: [i0.ɵɵProvidersFeature([formDirectiveProvider$1]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgForm;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction removeListItem(list, el) {\n const index = list.indexOf(el);\n if (index > -1) list.splice(index, 1);\n}\nfunction isFormControlState(formState) {\n return typeof formState === 'object' && formState !== null && Object.keys(formState).length === 2 && 'value' in formState && 'disabled' in formState;\n}\nconst FormControl = class FormControl extends AbstractControl {\n constructor(\n // formState and defaultValue will only be null if T is nullable\n formState = null, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n /** @publicApi */\n this.defaultValue = null;\n /** @internal */\n this._onChange = [];\n /** @internal */\n this._pendingChange = false;\n this._applyFormState(formState);\n this._setUpdateStrategy(validatorOrOpts);\n this._initObservables();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`.\n // The status should be broadcasted via the `statusChanges` observable, so we set\n // `emitEvent` to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n if (isOptionsObj(validatorOrOpts) && (validatorOrOpts.nonNullable || validatorOrOpts.initialValueIsDefault)) {\n if (isFormControlState(formState)) {\n this.defaultValue = formState.value;\n } else {\n this.defaultValue = formState;\n }\n }\n }\n setValue(value, options = {}) {\n this.value = this._pendingValue = value;\n if (this._onChange.length && options.emitModelToViewChange !== false) {\n this._onChange.forEach(changeFn => changeFn(this.value, options.emitViewToModelChange !== false));\n }\n this.updateValueAndValidity(options);\n }\n patchValue(value, options = {}) {\n this.setValue(value, options);\n }\n reset(formState = this.defaultValue, options = {}) {\n this._applyFormState(formState);\n this.markAsPristine(options);\n this.markAsUntouched(options);\n this.setValue(this.value, options);\n this._pendingChange = false;\n }\n /** @internal */\n _updateValue() {}\n /** @internal */\n _anyControls(condition) {\n return false;\n }\n /** @internal */\n _allControlsDisabled() {\n return this.disabled;\n }\n registerOnChange(fn) {\n this._onChange.push(fn);\n }\n /** @internal */\n _unregisterOnChange(fn) {\n removeListItem(this._onChange, fn);\n }\n registerOnDisabledChange(fn) {\n this._onDisabledChange.push(fn);\n }\n /** @internal */\n _unregisterOnDisabledChange(fn) {\n removeListItem(this._onDisabledChange, fn);\n }\n /** @internal */\n _forEachChild(cb) {}\n /** @internal */\n _syncPendingControls() {\n if (this.updateOn === 'submit') {\n if (this._pendingDirty) this.markAsDirty();\n if (this._pendingTouched) this.markAsTouched();\n if (this._pendingChange) {\n this.setValue(this._pendingValue, {\n onlySelf: true,\n emitModelToViewChange: false\n });\n return true;\n }\n }\n return false;\n }\n _applyFormState(formState) {\n if (isFormControlState(formState)) {\n this.value = this._pendingValue = formState.value;\n formState.disabled ? this.disable({\n onlySelf: true,\n emitEvent: false\n }) : this.enable({\n onlySelf: true,\n emitEvent: false\n });\n } else {\n this.value = this._pendingValue = formState;\n }\n }\n};\nconst UntypedFormControl = FormControl;\n/**\n * @description\n * Asserts that the given control is an instance of `FormControl`\n *\n * @publicApi\n */\nconst isFormControl = control => control instanceof FormControl;\n\n/**\n * @description\n * A base class for code shared between the `NgModelGroup` and `FormGroupName` directives.\n *\n * @publicApi\n */\nlet AbstractFormGroupDirective = /*#__PURE__*/(() => {\n class AbstractFormGroupDirective extends ControlContainer {\n /** @nodoc */\n ngOnInit() {\n this._checkParentType();\n // Register the group with its parent group.\n this.formDirective.addFormGroup(this);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.formDirective) {\n // Remove the group from its parent group.\n this.formDirective.removeFormGroup(this);\n }\n }\n /**\n * @description\n * The `FormGroup` bound to this directive.\n */\n get control() {\n return this.formDirective.getFormGroup(this);\n }\n /**\n * @description\n * The path to this group from the top-level directive.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /** @internal */\n _checkParentType() {}\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵAbstractFormGroupDirective_BaseFactory;\n return function AbstractFormGroupDirective_Factory(__ngFactoryType__) {\n return (ɵAbstractFormGroupDirective_BaseFactory || (ɵAbstractFormGroupDirective_BaseFactory = i0.ɵɵgetInheritedFactory(AbstractFormGroupDirective)))(__ngFactoryType__ || AbstractFormGroupDirective);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: AbstractFormGroupDirective,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return AbstractFormGroupDirective;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction modelParentException() {\n return new ɵRuntimeError(1350 /* RuntimeErrorCode.NGMODEL_IN_FORM_GROUP */, `\n ngModel cannot be used to register form controls with a parent formGroup directive. Try using\n formGroup's partner directive \"formControlName\" instead. Example:\n\n ${formControlNameExample}\n\n Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n Example:\n\n ${ngModelWithFormGroupExample}`);\n}\nfunction formGroupNameException() {\n return new ɵRuntimeError(1351 /* RuntimeErrorCode.NGMODEL_IN_FORM_GROUP_NAME */, `\n ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n ${formGroupNameExample}\n\n Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n ${ngModelGroupExample}`);\n}\nfunction missingNameException() {\n return new ɵRuntimeError(1352 /* RuntimeErrorCode.NGMODEL_WITHOUT_NAME */, `If ngModel is used within a form tag, either the name attribute must be set or the form\n control must be defined as 'standalone' in ngModelOptions.\n\n Example 1: <input [(ngModel)]=\"person.firstName\" name=\"first\">\n Example 2: <input [(ngModel)]=\"person.firstName\" [ngModelOptions]=\"{standalone: true}\">`);\n}\nfunction modelGroupParentException() {\n return new ɵRuntimeError(1353 /* RuntimeErrorCode.NGMODELGROUP_IN_FORM_GROUP */, `\n ngModelGroup cannot be used with a parent formGroup directive.\n\n Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n ${formGroupNameExample}\n\n Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n ${ngModelGroupExample}`);\n}\nconst modelGroupProvider = {\n provide: ControlContainer,\n useExisting: /*#__PURE__*/forwardRef(() => NgModelGroup)\n};\n/**\n * @description\n * Creates and binds a `FormGroup` instance to a DOM element.\n *\n * This directive can only be used as a child of `NgForm` (within `<form>` tags).\n *\n * Use this directive to validate a sub-group of your form separately from the\n * rest of your form, or if some values in your domain model make more sense\n * to consume together in a nested object.\n *\n * Provide a name for the sub-group and it will become the key\n * for the sub-group in the form's full value. If you need direct access, export the directive into\n * a local template variable using `ngModelGroup` (ex: `#myGroup=\"ngModelGroup\"`).\n *\n * @usageNotes\n *\n * ### Consuming controls in a grouping\n *\n * The following example shows you how to combine controls together in a sub-group\n * of the form.\n *\n * {@example forms/ts/ngModelGroup/ng_model_group_example.ts region='Component'}\n *\n * @ngModule FormsModule\n * @publicApi\n */\nlet NgModelGroup = /*#__PURE__*/(() => {\n class NgModelGroup extends AbstractFormGroupDirective {\n constructor(parent, validators, asyncValidators) {\n super();\n /**\n * @description\n * Tracks the name of the `NgModelGroup` bound to the directive. The name corresponds\n * to a key in the parent `NgForm`.\n */\n this.name = '';\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @internal */\n _checkParentType() {\n if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw modelGroupParentException();\n }\n }\n static {\n this.ɵfac = function NgModelGroup_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgModelGroup)(i0.ɵɵdirectiveInject(ControlContainer, 5), i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgModelGroup,\n selectors: [[\"\", \"ngModelGroup\", \"\"]],\n inputs: {\n name: [0, \"ngModelGroup\", \"name\"]\n },\n exportAs: [\"ngModelGroup\"],\n features: [i0.ɵɵProvidersFeature([modelGroupProvider]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgModelGroup;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst formControlBinding$1 = {\n provide: NgControl,\n useExisting: /*#__PURE__*/forwardRef(() => NgModel)\n};\n/**\n * `ngModel` forces an additional change detection run when its inputs change:\n * E.g.:\n * ```\n * <div>{{myModel.valid}}</div>\n * <input [(ngModel)]=\"myValue\" #myModel=\"ngModel\">\n * ```\n * I.e. `ngModel` can export itself on the element and then be used in the template.\n * Normally, this would result in expressions before the `input` that use the exported directive\n * to have an old value as they have been\n * dirty checked before. As this is a very common case for `ngModel`, we added this second change\n * detection run.\n *\n * Notes:\n * - this is just one extra run no matter how many `ngModel`s have been changed.\n * - this is a general problem when using `exportAs` for directives!\n */\nconst resolvedPromise = /*#__PURE__*/(() => Promise.resolve())();\n/**\n * @description\n * Creates a `FormControl` instance from a [domain\n * model](https://en.wikipedia.org/wiki/Domain_model) and binds it to a form control element.\n *\n * The `FormControl` instance tracks the value, user interaction, and\n * validation status of the control and keeps the view synced with the model. If used\n * within a parent form, the directive also registers itself with the form as a child\n * control.\n *\n * This directive is used by itself or as part of a larger form. Use the\n * `ngModel` selector to activate it.\n *\n * It accepts a domain model as an optional `Input`. If you have a one-way binding\n * to `ngModel` with `[]` syntax, changing the domain model's value in the component\n * class sets the value in the view. If you have a two-way binding with `[()]` syntax\n * (also known as 'banana-in-a-box syntax'), the value in the UI always syncs back to\n * the domain model in your class.\n *\n * To inspect the properties of the associated `FormControl` (like the validity state),\n * export the directive into a local template variable using `ngModel` as the key (ex:\n * `#myVar=\"ngModel\"`). You can then access the control using the directive's `control` property.\n * However, the most commonly used properties (like `valid` and `dirty`) also exist on the control\n * for direct access. See a full list of properties directly available in\n * `AbstractControlDirective`.\n *\n * @see {@link RadioControlValueAccessor}\n * @see {@link SelectControlValueAccessor}\n *\n * @usageNotes\n *\n * ### Using ngModel on a standalone control\n *\n * The following examples show a simple standalone control using `ngModel`:\n *\n * {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'}\n *\n * When using the `ngModel` within `<form>` tags, you'll also need to supply a `name` attribute\n * so that the control can be registered with the parent form under that name.\n *\n * In the context of a parent form, it's often unnecessary to include one-way or two-way binding,\n * as the parent form syncs the value for you. You access its properties by exporting it into a\n * local template variable using `ngForm` such as (`#f=\"ngForm\"`). Use the variable where\n * needed on form submission.\n *\n * If you do need to populate initial values into your form, using a one-way binding for\n * `ngModel` tends to be sufficient as long as you use the exported form's value rather\n * than the domain model's value on submit.\n *\n * ### Using ngModel within a form\n *\n * The following example shows controls using `ngModel` within a form:\n *\n * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}\n *\n * ### Using a standalone ngModel within a group\n *\n * The following example shows you how to use a standalone ngModel control\n * within a form. This controls the display of the form, but doesn't contain form data.\n *\n * ```html\n * <form>\n * <input name=\"login\" ngModel placeholder=\"Login\">\n * <input type=\"checkbox\" ngModel [ngModelOptions]=\"{standalone: true}\"> Show more options?\n * </form>\n * <!-- form value: {login: ''} -->\n * ```\n *\n * ### Setting the ngModel `name` attribute through options\n *\n * The following example shows you an alternate way to set the name attribute. Here,\n * an attribute identified as name is used within a custom form control component. To still be able\n * to specify the NgModel's name, you must specify it using the `ngModelOptions` input instead.\n *\n * ```html\n * <form>\n * <my-custom-form-control name=\"Nancy\" ngModel [ngModelOptions]=\"{name: 'user'}\">\n * </my-custom-form-control>\n * </form>\n * <!-- form value: {user: ''} -->\n * ```\n *\n * @ngModule FormsModule\n * @publicApi\n */\nlet NgModel = /*#__PURE__*/(() => {\n class NgModel extends NgControl {\n constructor(parent, validators, asyncValidators, valueAccessors, _changeDetectorRef, callSetDisabledState) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this.callSetDisabledState = callSetDisabledState;\n this.control = new FormControl();\n /** @internal */\n this._registered = false;\n /**\n * @description\n * Tracks the name bound to the directive. If a parent form exists, it\n * uses this name as a key to retrieve this control's value.\n */\n this.name = '';\n /**\n * @description\n * Event emitter for producing the `ngModelChange` event after\n * the view model updates.\n */\n this.update = new EventEmitter();\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._checkForErrors();\n if (!this._registered || 'name' in changes) {\n if (this._registered) {\n this._checkName();\n if (this.formDirective) {\n // We can't call `formDirective.removeControl(this)`, because the `name` has already been\n // changed. We also can't reset the name temporarily since the logic in `removeControl`\n // is inside a promise and it won't run immediately. We work around it by giving it an\n // object with the same shape instead.\n const oldName = changes['name'].previousValue;\n this.formDirective.removeControl({\n name: oldName,\n path: this._getPath(oldName)\n });\n }\n }\n this._setUpControl();\n }\n if ('isDisabled' in changes) {\n this._updateDisabled(changes);\n }\n if (isPropertyUpdated(changes, this.viewModel)) {\n this._updateValue(this.model);\n this.viewModel = this.model;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n this.formDirective && this.formDirective.removeControl(this);\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return this._getPath(this.name);\n }\n /**\n * @description\n * The top-level directive for this control if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value emitted by `ngModelChange`.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n _setUpControl() {\n this._setUpdateStrategy();\n this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this);\n this._registered = true;\n }\n _setUpdateStrategy() {\n if (this.options && this.options.updateOn != null) {\n this.control._updateOn = this.options.updateOn;\n }\n }\n _isStandalone() {\n return !this._parent || !!(this.options && this.options.standalone);\n }\n _setUpStandalone() {\n setUpControl(this.control, this, this.callSetDisabledState);\n this.control.updateValueAndValidity({\n emitEvent: false\n });\n }\n _checkForErrors() {\n if (!this._isStandalone()) {\n this._checkParentType();\n }\n this._checkName();\n }\n _checkParentType() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!(this._parent instanceof NgModelGroup) && this._parent instanceof AbstractFormGroupDirective) {\n throw formGroupNameException();\n } else if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm)) {\n throw modelParentException();\n }\n }\n }\n _checkName() {\n if (this.options && this.options.name) this.name = this.options.name;\n if (!this._isStandalone() && !this.name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw missingNameException();\n }\n }\n _updateValue(value) {\n resolvedPromise.then(() => {\n this.control.setValue(value, {\n emitViewToModelChange: false\n });\n this._changeDetectorRef?.markForCheck();\n });\n }\n _updateDisabled(changes) {\n const disabledValue = changes['isDisabled'].currentValue;\n // checking for 0 to avoid breaking change\n const isDisabled = disabledValue !== 0 && booleanAttribute(disabledValue);\n resolvedPromise.then(() => {\n if (isDisabled && !this.control.disabled) {\n this.control.disable();\n } else if (!isDisabled && this.control.disabled) {\n this.control.enable();\n }\n this._changeDetectorRef?.markForCheck();\n });\n }\n _getPath(controlName) {\n return this._parent ? controlPath(controlName, this._parent) : [controlName];\n }\n static {\n this.ɵfac = function NgModel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgModel)(i0.ɵɵdirectiveInject(ControlContainer, 9), i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 10), i0.ɵɵdirectiveInject(ChangeDetectorRef, 8), i0.ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgModel,\n selectors: [[\"\", \"ngModel\", \"\", 3, \"formControlName\", \"\", 3, \"formControl\", \"\"]],\n inputs: {\n name: \"name\",\n isDisabled: [0, \"disabled\", \"isDisabled\"],\n model: [0, \"ngModel\", \"model\"],\n options: [0, \"ngModelOptions\", \"options\"]\n },\n outputs: {\n update: \"ngModelChange\"\n },\n exportAs: [\"ngModel\"],\n features: [i0.ɵɵProvidersFeature([formControlBinding$1]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgModel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @description\n *\n * Adds `novalidate` attribute to all forms by default.\n *\n * `novalidate` is used to disable browser's native form validation.\n *\n * If you want to use native validation with Angular forms, just add `ngNativeValidate` attribute:\n *\n * ```\n * <form ngNativeValidate></form>\n * ```\n *\n * @publicApi\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n */\nlet ɵNgNoValidate = /*#__PURE__*/(() => {\n class ɵNgNoValidate {\n static {\n this.ɵfac = function ɵNgNoValidate_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ɵNgNoValidate)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ɵNgNoValidate,\n selectors: [[\"form\", 3, \"ngNoForm\", \"\", 3, \"ngNativeValidate\", \"\"]],\n hostAttrs: [\"novalidate\", \"\"]\n });\n }\n }\n return ɵNgNoValidate;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NUMBER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => NumberValueAccessor),\n multi: true\n};\n/**\n * @description\n * The `ControlValueAccessor` for writing a number value and listening to number input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * @usageNotes\n *\n * ### Using a number input with a reactive form.\n *\n * The following example shows how to use a number input with a reactive form.\n *\n * ```ts\n * const totalCountControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"number\" [formControl]=\"totalCountControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet NumberValueAccessor = /*#__PURE__*/(() => {\n class NumberValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n // The value needs to be normalized for IE9, otherwise it is set to 'null' when null\n const normalizedValue = value == null ? '' : value;\n this.setProperty('value', normalizedValue);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = value => {\n fn(value == '' ? null : parseFloat(value));\n };\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNumberValueAccessor_BaseFactory;\n return function NumberValueAccessor_Factory(__ngFactoryType__) {\n return (ɵNumberValueAccessor_BaseFactory || (ɵNumberValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(NumberValueAccessor)))(__ngFactoryType__ || NumberValueAccessor);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NumberValueAccessor,\n selectors: [[\"input\", \"type\", \"number\", \"formControlName\", \"\"], [\"input\", \"type\", \"number\", \"formControl\", \"\"], [\"input\", \"type\", \"number\", \"ngModel\", \"\"]],\n hostBindings: function NumberValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"input\", function NumberValueAccessor_input_HostBindingHandler($event) {\n return ctx.onChange($event.target.value);\n })(\"blur\", function NumberValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([NUMBER_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NumberValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => RadioControlValueAccessor),\n multi: true\n};\nfunction throwNameError() {\n throw new ɵRuntimeError(1202 /* RuntimeErrorCode.NAME_AND_FORM_CONTROL_NAME_MUST_MATCH */, `\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">\n `);\n}\n/**\n * @description\n * Class used by Angular to track radio buttons. For internal use only.\n */\nlet RadioControlRegistry = /*#__PURE__*/(() => {\n class RadioControlRegistry {\n constructor() {\n this._accessors = [];\n }\n /**\n * @description\n * Adds a control to the internal registry. For internal use only.\n */\n add(control, accessor) {\n this._accessors.push([control, accessor]);\n }\n /**\n * @description\n * Removes a control from the internal registry. For internal use only.\n */\n remove(accessor) {\n for (let i = this._accessors.length - 1; i >= 0; --i) {\n if (this._accessors[i][1] === accessor) {\n this._accessors.splice(i, 1);\n return;\n }\n }\n }\n /**\n * @description\n * Selects a radio button. For internal use only.\n */\n select(accessor) {\n this._accessors.forEach(c => {\n if (this._isSameGroup(c, accessor) && c[1] !== accessor) {\n c[1].fireUncheck(accessor.value);\n }\n });\n }\n _isSameGroup(controlPair, accessor) {\n if (!controlPair[0].control) return false;\n return controlPair[0]._parent === accessor._control._parent && controlPair[1].name === accessor.name;\n }\n static {\n this.ɵfac = function RadioControlRegistry_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RadioControlRegistry)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RadioControlRegistry,\n factory: RadioControlRegistry.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RadioControlRegistry;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * The `ControlValueAccessor` for writing radio control values and listening to radio control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @usageNotes\n *\n * ### Using radio buttons with reactive form directives\n *\n * The follow example shows how to use radio buttons in a reactive form. When using radio buttons in\n * a reactive form, radio buttons in the same group should have the same `formControlName`.\n * Providing a `name` attribute is optional.\n *\n * {@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet RadioControlValueAccessor = /*#__PURE__*/(() => {\n class RadioControlValueAccessor extends BuiltInControlValueAccessor {\n constructor(renderer, elementRef, _registry, _injector) {\n super(renderer, elementRef);\n this._registry = _registry;\n this._injector = _injector;\n this.setDisabledStateFired = false;\n /**\n * The registered callback function called when a change event occurs on the input element.\n * Note: we declare `onChange` here (also used as host listener) as a function with no arguments\n * to override the `onChange` function (which expects 1 argument) in the parent\n * `BaseControlValueAccessor` class.\n * @nodoc\n */\n this.onChange = () => {};\n this.callSetDisabledState = inject(CALL_SET_DISABLED_STATE, {\n optional: true\n }) ?? setDisabledStateDefault;\n }\n /** @nodoc */\n ngOnInit() {\n this._control = this._injector.get(NgControl);\n this._checkName();\n this._registry.add(this._control, this);\n }\n /** @nodoc */\n ngOnDestroy() {\n this._registry.remove(this);\n }\n /**\n * Sets the \"checked\" property value on the radio input element.\n * @nodoc\n */\n writeValue(value) {\n this._state = value === this.value;\n this.setProperty('checked', this._state);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this._fn = fn;\n this.onChange = () => {\n fn(this.value);\n this._registry.select(this);\n };\n }\n /** @nodoc */\n setDisabledState(isDisabled) {\n /**\n * `setDisabledState` is supposed to be called whenever the disabled state of a control changes,\n * including upon control creation. However, a longstanding bug caused the method to not fire\n * when an *enabled* control was attached. This bug was fixed in v15 in #47576.\n *\n * This had a side effect: previously, it was possible to instantiate a reactive form control\n * with `[attr.disabled]=true`, even though the corresponding control was enabled in the\n * model. This resulted in a mismatch between the model and the DOM. Now, because\n * `setDisabledState` is always called, the value in the DOM will be immediately overwritten\n * with the \"correct\" enabled value.\n *\n * However, the fix also created an exceptional case: radio buttons. Because Reactive Forms\n * models the entire group of radio buttons as a single `FormControl`, there is no way to\n * control the disabled state for individual radios, so they can no longer be configured as\n * disabled. Thus, we keep the old behavior for radio buttons, so that `[attr.disabled]`\n * continues to work. Specifically, we drop the first call to `setDisabledState` if `disabled`\n * is `false`, and we are not in legacy mode.\n */\n if (this.setDisabledStateFired || isDisabled || this.callSetDisabledState === 'whenDisabledForLegacyCode') {\n this.setProperty('disabled', isDisabled);\n }\n this.setDisabledStateFired = true;\n }\n /**\n * Sets the \"value\" on the radio input element and unchecks it.\n *\n * @param value\n */\n fireUncheck(value) {\n this.writeValue(value);\n }\n _checkName() {\n if (this.name && this.formControlName && this.name !== this.formControlName && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwNameError();\n }\n if (!this.name && this.formControlName) this.name = this.formControlName;\n }\n static {\n this.ɵfac = function RadioControlValueAccessor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RadioControlValueAccessor)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(RadioControlRegistry), i0.ɵɵdirectiveInject(i0.Injector));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RadioControlValueAccessor,\n selectors: [[\"input\", \"type\", \"radio\", \"formControlName\", \"\"], [\"input\", \"type\", \"radio\", \"formControl\", \"\"], [\"input\", \"type\", \"radio\", \"ngModel\", \"\"]],\n hostBindings: function RadioControlValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function RadioControlValueAccessor_change_HostBindingHandler() {\n return ctx.onChange();\n })(\"blur\", function RadioControlValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n inputs: {\n name: \"name\",\n formControlName: \"formControlName\",\n value: \"value\"\n },\n features: [i0.ɵɵProvidersFeature([RADIO_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return RadioControlValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => RangeValueAccessor),\n multi: true\n};\n/**\n * @description\n * The `ControlValueAccessor` for writing a range value and listening to range input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * @usageNotes\n *\n * ### Using a range input with a reactive form\n *\n * The following example shows how to use a range input with a reactive form.\n *\n * ```ts\n * const ageControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"range\" [formControl]=\"ageControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet RangeValueAccessor = /*#__PURE__*/(() => {\n class RangeValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this.setProperty('value', parseFloat(value));\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = value => {\n fn(value == '' ? null : parseFloat(value));\n };\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵRangeValueAccessor_BaseFactory;\n return function RangeValueAccessor_Factory(__ngFactoryType__) {\n return (ɵRangeValueAccessor_BaseFactory || (ɵRangeValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(RangeValueAccessor)))(__ngFactoryType__ || RangeValueAccessor);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RangeValueAccessor,\n selectors: [[\"input\", \"type\", \"range\", \"formControlName\", \"\"], [\"input\", \"type\", \"range\", \"formControl\", \"\"], [\"input\", \"type\", \"range\", \"ngModel\", \"\"]],\n hostBindings: function RangeValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function RangeValueAccessor_change_HostBindingHandler($event) {\n return ctx.onChange($event.target.value);\n })(\"input\", function RangeValueAccessor_input_HostBindingHandler($event) {\n return ctx.onChange($event.target.value);\n })(\"blur\", function RangeValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([RANGE_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return RangeValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Token to provide to turn off the ngModel warning on formControl and formControlName.\n */\nconst NG_MODEL_WITH_FORM_CONTROL_WARNING = /*#__PURE__*/new InjectionToken(ngDevMode ? 'NgModelWithFormControlWarning' : '');\nconst formControlBinding = {\n provide: NgControl,\n useExisting: /*#__PURE__*/forwardRef(() => FormControlDirective)\n};\n/**\n * @description\n * Synchronizes a standalone `FormControl` instance to a form control element.\n *\n * Note that support for using the `ngModel` input property and `ngModelChange` event with reactive\n * form directives was deprecated in Angular v6 and is scheduled for removal in\n * a future version of Angular.\n *\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n * @see {@link FormControl}\n * @see {@link AbstractControl}\n *\n * @usageNotes\n *\n * The following example shows how to register a standalone control and set its value.\n *\n * {@example forms/ts/simpleFormControl/simple_form_control_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nlet FormControlDirective = /*#__PURE__*/(() => {\n class FormControlDirective extends NgControl {\n /**\n * @description\n * Triggers a warning in dev mode that this input should not be used with reactive forms.\n */\n set isDisabled(isDisabled) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(disabledAttrWarning);\n }\n }\n /**\n * @description\n * Static property used to track whether any ngModel warnings have been sent across\n * all instances of FormControlDirective. Used to support warning config of \"once\".\n *\n * @internal\n */\n static {\n this._ngModelWarningSentOnce = false;\n }\n constructor(validators, asyncValidators, valueAccessors, _ngModelWarningConfig, callSetDisabledState) {\n super();\n this._ngModelWarningConfig = _ngModelWarningConfig;\n this.callSetDisabledState = callSetDisabledState;\n /** @deprecated as of v6 */\n this.update = new EventEmitter();\n /**\n * @description\n * Instance property used to track whether an ngModel warning has been sent out for this\n * particular `FormControlDirective` instance. Used to support warning config of \"always\".\n *\n * @internal\n */\n this._ngModelWarningSent = false;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this._isControlChanged(changes)) {\n const previousForm = changes['form'].previousValue;\n if (previousForm) {\n cleanUpControl(previousForm, this, /* validateControlPresenceOnChange */false);\n }\n setUpControl(this.form, this, this.callSetDisabledState);\n this.form.updateValueAndValidity({\n emitEvent: false\n });\n }\n if (isPropertyUpdated(changes, this.viewModel)) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _ngModelWarning('formControl', FormControlDirective, this, this._ngModelWarningConfig);\n }\n this.form.setValue(this.model);\n this.viewModel = this.model;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.form) {\n cleanUpControl(this.form, this, /* validateControlPresenceOnChange */false);\n }\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * The `FormControl` bound to this directive.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value for the view model.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n _isControlChanged(changes) {\n return changes.hasOwnProperty('form');\n }\n static {\n this.ɵfac = function FormControlDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormControlDirective)(i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 10), i0.ɵɵdirectiveInject(NG_MODEL_WITH_FORM_CONTROL_WARNING, 8), i0.ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormControlDirective,\n selectors: [[\"\", \"formControl\", \"\"]],\n inputs: {\n form: [0, \"formControl\", \"form\"],\n isDisabled: [0, \"disabled\", \"isDisabled\"],\n model: [0, \"ngModel\", \"model\"]\n },\n outputs: {\n update: \"ngModelChange\"\n },\n exportAs: [\"ngForm\"],\n features: [i0.ɵɵProvidersFeature([formControlBinding]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return FormControlDirective;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst formDirectiveProvider = {\n provide: ControlContainer,\n useExisting: /*#__PURE__*/forwardRef(() => FormGroupDirective)\n};\n/**\n * @description\n *\n * Binds an existing `FormGroup` or `FormRecord` to a DOM element.\n *\n * This directive accepts an existing `FormGroup` instance. It will then use this\n * `FormGroup` instance to match any child `FormControl`, `FormGroup`/`FormRecord`,\n * and `FormArray` instances to child `FormControlName`, `FormGroupName`,\n * and `FormArrayName` directives.\n *\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n * @see {@link AbstractControl}\n *\n * @usageNotes\n * ### Register Form Group\n *\n * The following example registers a `FormGroup` with first name and last name controls,\n * and listens for the *ngSubmit* event when the button is clicked.\n *\n * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nlet FormGroupDirective = /*#__PURE__*/(() => {\n class FormGroupDirective extends ControlContainer {\n /**\n * @description\n * Reports whether the form submission has been triggered.\n */\n get submitted() {\n return untracked(this._submittedReactive);\n }\n // TODO(atscott): Remove once invalid API usage is cleaned up internally\n set submitted(value) {\n this._submittedReactive.set(value);\n }\n constructor(validators, asyncValidators, callSetDisabledState) {\n super();\n this.callSetDisabledState = callSetDisabledState;\n /** @internal */\n this._submitted = computed(() => this._submittedReactive());\n this._submittedReactive = signal(false);\n /**\n * Callback that should be invoked when controls in FormGroup or FormArray collection change\n * (added or removed). This callback triggers corresponding DOM updates.\n */\n this._onCollectionChange = () => this._updateDomValue();\n /**\n * @description\n * Tracks the list of added `FormControlName` instances\n */\n this.directives = [];\n /**\n * @description\n * Tracks the `FormGroup` bound to this directive.\n */\n this.form = null;\n /**\n * @description\n * Emits an event when the form submission has been triggered.\n */\n this.ngSubmit = new EventEmitter();\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._checkFormPresent();\n if (changes.hasOwnProperty('form')) {\n this._updateValidators();\n this._updateDomValue();\n this._updateRegistrations();\n this._oldForm = this.form;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.form) {\n cleanUpValidators(this.form, this);\n // Currently the `onCollectionChange` callback is rewritten each time the\n // `_registerOnCollectionChange` function is invoked. The implication is that cleanup should\n // happen *only* when the `onCollectionChange` callback was set by this directive instance.\n // Otherwise it might cause overriding a callback of some other directive instances. We should\n // consider updating this logic later to make it similar to how `onChange` callbacks are\n // handled, see https://github.com/angular/angular/issues/39732 for additional info.\n if (this.form._onCollectionChange === this._onCollectionChange) {\n this.form._registerOnCollectionChange(() => {});\n }\n }\n }\n /**\n * @description\n * Returns this directive's instance.\n */\n get formDirective() {\n return this;\n }\n /**\n * @description\n * Returns the `FormGroup` bound to this directive.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Returns an array representing the path to this group. Because this directive\n * always lives at the top level of a form, it always an empty array.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * Method that sets up the control directive in this group, re-calculates its value\n * and validity, and adds the instance to the internal list of directives.\n *\n * @param dir The `FormControlName` directive instance.\n */\n addControl(dir) {\n const ctrl = this.form.get(dir.path);\n setUpControl(ctrl, dir, this.callSetDisabledState);\n ctrl.updateValueAndValidity({\n emitEvent: false\n });\n this.directives.push(dir);\n return ctrl;\n }\n /**\n * @description\n * Retrieves the `FormControl` instance from the provided `FormControlName` directive\n *\n * @param dir The `FormControlName` directive instance.\n */\n getControl(dir) {\n return this.form.get(dir.path);\n }\n /**\n * @description\n * Removes the `FormControlName` instance from the internal list of directives\n *\n * @param dir The `FormControlName` directive instance.\n */\n removeControl(dir) {\n cleanUpControl(dir.control || null, dir, /* validateControlPresenceOnChange */false);\n removeListItem$1(this.directives, dir);\n }\n /**\n * Adds a new `FormGroupName` directive instance to the form.\n *\n * @param dir The `FormGroupName` directive instance.\n */\n addFormGroup(dir) {\n this._setUpFormContainer(dir);\n }\n /**\n * Performs the necessary cleanup when a `FormGroupName` directive instance is removed from the\n * view.\n *\n * @param dir The `FormGroupName` directive instance.\n */\n removeFormGroup(dir) {\n this._cleanUpFormContainer(dir);\n }\n /**\n * @description\n * Retrieves the `FormGroup` for a provided `FormGroupName` directive instance\n *\n * @param dir The `FormGroupName` directive instance.\n */\n getFormGroup(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Performs the necessary setup when a `FormArrayName` directive instance is added to the view.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n addFormArray(dir) {\n this._setUpFormContainer(dir);\n }\n /**\n * Performs the necessary cleanup when a `FormArrayName` directive instance is removed from the\n * view.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n removeFormArray(dir) {\n this._cleanUpFormContainer(dir);\n }\n /**\n * @description\n * Retrieves the `FormArray` for a provided `FormArrayName` directive instance.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n getFormArray(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Sets the new value for the provided `FormControlName` directive.\n *\n * @param dir The `FormControlName` directive instance.\n * @param value The new value for the directive's control.\n */\n updateModel(dir, value) {\n const ctrl = this.form.get(dir.path);\n ctrl.setValue(value);\n }\n /**\n * @description\n * Method called with the \"submit\" event is triggered on the form.\n * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.\n *\n * @param $event The \"submit\" event object\n */\n onSubmit($event) {\n this._submittedReactive.set(true);\n syncPendingControls(this.form, this.directives);\n this.ngSubmit.emit($event);\n this.form._events.next(new FormSubmittedEvent(this.control));\n // Forms with `method=\"dialog\"` have some special behavior that won't reload the page and that\n // shouldn't be prevented. Note that we need to null check the `event` and the `target`, because\n // some internal apps call this method directly with the wrong arguments.\n return $event?.target?.method === 'dialog';\n }\n /**\n * @description\n * Method called when the \"reset\" event is triggered on the form.\n */\n onReset() {\n this.resetForm();\n }\n /**\n * @description\n * Resets the form to an initial value and resets its submitted status.\n *\n * @param value The new value for the form.\n */\n resetForm(value = undefined) {\n this.form.reset(value);\n this._submittedReactive.set(false);\n this.form._events.next(new FormResetEvent(this.form));\n }\n /** @internal */\n _updateDomValue() {\n this.directives.forEach(dir => {\n const oldCtrl = dir.control;\n const newCtrl = this.form.get(dir.path);\n if (oldCtrl !== newCtrl) {\n // Note: the value of the `dir.control` may not be defined, for example when it's a first\n // `FormControl` that is added to a `FormGroup` instance (via `addControl` call).\n cleanUpControl(oldCtrl || null, dir);\n // Check whether new control at the same location inside the corresponding `FormGroup` is an\n // instance of `FormControl` and perform control setup only if that's the case.\n // Note: we don't need to clear the list of directives (`this.directives`) here, it would be\n // taken care of in the `removeControl` method invoked when corresponding `formControlName`\n // directive instance is being removed (invoked from `FormControlName.ngOnDestroy`).\n if (isFormControl(newCtrl)) {\n setUpControl(newCtrl, dir, this.callSetDisabledState);\n dir.control = newCtrl;\n }\n }\n });\n this.form._updateTreeValidity({\n emitEvent: false\n });\n }\n _setUpFormContainer(dir) {\n const ctrl = this.form.get(dir.path);\n setUpFormContainer(ctrl, dir);\n // NOTE: this operation looks unnecessary in case no new validators were added in\n // `setUpFormContainer` call. Consider updating this code to match the logic in\n // `_cleanUpFormContainer` function.\n ctrl.updateValueAndValidity({\n emitEvent: false\n });\n }\n _cleanUpFormContainer(dir) {\n if (this.form) {\n const ctrl = this.form.get(dir.path);\n if (ctrl) {\n const isControlUpdated = cleanUpFormContainer(ctrl, dir);\n if (isControlUpdated) {\n // Run validity check only in case a control was updated (i.e. view validators were\n // removed) as removing view validators might cause validity to change.\n ctrl.updateValueAndValidity({\n emitEvent: false\n });\n }\n }\n }\n }\n _updateRegistrations() {\n this.form._registerOnCollectionChange(this._onCollectionChange);\n if (this._oldForm) {\n this._oldForm._registerOnCollectionChange(() => {});\n }\n }\n _updateValidators() {\n setUpValidators(this.form, this);\n if (this._oldForm) {\n cleanUpValidators(this._oldForm, this);\n }\n }\n _checkFormPresent() {\n if (!this.form && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw missingFormException();\n }\n }\n static {\n this.ɵfac = function FormGroupDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormGroupDirective)(i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), i0.ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormGroupDirective,\n selectors: [[\"\", \"formGroup\", \"\"]],\n hostBindings: function FormGroupDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"submit\", function FormGroupDirective_submit_HostBindingHandler($event) {\n return ctx.onSubmit($event);\n })(\"reset\", function FormGroupDirective_reset_HostBindingHandler() {\n return ctx.onReset();\n });\n }\n },\n inputs: {\n form: [0, \"formGroup\", \"form\"]\n },\n outputs: {\n ngSubmit: \"ngSubmit\"\n },\n exportAs: [\"ngForm\"],\n features: [i0.ɵɵProvidersFeature([formDirectiveProvider]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return FormGroupDirective;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst formGroupNameProvider = {\n provide: ControlContainer,\n useExisting: /*#__PURE__*/forwardRef(() => FormGroupName)\n};\n/**\n * @description\n *\n * Syncs a nested `FormGroup` or `FormRecord` to a DOM element.\n *\n * This directive can only be used with a parent `FormGroupDirective`.\n *\n * It accepts the string name of the nested `FormGroup` or `FormRecord` to link, and\n * looks for a `FormGroup` or `FormRecord` registered with that name in the parent\n * `FormGroup` instance you passed into `FormGroupDirective`.\n *\n * Use nested form groups to validate a sub-group of a\n * form separately from the rest or to group the values of certain\n * controls into their own nested object.\n *\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n *\n * @usageNotes\n *\n * ### Access the group by name\n *\n * The following example uses the `AbstractControl.get` method to access the\n * associated `FormGroup`\n *\n * ```ts\n * this.form.get('name');\n * ```\n *\n * ### Access individual controls in the group\n *\n * The following example uses the `AbstractControl.get` method to access\n * individual controls within the group using dot syntax.\n *\n * ```ts\n * this.form.get('name.first');\n * ```\n *\n * ### Register a nested `FormGroup`.\n *\n * The following example registers a nested *name* `FormGroup` within an existing `FormGroup`,\n * and provides methods to retrieve the nested `FormGroup` and individual controls.\n *\n * {@example forms/ts/nestedFormGroup/nested_form_group_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nlet FormGroupName = /*#__PURE__*/(() => {\n class FormGroupName extends AbstractFormGroupDirective {\n constructor(parent, validators, asyncValidators) {\n super();\n /**\n * @description\n * Tracks the name of the `FormGroup` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * Accepts a name as a string or a number.\n * The name in the form of a string is useful for individual forms,\n * while the numerical form allows for form groups to be bound\n * to indices when iterating over groups in a `FormArray`.\n */\n this.name = null;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @internal */\n _checkParentType() {\n if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw groupParentException();\n }\n }\n static {\n this.ɵfac = function FormGroupName_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormGroupName)(i0.ɵɵdirectiveInject(ControlContainer, 13), i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormGroupName,\n selectors: [[\"\", \"formGroupName\", \"\"]],\n inputs: {\n name: [0, \"formGroupName\", \"name\"]\n },\n features: [i0.ɵɵProvidersFeature([formGroupNameProvider]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return FormGroupName;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst formArrayNameProvider = {\n provide: ControlContainer,\n useExisting: /*#__PURE__*/forwardRef(() => FormArrayName)\n};\n/**\n * @description\n *\n * Syncs a nested `FormArray` to a DOM element.\n *\n * This directive is designed to be used with a parent `FormGroupDirective` (selector:\n * `[formGroup]`).\n *\n * It accepts the string name of the nested `FormArray` you want to link, and\n * will look for a `FormArray` registered with that name in the parent\n * `FormGroup` instance you passed into `FormGroupDirective`.\n *\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n * @see {@link AbstractControl}\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example forms/ts/nestedFormArray/nested_form_array_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nlet FormArrayName = /*#__PURE__*/(() => {\n class FormArrayName extends ControlContainer {\n constructor(parent, validators, asyncValidators) {\n super();\n /**\n * @description\n * Tracks the name of the `FormArray` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * Accepts a name as a string or a number.\n * The name in the form of a string is useful for individual forms,\n * while the numerical form allows for form arrays to be bound\n * to indices when iterating over arrays in a `FormArray`.\n */\n this.name = null;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /**\n * A lifecycle method called when the directive's inputs are initialized. For internal use only.\n * @throws If the directive does not have a valid parent.\n * @nodoc\n */\n ngOnInit() {\n this._checkParentType();\n this.formDirective.addFormArray(this);\n }\n /**\n * A lifecycle method called before the directive's instance is destroyed. For internal use only.\n * @nodoc\n */\n ngOnDestroy() {\n if (this.formDirective) {\n this.formDirective.removeFormArray(this);\n }\n }\n /**\n * @description\n * The `FormArray` bound to this directive.\n */\n get control() {\n return this.formDirective.getFormArray(this);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n _checkParentType() {\n if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw arrayParentException();\n }\n }\n static {\n this.ɵfac = function FormArrayName_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormArrayName)(i0.ɵɵdirectiveInject(ControlContainer, 13), i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormArrayName,\n selectors: [[\"\", \"formArrayName\", \"\"]],\n inputs: {\n name: [0, \"formArrayName\", \"name\"]\n },\n features: [i0.ɵɵProvidersFeature([formArrayNameProvider]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return FormArrayName;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction _hasInvalidParent(parent) {\n return !(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) && !(parent instanceof FormArrayName);\n}\nconst controlNameBinding = {\n provide: NgControl,\n useExisting: /*#__PURE__*/forwardRef(() => FormControlName)\n};\n/**\n * @description\n * Syncs a `FormControl` in an existing `FormGroup` to a form control\n * element by name.\n *\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n * @see {@link FormControl}\n * @see {@link AbstractControl}\n *\n * @usageNotes\n *\n * ### Register `FormControl` within a group\n *\n * The following example shows how to register multiple form controls within a form group\n * and set their value.\n *\n * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}\n *\n * To see `formControlName` examples with different form control types, see:\n *\n * * Radio buttons: `RadioControlValueAccessor`\n * * Selects: `SelectControlValueAccessor`\n *\n * ### Use with ngModel is deprecated\n *\n * Support for using the `ngModel` input property and `ngModelChange` event with reactive\n * form directives has been deprecated in Angular v6 and is scheduled for removal in\n * a future version of Angular.\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nlet FormControlName = /*#__PURE__*/(() => {\n class FormControlName extends NgControl {\n /**\n * @description\n * Triggers a warning in dev mode that this input should not be used with reactive forms.\n */\n set isDisabled(isDisabled) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(disabledAttrWarning);\n }\n }\n /**\n * @description\n * Static property used to track whether any ngModel warnings have been sent across\n * all instances of FormControlName. Used to support warning config of \"once\".\n *\n * @internal\n */\n static {\n this._ngModelWarningSentOnce = false;\n }\n constructor(parent, validators, asyncValidators, valueAccessors, _ngModelWarningConfig) {\n super();\n this._ngModelWarningConfig = _ngModelWarningConfig;\n this._added = false;\n /**\n * @description\n * Tracks the name of the `FormControl` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * Accepts a name as a string or a number.\n * The name in the form of a string is useful for individual forms,\n * while the numerical form allows for form controls to be bound\n * to indices when iterating over controls in a `FormArray`.\n */\n this.name = null;\n /** @deprecated as of v6 */\n this.update = new EventEmitter();\n /**\n * @description\n * Instance property used to track whether an ngModel warning has been sent out for this\n * particular FormControlName instance. Used to support warning config of \"always\".\n *\n * @internal\n */\n this._ngModelWarningSent = false;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (!this._added) this._setUpControl();\n if (isPropertyUpdated(changes, this.viewModel)) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _ngModelWarning('formControlName', FormControlName, this, this._ngModelWarningConfig);\n }\n this.viewModel = this.model;\n this.formDirective.updateModel(this, this.model);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.formDirective) {\n this.formDirective.removeControl(this);\n }\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value for the view model.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n _checkParentType() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!(this._parent instanceof FormGroupName) && this._parent instanceof AbstractFormGroupDirective) {\n throw ngModelGroupException();\n } else if (!(this._parent instanceof FormGroupName) && !(this._parent instanceof FormGroupDirective) && !(this._parent instanceof FormArrayName)) {\n throw controlParentException(this.name);\n }\n }\n }\n _setUpControl() {\n this._checkParentType();\n this.control = this.formDirective.addControl(this);\n this._added = true;\n }\n static {\n this.ɵfac = function FormControlName_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormControlName)(i0.ɵɵdirectiveInject(ControlContainer, 13), i0.ɵɵdirectiveInject(NG_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), i0.ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 10), i0.ɵɵdirectiveInject(NG_MODEL_WITH_FORM_CONTROL_WARNING, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormControlName,\n selectors: [[\"\", \"formControlName\", \"\"]],\n inputs: {\n name: [0, \"formControlName\", \"name\"],\n isDisabled: [0, \"disabled\", \"isDisabled\"],\n model: [0, \"ngModel\", \"model\"]\n },\n outputs: {\n update: \"ngModelChange\"\n },\n features: [i0.ɵɵProvidersFeature([controlNameBinding]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return FormControlName;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst SELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => SelectControlValueAccessor),\n multi: true\n};\nfunction _buildValueString$1(id, value) {\n if (id == null) return `${value}`;\n if (value && typeof value === 'object') value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\nfunction _extractId$1(valueString) {\n return valueString.split(':')[0];\n}\n/**\n * @description\n * The `ControlValueAccessor` for writing select control values and listening to select control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @usageNotes\n *\n * ### Using select controls in a reactive form\n *\n * The following examples show how to use a select control in a reactive form.\n *\n * {@example forms/ts/reactiveSelectControl/reactive_select_control_example.ts region='Component'}\n *\n * ### Using select controls in a template-driven form\n *\n * To use a select in a template-driven form, simply add an `ngModel` and a `name`\n * attribute to the main `<select>` tag.\n *\n * {@example forms/ts/selectControl/select_control_example.ts region='Component'}\n *\n * ### Customizing option selection\n *\n * Angular uses object identity to select option. It's possible for the identities of items\n * to change while the data does not. This can happen, for example, if the items are produced\n * from an RPC to the server, and that RPC is re-run. Even if the data hasn't changed, the\n * second response will produce objects with different identities.\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * `compareWith` takes a **function** which has two arguments: `option1` and `option2`.\n * If `compareWith` is given, Angular selects option by the return value of the function.\n *\n * ```ts\n * const selectedCountriesControl = new FormControl();\n * ```\n *\n * ```\n * <select [compareWith]=\"compareFn\" [formControl]=\"selectedCountriesControl\">\n * <option *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{country.name}}\n * </option>\n * </select>\n *\n * compareFn(c1: Country, c2: Country): boolean {\n * return c1 && c2 ? c1.id === c2.id : c1 === c2;\n * }\n * ```\n *\n * **Note:** We listen to the 'change' event because 'input' events aren't fired\n * for selects in IE, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event#browser_compatibility\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet SelectControlValueAccessor = /*#__PURE__*/(() => {\n class SelectControlValueAccessor extends BuiltInControlValueAccessor {\n constructor() {\n super(...arguments);\n /** @internal */\n this._optionMap = new Map();\n /** @internal */\n this._idCounter = 0;\n this._compareWith = Object.is;\n }\n /**\n * @description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n */\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new ɵRuntimeError(1201 /* RuntimeErrorCode.COMPAREWITH_NOT_A_FN */, `compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on the select element.\n * @nodoc\n */\n writeValue(value) {\n this.value = value;\n const id = this._getOptionId(value);\n const valueString = _buildValueString$1(id, value);\n this.setProperty('value', valueString);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = valueString => {\n this.value = this._getOptionValue(valueString);\n fn(this.value);\n };\n }\n /** @internal */\n _registerOption() {\n return (this._idCounter++).toString();\n }\n /** @internal */\n _getOptionId(value) {\n for (const id of this._optionMap.keys()) {\n if (this._compareWith(this._optionMap.get(id), value)) return id;\n }\n return null;\n }\n /** @internal */\n _getOptionValue(valueString) {\n const id = _extractId$1(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵSelectControlValueAccessor_BaseFactory;\n return function SelectControlValueAccessor_Factory(__ngFactoryType__) {\n return (ɵSelectControlValueAccessor_BaseFactory || (ɵSelectControlValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(SelectControlValueAccessor)))(__ngFactoryType__ || SelectControlValueAccessor);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectControlValueAccessor,\n selectors: [[\"select\", \"formControlName\", \"\", 3, \"multiple\", \"\"], [\"select\", \"formControl\", \"\", 3, \"multiple\", \"\"], [\"select\", \"ngModel\", \"\", 3, \"multiple\", \"\"]],\n hostBindings: function SelectControlValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function SelectControlValueAccessor_change_HostBindingHandler($event) {\n return ctx.onChange($event.target.value);\n })(\"blur\", function SelectControlValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n inputs: {\n compareWith: \"compareWith\"\n },\n features: [i0.ɵɵProvidersFeature([SELECT_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return SelectControlValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see {@link SelectControlValueAccessor}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet NgSelectOption = /*#__PURE__*/(() => {\n class NgSelectOption {\n constructor(_element, _renderer, _select) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n if (this._select) this.id = this._select._registerOption();\n }\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n set ngValue(value) {\n if (this._select == null) return;\n this._select._optionMap.set(this.id, value);\n this._setElementValue(_buildValueString$1(this.id, value));\n this._select.writeValue(this._select.value);\n }\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n set value(value) {\n this._setElementValue(value);\n if (this._select) this._select.writeValue(this._select.value);\n }\n /** @internal */\n _setElementValue(value) {\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._select) {\n this._select._optionMap.delete(this.id);\n this._select.writeValue(this._select.value);\n }\n }\n static {\n this.ɵfac = function NgSelectOption_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectOption)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(SelectControlValueAccessor, 9));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgSelectOption,\n selectors: [[\"option\"]],\n inputs: {\n ngValue: \"ngValue\",\n value: \"value\"\n }\n });\n }\n }\n return NgSelectOption;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst SELECT_MULTIPLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => SelectMultipleControlValueAccessor),\n multi: true\n};\nfunction _buildValueString(id, value) {\n if (id == null) return `${value}`;\n if (typeof value === 'string') value = `'${value}'`;\n if (value && typeof value === 'object') value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\nfunction _extractId(valueString) {\n return valueString.split(':')[0];\n}\n/** Mock interface for HTMLCollection */\nclass HTMLCollection {}\n/**\n * @description\n * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select\n * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @see {@link SelectControlValueAccessor}\n *\n * @usageNotes\n *\n * ### Using a multi-select control\n *\n * The follow example shows you how to use a multi-select control with a reactive form.\n *\n * ```ts\n * const countryControl = new FormControl();\n * ```\n *\n * ```\n * <select multiple name=\"countries\" [formControl]=\"countryControl\">\n * <option *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{ country.name }}\n * </option>\n * </select>\n * ```\n *\n * ### Customizing option selection\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * See the `SelectControlValueAccessor` for usage.\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet SelectMultipleControlValueAccessor = /*#__PURE__*/(() => {\n class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {\n constructor() {\n super(...arguments);\n /** @internal */\n this._optionMap = new Map();\n /** @internal */\n this._idCounter = 0;\n this._compareWith = Object.is;\n }\n /**\n * @description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n */\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new ɵRuntimeError(1201 /* RuntimeErrorCode.COMPAREWITH_NOT_A_FN */, `compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on one or of more of the select's options.\n * @nodoc\n */\n writeValue(value) {\n this.value = value;\n let optionSelectedStateSetter;\n if (Array.isArray(value)) {\n // convert values to ids\n const ids = value.map(v => this._getOptionId(v));\n optionSelectedStateSetter = (opt, o) => {\n opt._setSelected(ids.indexOf(o.toString()) > -1);\n };\n } else {\n optionSelectedStateSetter = (opt, o) => {\n opt._setSelected(false);\n };\n }\n this._optionMap.forEach(optionSelectedStateSetter);\n }\n /**\n * Registers a function called when the control value changes\n * and writes an array of the selected options.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = element => {\n const selected = [];\n const selectedOptions = element.selectedOptions;\n if (selectedOptions !== undefined) {\n const options = selectedOptions;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n // Degrade to use `options` when `selectedOptions` property is not available.\n // Note: the `selectedOptions` is available in all supported browsers, but the Domino lib\n // doesn't have it currently, see https://github.com/fgnass/domino/issues/177.\n else {\n const options = element.options;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n if (opt.selected) {\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n }\n this.value = selected;\n fn(selected);\n };\n }\n /** @internal */\n _registerOption(value) {\n const id = (this._idCounter++).toString();\n this._optionMap.set(id, value);\n return id;\n }\n /** @internal */\n _getOptionId(value) {\n for (const id of this._optionMap.keys()) {\n if (this._compareWith(this._optionMap.get(id)._value, value)) return id;\n }\n return null;\n }\n /** @internal */\n _getOptionValue(valueString) {\n const id = _extractId(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵSelectMultipleControlValueAccessor_BaseFactory;\n return function SelectMultipleControlValueAccessor_Factory(__ngFactoryType__) {\n return (ɵSelectMultipleControlValueAccessor_BaseFactory || (ɵSelectMultipleControlValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(SelectMultipleControlValueAccessor)))(__ngFactoryType__ || SelectMultipleControlValueAccessor);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectMultipleControlValueAccessor,\n selectors: [[\"select\", \"multiple\", \"\", \"formControlName\", \"\"], [\"select\", \"multiple\", \"\", \"formControl\", \"\"], [\"select\", \"multiple\", \"\", \"ngModel\", \"\"]],\n hostBindings: function SelectMultipleControlValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function SelectMultipleControlValueAccessor_change_HostBindingHandler($event) {\n return ctx.onChange($event.target);\n })(\"blur\", function SelectMultipleControlValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n inputs: {\n compareWith: \"compareWith\"\n },\n features: [i0.ɵɵProvidersFeature([SELECT_MULTIPLE_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return SelectMultipleControlValueAccessor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see {@link SelectMultipleControlValueAccessor}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet ɵNgSelectMultipleOption = /*#__PURE__*/(() => {\n class ɵNgSelectMultipleOption {\n constructor(_element, _renderer, _select) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n if (this._select) {\n this.id = this._select._registerOption(this);\n }\n }\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n set ngValue(value) {\n if (this._select == null) return;\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this._select.writeValue(this._select.value);\n }\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n set value(value) {\n if (this._select) {\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this._select.writeValue(this._select.value);\n } else {\n this._setElementValue(value);\n }\n }\n /** @internal */\n _setElementValue(value) {\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\n }\n /** @internal */\n _setSelected(selected) {\n this._renderer.setProperty(this._element.nativeElement, 'selected', selected);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._select) {\n this._select._optionMap.delete(this.id);\n this._select.writeValue(this._select.value);\n }\n }\n static {\n this.ɵfac = function ɵNgSelectMultipleOption_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ɵNgSelectMultipleOption)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(SelectMultipleControlValueAccessor, 9));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ɵNgSelectMultipleOption,\n selectors: [[\"option\"]],\n inputs: {\n ngValue: \"ngValue\",\n value: \"value\"\n }\n });\n }\n }\n return ɵNgSelectMultipleOption;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Method that updates string to integer if not already a number\n *\n * @param value The value to convert to integer.\n * @returns value of parameter converted to number or integer.\n */\nfunction toInteger(value) {\n return typeof value === 'number' ? value : parseInt(value, 10);\n}\n/**\n * Method that ensures that provided value is a float (and converts it to float if needed).\n *\n * @param value The value to convert to float.\n * @returns value of parameter converted to number or float.\n */\nfunction toFloat(value) {\n return typeof value === 'number' ? value : parseFloat(value);\n}\n/**\n * A base class for Validator-based Directives. The class contains common logic shared across such\n * Directives.\n *\n * For internal use only, this class is not intended for use outside of the Forms package.\n */\nlet AbstractValidatorDirective = /*#__PURE__*/(() => {\n class AbstractValidatorDirective {\n constructor() {\n this._validator = nullValidator;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.inputName in changes) {\n const input = this.normalizeInput(changes[this.inputName].currentValue);\n this._enabled = this.enabled(input);\n this._validator = this._enabled ? this.createValidator(input) : nullValidator;\n if (this._onChange) {\n this._onChange();\n }\n }\n }\n /** @nodoc */\n validate(control) {\n return this._validator(control);\n }\n /** @nodoc */\n registerOnValidatorChange(fn) {\n this._onChange = fn;\n }\n /**\n * @description\n * Determines whether this validator should be active or not based on an input.\n * Base class implementation checks whether an input is defined (if the value is different from\n * `null` and `undefined`). Validator classes that extend this base class can override this\n * function with the logic specific to a particular validator directive.\n */\n enabled(input) {\n return input != null /* both `null` and `undefined` */;\n }\n static {\n this.ɵfac = function AbstractValidatorDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AbstractValidatorDirective)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: AbstractValidatorDirective,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return AbstractValidatorDirective;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `MaxValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MAX_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => MaxValidator),\n multi: true\n};\n/**\n * A directive which installs the {@link MaxValidator} for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `max` attribute.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a max validator\n *\n * The following example shows how to add a max validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input type=\"number\" ngModel max=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet MaxValidator = /*#__PURE__*/(() => {\n class MaxValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'max';\n /** @internal */\n this.normalizeInput = input => toFloat(input);\n /** @internal */\n this.createValidator = max => maxValidator(max);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵMaxValidator_BaseFactory;\n return function MaxValidator_Factory(__ngFactoryType__) {\n return (ɵMaxValidator_BaseFactory || (ɵMaxValidator_BaseFactory = i0.ɵɵgetInheritedFactory(MaxValidator)))(__ngFactoryType__ || MaxValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MaxValidator,\n selectors: [[\"input\", \"type\", \"number\", \"max\", \"\", \"formControlName\", \"\"], [\"input\", \"type\", \"number\", \"max\", \"\", \"formControl\", \"\"], [\"input\", \"type\", \"number\", \"max\", \"\", \"ngModel\", \"\"]],\n hostVars: 1,\n hostBindings: function MaxValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"max\", ctx._enabled ? ctx.max : null);\n }\n },\n inputs: {\n max: \"max\"\n },\n features: [i0.ɵɵProvidersFeature([MAX_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MaxValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `MinValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MIN_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => MinValidator),\n multi: true\n};\n/**\n * A directive which installs the {@link MinValidator} for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a min validator\n *\n * The following example shows how to add a min validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input type=\"number\" ngModel min=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet MinValidator = /*#__PURE__*/(() => {\n class MinValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'min';\n /** @internal */\n this.normalizeInput = input => toFloat(input);\n /** @internal */\n this.createValidator = min => minValidator(min);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵMinValidator_BaseFactory;\n return function MinValidator_Factory(__ngFactoryType__) {\n return (ɵMinValidator_BaseFactory || (ɵMinValidator_BaseFactory = i0.ɵɵgetInheritedFactory(MinValidator)))(__ngFactoryType__ || MinValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MinValidator,\n selectors: [[\"input\", \"type\", \"number\", \"min\", \"\", \"formControlName\", \"\"], [\"input\", \"type\", \"number\", \"min\", \"\", \"formControl\", \"\"], [\"input\", \"type\", \"number\", \"min\", \"\", \"ngModel\", \"\"]],\n hostVars: 1,\n hostBindings: function MinValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"min\", ctx._enabled ? ctx.min : null);\n }\n },\n inputs: {\n min: \"min\"\n },\n features: [i0.ɵɵProvidersFeature([MIN_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MinValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `RequiredValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => RequiredValidator),\n multi: true\n};\n/**\n * @description\n * Provider which adds `CheckboxRequiredValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => CheckboxRequiredValidator),\n multi: true\n};\n/**\n * @description\n * A directive that adds the `required` validator to any controls marked with the\n * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a required validator using template-driven forms\n *\n * ```\n * <input name=\"fullName\" ngModel required>\n * ```\n *\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nlet RequiredValidator = /*#__PURE__*/(() => {\n class RequiredValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'required';\n /** @internal */\n this.normalizeInput = booleanAttribute;\n /** @internal */\n this.createValidator = input => requiredValidator;\n }\n /** @nodoc */\n enabled(input) {\n return input;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵRequiredValidator_BaseFactory;\n return function RequiredValidator_Factory(__ngFactoryType__) {\n return (ɵRequiredValidator_BaseFactory || (ɵRequiredValidator_BaseFactory = i0.ɵɵgetInheritedFactory(RequiredValidator)))(__ngFactoryType__ || RequiredValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RequiredValidator,\n selectors: [[\"\", \"required\", \"\", \"formControlName\", \"\", 3, \"type\", \"checkbox\"], [\"\", \"required\", \"\", \"formControl\", \"\", 3, \"type\", \"checkbox\"], [\"\", \"required\", \"\", \"ngModel\", \"\", 3, \"type\", \"checkbox\"]],\n hostVars: 1,\n hostBindings: function RequiredValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"required\", ctx._enabled ? \"\" : null);\n }\n },\n inputs: {\n required: \"required\"\n },\n features: [i0.ɵɵProvidersFeature([REQUIRED_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return RequiredValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A Directive that adds the `required` validator to checkbox controls marked with the\n * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a required checkbox validator using template-driven forms\n *\n * The following example shows how to add a checkbox required validator to an input attached to an\n * ngModel binding.\n *\n * ```\n * <input type=\"checkbox\" name=\"active\" ngModel required>\n * ```\n *\n * @publicApi\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n */\nlet CheckboxRequiredValidator = /*#__PURE__*/(() => {\n class CheckboxRequiredValidator extends RequiredValidator {\n constructor() {\n super(...arguments);\n /** @internal */\n this.createValidator = input => requiredTrueValidator;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵCheckboxRequiredValidator_BaseFactory;\n return function CheckboxRequiredValidator_Factory(__ngFactoryType__) {\n return (ɵCheckboxRequiredValidator_BaseFactory || (ɵCheckboxRequiredValidator_BaseFactory = i0.ɵɵgetInheritedFactory(CheckboxRequiredValidator)))(__ngFactoryType__ || CheckboxRequiredValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CheckboxRequiredValidator,\n selectors: [[\"input\", \"type\", \"checkbox\", \"required\", \"\", \"formControlName\", \"\"], [\"input\", \"type\", \"checkbox\", \"required\", \"\", \"formControl\", \"\"], [\"input\", \"type\", \"checkbox\", \"required\", \"\", \"ngModel\", \"\"]],\n hostVars: 1,\n hostBindings: function CheckboxRequiredValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"required\", ctx._enabled ? \"\" : null);\n }\n },\n features: [i0.ɵɵProvidersFeature([CHECKBOX_REQUIRED_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return CheckboxRequiredValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `EmailValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst EMAIL_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => EmailValidator),\n multi: true\n};\n/**\n * A directive that adds the `email` validator to controls marked with the\n * `email` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * The email validation is based on the WHATWG HTML specification with some enhancements to\n * incorporate more RFC rules. More information can be found on the [Validators.email\n * page](api/forms/Validators#email).\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding an email validator\n *\n * The following example shows how to add an email validator to an input attached to an ngModel\n * binding.\n *\n * ```\n * <input type=\"email\" name=\"email\" ngModel email>\n * <input type=\"email\" name=\"email\" ngModel email=\"true\">\n * <input type=\"email\" name=\"email\" ngModel [email]=\"true\">\n * ```\n *\n * @publicApi\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n */\nlet EmailValidator = /*#__PURE__*/(() => {\n class EmailValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'email';\n /** @internal */\n this.normalizeInput = booleanAttribute;\n /** @internal */\n this.createValidator = input => emailValidator;\n }\n /** @nodoc */\n enabled(input) {\n return input;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵEmailValidator_BaseFactory;\n return function EmailValidator_Factory(__ngFactoryType__) {\n return (ɵEmailValidator_BaseFactory || (ɵEmailValidator_BaseFactory = i0.ɵɵgetInheritedFactory(EmailValidator)))(__ngFactoryType__ || EmailValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: EmailValidator,\n selectors: [[\"\", \"email\", \"\", \"formControlName\", \"\"], [\"\", \"email\", \"\", \"formControl\", \"\"], [\"\", \"email\", \"\", \"ngModel\", \"\"]],\n inputs: {\n email: \"email\"\n },\n features: [i0.ɵɵProvidersFeature([EMAIL_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return EmailValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `MinLengthValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MIN_LENGTH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => MinLengthValidator),\n multi: true\n};\n/**\n * A directive that adds minimum length validation to controls marked with the\n * `minlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a minimum length validator\n *\n * The following example shows how to add a minimum length validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel minlength=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet MinLengthValidator = /*#__PURE__*/(() => {\n class MinLengthValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'minlength';\n /** @internal */\n this.normalizeInput = input => toInteger(input);\n /** @internal */\n this.createValidator = minlength => minLengthValidator(minlength);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵMinLengthValidator_BaseFactory;\n return function MinLengthValidator_Factory(__ngFactoryType__) {\n return (ɵMinLengthValidator_BaseFactory || (ɵMinLengthValidator_BaseFactory = i0.ɵɵgetInheritedFactory(MinLengthValidator)))(__ngFactoryType__ || MinLengthValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MinLengthValidator,\n selectors: [[\"\", \"minlength\", \"\", \"formControlName\", \"\"], [\"\", \"minlength\", \"\", \"formControl\", \"\"], [\"\", \"minlength\", \"\", \"ngModel\", \"\"]],\n hostVars: 1,\n hostBindings: function MinLengthValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"minlength\", ctx._enabled ? ctx.minlength : null);\n }\n },\n inputs: {\n minlength: \"minlength\"\n },\n features: [i0.ɵɵProvidersFeature([MIN_LENGTH_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MinLengthValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `MaxLengthValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MAX_LENGTH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => MaxLengthValidator),\n multi: true\n};\n/**\n * A directive that adds maximum length validation to controls marked with the\n * `maxlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a maximum length validator\n *\n * The following example shows how to add a maximum length validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel maxlength=\"25\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet MaxLengthValidator = /*#__PURE__*/(() => {\n class MaxLengthValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'maxlength';\n /** @internal */\n this.normalizeInput = input => toInteger(input);\n /** @internal */\n this.createValidator = maxlength => maxLengthValidator(maxlength);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵMaxLengthValidator_BaseFactory;\n return function MaxLengthValidator_Factory(__ngFactoryType__) {\n return (ɵMaxLengthValidator_BaseFactory || (ɵMaxLengthValidator_BaseFactory = i0.ɵɵgetInheritedFactory(MaxLengthValidator)))(__ngFactoryType__ || MaxLengthValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MaxLengthValidator,\n selectors: [[\"\", \"maxlength\", \"\", \"formControlName\", \"\"], [\"\", \"maxlength\", \"\", \"formControl\", \"\"], [\"\", \"maxlength\", \"\", \"ngModel\", \"\"]],\n hostVars: 1,\n hostBindings: function MaxLengthValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"maxlength\", ctx._enabled ? ctx.maxlength : null);\n }\n },\n inputs: {\n maxlength: \"maxlength\"\n },\n features: [i0.ɵɵProvidersFeature([MAX_LENGTH_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MaxLengthValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * Provider which adds `PatternValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst PATTERN_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: /*#__PURE__*/forwardRef(() => PatternValidator),\n multi: true\n};\n/**\n * @description\n * A directive that adds regex pattern validation to controls marked with the\n * `pattern` attribute. The regex must match the entire control value.\n * The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/forms/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a pattern validator\n *\n * The following example shows how to add a pattern validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel pattern=\"[a-zA-Z ]*\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nlet PatternValidator = /*#__PURE__*/(() => {\n class PatternValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'pattern';\n /** @internal */\n this.normalizeInput = input => input;\n /** @internal */\n this.createValidator = input => patternValidator(input);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵPatternValidator_BaseFactory;\n return function PatternValidator_Factory(__ngFactoryType__) {\n return (ɵPatternValidator_BaseFactory || (ɵPatternValidator_BaseFactory = i0.ɵɵgetInheritedFactory(PatternValidator)))(__ngFactoryType__ || PatternValidator);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PatternValidator,\n selectors: [[\"\", \"pattern\", \"\", \"formControlName\", \"\"], [\"\", \"pattern\", \"\", \"formControl\", \"\"], [\"\", \"pattern\", \"\", \"ngModel\", \"\"]],\n hostVars: 1,\n hostBindings: function PatternValidator_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"pattern\", ctx._enabled ? ctx.pattern : null);\n }\n },\n inputs: {\n pattern: \"pattern\"\n },\n features: [i0.ɵɵProvidersFeature([PATTERN_VALIDATOR]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return PatternValidator;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst SHARED_FORM_DIRECTIVES = [ɵNgNoValidate, NgSelectOption, ɵNgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, RangeValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, SelectMultipleControlValueAccessor, RadioControlValueAccessor, NgControlStatus, NgControlStatusGroup, RequiredValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, CheckboxRequiredValidator, EmailValidator, MinValidator, MaxValidator];\nconst TEMPLATE_DRIVEN_DIRECTIVES = [NgModel, NgModelGroup, NgForm];\nconst REACTIVE_DRIVEN_DIRECTIVES = [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName];\n/**\n * Internal module used for sharing directives between FormsModule and ReactiveFormsModule\n */\nlet ɵInternalFormsSharedModule = /*#__PURE__*/(() => {\n class ɵInternalFormsSharedModule {\n static {\n this.ɵfac = function ɵInternalFormsSharedModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ɵInternalFormsSharedModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ɵInternalFormsSharedModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return ɵInternalFormsSharedModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Tracks the value and validity state of an array of `FormControl`,\n * `FormGroup` or `FormArray` instances.\n *\n * A `FormArray` aggregates the values of each child `FormControl` into an array.\n * It calculates its status by reducing the status values of its children. For example, if one of\n * the controls in a `FormArray` is invalid, the entire array becomes invalid.\n *\n * `FormArray` accepts one generic argument, which is the type of the controls inside.\n * If you need a heterogenous array, use {@link UntypedFormArray}.\n *\n * `FormArray` is one of the four fundamental building blocks used to define forms in Angular,\n * along with `FormControl`, `FormGroup`, and `FormRecord`.\n *\n * @usageNotes\n *\n * ### Create an array of form controls\n *\n * ```\n * const arr = new FormArray([\n * new FormControl('Nancy', Validators.minLength(2)),\n * new FormControl('Drew'),\n * ]);\n *\n * console.log(arr.value); // ['Nancy', 'Drew']\n * console.log(arr.status); // 'VALID'\n * ```\n *\n * ### Create a form array with array-level validators\n *\n * You include array-level validators and async validators. These come in handy\n * when you want to perform validation that considers the value of more than one child\n * control.\n *\n * The two types of validators are passed in separately as the second and third arg\n * respectively, or together as part of an options object.\n *\n * ```\n * const arr = new FormArray([\n * new FormControl('Nancy'),\n * new FormControl('Drew')\n * ], {validators: myValidator, asyncValidators: myAsyncValidator});\n * ```\n *\n * ### Set the updateOn property for all controls in a form array\n *\n * The options object is used to set a default value for each child\n * control's `updateOn` property. If you set `updateOn` to `'blur'` at the\n * array level, all child controls default to 'blur', unless the child\n * has explicitly specified a different `updateOn` value.\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl()\n * ], {updateOn: 'blur'});\n * ```\n *\n * ### Adding or removing controls from a form array\n *\n * To change the controls in the array, use the `push`, `insert`, `removeAt` or `clear` methods\n * in `FormArray` itself. These methods ensure the controls are properly tracked in the\n * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate\n * the `FormArray` directly, as that result in strange and unexpected behavior such\n * as broken change detection.\n *\n * @publicApi\n */\nclass FormArray extends AbstractControl {\n /**\n * Creates a new `FormArray` instance.\n *\n * @param controls An array of child controls. Each child control is given an index\n * where it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(controls, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n this.controls = controls;\n this._initObservables();\n this._setUpdateStrategy(validatorOrOpts);\n this._setUpControls();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`.\n // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent`\n // to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n }\n /**\n * Get the `AbstractControl` at the given `index` in the array.\n *\n * @param index Index in the array to retrieve the control. If `index` is negative, it will wrap\n * around from the back, and if index is greatly negative (less than `-length`), the result is\n * undefined. This behavior is the same as `Array.at(index)`.\n */\n at(index) {\n return this.controls[this._adjustIndex(index)];\n }\n /**\n * Insert a new `AbstractControl` at the end of the array.\n *\n * @param control Form control to be inserted\n * @param options Specifies whether this FormArray instance should emit events after a new\n * control is added.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * inserted. When false, no events are emitted.\n */\n push(control, options = {}) {\n this.controls.push(control);\n this._registerControl(control);\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n this._onCollectionChange();\n }\n /**\n * Insert a new `AbstractControl` at the given `index` in the array.\n *\n * @param index Index in the array to insert the control. If `index` is negative, wraps around\n * from the back. If `index` is greatly negative (less than `-length`), prepends to the array.\n * This behavior is the same as `Array.splice(index, 0, control)`.\n * @param control Form control to be inserted\n * @param options Specifies whether this FormArray instance should emit events after a new\n * control is inserted.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * inserted. When false, no events are emitted.\n */\n insert(index, control, options = {}) {\n this.controls.splice(index, 0, control);\n this._registerControl(control);\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n }\n /**\n * Remove the control at the given `index` in the array.\n *\n * @param index Index in the array to remove the control. If `index` is negative, wraps around\n * from the back. If `index` is greatly negative (less than `-length`), removes the first\n * element. This behavior is the same as `Array.splice(index, 1)`.\n * @param options Specifies whether this FormArray instance should emit events after a\n * control is removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * removed. When false, no events are emitted.\n */\n removeAt(index, options = {}) {\n // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.\n let adjustedIndex = this._adjustIndex(index);\n if (adjustedIndex < 0) adjustedIndex = 0;\n if (this.controls[adjustedIndex]) this.controls[adjustedIndex]._registerOnCollectionChange(() => {});\n this.controls.splice(adjustedIndex, 1);\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n }\n /**\n * Replace an existing control.\n *\n * @param index Index in the array to replace the control. If `index` is negative, wraps around\n * from the back. If `index` is greatly negative (less than `-length`), replaces the first\n * element. This behavior is the same as `Array.splice(index, 1, control)`.\n * @param control The `AbstractControl` control to replace the existing control\n * @param options Specifies whether this FormArray instance should emit events after an\n * existing control is replaced with a new one.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * replaced with a new one. When false, no events are emitted.\n */\n setControl(index, control, options = {}) {\n // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.\n let adjustedIndex = this._adjustIndex(index);\n if (adjustedIndex < 0) adjustedIndex = 0;\n if (this.controls[adjustedIndex]) this.controls[adjustedIndex]._registerOnCollectionChange(() => {});\n this.controls.splice(adjustedIndex, 1);\n if (control) {\n this.controls.splice(adjustedIndex, 0, control);\n this._registerControl(control);\n }\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n this._onCollectionChange();\n }\n /**\n * Length of the control array.\n */\n get length() {\n return this.controls.length;\n }\n /**\n * Sets the value of the `FormArray`. It accepts an array that matches\n * the structure of the control.\n *\n * This method performs strict checks, and throws an error if you try\n * to set the value of a control that doesn't exist or if you exclude the\n * value of a control.\n *\n * @usageNotes\n * ### Set the values for the controls in the form array\n *\n * ```\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.value); // [null, null]\n *\n * arr.setValue(['Nancy', 'Drew']);\n * console.log(arr.value); // ['Nancy', 'Drew']\n * ```\n *\n * @param value Array of values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n */\n setValue(value, options = {}) {\n assertAllValuesPresent(this, false, value);\n value.forEach((newValue, index) => {\n assertControlPresent(this, false, index);\n this.at(index).setValue(newValue, {\n onlySelf: true,\n emitEvent: options.emitEvent\n });\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of the `FormArray`. It accepts an array that matches the\n * structure of the control, and does its best to match the values to the correct\n * controls in the group.\n *\n * It accepts both super-sets and sub-sets of the array without throwing an error.\n *\n * @usageNotes\n * ### Patch the values for controls in a form array\n *\n * ```\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.value); // [null, null]\n *\n * arr.patchValue(['Nancy']);\n * console.log(arr.value); // ['Nancy', null]\n * ```\n *\n * @param value Array of latest values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control\n * value is updated. When false, no events are emitted. The configuration options are passed to\n * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.\n */\n patchValue(value, options = {}) {\n // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n // `patchValue` can be called recursively and inner data structures might have these values,\n // so we just ignore such cases when a field containing FormArray instance receives `null` or\n // `undefined` as a value.\n if (value == null /* both `null` and `undefined` */) return;\n value.forEach((newValue, index) => {\n if (this.at(index)) {\n this.at(index).patchValue(newValue, {\n onlySelf: true,\n emitEvent: options.emitEvent\n });\n }\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Resets the `FormArray` and all descendants are marked `pristine` and `untouched`, and the\n * value of all descendants to null or null maps.\n *\n * You reset to a specific form state by passing in an array of states\n * that matches the structure of the control. The state is a standalone value\n * or a form state object with both a value and a disabled status.\n *\n * @usageNotes\n * ### Reset the values in a form array\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * arr.reset(['name', 'last name']);\n *\n * console.log(arr.value); // ['name', 'last name']\n * ```\n *\n * ### Reset the values in a form array and the disabled status for the first control\n *\n * ```\n * arr.reset([\n * {value: 'name', disabled: true},\n * 'last'\n * ]);\n *\n * console.log(arr.value); // ['last']\n * console.log(arr.at(0).status); // 'DISABLED'\n * ```\n *\n * @param value Array of values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n */\n reset(value = [], options = {}) {\n this._forEachChild((control, index) => {\n control.reset(value[index], {\n onlySelf: true,\n emitEvent: options.emitEvent\n });\n });\n this._updatePristine(options, this);\n this._updateTouched(options, this);\n this.updateValueAndValidity(options);\n }\n /**\n * The aggregate value of the array, including any disabled controls.\n *\n * Reports all values regardless of disabled status.\n */\n getRawValue() {\n return this.controls.map(control => control.getRawValue());\n }\n /**\n * Remove all controls in the `FormArray`.\n *\n * @param options Specifies whether this FormArray instance should emit events after all\n * controls are removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when all controls\n * in this FormArray instance are removed. When false, no events are emitted.\n *\n * @usageNotes\n * ### Remove all elements from a FormArray\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.length); // 2\n *\n * arr.clear();\n * console.log(arr.length); // 0\n * ```\n *\n * It's a simpler and more efficient alternative to removing all elements one by one:\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n *\n * while (arr.length) {\n * arr.removeAt(0);\n * }\n * ```\n */\n clear(options = {}) {\n if (this.controls.length < 1) return;\n this._forEachChild(control => control._registerOnCollectionChange(() => {}));\n this.controls.splice(0);\n this.updateValueAndValidity({\n emitEvent: options.emitEvent\n });\n }\n /**\n * Adjusts a negative index by summing it with the length of the array. For very negative\n * indices, the result may remain negative.\n * @internal\n */\n _adjustIndex(index) {\n return index < 0 ? index + this.length : index;\n }\n /** @internal */\n _syncPendingControls() {\n let subtreeUpdated = this.controls.reduce((updated, child) => {\n return child._syncPendingControls() ? true : updated;\n }, false);\n if (subtreeUpdated) this.updateValueAndValidity({\n onlySelf: true\n });\n return subtreeUpdated;\n }\n /** @internal */\n _forEachChild(cb) {\n this.controls.forEach((control, index) => {\n cb(control, index);\n });\n }\n /** @internal */\n _updateValue() {\n this.value = this.controls.filter(control => control.enabled || this.disabled).map(control => control.value);\n }\n /** @internal */\n _anyControls(condition) {\n return this.controls.some(control => control.enabled && condition(control));\n }\n /** @internal */\n _setUpControls() {\n this._forEachChild(control => this._registerControl(control));\n }\n /** @internal */\n _allControlsDisabled() {\n for (const control of this.controls) {\n if (control.enabled) return false;\n }\n return this.controls.length > 0 || this.disabled;\n }\n _registerControl(control) {\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n }\n /** @internal */\n _find(name) {\n return this.at(name) ?? null;\n }\n}\nconst UntypedFormArray = FormArray;\n/**\n * @description\n * Asserts that the given control is an instance of `FormArray`\n *\n * @publicApi\n */\nconst isFormArray = control => control instanceof FormArray;\nfunction isAbstractControlOptions(options) {\n return !!options && (options.asyncValidators !== undefined || options.validators !== undefined || options.updateOn !== undefined);\n}\n/**\n * @description\n * Creates an `AbstractControl` from a user-specified configuration.\n *\n * The `FormBuilder` provides syntactic sugar that shortens creating instances of a\n * `FormControl`, `FormGroup`, or `FormArray`. It reduces the amount of boilerplate needed to\n * build complex forms.\n *\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n *\n * @publicApi\n */\nlet FormBuilder = /*#__PURE__*/(() => {\n class FormBuilder {\n constructor() {\n this.useNonNullable = false;\n }\n /**\n * @description\n * Returns a FormBuilder in which automatically constructed `FormControl` elements\n * have `{nonNullable: true}` and are non-nullable.\n *\n * **Constructing non-nullable controls**\n *\n * When constructing a control, it will be non-nullable, and will reset to its initial value.\n *\n * ```ts\n * let nnfb = new FormBuilder().nonNullable;\n * let name = nnfb.control('Alex'); // FormControl<string>\n * name.reset();\n * console.log(name); // 'Alex'\n * ```\n *\n * **Constructing non-nullable groups or arrays**\n *\n * When constructing a group or array, all automatically created inner controls will be\n * non-nullable, and will reset to their initial values.\n *\n * ```ts\n * let nnfb = new FormBuilder().nonNullable;\n * let name = nnfb.group({who: 'Alex'}); // FormGroup<{who: FormControl<string>}>\n * name.reset();\n * console.log(name); // {who: 'Alex'}\n * ```\n * **Constructing *nullable* fields on groups or arrays**\n *\n * It is still possible to have a nullable field. In particular, any `FormControl` which is\n * *already* constructed will not be altered. For example:\n *\n * ```ts\n * let nnfb = new FormBuilder().nonNullable;\n * // FormGroup<{who: FormControl<string|null>}>\n * let name = nnfb.group({who: new FormControl('Alex')});\n * name.reset(); console.log(name); // {who: null}\n * ```\n *\n * Because the inner control is constructed explicitly by the caller, the builder has\n * no control over how it is created, and cannot exclude the `null`.\n */\n get nonNullable() {\n const nnfb = new FormBuilder();\n nnfb.useNonNullable = true;\n return nnfb;\n }\n group(controls, options = null) {\n const reducedControls = this._reduceControls(controls);\n let newOptions = {};\n if (isAbstractControlOptions(options)) {\n // `options` are `AbstractControlOptions`\n newOptions = options;\n } else if (options !== null) {\n // `options` are legacy form group options\n newOptions.validators = options.validator;\n newOptions.asyncValidators = options.asyncValidator;\n }\n return new FormGroup(reducedControls, newOptions);\n }\n /**\n * @description\n * Constructs a new `FormRecord` instance. Accepts a single generic argument, which is an object\n * containing all the keys and corresponding inner control types.\n *\n * @param controls A collection of child controls. The key for each child is the name\n * under which it is registered.\n *\n * @param options Configuration options object for the `FormRecord`. The object should have the\n * `AbstractControlOptions` type and might contain the following fields:\n * * `validators`: A synchronous validator function, or an array of validator functions.\n * * `asyncValidators`: A single async validator or array of async validator functions.\n * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur'\n * | submit').\n */\n record(controls, options = null) {\n const reducedControls = this._reduceControls(controls);\n // Cast to `any` because the inferred types are not as specific as Element.\n return new FormRecord(reducedControls, options);\n }\n /**\n * @description\n * Constructs a new `FormControl` with the given state, validators and options. Sets\n * `{nonNullable: true}` in the options to get a non-nullable control. Otherwise, the\n * control will be nullable. Accepts a single generic argument, which is the type of the\n * control's value.\n *\n * @param formState Initializes the control with an initial state value, or\n * with an object that contains both a value and a disabled status.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or a `FormControlOptions` object that contains\n * validation functions and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator\n * functions.\n *\n * @usageNotes\n *\n * ### Initialize a control as disabled\n *\n * The following example returns a control with an initial value in a disabled state.\n *\n * <code-example path=\"forms/ts/formBuilder/form_builder_example.ts\" region=\"disabled-control\">\n * </code-example>\n */\n control(formState, validatorOrOpts, asyncValidator) {\n let newOptions = {};\n if (!this.useNonNullable) {\n return new FormControl(formState, validatorOrOpts, asyncValidator);\n }\n if (isAbstractControlOptions(validatorOrOpts)) {\n // If the second argument is options, then they are copied.\n newOptions = validatorOrOpts;\n } else {\n // If the other arguments are validators, they are copied into an options object.\n newOptions.validators = validatorOrOpts;\n newOptions.asyncValidators = asyncValidator;\n }\n return new FormControl(formState, {\n ...newOptions,\n nonNullable: true\n });\n }\n /**\n * Constructs a new `FormArray` from the given array of configurations,\n * validators and options. Accepts a single generic argument, which is the type of each control\n * inside the array.\n *\n * @param controls An array of child controls or control configs. Each child control is given an\n * index when it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of such functions, or an\n * `AbstractControlOptions` object that contains\n * validation functions and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions.\n */\n array(controls, validatorOrOpts, asyncValidator) {\n const createdControls = controls.map(c => this._createControl(c));\n // Cast to `any` because the inferred types are not as specific as Element.\n return new FormArray(createdControls, validatorOrOpts, asyncValidator);\n }\n /** @internal */\n _reduceControls(controls) {\n const createdControls = {};\n Object.keys(controls).forEach(controlName => {\n createdControls[controlName] = this._createControl(controls[controlName]);\n });\n return createdControls;\n }\n /** @internal */\n _createControl(controls) {\n if (controls instanceof FormControl) {\n return controls;\n } else if (controls instanceof AbstractControl) {\n // A control; just return it\n return controls;\n } else if (Array.isArray(controls)) {\n // ControlConfig Tuple\n const value = controls[0];\n const validator = controls.length > 1 ? controls[1] : null;\n const asyncValidator = controls.length > 2 ? controls[2] : null;\n return this.control(value, validator, asyncValidator);\n } else {\n // T or FormControlState<T>\n return this.control(controls);\n }\n }\n static {\n this.ɵfac = function FormBuilder_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormBuilder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FormBuilder,\n factory: FormBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return FormBuilder;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @description\n * `NonNullableFormBuilder` is similar to {@link FormBuilder}, but automatically constructed\n * {@link FormControl} elements have `{nonNullable: true}` and are non-nullable.\n *\n * @publicApi\n */\nlet NonNullableFormBuilder = /*#__PURE__*/(() => {\n class NonNullableFormBuilder {\n static {\n this.ɵfac = function NonNullableFormBuilder_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NonNullableFormBuilder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NonNullableFormBuilder,\n factory: () => (() => inject(FormBuilder).nonNullable)(),\n providedIn: 'root'\n });\n }\n }\n return NonNullableFormBuilder;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * UntypedFormBuilder is the same as `FormBuilder`, but it provides untyped controls.\n */\nlet UntypedFormBuilder = /*#__PURE__*/(() => {\n class UntypedFormBuilder extends FormBuilder {\n group(controlsConfig, options = null) {\n return super.group(controlsConfig, options);\n }\n /**\n * Like `FormBuilder#control`, except the resulting control is untyped.\n */\n control(formState, validatorOrOpts, asyncValidator) {\n return super.control(formState, validatorOrOpts, asyncValidator);\n }\n /**\n * Like `FormBuilder#array`, except the resulting array is untyped.\n */\n array(controlsConfig, validatorOrOpts, asyncValidator) {\n return super.array(controlsConfig, validatorOrOpts, asyncValidator);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵUntypedFormBuilder_BaseFactory;\n return function UntypedFormBuilder_Factory(__ngFactoryType__) {\n return (ɵUntypedFormBuilder_BaseFactory || (ɵUntypedFormBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(UntypedFormBuilder)))(__ngFactoryType__ || UntypedFormBuilder);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UntypedFormBuilder,\n factory: UntypedFormBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return UntypedFormBuilder;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the forms package.\n */\n/**\n * @publicApi\n */\nconst VERSION = /*#__PURE__*/new Version('18.2.6');\n\n/**\n * Exports the required providers and directives for template-driven forms,\n * making them available for import by NgModules that import this module.\n *\n * @see [Forms Overview](guide/forms)\n * @see [Template-driven Forms Guide](guide/forms)\n *\n * @publicApi\n */\nlet FormsModule = /*#__PURE__*/(() => {\n class FormsModule {\n /**\n * @description\n * Provides options for configuring the forms module.\n *\n * @param opts An object of configuration options\n * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more\n * correct, or to only call it `whenDisabled`, which is the legacy behavior.\n */\n static withConfig(opts) {\n return {\n ngModule: FormsModule,\n providers: [{\n provide: CALL_SET_DISABLED_STATE,\n useValue: opts.callSetDisabledState ?? setDisabledStateDefault\n }]\n };\n }\n static {\n this.ɵfac = function FormsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: FormsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [ɵInternalFormsSharedModule]\n });\n }\n }\n return FormsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Exports the required infrastructure and directives for reactive forms,\n * making them available for import by NgModules that import this module.\n *\n * @see [Forms Overview](guide/forms)\n * @see [Reactive Forms Guide](guide/forms/reactive-forms)\n *\n * @publicApi\n */\nlet ReactiveFormsModule = /*#__PURE__*/(() => {\n class ReactiveFormsModule {\n /**\n * @description\n * Provides options for configuring the reactive forms module.\n *\n * @param opts An object of configuration options\n * * `warnOnNgModelWithFormControl` Configures when to emit a warning when an `ngModel`\n * binding is used with reactive form directives.\n * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more\n * correct, or to only call it `whenDisabled`, which is the legacy behavior.\n */\n static withConfig(opts) {\n return {\n ngModule: ReactiveFormsModule,\n providers: [{\n provide: NG_MODEL_WITH_FORM_CONTROL_WARNING,\n useValue: opts.warnOnNgModelWithFormControl ?? 'always'\n }, {\n provide: CALL_SET_DISABLED_STATE,\n useValue: opts.callSetDisabledState ?? setDisabledStateDefault\n }]\n };\n }\n static {\n this.ɵfac = function ReactiveFormsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ReactiveFormsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ReactiveFormsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [ɵInternalFormsSharedModule]\n });\n }\n }\n return ReactiveFormsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @module\n * @description\n * This module is used for handling user input, by defining and building a `FormGroup` that\n * consists of `FormControl` objects, and mapping them onto the DOM. `FormControl`\n * objects can then be used to read information from the form DOM elements.\n *\n * Forms providers are not included in default providers; you must import these providers\n * explicitly.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, ControlEvent, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormResetEvent, FormSubmittedEvent, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, PristineChangeEvent, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, StatusChangeEvent, TouchedChangeEvent, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, ValueChangeEvent, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * @whatItDoes Runs html string through `DomSanitizer.bypassSecurityTrustHtml()`\n *\n * @howToUse\n *\n * ```\n * <div [innerHTML]=\"content | trustAsHtml\"></div>\n * ```\n *\n * @stable\n */\n@Pipe({ standalone: true, name: 'trustAsHtml', pure: true })\nexport class TrustAsHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n public transform(value: string | null | undefined): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value || '');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { UtilsService } from '@frontend/vanilla/core';\n\n/**\n * @whatItDoes Provides format pipe\n *\n * @howToUse `<div>{{'User: {0} Balance: {1}' | format:user.name : user.balance}}</div>`\n *\n * @stable\n */\n@Pipe({ standalone: true, name: 'format', pure: true })\nexport class FormatPipe implements PipeTransform {\n constructor(private util: UtilsService) {}\n\n transform(mask: string | undefined, ...args: any[]): string {\n return this.util.format(mask!, ...args);\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * @whatItDoes Dynamically sets html attributes on an element\n *\n * @howToUse\n *\n * ```\n * <div [vnHtmlAttrs]=\"collectionWithAttributes\"></div>\n * ```\n *\n * If `collectionWithAttributes` is `{'class':'foo','title':'Hello', 'id': 'new_id'}` the resulting html will be\n *\n * ```\n * <div class=\"foo\" id=\"new_id\" title=\"Hello\"></div>\n * ```\n *\n * @description\n *\n * Used internally to set attributes on an element rendered from sitecore, that has dictionary of\n * arbitrary html attributes. You can also use this yourself, but there will not be many use cases for it (if any at all).\n *\n * It updates the attributes when the input object changes.\n *\n * NOTE: It does not do any compilation, so bindings will not work.\n *\n * @stable\n */\n@Directive({\n standalone: true,\n selector: '[vnHtmlAttrs]',\n})\nexport class HtmlAttrsDirective implements OnChanges {\n @Input() vnHtmlAttrs: any;\n private snapshot: Map<string, string>;\n private addedClasses: string[];\n private element: HTMLElement;\n\n constructor(elementRef: ElementRef) {\n this.element = elementRef.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const attrs = changes['vnHtmlAttrs'];\n\n if (attrs) {\n this.renderAttributes(attrs.currentValue, attrs.previousValue);\n }\n }\n\n private renderAttributes(newValues: { [attr: string]: string }, oldValues: { [attr: string]: string }) {\n if (this.snapshot) {\n this.addedClasses.forEach((c) => this.element.classList.remove(c));\n\n Object.keys(oldValues || []).forEach((key: string) => {\n if (this.snapshot.has(key)) {\n if (oldValues[key] === this.element.getAttribute(key)) {\n this.element.setAttribute(key, this.snapshot.get(key)!);\n }\n } else if (!this.isClass(key)) {\n this.element.removeAttribute(key);\n }\n });\n }\n\n this.snapshot = new Map<string, string>();\n this.addedClasses = [];\n\n Object.keys(newValues || []).forEach((key: string) => {\n const value = newValues[key]!;\n\n if (this.isClass(key)) {\n this.addedClasses.push(value);\n\n this.element.classList.add(value);\n } else {\n const attrValue = this.element.getAttribute(key);\n\n if (attrValue) {\n this.snapshot.set(key, attrValue);\n }\n\n this.element.setAttribute(key, value);\n }\n });\n }\n\n private isClass(name: string): boolean {\n return name.toLowerCase() === 'class';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n/**\n * A pipe to bypass security and trust the given value to be a safe resource URL,\n * i.e. a location that may be used to load executable code from, like <script src>, or <iframe src>.\n *\n * WARNING: calling this method with untrusted user data exposes your application to XSS security risks!\n *\n * @stable\n */\n@Pipe({ standalone: true, name: 'trustAsResourceUrl', pure: true })\nexport class TrustAsResourceUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n public transform(url: string): SafeResourceUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, NgZone, OnDestroy, ViewChild, inject } from '@angular/core';\n\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TrustAsResourceUrlPipe } from './trust-as-resource-url.pipe';\n\n/**\n * @whatItDoes Allows easier integration with iframes and message communication.\n *\n * @howToUse\n *\n * ```\n * <vn-iframe [url]=\"url\" origin='http://www.bwin.dk' />\n * ```\n *\n * @description\n *\n * Allows easier integration with iframes and message communication.\n *\n * @stable\n */\n@Component({\n standalone: true,\n imports: [TrustAsResourceUrlPipe],\n selector: 'vn-iframe',\n template: `\n @if (!allowPaymentAttr) {\n <iframe #iframe [attr.src]=\"url | trustAsResourceUrl\" [class]=\"class\"></iframe>\n }\n @if (allowPaymentAttr) {\n <iframe #iframe [attr.src]=\"url | trustAsResourceUrl\" [class]=\"class\" allow=\"payment\"></iframe>\n }\n `,\n})\nexport class IFrameComponent implements AfterViewInit, OnDestroy {\n @Input() url: string;\n @Input() origin: string;\n @Input() class: string;\n @Input() allowPaymentAttr: boolean;\n @ViewChild('iframe') iframe: ElementRef<HTMLIFrameElement>;\n\n get events(): Observable<any> {\n return this.iframeEvents;\n }\n\n private unsubscribe = new Subject<void>();\n private iframeEvents = new Subject<any>();\n readonly #window = inject(WINDOW);\n\n constructor(private zone: NgZone) {}\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() =>\n fromEvent<MessageEvent>(this.#window, 'message')\n .pipe(takeUntil(this.unsubscribe))\n .subscribe((event: MessageEvent<any>) => {\n if (!event || !event.data || !event.origin || !this.origin?.startsWith(event.origin)) {\n return;\n }\n this.iframeEvents.next(event.data);\n }),\n );\n }\n\n ngOnDestroy() {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n }\n\n post<T>(message: T) {\n this.iframe.nativeElement.contentWindow?.postMessage(message, this.origin);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BalanceProperties, ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'vnBalanceProperties', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: balancePropertiesConfigFactory,\n})\nexport class BalancePropertiesConfig extends LazyClientConfigBase {\n balanceProperties: BalanceProperties;\n}\n\nexport function balancePropertiesConfigFactory(service: LazyClientConfigService) {\n return service.get(BalancePropertiesConfig);\n}\n","import { Injectable, signal } from '@angular/core';\n\nimport { BalanceProperties, BalanceSettingsConfig, SharedFeaturesApiService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { BalanceTransfer, BalanceUpdate } from './balance-properties.models';\n\n/**\n * @whatItDoes Provides access to users balance and means to refresh it or transfer between types.\n *\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class BalancePropertiesService {\n readonly balanceInfo = signal<BalanceProperties | null>(null);\n\n get balanceProperties(): Observable<BalanceProperties | null> {\n return this.balancePropertiesEvents;\n }\n\n private readonly balancePropertiesEvents = new BehaviorSubject<BalanceProperties | null>(null);\n\n constructor(\n private userService: UserService,\n private apiService: SharedFeaturesApiService,\n private balanceSettingsConfig: BalanceSettingsConfig,\n ) {}\n\n refresh(propagate: boolean = true) {\n if (this.userService.isAuthenticated) {\n this.apiService.get('balance', undefined, { showSpinner: false }).subscribe((response: BalanceUpdate) => {\n this.balanceInfo.set({ ...response.balance, propagateRefresh: propagate });\n this.balancePropertiesEvents.next({ ...response.balance, propagateRefresh: propagate });\n });\n }\n }\n\n update(balanceProperties: BalanceProperties) {\n this.balanceInfo.set(balanceProperties);\n this.balancePropertiesEvents.next(balanceProperties);\n }\n\n transfer(data: BalanceTransfer): Observable<any> {\n return this.apiService.post('balance/transfer', data);\n }\n\n isLow(balance: number): boolean {\n const lowBalanceThreshold =\n this.balanceSettingsConfig.lowThresholds[this.userService.currency] || this.balanceSettingsConfig.lowThresholds['*'];\n\n if (lowBalanceThreshold == null) {\n return false;\n }\n\n return balance <= lowBalanceThreshold;\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\n\nimport {\n BalanceProperties,\n BalancePropertiesCoreService,\n LocalStoreKey,\n LocalStoreService,\n NativeAppService,\n NativeEvent,\n NativeEventType,\n OnFeatureInit,\n TrackingService,\n UserPreHooksLoginEvent,\n UserService,\n UserUpdateEvent,\n WINDOW,\n WindowEvent,\n} from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BalancePropertiesConfig } from './balance-properties.client-config';\nimport { BalancePropertiesService } from './balance-properties.service';\n\n@Injectable()\nexport class BalancePropertiesBootstrapService implements OnFeatureInit {\n readonly #window = inject(WINDOW);\n\n constructor(\n private balancePropertiesService: BalancePropertiesService,\n private balancePropertiesConfig: BalancePropertiesConfig,\n private userService: UserService,\n private nativeAppService: NativeAppService,\n private localStoreService: LocalStoreService,\n private zone: NgZone,\n private trackingService: TrackingService,\n private balancePropertiesCoreService: BalancePropertiesCoreService,\n ) {}\n\n async onFeatureInit() {\n await firstValueFrom(this.balancePropertiesConfig.whenReady);\n\n this.balancePropertiesService.update(this.balancePropertiesConfig.balanceProperties);\n this.balancePropertiesCoreService.set(this.balancePropertiesService);\n //Necessary for betstation gridconnect login as it's a new login on top of anonymous user.\n this.userService.events.pipe(filter((e) => e instanceof UserPreHooksLoginEvent)).subscribe(() => {\n this.balancePropertiesService.refresh();\n });\n\n this.zone.runOutsideAngular(() => {\n // Refresh balance on focus but do not propagate it to other balances.\n this.#window.addEventListener(WindowEvent.Focus, () => {\n if (this.userService.isAuthenticated) {\n this.balancePropertiesService.refresh(false);\n }\n });\n\n this.#window.addEventListener(WindowEvent.Storage, (event: StorageEvent) => {\n if (event.storageArea == localStorage) {\n const authKey = this.localStoreService.get<number>(LocalStoreKey.AuthStorageKey);\n\n if (authKey === 0 && this.userService.isAuthenticated) {\n this.balancePropertiesService.refresh();\n }\n }\n });\n });\n\n this.nativeAppService.eventsFromNative.subscribe((e: NativeEvent) => {\n const eventName = e.eventName.toUpperCase();\n if (eventName === NativeEventType.GETBALANCE) {\n this.nativeAppService.sendToNative({\n eventName: NativeEventType.USERBALANCE,\n parameters: {\n amount: this.balancePropertiesConfig.balanceProperties.accountBalance,\n currencyCode: this.userService.currency,\n },\n });\n } else if (eventName === NativeEventType.UPDATEBALANCE) {\n this.balancePropertiesService.refresh();\n }\n });\n\n this.balancePropertiesService.balanceProperties.pipe(filter(Boolean)).subscribe((balance: BalanceProperties) => {\n this.userService.triggerEvent(new UserUpdateEvent(new Map([['balanceProperties', balance]])));\n\n this.trackingService.triggerEvent('Event.Balance_Refresh', {\n 'user.profile.bal': balance.accountBalance,\n 'user.profile.previousBal': this.balancePropertiesConfig.balanceProperties.accountBalance,\n });\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n BalanceProperties,\n DSL_NOT_READY,\n DslCacheService,\n DslRecordable,\n DslRecorderService,\n DslValuesProvider,\n IntlService,\n} from '@frontend/vanilla/core';\n\nimport { BalancePropertiesService } from './balance-properties.service';\n\n@Injectable()\nexport class BalancePropertiesDslValuesProvider implements DslValuesProvider {\n private balanceProperties: BalanceProperties | null;\n\n constructor(\n private readonly dslRecorderService: DslRecorderService,\n private readonly intlService: IntlService,\n readonly balancePropertiesService: BalancePropertiesService,\n readonly dslCacheService: DslCacheService,\n ) {\n balancePropertiesService.balanceProperties.subscribe((balanceProperties: BalanceProperties | null) => {\n this.balanceProperties = balanceProperties;\n dslCacheService.invalidate(['balance']);\n });\n }\n\n getProviders(): { [provider: string]: DslRecordable } {\n const recordable = this.dslRecorderService.createRecordable('balance');\n const createProperty = (name: string, getProperty: (b: BalanceProperties) => number) => {\n recordable.createProperty({\n name,\n get: () => (this.balanceProperties ? getProperty(this.balanceProperties) : DSL_NOT_READY),\n deps: ['balance'],\n });\n };\n\n createProperty('AccountBalance', (b) => b.accountBalance);\n createProperty('PayPalBalance', (b) => b.payPalBalance);\n createProperty('PayPalRestrictedBalance', (b) => b.payPalRestrictedBalance);\n createProperty('PayPalCashoutableBalance', (b) => b.payPalCashoutableBalance);\n createProperty('BalanceForGameType', (b) => b.balanceForGameType);\n createProperty('BonusWinningsRestrictedBalance', (b) => b.bonusWinningsRestrictedBalance);\n createProperty('CashoutRestrictedBalance', (b) => b.cashoutRestrictedBalance);\n createProperty('CashoutableBalance', (b) => b.cashoutableBalance);\n createProperty('CashoutableBalanceReal', (b) => b.cashoutableBalanceReal);\n createProperty('AvailableBalance', (b) => b.availableBalance);\n createProperty('DepositRestrictedBalance', (b) => b.depositRestrictedBalance);\n createProperty('InPlayAmount', (b) => b.inPlayAmount);\n createProperty('ReleaseRestrictedBalance', (b) => b.releaseRestrictedBalance);\n createProperty('PlayMoneyBalance', (b) => b.playMoneyBalance);\n createProperty('PlayMoneyInPlayAmount', (b) => b.playMoneyInPlayAmount);\n createProperty('OwedAmount', (b) => b.owedAmount);\n createProperty('TaxWithheldAmount', (b) => b.taxWithheldAmount);\n createProperty('PokerWinningsRestrictedBalance', (b) => b.pokerWinningsRestrictedBalance);\n createProperty('CashoutRestrictedCashBalance', (b) => b.cashoutRestrictedCashBalance);\n createProperty('CashoutableBalanceAtOnline', (b) => b.cashoutableBalanceAtOnline);\n createProperty('CashoutableBalanceAtRetail', (b) => b.cashoutableBalanceAtRetail);\n createProperty('CreditCardDepositBalance', (b) => b.creditCardDepositBalance);\n createProperty('CreditCardWinningsBalance', (b) => b.creditCardWinningsBalance);\n createProperty('DebitCardDepositBalance', (b) => b.debitCardDepositBalance);\n createProperty('MainRealBalance', (b) => b.mainRealBalance);\n createProperty('UncollectedFunds', (b) => b.uncollectedFunds);\n createProperty('SportsDepositBalance', (b) => b.sportsDepositBalance);\n createProperty('SportsExclusiveBalance', (b) => b.sportsExclusiveBalance);\n createProperty('GamesDepositBalance', (b) => b.gamesDepositBalance);\n createProperty('SportsWinningsBalance', (b) => b.sportsWinningsBalance);\n createProperty('PokerWinningsBalance', (b) => b.pokerWinningsBalance);\n createProperty('SlotsWinningsBalance', (b) => b.slotsWinningsBalance);\n createProperty('SportsRestrictedBalance', (b) => b.sportsRestrictedBalance);\n createProperty('PokerRestrictedBalance', (b) => b.pokerRestrictedBalance);\n createProperty('SlotsRestrictedBalance', (b) => b.slotsRestrictedBalance);\n createProperty('AllWinningsBalance', (b) => b.allWinningsBalance);\n createProperty('MaxLimitExceededBalance', (b) => b.maxLimitExceededBalance);\n createProperty('PrepaidCardDepositBalance', (b) => b.prepaidCardDepositBalance);\n\n recordable.createFunction({ name: 'IsLow', get: (balance: number) => this.balancePropertiesService.isLow(balance), deps: [] });\n recordable.createFunction({ name: 'Format', get: (balance: number) => this.intlService.formatCurrency(balance), deps: [] });\n\n return { Balance: recordable };\n }\n}\n","import { registerLazyDslOnModuleInit, runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { BalancePropertiesBootstrapService } from './balance-properties-bootstrap.service';\nimport { BalancePropertiesDslValuesProvider } from './balance-properties-dsl-values-provider';\n\nexport function provide() {\n return [runOnFeatureInit(BalancePropertiesBootstrapService), registerLazyDslOnModuleInit(BalancePropertiesDslValuesProvider)];\n}\n","/**\n * @whatItDoes Represents balance transfer model.\n *\n * @stable\n */\nimport { BalanceProperties } from '@frontend/vanilla/core';\n\nexport interface BalanceTransfer {\n amount: number;\n fromBalanceType: BalanceType;\n toBalanceType: BalanceType;\n}\n\n/**\n * @whatItDoes Represents supported balance types for transfers from/to.\n *\n * @stable\n */\nexport enum BalanceType {\n PayPalBal = 'PAYPAL_BAL',\n MainRealBal = 'MAIN_REAL_BAL',\n}\n\n/**\n * @whatItDoes Represents balance update model.\n */\nexport interface BalanceUpdate {\n balance: BalanceProperties;\n}\n","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 4.0.10, Fri Nov 15 2024\n *\n * https://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dexie = factory());\n})(this, function () {\n 'use strict';\n\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation.\n Permission to use, copy, modify, and/or distribute this software for any\n purpose with or without fee is hereby granted.\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n PERFORMANCE OF THIS SOFTWARE.\n ***************************************************************************** */\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\n function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n }\n var _global = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n var keys = Object.keys;\n var isArray = Array.isArray;\n if (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n }\n function extend(obj, extension) {\n if (typeof extension !== 'object') return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n }\n var getProto = Object.getPrototypeOf;\n var _hasOwn = {}.hasOwnProperty;\n function hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n }\n function props(proto, extension) {\n if (typeof extension === 'function') extension = extension(getProto(proto));\n (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n }\n var defineProperty = Object.defineProperty;\n function setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ? {\n get: functionOrGetSet.get,\n set: functionOrGetSet.set,\n configurable: true\n } : {\n value: functionOrGetSet,\n configurable: true,\n writable: true\n }, options));\n }\n function derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n }\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n function getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n }\n var _slice = [].slice;\n function slice(args, start, end) {\n return _slice.call(args, start, end);\n }\n function override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n }\n function assert(b) {\n if (!b) throw new Error(\"Assertion Failed\");\n }\n function asap$1(fn) {\n if (_global.setImmediate) setImmediate(fn);else setTimeout(fn, 0);\n }\n function arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue) result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n }\n function getByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string' && hasOwn(obj, keyPath)) return obj[keyPath];\n if (!keyPath) return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj == null ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n }\n function setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined) return;\n if ('isFrozen' in Object && Object.isFrozen(obj)) return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n } else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\") {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath))) obj.splice(currentKeyPath, 1);else delete obj[currentKeyPath];\n } else obj[currentKeyPath] = value;\n } else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj || !hasOwn(obj, currentKeyPath)) innerObj = obj[currentKeyPath] = {};\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n } else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath))) obj.splice(keyPath, 1);else delete obj[keyPath];\n } else obj[keyPath] = value;\n }\n }\n }\n function delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string') setByKeyPath(obj, keyPath, undefined);else if ('length' in keyPath) [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n }\n function shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m)) rv[m] = obj[m];\n }\n return rv;\n }\n var concat = [].concat;\n function flatten(a) {\n return concat.apply([], a);\n }\n var intrinsicTypeNames = \"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\".split(',').concat(flatten([8, 16, 32, 64].map(function (num) {\n return [\"Int\", \"Uint\", \"Float\"].map(function (t) {\n return t + num + \"Array\";\n });\n }))).filter(function (t) {\n return _global[t];\n });\n var intrinsicTypes = new Set(intrinsicTypeNames.map(function (t) {\n return _global[t];\n }));\n function cloneSimpleObjectTree(o) {\n var rv = {};\n for (var k in o) if (hasOwn(o, k)) {\n var v = o[k];\n rv[k] = !v || typeof v !== 'object' || intrinsicTypes.has(v.constructor) ? v : cloneSimpleObjectTree(v);\n }\n return rv;\n }\n function objectIsEmpty(o) {\n for (var k in o) if (hasOwn(o, k)) return false;\n return true;\n }\n var circularRefs = null;\n function deepClone(any) {\n circularRefs = new WeakMap();\n var rv = innerDeepClone(any);\n circularRefs = null;\n return rv;\n }\n function innerDeepClone(x) {\n if (!x || typeof x !== 'object') return x;\n var rv = circularRefs.get(x);\n if (rv) return rv;\n if (isArray(x)) {\n rv = [];\n circularRefs.set(x, rv);\n for (var i = 0, l = x.length; i < l; ++i) {\n rv.push(innerDeepClone(x[i]));\n }\n } else if (intrinsicTypes.has(x.constructor)) {\n rv = x;\n } else {\n var proto = getProto(x);\n rv = proto === Object.prototype ? {} : Object.create(proto);\n circularRefs.set(x, rv);\n for (var prop in x) {\n if (hasOwn(x, prop)) {\n rv[prop] = innerDeepClone(x[prop]);\n }\n }\n }\n return rv;\n }\n var toString = {}.toString;\n function toStringTag(o) {\n return toString.call(o).slice(8, -1);\n }\n var iteratorSymbol = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\n var getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n } : function () {\n return null;\n };\n function delArrayItem(a, x) {\n var i = a.indexOf(x);\n if (i >= 0) a.splice(i, 1);\n return i >= 0;\n }\n var NO_CHAR_ARRAY = {};\n function getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike)) return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string') return [arrayLike];\n if (it = getIteratorOf(arrayLike)) {\n a = [];\n while (x = it.next(), !x.done) a.push(x.value);\n return a;\n }\n if (arrayLike == null) return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--) a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--) a[i] = arguments[i];\n return a;\n }\n var isAsyncFunction = typeof Symbol !== 'undefined' ? function (fn) {\n return fn[Symbol.toStringTag] === 'AsyncFunction';\n } : function () {\n return false;\n };\n var dexieErrorNames = ['Modify', 'Bulk', 'OpenFailed', 'VersionChange', 'Schema', 'Upgrade', 'InvalidTable', 'MissingAPI', 'NoSuchDatabase', 'InvalidArgument', 'SubTransaction', 'Unsupported', 'Internal', 'DatabaseClosed', 'PrematureCommit', 'ForeignAwait'];\n var idbDomErrorNames = ['Unknown', 'Constraint', 'Data', 'TransactionInactive', 'ReadOnly', 'Version', 'NotFound', 'InvalidState', 'InvalidAccess', 'Abort', 'Timeout', 'QuotaExceeded', 'Syntax', 'DataClone'];\n var errorList = dexieErrorNames.concat(idbDomErrorNames);\n var defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\",\n MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n };\n function DexieError(name, msg) {\n this.name = name;\n this.message = msg;\n }\n derive(DexieError).from(Error).extend({\n toString: function () {\n return this.name + \": \" + this.message;\n }\n });\n function getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures).map(function (key) {\n return failures[key].toString();\n }).filter(function (v, i, s) {\n return s.indexOf(v) === i;\n }).join('\\n');\n }\n function ModifyError(msg, failures, successCount, failedKeys) {\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n }\n derive(ModifyError).from(DexieError);\n function BulkError(msg, failures) {\n this.name = \"BulkError\";\n this.failures = Object.keys(failures).map(function (pos) {\n return failures[pos];\n });\n this.failuresByPos = failures;\n this.message = getMultiErrorMessage(msg, this.failures);\n }\n derive(BulkError).from(DexieError);\n var errnames = errorList.reduce(function (obj, name) {\n return obj[name] = name + \"Error\", obj;\n }, {});\n var BaseException = DexieError;\n var exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n } else if (typeof msgOrInner === 'string') {\n this.message = \"\".concat(msgOrInner).concat(!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n } else if (typeof msgOrInner === 'object') {\n this.message = \"\".concat(msgOrInner.name, \" \").concat(msgOrInner.message);\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n }, {});\n exceptions.Syntax = SyntaxError;\n exceptions.Type = TypeError;\n exceptions.Range = RangeError;\n var exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n }, {});\n function mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name]) return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", {\n get: function () {\n return this.inner.stack;\n }\n });\n }\n return rv;\n }\n var fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1) obj[name + \"Error\"] = exceptions[name];\n return obj;\n }, {});\n fullNameExceptions.ModifyError = ModifyError;\n fullNameExceptions.DexieError = DexieError;\n fullNameExceptions.BulkError = BulkError;\n function nop() {}\n function mirror(val) {\n return val;\n }\n function pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror) return f2;\n return function (val) {\n return f2(f1(val));\n };\n }\n function callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n }\n function hookCreatingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined) arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n }\n function hookDeletingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n }\n function hookUpdatingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ? res2 === undefined ? undefined : res2 : extend(res, res2);\n };\n }\n function reverseStoppableEventChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n if (f2.apply(this, arguments) === false) return false;\n return f1.apply(this, arguments);\n };\n }\n function promisableChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this,\n i = arguments.length,\n args = new Array(i);\n while (i--) args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n }\n var debug = typeof location !== 'undefined' && /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\n function setDebug(value, filter) {\n debug = value;\n }\n var INTERNAL = {};\n var ZONE_ECHO_LIMIT = 100,\n _a$1 = typeof Promise === 'undefined' ? [] : function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle) return [globalP, getProto(globalP), globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [nativeP, getProto(nativeP), globalP];\n }(),\n resolvedNativePromise = _a$1[0],\n nativePromiseProto = _a$1[1],\n resolvedGlobalPromise = _a$1[2],\n nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\n var NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\n var patchGlobalPromise = !!resolvedGlobalPromise;\n function schedulePhysicalTick() {\n queueMicrotask(physicalTick);\n }\n var asap = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n };\n var isOutsideMicroTick = true,\n needsNewPhysicalTick = true,\n unhandledErrors = [],\n rejectingErrors = [],\n rejectionMapper = mirror;\n var globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: nop,\n pgp: false,\n env: {},\n finalize: nop\n };\n var PSD = globalPSD;\n var microtickQueue = [];\n var numScheduledCalls = 0;\n var tickFinalizers = [];\n function DexiePromise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this._lib = false;\n var psd = this._PSD = PSD;\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL) throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false) handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n }\n var thenProp = {\n get: function () {\n var psd = PSD,\n microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n var cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise(function (resolve, reject) {\n propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));\n });\n if (this._consoleTask) rv._consoleTask = this._consoleTask;\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ? thenProp : {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n };\n props(DexiePromise.prototype, {\n then: thenProp,\n _then: function (onFulfilled, onRejected) {\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));\n },\n catch: function (onRejected) {\n if (arguments.length === 1) return this.then(null, onRejected);\n var type = arguments[0],\n handler = arguments[1];\n return typeof type === 'function' ? this.then(null, function (err) {\n return err instanceof type ? handler(err) : PromiseReject(err);\n }) : this.then(null, function (err) {\n return err && err.name === type ? handler(err) : PromiseReject(err);\n });\n },\n finally: function (onFinally) {\n return this.then(function (value) {\n return DexiePromise.resolve(onFinally()).then(function () {\n return value;\n });\n }, function (err) {\n return DexiePromise.resolve(onFinally()).then(function () {\n return PromiseReject(err);\n });\n });\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ? new DexiePromise(function (resolve, reject) {\n var handle = setTimeout(function () {\n return reject(new exceptions.Timeout(msg));\n }, ms);\n _this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n });\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\n globalPSD.env = snapShot();\n function Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n }\n props(DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0) resolve([]);\n var remaining = values.length;\n values.forEach(function (a, i) {\n return DexiePromise.resolve(a).then(function (x) {\n values[i] = x;\n if (! --remaining) resolve(values);\n }, reject);\n });\n });\n },\n resolve: function (value) {\n if (value instanceof DexiePromise) return value;\n if (value && typeof value.then === 'function') return new DexiePromise(function (resolve, reject) {\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n values.map(function (value) {\n return DexiePromise.resolve(value).then(resolve, reject);\n });\n });\n },\n PSD: {\n get: function () {\n return PSD;\n },\n set: function (value) {\n return PSD = value;\n }\n },\n totalEchoes: {\n get: function () {\n return totalEchoes;\n }\n },\n newPSD: newScope,\n usePSD: usePSD,\n scheduler: {\n get: function () {\n return asap;\n },\n set: function (value) {\n asap = value;\n }\n },\n rejectionMapper: {\n get: function () {\n return rejectionMapper;\n },\n set: function (value) {\n rejectionMapper = value;\n }\n },\n follow: function (fn, zoneProps) {\n return new DexiePromise(function (resolve, reject) {\n return newScope(function (resolve, reject) {\n var psd = PSD;\n psd.unhandleds = [];\n psd.onunhandled = reject;\n psd.finalize = callBoth(function () {\n var _this = this;\n run_at_end_of_this_or_next_physical_tick(function () {\n _this.unhandleds.length === 0 ? resolve() : reject(_this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n });\n if (NativePromise) {\n if (NativePromise.allSettled) setProp(DexiePromise, \"allSettled\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve) {\n if (possiblePromises.length === 0) resolve([]);\n var remaining = possiblePromises.length;\n var results = new Array(remaining);\n possiblePromises.forEach(function (p, i) {\n return DexiePromise.resolve(p).then(function (value) {\n return results[i] = {\n status: \"fulfilled\",\n value: value\n };\n }, function (reason) {\n return results[i] = {\n status: \"rejected\",\n reason: reason\n };\n }).then(function () {\n return --remaining || resolve(results);\n });\n });\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined') setProp(DexiePromise, \"any\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (possiblePromises.length === 0) reject(new AggregateError([]));\n var remaining = possiblePromises.length;\n var failures = new Array(remaining);\n possiblePromises.forEach(function (p, i) {\n return DexiePromise.resolve(p).then(function (value) {\n return resolve(value);\n }, function (failure) {\n failures[i] = failure;\n if (! --remaining) reject(new AggregateError(failures));\n });\n });\n });\n });\n if (NativePromise.withResolvers) DexiePromise.withResolvers = NativePromise.withResolvers;\n }\n function executePromiseTask(promise, fn) {\n try {\n fn(function (value) {\n if (promise._state !== null) return;\n if (value === promise) throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, function (resolve, reject) {\n value instanceof DexiePromise ? value._then(resolve, reject) : value.then(resolve, reject);\n });\n } else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick) endMicroTickScope();\n }, handleRejection.bind(null, promise));\n } catch (ex) {\n handleRejection(promise, ex);\n }\n }\n function handleRejection(promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null) return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick) endMicroTickScope();\n }\n function propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap(function () {\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n }, []);\n }\n }\n function propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap(callListener, [cb, promise, listener]);\n }\n function callListener(cb, promise, listener) {\n try {\n var ret,\n value = promise._value;\n if (!promise._state && rejectingErrors.length) rejectingErrors = [];\n ret = debug && promise._consoleTask ? promise._consoleTask.run(function () {\n return cb(value);\n }) : cb(value);\n if (!promise._state && rejectingErrors.indexOf(value) === -1) {\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n } catch (e) {\n listener.reject(e);\n } finally {\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n }\n function physicalTick() {\n usePSD(globalPSD, function () {\n beginMicroTickScope() && endMicroTickScope();\n });\n }\n function beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n }\n function endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n }\n function finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i) finalizers[--i]();\n }\n function run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap(function () {\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n }, []);\n }\n function addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) {\n return p._value === promise._value;\n })) unhandledErrors.push(promise);\n }\n function markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i) if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n }\n function PromiseReject(reason) {\n return new DexiePromise(INTERNAL, false, reason);\n }\n function wrap(fn, errorCatcher) {\n var psd = PSD;\n return function () {\n var wasRootExec = beginMicroTickScope(),\n outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n } catch (e) {\n errorCatcher && errorCatcher(e);\n } finally {\n switchToZone(outerScope, false);\n if (wasRootExec) endMicroTickScope();\n }\n };\n }\n var task = {\n awaits: 0,\n echoes: 0,\n id: 0\n };\n var taskCounter = 0;\n var zoneStack = [];\n var zoneEchoes = 0;\n var totalEchoes = 0;\n var zone_id_counter = 0;\n function newScope(fn, props, a1, a2) {\n var parent = PSD,\n psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise,\n PromiseProp: {\n value: DexiePromise,\n configurable: true,\n writable: true\n },\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject\n } : {};\n if (props) extend(psd, props);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0) psd.finalize();\n return rv;\n }\n function incrementExpectedAwaits() {\n if (!task.id) task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n }\n function decrementExpectedAwaits() {\n if (!task.awaits) return false;\n if (--task.awaits === 0) task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n return true;\n }\n if (('' + nativePromiseThen).indexOf('[native code]') === -1) {\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\n }\n function onPossibleParallellAsync(possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits();\n return possiblePromise.then(function (x) {\n decrementExpectedAwaits();\n return x;\n }, function (e) {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n }\n function zoneEnterEcho(targetZone) {\n ++totalEchoes;\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.awaits = task.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n }\n function zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n }\n function switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (! --zoneEchoes || targetZone !== PSD)) {\n queueMicrotask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD) return;\n PSD = targetZone;\n if (currentZone === globalPSD) globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise.all = targetEnv.all;\n GlobalPromise.race = targetEnv.race;\n GlobalPromise.resolve = targetEnv.resolve;\n GlobalPromise.reject = targetEnv.reject;\n if (targetEnv.allSettled) GlobalPromise.allSettled = targetEnv.allSettled;\n if (targetEnv.any) GlobalPromise.any = targetEnv.any;\n }\n }\n }\n function snapShot() {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject\n } : {};\n }\n function usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n } finally {\n switchToZone(outerScope, false);\n }\n }\n function nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait) incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n } finally {\n switchToZone(outerZone, false);\n if (cleanup) queueMicrotask(decrementExpectedAwaits);\n }\n };\n }\n function execInGlobalContext(cb) {\n if (Promise === NativePromise && task.echoes === 0) {\n if (zoneEchoes === 0) {\n cb();\n } else {\n enqueueNativeMicroTask(cb);\n }\n } else {\n setTimeout(cb, 0);\n }\n }\n var rejection = DexiePromise.reject;\n function tempTransaction(db, mode, storeNames, fn) {\n if (!db.idbdb || !db._state.openComplete && !PSD.letThrough && !db._vip) {\n if (db._state.openComplete) {\n return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n }\n if (!db._state.isBeingOpened) {\n if (!db._state.autoOpen) return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () {\n return tempTransaction(db, mode, storeNames, fn);\n });\n } else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n db._state.PR1398_maxLoop = 3;\n } catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({\n disableAutoOpen: false\n });\n return db.open().then(function () {\n return tempTransaction(db, mode, storeNames, fn);\n });\n }\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n if (mode === 'readwrite') try {\n trans.idbtrans.commit();\n } catch (_a) {}\n return mode === 'readonly' ? result : trans._completion.then(function () {\n return result;\n });\n });\n }\n }\n var DEXIE_VERSION = '4.0.10';\n var maxString = String.fromCharCode(65535);\n var minKey = -Infinity;\n var INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\";\n var STRING_EXPECTED = \"String expected.\";\n var connections = [];\n var DBNAMES_DB = '__dbnames';\n var READONLY = 'readonly';\n var READWRITE = 'readwrite';\n function combine(filter1, filter2) {\n return filter1 ? filter2 ? function () {\n return filter1.apply(this, arguments) && filter2.apply(this, arguments);\n } : filter1 : filter2;\n }\n var AnyRange = {\n type: 3,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n };\n function workaroundForUndefinedPrimKey(keyPath) {\n return typeof keyPath === \"string\" && !/\\./.test(keyPath) ? function (obj) {\n if (obj[keyPath] === undefined && keyPath in obj) {\n obj = deepClone(obj);\n delete obj[keyPath];\n }\n return obj;\n } : function (obj) {\n return obj;\n };\n }\n function Entity() {\n throw exceptions.Type();\n }\n function cmp(a, b) {\n try {\n var ta = type(a);\n var tb = type(b);\n if (ta !== tb) {\n if (ta === 'Array') return 1;\n if (tb === 'Array') return -1;\n if (ta === 'binary') return 1;\n if (tb === 'binary') return -1;\n if (ta === 'string') return 1;\n if (tb === 'string') return -1;\n if (ta === 'Date') return 1;\n if (tb !== 'Date') return NaN;\n return -1;\n }\n switch (ta) {\n case 'number':\n case 'Date':\n case 'string':\n return a > b ? 1 : a < b ? -1 : 0;\n case 'binary':\n {\n return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n }\n case 'Array':\n return compareArrays(a, b);\n }\n } catch (_a) {}\n return NaN;\n }\n function compareArrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n var res = cmp(a[i], b[i]);\n if (res !== 0) return res;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n }\n function compareUint8Arrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n if (a[i] !== b[i]) return a[i] < b[i] ? -1 : 1;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n }\n function type(x) {\n var t = typeof x;\n if (t !== 'object') return t;\n if (ArrayBuffer.isView(x)) return 'binary';\n var tsTag = toStringTag(x);\n return tsTag === 'ArrayBuffer' ? 'binary' : tsTag;\n }\n function getUint8Array(a) {\n if (a instanceof Uint8Array) return a;\n if (ArrayBuffer.isView(a)) return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return new Uint8Array(a);\n }\n var Table = function () {\n function Table() {}\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n var task = debug && typeof console !== 'undefined' && console.createTask && console.createTask(\"Dexie: \".concat(mode === 'readonly' ? 'read' : 'write', \" \").concat(this.name));\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName]) throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n var p = trans && trans.db._novip === this.db._novip ? trans === PSD.trans ? trans._promise(mode, checkTableInTransaction, writeLocked) : newScope(function () {\n return trans._promise(mode, checkTableInTransaction, writeLocked);\n }, {\n trans: trans,\n transless: PSD.transless || PSD\n }) : tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n if (task) {\n p._consoleTask = task;\n p = p.catch(function (err) {\n console.trace(err);\n return rejection(err);\n });\n }\n return p;\n } finally {\n if (wasRootExec) endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object) return this.where(keyOrCrit).first(cb);\n if (keyOrCrit == null) return rejection(new exceptions.Type(\"Invalid argument to Table.get()\"));\n return this._trans('readonly', function (trans) {\n return _this.core.get({\n trans: trans,\n key: keyOrCrit\n }).then(function (res) {\n return _this.hook.reading.fire(res);\n });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string') return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit)) return new this.db.WhereClause(this, \"[\".concat(indexOrCrit.join('+'), \"]\"));\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1) return this.where(keyPaths[0]).equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n if (ix.compound && keyPaths.every(function (keyPath) {\n return ix.keyPath.indexOf(keyPath) >= 0;\n })) {\n for (var i = 0; i < keyPaths.length; ++i) {\n if (keyPaths.indexOf(ix.keyPath[i]) === -1) return false;\n }\n return true;\n }\n return false;\n }).sort(function (a, b) {\n return a.keyPath.length - b.keyPath.length;\n })[0];\n if (compoundIndex && this.db._maxKey !== maxString) {\n var keyPathsInValidOrder = compoundIndex.keyPath.slice(0, keyPaths.length);\n return this.where(keyPathsInValidOrder).equals(keyPathsInValidOrder.map(function (kp) {\n return indexOrCrit[kp];\n }));\n }\n if (!compoundIndex && debug) console.warn(\"The query \".concat(JSON.stringify(indexOrCrit), \" on \").concat(this.name, \" would benefit from a \") + \"compound index [\".concat(keyPaths.join('+'), \"]\"));\n var idxByName = this.schema.idxByName;\n function equals(a, b) {\n return cmp(a, b) === 0;\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0],\n prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [prevIndex || index, prevIndex || !index ? combine(prevFilterFn, index && index.multi ? function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) {\n return equals(value, item);\n });\n } : function (x) {\n return equals(value, getByKeyPath(x, keyPath));\n }) : prevFilterFn];\n }, [null, null]),\n idx = _a[0],\n filterFunction = _a[1];\n return idx ? this.where(idx.name).equals(indexOrCrit[idx.keyPath]).filter(filterFunction) : compoundIndex ? this.filter(filterFunction) : this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ? \"[\".concat(index.join('+'), \"]\") : index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n var _a = this,\n db = _a.db,\n tableName = _a.name;\n this.schema.mappedClass = constructor;\n if (constructor.prototype instanceof Entity) {\n constructor = function (_super) {\n __extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(class_1.prototype, \"db\", {\n get: function () {\n return db;\n },\n enumerable: false,\n configurable: true\n });\n class_1.prototype.table = function () {\n return tableName;\n };\n return class_1;\n }(constructor);\n }\n var inheritedProps = new Set();\n for (var proto = constructor.prototype; proto; proto = getProto(proto)) {\n Object.getOwnPropertyNames(proto).forEach(function (propName) {\n return inheritedProps.add(propName);\n });\n }\n var readHook = function (obj) {\n if (!obj) return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj) if (!inheritedProps.has(m)) try {\n res[m] = obj[m];\n } catch (_) {}\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey,\n auto = _a.auto,\n keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({\n trans: trans,\n type: 'add',\n keys: key != null ? [key] : null,\n values: [objToAdd]\n });\n }).then(function (res) {\n return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult;\n }).then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n } catch (_) {}\n }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined) return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n return this.where(\":id\").equals(key).modify(modifications);\n } else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey,\n auto = _a.auto,\n keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({\n trans: trans,\n type: 'put',\n values: [objToAdd],\n keys: key != null ? [key] : null\n });\n }).then(function (res) {\n return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult;\n }).then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n } catch (_) {}\n }\n return lastResult;\n });\n };\n Table.prototype.delete = function (key) {\n var _this = this;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({\n trans: trans,\n type: 'delete',\n keys: [key]\n });\n }).then(function (res) {\n return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined;\n });\n };\n Table.prototype.clear = function () {\n var _this = this;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({\n trans: trans,\n type: 'deleteRange',\n range: AnyRange\n });\n }).then(function (res) {\n return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined;\n });\n };\n Table.prototype.bulkGet = function (keys) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys,\n trans: trans\n }).then(function (result) {\n return result.map(function (res) {\n return _this.hook.reading.fire(res);\n });\n });\n });\n };\n Table.prototype.bulkAdd = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey,\n auto = _a.auto,\n keyPath = _a.keyPath;\n if (keyPath && keys) throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length) throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToAdd = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects;\n return _this.core.mutate({\n trans: trans,\n type: 'add',\n keys: keys,\n values: objectsToAdd,\n wantResults: wantResults\n }).then(function (_a) {\n var numFailures = _a.numFailures,\n results = _a.results,\n lastResult = _a.lastResult,\n failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0) return result;\n throw new BulkError(\"\".concat(_this.name, \".bulkAdd(): \").concat(numFailures, \" of \").concat(numObjects, \" operations failed\"), failures);\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey,\n auto = _a.auto,\n keyPath = _a.keyPath;\n if (keyPath && keys) throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length) throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToPut = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects;\n return _this.core.mutate({\n trans: trans,\n type: 'put',\n keys: keys,\n values: objectsToPut,\n wantResults: wantResults\n }).then(function (_a) {\n var numFailures = _a.numFailures,\n results = _a.results,\n lastResult = _a.lastResult,\n failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0) return result;\n throw new BulkError(\"\".concat(_this.name, \".bulkPut(): \").concat(numFailures, \" of \").concat(numObjects, \" operations failed\"), failures);\n });\n });\n };\n Table.prototype.bulkUpdate = function (keysAndChanges) {\n var _this = this;\n var coreTable = this.core;\n var keys = keysAndChanges.map(function (entry) {\n return entry.key;\n });\n var changeSpecs = keysAndChanges.map(function (entry) {\n return entry.changes;\n });\n var offsetMap = [];\n return this._trans('readwrite', function (trans) {\n return coreTable.getMany({\n trans: trans,\n keys: keys,\n cache: 'clone'\n }).then(function (objs) {\n var resultKeys = [];\n var resultObjs = [];\n keysAndChanges.forEach(function (_a, idx) {\n var key = _a.key,\n changes = _a.changes;\n var obj = objs[idx];\n if (obj) {\n for (var _i = 0, _b = Object.keys(changes); _i < _b.length; _i++) {\n var keyPath = _b[_i];\n var value = changes[keyPath];\n if (keyPath === _this.schema.primKey.keyPath) {\n if (cmp(value, key) !== 0) {\n throw new exceptions.Constraint(\"Cannot update primary key in bulkUpdate()\");\n }\n } else {\n setByKeyPath(obj, keyPath, value);\n }\n }\n offsetMap.push(idx);\n resultKeys.push(key);\n resultObjs.push(obj);\n }\n });\n var numEntries = resultKeys.length;\n return coreTable.mutate({\n trans: trans,\n type: 'put',\n keys: resultKeys,\n values: resultObjs,\n updates: {\n keys: keys,\n changeSpecs: changeSpecs\n }\n }).then(function (_a) {\n var numFailures = _a.numFailures,\n failures = _a.failures;\n if (numFailures === 0) return numEntries;\n for (var _i = 0, _b = Object.keys(failures); _i < _b.length; _i++) {\n var offset = _b[_i];\n var mappedOffset = offsetMap[Number(offset)];\n if (mappedOffset != null) {\n var failure = failures[offset];\n delete failures[offset];\n failures[mappedOffset] = failure;\n }\n }\n throw new BulkError(\"\".concat(_this.name, \".bulkUpdate(): \").concat(numFailures, \" of \").concat(numEntries, \" operations failed\"), failures);\n });\n });\n });\n };\n Table.prototype.bulkDelete = function (keys) {\n var _this = this;\n var numKeys = keys.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({\n trans: trans,\n type: 'delete',\n keys: keys\n });\n }).then(function (_a) {\n var numFailures = _a.numFailures,\n lastResult = _a.lastResult,\n failures = _a.failures;\n if (numFailures === 0) return lastResult;\n throw new BulkError(\"\".concat(_this.name, \".bulkDelete(): \").concat(numFailures, \" of \").concat(numKeys, \" operations failed\"), failures);\n });\n };\n return Table;\n }();\n function Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n var i = arguments.length,\n args = new Array(i - 1);\n while (--i) args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n } else if (typeof eventName === 'string') {\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n return rv;\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object') return addConfiguredEvents(eventName);\n if (!chainFunction) chainFunction = reverseStoppableEventChain;\n if (!defaultFunction) defaultFunction = nop;\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) {\n return fn !== cb;\n });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n function addConfiguredEvents(cfg) {\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n } else if (args === 'asap') {\n var context = add(eventName, mirror, function fire() {\n var i = arguments.length,\n args = new Array(i);\n while (i--) args[i] = arguments[i];\n context.subscribers.forEach(function (fn) {\n asap$1(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n } else throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n }\n function makeClassConstructor(prototype, constructor) {\n derive(constructor).from({\n prototype: prototype\n });\n return constructor;\n }\n function createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n }\n function isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) && (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n }\n function addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n }\n function addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () {\n return combine(curr(), factory());\n } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n }\n function addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n }\n function getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey) return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index) throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n }\n function openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }\n function iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n } else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) {\n return cursor.stop(result);\n }, function (err) {\n return cursor.fail(err);\n })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]') key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([ctx.or._iterate(union, coreTrans), iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)]);\n }\n }\n function iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) {\n return fn(valueMapper(x), c, a);\n } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () {\n return cursor.continue();\n };\n if (!filter || filter(cursor, function (advancer) {\n return c = advancer;\n }, function (val) {\n cursor.stop(val);\n c = nop;\n }, function (e) {\n cursor.fail(e);\n c = nop;\n })) wrappedFn(cursor.value, cursor, function (advancer) {\n return c = advancer;\n });\n c();\n });\n }\n });\n }\n var PropModSymbol = Symbol();\n var PropModification = function () {\n function PropModification(spec) {\n Object.assign(this, spec);\n }\n PropModification.prototype.execute = function (value) {\n var _a;\n if (this.add !== undefined) {\n var term = this.add;\n if (isArray(term)) {\n return __spreadArray(__spreadArray([], isArray(value) ? value : [], true), term, true).sort();\n }\n if (typeof term === 'number') return (Number(value) || 0) + term;\n if (typeof term === 'bigint') {\n try {\n return BigInt(value) + term;\n } catch (_b) {\n return BigInt(0) + term;\n }\n }\n throw new TypeError(\"Invalid term \".concat(term));\n }\n if (this.remove !== undefined) {\n var subtrahend_1 = this.remove;\n if (isArray(subtrahend_1)) {\n return isArray(value) ? value.filter(function (item) {\n return !subtrahend_1.includes(item);\n }).sort() : [];\n }\n if (typeof subtrahend_1 === 'number') return Number(value) - subtrahend_1;\n if (typeof subtrahend_1 === 'bigint') {\n try {\n return BigInt(value) - subtrahend_1;\n } catch (_c) {\n return BigInt(0) - subtrahend_1;\n }\n }\n throw new TypeError(\"Invalid subtrahend \".concat(subtrahend_1));\n }\n var prefixToReplace = (_a = this.replacePrefix) === null || _a === void 0 ? void 0 : _a[0];\n if (prefixToReplace && typeof value === 'string' && value.startsWith(prefixToReplace)) {\n return this.replacePrefix[1] + value.substring(prefixToReplace.length);\n }\n return value;\n };\n return PropModification;\n }();\n var Collection = function () {\n function Collection() {}\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props) {\n var rv = Object.create(this.constructor.prototype),\n ctx = Object.create(this._ctx);\n if (props) extend(ctx, props);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) {\n return iter(ctx, fn, trans, ctx.table.core);\n });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) {\n return Math.min(count, ctx.limit);\n });\n } else {\n var count = 0;\n return iter(ctx, function () {\n ++count;\n return false;\n }, trans, coreTable).then(function () {\n return count;\n });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(),\n lastPart = parts[0],\n lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i) return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex),\n bVal = getval(b, lastIndex);\n return cmp(aVal, bVal) * order;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n } else {\n var a_1 = [];\n return iter(ctx, function (item) {\n return a_1.push(item);\n }, trans, ctx.table.core).then(function () {\n return a_1;\n });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0) return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0) return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n } else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () {\n return --offsetLeft < 0;\n };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0) advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n } else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) {\n return a[0];\n }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = this._ctx.dir === \"prev\" ? \"next\" : \"prev\";\n if (this._ondirectionchange) this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) {\n cb(cursor.key, cursor);\n });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) {\n cb(cursor.primaryKey, cursor);\n });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) {\n return a[0];\n }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx,\n idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi) return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n } else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i];\n var val = changes[keyPath];\n var origVal = getByKeyPath(item, keyPath);\n if (val instanceof PropModification) {\n setByKeyPath(item, keyPath, val.execute(origVal));\n anythingModified = true;\n } else if (origVal !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey,\n outbound = _a.outbound,\n extractKey = _a.extractKey;\n var limit = 200;\n var modifyChunkSize = _this.db._options.modifyChunkSize;\n if (modifyChunkSize) {\n if (typeof modifyChunkSize == 'object') {\n limit = modifyChunkSize[coreTable.name] || modifyChunkSize['*'] || 200;\n } else {\n limit = modifyChunkSize;\n }\n }\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures,\n numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var _i = 0, _a = keys(failures); _i < _a.length; _i++) {\n var pos = _a[_i];\n totalFailures.push(failures[pos]);\n }\n };\n return _this.clone().primaryKeys().then(function (keys) {\n var criteria = isPlainKeyRange(ctx) && ctx.limit === Infinity && (typeof changes !== 'function' || changes === deleteCallback) && {\n index: ctx.index,\n range: ctx.range\n };\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys.length - offset);\n return coreTable.getMany({\n trans: trans,\n keys: keys.slice(offset, offset + count),\n cache: \"immutable\"\n }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys[offset + i]);\n } else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys[offset + i]);\n addValues.push(ctx_1.value);\n } else {\n putValues.push(ctx_1.value);\n if (outbound) putKeys.push(keys[offset + i]);\n }\n }\n }\n return Promise.resolve(addValues.length > 0 && coreTable.mutate({\n trans: trans,\n type: 'add',\n values: addValues\n }).then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function () {\n return (putValues.length > 0 || criteria && typeof changes === 'object') && coreTable.mutate({\n trans: trans,\n type: 'put',\n keys: putKeys,\n values: putValues,\n criteria: criteria,\n changeSpec: typeof changes !== 'function' && changes,\n isAdditionalChunk: offset > 0\n }).then(function (res) {\n return applyMutateResult(putValues.length, res);\n });\n }).then(function () {\n return (deleteKeys.length > 0 || criteria && changes === deleteCallback) && coreTable.mutate({\n trans: trans,\n type: 'delete',\n keys: deleteKeys,\n criteria: criteria,\n isAdditionalChunk: offset > 0\n }).then(function (res) {\n return applyMutateResult(deleteKeys.length, res);\n });\n }).then(function () {\n return keys.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0) throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx,\n range = ctx.range;\n if (isPlainKeyRange(ctx) && (ctx.isPrimKey || range.type === 3)) {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({\n trans: trans,\n query: {\n index: primaryKey,\n range: coreRange\n }\n }).then(function (count) {\n return ctx.table.core.mutate({\n trans: trans,\n type: 'deleteRange',\n range: coreRange\n }).then(function (_a) {\n var failures = _a.failures;\n _a.lastResult;\n _a.results;\n var numFailures = _a.numFailures;\n if (numFailures) throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) {\n return failures[pos];\n }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(deleteCallback);\n };\n return Collection;\n }();\n var deleteCallback = function (value, ctx) {\n return ctx.value = null;\n };\n function createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange,\n error = null;\n if (keyRangeGenerator) try {\n keyRange = keyRangeGenerator();\n } catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: !whereCtx.index || table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name,\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n }\n function simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n }\n function simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n }\n function fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ? new collectionOrWhereClause.Collection(collectionOrWhereClause) : collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n }\n function emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () {\n return rangeEqual(\"\");\n }).limit(0);\n }\n function upperFactory(dir) {\n return dir === \"next\" ? function (s) {\n return s.toUpperCase();\n } : function (s) {\n return s.toLowerCase();\n };\n }\n function lowerFactory(dir) {\n return dir === \"next\" ? function (s) {\n return s.toLowerCase();\n } : function (s) {\n return s.toUpperCase();\n };\n }\n function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0) return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0) return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0) return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0) llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\") return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\") return key.substr(0, upperNeedle.length);\n return llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1);\n }\n function addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper,\n lower,\n compare,\n upperNeedles,\n lowerNeedles,\n direction,\n nextKeySuffix,\n needlesLen = needles.length;\n if (!needles.every(function (s) {\n return typeof s === 'string';\n })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = dir === \"next\" ? simpleCompare : simpleCompareReverse;\n var needleBounds = needles.map(function (needle) {\n return {\n lower: lower(needle),\n upper: upper(needle)\n };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) {\n return nb.upper;\n });\n lowerNeedles = needleBounds.map(function (nb) {\n return nb.lower;\n });\n direction = dir;\n nextKeySuffix = dir === \"next\" ? \"\" : suffix;\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () {\n return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix);\n });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string') return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n } else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null) firstPossibleNeedle = i + 1;else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () {\n cursor.continue(lowestPossibleCasing + nextKeySuffix);\n });\n } else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n }\n function createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n }\n function rangeEqual(value) {\n return {\n type: 1,\n lower: value,\n upper: value\n };\n }\n var WhereClause = function () {\n function WhereClause() {}\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: false,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if (this._cmp(lower, upper) > 0 || this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)) return emptyCollection(this);\n return new this.Collection(this, function () {\n return createRange(lower, upper, !includeLower, !includeUpper);\n });\n } catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () {\n return rangeEqual(value);\n });\n };\n WhereClause.prototype.above = function (value) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () {\n return createRange(value, undefined, true);\n });\n };\n WhereClause.prototype.aboveOrEqual = function (value) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () {\n return createRange(value, undefined, false);\n });\n };\n WhereClause.prototype.below = function (value) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () {\n return createRange(undefined, value, false, true);\n });\n };\n WhereClause.prototype.belowOrEqual = function (value) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () {\n return createRange(undefined, value);\n });\n };\n WhereClause.prototype.startsWith = function (str) {\n if (typeof str !== 'string') return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n };\n WhereClause.prototype.startsWithIgnoreCase = function (str) {\n if (str === \"\") return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, function (x, a) {\n return x.indexOf(a[0]) === 0;\n }, [str], maxString);\n };\n WhereClause.prototype.equalsIgnoreCase = function (str) {\n return addIgnoreCaseAlgorithm(this, function (x, a) {\n return x === a[0];\n }, [str], \"\");\n };\n WhereClause.prototype.anyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) {\n return a.indexOf(x) !== -1;\n }, set, \"\");\n };\n WhereClause.prototype.startsWithAnyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) {\n return a.some(function (n) {\n return x.indexOf(n) === 0;\n });\n }, set, maxString);\n };\n WhereClause.prototype.anyOf = function () {\n var _this = this;\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n var compare = this._cmp;\n try {\n set.sort(compare);\n } catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n if (set.length === 0) return emptyCollection(this);\n var c = new this.Collection(this, function () {\n return createRange(set[0], set[set.length - 1]);\n });\n c._ondirectionchange = function (direction) {\n compare = direction === \"next\" ? _this._ascending : _this._descending;\n set.sort(compare);\n };\n var i = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (compare(key, set[i]) > 0) {\n ++i;\n if (i === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n return true;\n } else {\n advance(function () {\n cursor.continue(set[i]);\n });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.notEqual = function (value) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], {\n includeLowers: false,\n includeUppers: false\n });\n };\n WhereClause.prototype.noneOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return new this.Collection(this);\n try {\n set.sort(this._ascending);\n } catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var ranges = set.reduce(function (res, val) {\n return res ? res.concat([[res[res.length - 1][1], val]]) : [[minKey, val]];\n }, null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, {\n includeLowers: false,\n includeUppers: false\n });\n };\n WhereClause.prototype.inAnyRange = function (ranges, options) {\n var _this = this;\n var cmp = this._cmp,\n ascending = this._ascending,\n descending = this._descending,\n min = this._min,\n max = this._max;\n if (ranges.length === 0) return emptyCollection(this);\n if (!ranges.every(function (range) {\n return range[0] !== undefined && range[1] !== undefined && ascending(range[0], range[1]) <= 0;\n })) {\n return fail(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", exceptions.InvalidArgument);\n }\n var includeLowers = !options || options.includeLowers !== false;\n var includeUppers = options && options.includeUppers === true;\n function addRange(ranges, newRange) {\n var i = 0,\n l = ranges.length;\n for (; i < l; ++i) {\n var range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l) ranges.push(newRange);\n return ranges;\n }\n var sortDirection = ascending;\n function rangeSorter(a, b) {\n return sortDirection(a[0], b[0]);\n }\n var set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n } catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var rangePos = 0;\n var keyIsBeyondCurrentEntry = includeUppers ? function (key) {\n return ascending(key, set[rangePos][1]) > 0;\n } : function (key) {\n return ascending(key, set[rangePos][1]) >= 0;\n };\n var keyIsBeforeCurrentEntry = includeLowers ? function (key) {\n return descending(key, set[rangePos][0]) > 0;\n } : function (key) {\n return descending(key, set[rangePos][0]) >= 0;\n };\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n var checkKey = keyIsBeyondCurrentEntry;\n var c = new this.Collection(this, function () {\n return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers);\n });\n c._ondirectionchange = function (direction) {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n } else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (checkKey(key)) {\n ++rangePos;\n if (rangePos === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n return true;\n } else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) {\n return false;\n } else {\n advance(function () {\n if (sortDirection === ascending) cursor.continue(set[rangePos][0]);else cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.startsWithAnyOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (!set.every(function (s) {\n return typeof s === 'string';\n })) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0) return emptyCollection(this);\n return this.inAnyRange(set.map(function (str) {\n return [str, str + maxString];\n }));\n };\n return WhereClause;\n }();\n function createWhereClauseConstructor(db) {\n return makeClassConstructor(WhereClause.prototype, function WhereClause(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n this._cmp = this._ascending = cmp;\n this._descending = function (a, b) {\n return cmp(b, a);\n };\n this._max = function (a, b) {\n return cmp(a, b) > 0 ? a : b;\n };\n this._min = function (a, b) {\n return cmp(a, b) < 0 ? a : b;\n };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n if (!this._IDBKeyRange) throw new exceptions.MissingAPI();\n });\n }\n function eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n }\n function preventDefault(event) {\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n }\n var DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated';\n var STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\n var globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME);\n var Transaction = function () {\n function Transaction() {}\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global) PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global) PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n } catch (e) {}\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode) return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active) throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans || (this.db.core ? this.db.core.transaction(this.storeNames, this.mode, {\n durability: this.chromeTransactionDurability\n }) : idbdb.transaction(this.storeNames, this.mode, {\n durability: this.chromeTransactionDurability\n }));\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n if ('mutatedParts' in idbtrans) {\n globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n }\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite') return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active) return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new DexiePromise(function (resolve, reject) {\n _this._blockedFuncs.push([function () {\n _this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n } else if (bWriteLock) {\n return newScope(function () {\n var p = new DexiePromise(function (resolve, reject) {\n _this._lock();\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then) rv.then(resolve, reject);\n });\n p.finally(function () {\n return _this._unlock();\n });\n p._lib = true;\n return p;\n });\n } else {\n var p = new DexiePromise(function (resolve, reject) {\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then) rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n };\n Transaction.prototype._root = function () {\n return this.parent ? this.parent._root() : this;\n };\n Transaction.prototype.waitFor = function (promiseLike) {\n var root = this._root();\n var promise = DexiePromise.resolve(promiseLike);\n if (root._waitingFor) {\n root._waitingFor = root._waitingFor.then(function () {\n return promise;\n });\n } else {\n root._waitingFor = promise;\n root._waitingQueue = [];\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount;\n while (root._waitingQueue.length) root._waitingQueue.shift()();\n if (root._waitingFor) store.get(-Infinity).onsuccess = spin;\n })();\n }\n var currentWaitPromise = root._waitingFor;\n return new DexiePromise(function (resolve, reject) {\n promise.then(function (res) {\n return root._waitingQueue.push(wrap(resolve.bind(null, res)));\n }, function (err) {\n return root._waitingQueue.push(wrap(reject.bind(null, err)));\n }).finally(function () {\n if (root._waitingFor === currentWaitPromise) {\n root._waitingFor = null;\n }\n });\n });\n };\n Transaction.prototype.abort = function () {\n if (this.active) {\n this.active = false;\n if (this.idbtrans) this.idbtrans.abort();\n this._reject(new exceptions.Abort());\n }\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = this._memoizedTables || (this._memoizedTables = {});\n if (hasOwn(memoizedTables, tableName)) return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n }();\n function createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction(mode, storeNames, dbschema, chromeTransactionDurability, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.chromeTransactionDurability = chromeTransactionDurability;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new DexiePromise(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n this._completion.then(function () {\n _this.active = false;\n _this.on.complete.fire();\n }, function (e) {\n var wasActive = _this.active;\n _this.active = false;\n _this.on.error.fire(e);\n _this.parent ? _this.parent._reject(e) : wasActive && _this.idbtrans && _this.idbtrans.abort();\n return rejection(e);\n });\n });\n }\n function createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) {\n return {\n name: name,\n keyPath: keyPath,\n unique: unique,\n multi: multi,\n auto: auto,\n compound: compound,\n src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n };\n }\n function nameFromKeyPath(keyPath) {\n return typeof keyPath === 'string' ? keyPath : keyPath ? '[' + [].join.call(keyPath, '+') + ']' : \"\";\n }\n function createTableSchema(name, primKey, indexes) {\n return {\n name: name,\n primKey: primKey,\n indexes: indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, function (index) {\n return [index.name, index];\n })\n };\n }\n function safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n }\n var getMaxKey = function (IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n getMaxKey = function () {\n return [[]];\n };\n return [[]];\n } catch (e) {\n getMaxKey = function () {\n return maxString;\n };\n return maxString;\n }\n };\n function getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () {\n return undefined;\n };\n } else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n } else {\n return function (obj) {\n return getByKeyPath(obj, keyPath);\n };\n }\n }\n function getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) {\n return obj[keyPath];\n };\n } else {\n return function (obj) {\n return getByKeyPath(obj, keyPath);\n };\n }\n }\n function arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n }\n var _id_counter = 0;\n function getKeyPathAlias(keyPath) {\n return keyPath == null ? \":id\" : typeof keyPath === 'string' ? keyPath : \"[\".concat(keyPath.join('+'), \"]\");\n }\n function createDBCore(db, IdbKeyRange, tmpTrans) {\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) {\n return trans.objectStore(table);\n }).map(function (store) {\n var keyPath = store.keyPath,\n autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) {\n return store.index(indexName);\n }).map(function (index) {\n var name = index.name,\n unique = index.unique,\n multiEntry = index.multiEntry,\n keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) {\n return indexByKeyPath[getKeyPathAlias(keyPath)];\n }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && 'getAll' in trans.objectStore(tables[0]) && !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) && [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3) return null;\n if (range.type === 4) throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower,\n upper = range.upper,\n lowerOpen = range.lowerOpen,\n upperOpen = range.upperOpen;\n var idbRange = lower === undefined ? upper === undefined ? null : IdbKeyRange.upperBound(upper, !!upperOpen) : upper === undefined ? IdbKeyRange.lowerBound(lower, !!lowerOpen) : IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans,\n type = _a.type,\n keys = _a.keys,\n values = _a.values,\n range = _a.range;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange') throw new Error(\"Invalid operation type: \" + type);\n var length = (keys || values || {\n length: 1\n }).length;\n if (keys && values && keys.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0) return resolve({\n numFailures: 0,\n failures: {},\n results: [],\n lastResult: undefined\n });\n var req;\n var reqs = [];\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n };\n if (type === 'deleteRange') {\n if (range.type === 4) return resolve({\n numFailures: numFailures,\n failures: failures,\n results: [],\n lastResult: undefined\n });\n if (range.type === 3) reqs.push(req = store.clear());else reqs.push(req = store.delete(makeIDBKeyRange(range)));\n } else {\n var _a = isAddOrPut ? outbound ? [values, keys] : [values, null] : [keys, null],\n args1 = _a[0],\n args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = args2 && args2[i] !== undefined ? store[type](args1[i], args2[i]) : store[type](args1[i]));\n req.onerror = errorHandler;\n }\n } else {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = store[type](args1[i]));\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n reqs.forEach(function (req, i) {\n return req.error != null && (failures[i] = req.error);\n });\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: type === \"delete\" ? keys : reqs.map(function (req) {\n return req.result;\n }),\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans,\n values = _a.values,\n query = _a.query,\n reverse = _a.reverse,\n unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index,\n range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var direction = reverse ? unique ? \"prevunique\" : \"prev\" : unique ? \"nextunique\" : \"next\";\n var req = values || !('openKeyCursor' in source) ? source.openCursor(makeIDBKeyRange(range), direction) : source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey) _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () {\n throw new Error(\"Cursor not started\");\n };\n var doThrowCursorIsStopped = function () {\n throw new Error(\"Cursor not stopped\");\n };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () {\n return gotOne-- ? _this.continue() : _this.stop();\n }).then(function () {\n return _this;\n });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n } catch (err) {\n cursor.fail(err);\n }\n } else {\n cursor.done = true;\n cursor.start = function () {\n throw new Error(\"Cursor behind last entry\");\n };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans,\n values = request.values,\n limit = request.limit,\n query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index,\n range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0) return resolve({\n result: []\n });\n if (hasGetAll) {\n var req = values ? source.getAll(idbKeyRange, nonInfinitLimit) : source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) {\n return resolve({\n result: event.target.result\n });\n };\n req.onerror = eventRejectHandler(reject);\n } else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ? source.openCursor(idbKeyRange) : source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor) return resolve({\n result: result_1\n });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit) return resolve({\n result: result_1\n });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans,\n keys = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null) ;\n if (++callbackCount === keyCount) resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys[i];\n if (key != null) {\n req = store.get(keys[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0) resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans,\n key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) {\n return resolve(event.target.result);\n };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query,\n trans = _a.trans;\n var index = query.index,\n range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) {\n return resolve(ev.target.result);\n });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans),\n schema = _a.schema,\n hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) {\n return createDbCoreTable(tableSchema);\n });\n var tableMap = {};\n tables.forEach(function (table) {\n return tableMap[table.name] = table;\n });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result) throw new Error(\"Table '\".concat(name, \"' not found\"));\n return tableMap[name];\n },\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n }\n function createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return __assign(__assign({}, down), create(down));\n }, stackImpl);\n }\n function createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange;\n _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n }\n function generateMiddlewareStacks(db, tmpTrans) {\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) {\n return tbl.name === tableName;\n })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n }\n function setApiOnPlace(db, objs, tableNames, dbschema) {\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n var propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || \"value\" in propDesc && propDesc.value === undefined) {\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n setProp(obj, tableName, {\n get: function () {\n return this.table(tableName);\n },\n set: function (value) {\n defineProperty(this, tableName, {\n value: value,\n writable: true,\n configurable: true,\n enumerable: true\n });\n }\n });\n } else {\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n }\n function removeTablesApi(db, objs) {\n objs.forEach(function (obj) {\n for (var key in obj) {\n if (obj[key] instanceof db.Table) delete obj[key];\n }\n });\n }\n function lowerVersionFirst(a, b) {\n return a._cfg.version - b._cfg.version;\n }\n function runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {\n var globalSchema = db._dbSchema;\n if (idbUpgradeTrans.objectStoreNames.contains('$meta') && !globalSchema.$meta) {\n globalSchema.$meta = createTableSchema(\"$meta\", parseIndexSyntax(\"\")[0], []);\n db._storeNames.push('$meta');\n }\n var trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n var rejectTransaction = trans._reject.bind(trans);\n var transless = PSD.transless || PSD;\n newScope(function () {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n keys(globalSchema).forEach(function (tableName) {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n DexiePromise.follow(function () {\n return db.on.populate.fire(trans);\n }).catch(rejectTransaction);\n } else {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n return getExistingVersion(db, trans, oldVersion).then(function (oldVersion) {\n return updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans);\n }).catch(rejectTransaction);\n }\n });\n }\n function patchCurrentVersion(db, idbUpgradeTrans) {\n createMissingTables(db._dbSchema, idbUpgradeTrans);\n if (idbUpgradeTrans.db.version % 10 === 0 && !idbUpgradeTrans.objectStoreNames.contains('$meta')) {\n idbUpgradeTrans.db.createObjectStore('$meta').add(Math.ceil(idbUpgradeTrans.db.version / 10 - 1), 'version');\n }\n var globalSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n adjustToExistingIndexNames(db, db._dbSchema, idbUpgradeTrans);\n var diff = getSchemaDiff(globalSchema, db._dbSchema);\n var _loop_1 = function (tableChange) {\n if (tableChange.change.length || tableChange.recreate) {\n console.warn(\"Unable to patch indexes of table \".concat(tableChange.name, \" because it has changes on the type of index or primary key.\"));\n return {\n value: void 0\n };\n }\n var store = idbUpgradeTrans.objectStore(tableChange.name);\n tableChange.add.forEach(function (idx) {\n if (debug) console.debug(\"Dexie upgrade patch: Creating missing index \".concat(tableChange.name, \".\").concat(idx.src));\n addIndex(store, idx);\n });\n };\n for (var _i = 0, _a = diff.change; _i < _a.length; _i++) {\n var tableChange = _a[_i];\n var state_1 = _loop_1(tableChange);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n }\n function getExistingVersion(db, trans, oldVersion) {\n if (trans.storeNames.includes('$meta')) {\n return trans.table('$meta').get('version').then(function (metaVersion) {\n return metaVersion != null ? metaVersion : oldVersion;\n });\n } else {\n return DexiePromise.resolve(oldVersion);\n }\n }\n function updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var versToRun = versions.filter(function (v) {\n return v._cfg.version >= oldVersion;\n });\n if (versToRun.length === 0) {\n return DexiePromise.resolve();\n }\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n } else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) {\n return addIndex(store_1, idx);\n });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) {\n return store_1.deleteIndex(idxName);\n });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync_1) {\n incrementExpectedAwaits();\n }\n var returnValue_1;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue_1 = contentUpgrade(trans);\n if (returnValue_1) {\n if (contentUpgradeIsAsync_1) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue_1.then(decrementor, decrementor);\n }\n }\n });\n return returnValue_1 && typeof returnValue_1.then === 'function' ? DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function () {\n return returnValue_1;\n });\n }\n });\n queue.push(function (idbtrans) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n queue.push(function (idbtrans) {\n if (db.idbdb.objectStoreNames.contains('$meta')) {\n if (Math.ceil(db.idbdb.version / 10) === version._cfg.version) {\n db.idbdb.deleteObjectStore('$meta');\n delete db._dbSchema.$meta;\n db._storeNames = db._storeNames.filter(function (name) {\n return name !== '$meta';\n });\n } else {\n idbtrans.objectStore('$meta').put(version._cfg.version, 'version');\n }\n }\n });\n });\n function runQueue() {\n return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) : DexiePromise.resolve();\n }\n return runQueue().then(function () {\n createMissingTables(globalSchema, idbUpgradeTrans);\n });\n }\n function getSchemaDiff(oldSchema, newSchema) {\n var diff = {\n del: [],\n add: [],\n change: []\n };\n var table;\n for (table in oldSchema) {\n if (!newSchema[table]) diff.del.push(table);\n }\n for (table in newSchema) {\n var oldDef = oldSchema[table],\n newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n } else {\n var change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if ('' + (oldDef.primKey.keyPath || '') !== '' + (newDef.primKey.keyPath || '') || oldDef.primKey.auto !== newDef.primKey.auto) {\n change.recreate = true;\n diff.change.push(change);\n } else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName]) change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName],\n newIdx = newIndexes[idxName];\n if (!oldIdx) change.add.push(newIdx);else if (oldIdx.src !== newIdx.src) change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n }\n function createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ? {\n keyPath: primKey.keyPath,\n autoIncrement: primKey.auto\n } : {\n autoIncrement: primKey.auto\n });\n indexes.forEach(function (idx) {\n return addIndex(store, idx);\n });\n return store;\n }\n function createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n if (debug) console.debug('Dexie: Creating missing table', tableName);\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n }\n function deleteRemovedTables(newSchema, idbtrans) {\n [].slice.call(idbtrans.db.objectStoreNames).forEach(function (storeName) {\n return newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName);\n });\n }\n function addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, {\n unique: idx.unique,\n multiEntry: idx.multi\n });\n }\n function buildGlobalSchema(db, idbdb, tmpTrans) {\n var globalSchema = {};\n var dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(function (storeName) {\n var store = tmpTrans.objectStore(storeName);\n var keyPath = store.keyPath;\n var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", true, false, !!store.autoIncrement, keyPath && typeof keyPath !== \"string\", true);\n var indexes = [];\n for (var j = 0; j < store.indexNames.length; ++j) {\n var idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== \"string\", false);\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n }\n function readGlobalSchema(db, idbdb, tmpTrans) {\n db.verno = idbdb.version / 10;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n }\n function verifyInstalledSchema(db, tmpTrans) {\n var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n var diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(function (ch) {\n return ch.add.length || ch.change.length;\n }));\n }\n function adjustToExistingIndexNames(db, schema, idbtrans) {\n var storeNames = idbtrans.db.objectStoreNames;\n for (var i = 0; i < storeNames.length; ++i) {\n var storeName = storeNames[i];\n var store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n for (var j = 0; j < store.indexNames.length; ++j) {\n var indexName = store.indexNames[j];\n var keyPath = store.index(indexName).keyPath;\n var dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n var indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec) {\n indexSpec.name = indexName;\n delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\n }\n }\n }\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) && _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope && [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) {\n db._hasGetAll = false;\n }\n }\n function parseIndexSyntax(primKeyAndIndexes) {\n return primKeyAndIndexes.split(',').map(function (index, indexNum) {\n index = index.trim();\n var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n return createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath), indexNum === 0);\n });\n }\n var Version = function () {\n function Version() {}\n Version.prototype._parseStoresSpec = function (stores, outSchema) {\n keys(stores).forEach(function (tableName) {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n primKey.unique = true;\n if (primKey.multi) throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(function (idx) {\n if (idx.auto) throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath) throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n };\n Version.prototype.stores = function (stores) {\n var db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ? extend(this._cfg.storesSource, stores) : stores;\n var versions = db._versions;\n var storesSpec = {};\n var dbschema = {};\n versions.forEach(function (version) {\n extend(storesSpec, version._cfg.storesSource);\n dbschema = version._cfg.dbschema = {};\n version._parseStoresSpec(storesSpec, dbschema);\n });\n db._dbSchema = dbschema;\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n };\n Version.prototype.upgrade = function (upgradeFunction) {\n this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n return this;\n };\n return Version;\n }();\n function createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n }\n function getDbNamesTable(indexedDB, IDBKeyRange) {\n var dbNamesDB = indexedDB[\"_dbNamesDB\"];\n if (!dbNamesDB) {\n dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie$1(DBNAMES_DB, {\n addons: [],\n indexedDB: indexedDB,\n IDBKeyRange: IDBKeyRange\n });\n dbNamesDB.version(1).stores({\n dbnames: \"name\"\n });\n }\n return dbNamesDB.table(\"dbnames\");\n }\n function hasDatabasesNative(indexedDB) {\n return indexedDB && typeof indexedDB.databases === \"function\";\n }\n function getDatabaseNames(_a) {\n var indexedDB = _a.indexedDB,\n IDBKeyRange = _a.IDBKeyRange;\n return hasDatabasesNative(indexedDB) ? Promise.resolve(indexedDB.databases()).then(function (infos) {\n return infos.map(function (info) {\n return info.name;\n }).filter(function (name) {\n return name !== DBNAMES_DB;\n });\n }) : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n }\n function _onDatabaseCreated(_a, name) {\n var indexedDB = _a.indexedDB,\n IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) && name !== DBNAMES_DB && getDbNamesTable(indexedDB, IDBKeyRange).put({\n name: name\n }).catch(nop);\n }\n function _onDatabaseDeleted(_a, name) {\n var indexedDB = _a.indexedDB,\n IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) && name !== DBNAMES_DB && getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n }\n function vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n }\n function idbReady() {\n var isSafari = !navigator.userAgentData && /Safari\\//.test(navigator.userAgent) && !/Chrom(e|ium)\\//.test(navigator.userAgent);\n if (!isSafari || !indexedDB.databases) return Promise.resolve();\n var intervalId;\n return new Promise(function (resolve) {\n var tryIdb = function () {\n return indexedDB.databases().finally(resolve);\n };\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(function () {\n return clearInterval(intervalId);\n });\n }\n var _a;\n function isEmptyRange(node) {\n return !(\"from\" in node);\n }\n var RangeSet = function (fromOrTree, to) {\n if (this) {\n extend(this, arguments.length ? {\n d: 1,\n from: fromOrTree,\n to: arguments.length > 1 ? to : fromOrTree\n } : {\n d: 0\n });\n } else {\n var rv = new RangeSet();\n if (fromOrTree && \"d\" in fromOrTree) {\n extend(rv, fromOrTree);\n }\n return rv;\n }\n };\n props(RangeSet.prototype, (_a = {\n add: function (rangeSet) {\n mergeRanges(this, rangeSet);\n return this;\n },\n addKey: function (key) {\n addRange(this, key, key);\n return this;\n },\n addKeys: function (keys) {\n var _this = this;\n keys.forEach(function (key) {\n return addRange(_this, key, key);\n });\n return this;\n },\n hasKey: function (key) {\n var node = getRangeSetIterator(this).next(key).value;\n return node && cmp(node.from, key) <= 0 && cmp(node.to, key) >= 0;\n }\n }, _a[iteratorSymbol] = function () {\n return getRangeSetIterator(this);\n }, _a));\n function addRange(target, from, to) {\n var diff = cmp(from, to);\n if (isNaN(diff)) return;\n if (diff > 0) throw RangeError();\n if (isEmptyRange(target)) return extend(target, {\n from: from,\n to: to,\n d: 1\n });\n var left = target.l;\n var right = target.r;\n if (cmp(to, target.from) < 0) {\n left ? addRange(left, from, to) : target.l = {\n from: from,\n to: to,\n d: 1,\n l: null,\n r: null\n };\n return rebalance(target);\n }\n if (cmp(from, target.to) > 0) {\n right ? addRange(right, from, to) : target.r = {\n from: from,\n to: to,\n d: 1,\n l: null,\n r: null\n };\n return rebalance(target);\n }\n if (cmp(from, target.from) < 0) {\n target.from = from;\n target.l = null;\n target.d = right ? right.d + 1 : 1;\n }\n if (cmp(to, target.to) > 0) {\n target.to = to;\n target.r = null;\n target.d = target.l ? target.l.d + 1 : 1;\n }\n var rightWasCutOff = !target.r;\n if (left && !target.l) {\n mergeRanges(target, left);\n }\n if (right && rightWasCutOff) {\n mergeRanges(target, right);\n }\n }\n function mergeRanges(target, newSet) {\n function _addRangeSet(target, _a) {\n var from = _a.from,\n to = _a.to,\n l = _a.l,\n r = _a.r;\n addRange(target, from, to);\n if (l) _addRangeSet(target, l);\n if (r) _addRangeSet(target, r);\n }\n if (!isEmptyRange(newSet)) _addRangeSet(target, newSet);\n }\n function rangesOverlap(rangeSet1, rangeSet2) {\n var i1 = getRangeSetIterator(rangeSet2);\n var nextResult1 = i1.next();\n if (nextResult1.done) return false;\n var a = nextResult1.value;\n var i2 = getRangeSetIterator(rangeSet1);\n var nextResult2 = i2.next(a.from);\n var b = nextResult2.value;\n while (!nextResult1.done && !nextResult2.done) {\n if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0) return true;\n cmp(a.from, b.from) < 0 ? a = (nextResult1 = i1.next(b.from)).value : b = (nextResult2 = i2.next(a.from)).value;\n }\n return false;\n }\n function getRangeSetIterator(node) {\n var state = isEmptyRange(node) ? null : {\n s: 0,\n n: node\n };\n return {\n next: function (key) {\n var keyProvided = arguments.length > 0;\n while (state) {\n switch (state.s) {\n case 0:\n state.s = 1;\n if (keyProvided) {\n while (state.n.l && cmp(key, state.n.from) < 0) state = {\n up: state,\n n: state.n.l,\n s: 1\n };\n } else {\n while (state.n.l) state = {\n up: state,\n n: state.n.l,\n s: 1\n };\n }\n case 1:\n state.s = 2;\n if (!keyProvided || cmp(key, state.n.to) <= 0) return {\n value: state.n,\n done: false\n };\n case 2:\n if (state.n.r) {\n state.s = 3;\n state = {\n up: state,\n n: state.n.r,\n s: 0\n };\n continue;\n }\n case 3:\n state = state.up;\n }\n }\n return {\n done: true\n };\n }\n };\n }\n function rebalance(target) {\n var _a, _b;\n var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);\n var r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n if (r) {\n var l = r === \"r\" ? \"l\" : \"r\";\n var rootClone = __assign({}, target);\n var oldRootRight = target[r];\n target.from = oldRootRight.from;\n target.to = oldRootRight.to;\n target[r] = oldRootRight[r];\n rootClone[r] = oldRootRight[l];\n target[l] = rootClone;\n rootClone.d = computeDepth(rootClone);\n }\n target.d = computeDepth(target);\n }\n function computeDepth(_a) {\n var r = _a.r,\n l = _a.l;\n return (r ? l ? Math.max(r.d, l.d) : r.d : l ? l.d : 0) + 1;\n }\n function extendObservabilitySet(target, newSet) {\n keys(newSet).forEach(function (part) {\n if (target[part]) mergeRanges(target[part], newSet[part]);else target[part] = cloneSimpleObjectTree(newSet[part]);\n });\n return target;\n }\n function obsSetsOverlap(os1, os2) {\n return os1.all || os2.all || Object.keys(os1).some(function (key) {\n return os2[key] && rangesOverlap(os2[key], os1[key]);\n });\n }\n var cache = {};\n var unsignaledParts = {};\n var isTaskEnqueued = false;\n function signalSubscribersLazily(part, optimistic) {\n extendObservabilitySet(unsignaledParts, part);\n if (!isTaskEnqueued) {\n isTaskEnqueued = true;\n setTimeout(function () {\n isTaskEnqueued = false;\n var parts = unsignaledParts;\n unsignaledParts = {};\n signalSubscribersNow(parts, false);\n }, 0);\n }\n }\n function signalSubscribersNow(updatedParts, deleteAffectedCacheEntries) {\n if (deleteAffectedCacheEntries === void 0) {\n deleteAffectedCacheEntries = false;\n }\n var queriesToSignal = new Set();\n if (updatedParts.all) {\n for (var _i = 0, _a = Object.values(cache); _i < _a.length; _i++) {\n var tblCache = _a[_i];\n collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);\n }\n } else {\n for (var key in updatedParts) {\n var parts = /^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(key);\n if (parts) {\n var dbName = parts[1],\n tableName = parts[2];\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (tblCache) collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);\n }\n }\n }\n queriesToSignal.forEach(function (requery) {\n return requery();\n });\n }\n function collectTableSubscribers(tblCache, updatedParts, outQueriesToSignal, deleteAffectedCacheEntries) {\n var updatedEntryLists = [];\n for (var _i = 0, _a = Object.entries(tblCache.queries.query); _i < _a.length; _i++) {\n var _b = _a[_i],\n indexName = _b[0],\n entries = _b[1];\n var filteredEntries = [];\n for (var _c = 0, entries_1 = entries; _c < entries_1.length; _c++) {\n var entry = entries_1[_c];\n if (obsSetsOverlap(updatedParts, entry.obsSet)) {\n entry.subscribers.forEach(function (requery) {\n return outQueriesToSignal.add(requery);\n });\n } else if (deleteAffectedCacheEntries) {\n filteredEntries.push(entry);\n }\n }\n if (deleteAffectedCacheEntries) updatedEntryLists.push([indexName, filteredEntries]);\n }\n if (deleteAffectedCacheEntries) {\n for (var _d = 0, updatedEntryLists_1 = updatedEntryLists; _d < updatedEntryLists_1.length; _d++) {\n var _e = updatedEntryLists_1[_d],\n indexName = _e[0],\n filteredEntries = _e[1];\n tblCache.queries.query[indexName] = filteredEntries;\n }\n }\n }\n function dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb) return state.dbReadyPromise.then(function () {\n return state.dbOpenError ? rejection(state.dbOpenError) : db;\n });\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var openCanceller = state.openCanceller;\n var nativeVerToOpen = Math.round(db.verno * 10);\n var schemaPatchMode = false;\n function throwIfCancelled() {\n if (state.openCanceller !== openCanceller) throw new exceptions.DatabaseClosed('db.open() was cancelled');\n }\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null,\n wasCreated = false;\n var tryOpenDB = function () {\n return new DexiePromise(function (resolve, reject) {\n throwIfCancelled();\n if (!indexedDB) throw new exceptions.MissingAPI();\n var dbName = db.name;\n var req = state.autoSchema || !nativeVerToOpen ? indexedDB.open(dbName) : indexedDB.open(dbName, nativeVerToOpen);\n if (!req) throw new exceptions.MissingAPI();\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \".concat(dbName, \" doesnt exist\")));\n });\n } else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n wasCreated = oldVer < 1;\n db.idbdb = req.result;\n if (schemaPatchMode) {\n patchCurrentVersion(db, upgradeTransaction);\n }\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n req.onsuccess = wrap(function () {\n upgradeTransaction = null;\n var idbdb = db.idbdb = req.result;\n var objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0) try {\n var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema) readGlobalSchema(db, idbdb, tmpTrans);else {\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n if (!verifyInstalledSchema(db, tmpTrans) && !schemaPatchMode) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\");\n idbdb.close();\n nativeVerToOpen = idbdb.version + 1;\n schemaPatchMode = true;\n return resolve(tryOpenDB());\n }\n }\n generateMiddlewareStacks(db, tmpTrans);\n } catch (e) {}\n connections.push(db);\n idbdb.onversionchange = wrap(function (ev) {\n state.vcFired = true;\n db.on(\"versionchange\").fire(ev);\n });\n idbdb.onclose = wrap(function (ev) {\n db.on(\"close\").fire(ev);\n });\n if (wasCreated) _onDatabaseCreated(db._deps, dbName);\n resolve();\n }, reject);\n }).catch(function (err) {\n switch (err === null || err === void 0 ? void 0 : err.name) {\n case \"UnknownError\":\n if (state.PR1398_maxLoop > 0) {\n state.PR1398_maxLoop--;\n console.warn('Dexie: Workaround for Chrome UnknownError on open()');\n return tryOpenDB();\n }\n break;\n case \"VersionError\":\n if (nativeVerToOpen > 0) {\n nativeVerToOpen = 0;\n return tryOpenDB();\n }\n break;\n }\n return DexiePromise.reject(err);\n });\n };\n return DexiePromise.race([openCanceller, (typeof navigator === 'undefined' ? DexiePromise.resolve() : idbReady()).then(tryOpenDB)]).then(function () {\n throwIfCancelled();\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () {\n return db.on.ready.fire(db.vip);\n })).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders_1 = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () {\n return remainders_1(db.vip);\n })).then(fireRemainders);\n }\n });\n }).finally(function () {\n if (state.openCanceller === openCanceller) {\n state.onReadyBeingFired = null;\n state.isBeingOpened = false;\n }\n }).catch(function (err) {\n state.dbOpenError = err;\n try {\n upgradeTransaction && upgradeTransaction.abort();\n } catch (_a) {}\n if (openCanceller === state.openCanceller) {\n db._close();\n }\n return rejection(err);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n }).then(function () {\n if (wasCreated) {\n var everything_1 = {};\n db.tables.forEach(function (table) {\n table.schema.indexes.forEach(function (idx) {\n if (idx.name) everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/\").concat(idx.name)] = new RangeSet(-Infinity, [[[]]]);\n });\n everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/\")] = everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/:dels\")] = new RangeSet(-Infinity, [[[]]]);\n });\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME).fire(everything_1);\n signalSubscribersNow(everything_1, true);\n }\n return db;\n });\n }\n function awaitIterator(iterator) {\n var callNext = function (result) {\n return iterator.next(result);\n },\n doThrow = function (error) {\n return iterator.throw(error);\n },\n onSuccess = step(callNext),\n onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val),\n value = next.value;\n return next.done ? value : !value || typeof value.then !== 'function' ? isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) : value.then(onSuccess, onError);\n };\n }\n return step(callNext)();\n }\n function extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2) throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i) args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n }\n function enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n trans.explicit = true;\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n } else {\n try {\n trans.create();\n trans.idbtrans._explicit = true;\n db._state.PR1398_maxLoop = 3;\n } catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({\n disableAutoOpen: false\n });\n return db.open().then(function () {\n return enterTransactionScope(db, mode, storeNames, null, scopeFunc);\n });\n }\n return rejection(ex);\n }\n }\n var scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var returnValue;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n } else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ? DexiePromise.resolve(returnValue).then(function (x) {\n return trans.active ? x : rejection(new exceptions.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\"));\n }) : promiseFollowed.then(function () {\n return returnValue;\n })).then(function (x) {\n if (parentTransaction) trans._resolve();\n return trans._completion.then(function () {\n return x;\n });\n }).catch(function (e) {\n trans._reject(e);\n return rejection(e);\n });\n });\n }\n function pad(a, value, count) {\n var result = isArray(a) ? a.slice() : [a];\n for (var i = 0; i < count; ++i) result.push(value);\n return result;\n }\n function createVirtualIndexMiddleware(down) {\n return __assign(__assign({}, down), {\n table: function (tableName) {\n var table = down.table(tableName);\n var schema = table.schema;\n var indexLookup = {};\n var allVirtualIndexes = [];\n function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {\n var keyPathAlias = getKeyPathAlias(keyPath);\n var indexList = indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || [];\n var keyLength = keyPath == null ? 0 : typeof keyPath === 'string' ? 1 : keyPath.length;\n var isVirtual = keyTail > 0;\n var virtualIndex = __assign(__assign({}, lowLevelIndex), {\n name: isVirtual ? \"\".concat(keyPathAlias, \"(virtual-from:\").concat(lowLevelIndex.name, \")\") : lowLevelIndex.name,\n lowLevelIndex: lowLevelIndex,\n isVirtual: isVirtual,\n keyTail: keyTail,\n keyLength: keyLength,\n extractKey: getKeyExtractor(keyPath),\n unique: !isVirtual && lowLevelIndex.unique\n });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ? keyPath[0] : keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) {\n return a.keyTail - b.keyTail;\n });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ? 2 : range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign(__assign({}, req), {\n query: {\n index: index.lowLevelIndex,\n range: translateRange(req.query.range, index.keyTail)\n }\n }) : req;\n }\n var result = __assign(__assign({}, table), {\n schema: __assign(__assign({}, schema), {\n primaryKey: primaryKey,\n indexes: allVirtualIndexes,\n getIndexByKeyPath: findBestIndex\n }),\n count: function (req) {\n return table.count(translateRequest(req));\n },\n query: function (req) {\n return table.query(translateRequest(req));\n },\n openCursor: function (req) {\n var _a = req.query.index,\n keyTail = _a.keyTail,\n isVirtual = _a.isVirtual,\n keyLength = _a.keyLength;\n if (!isVirtual) return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ? cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) : req.unique ? cursor.continue(cursor.key.slice(0, keyLength).concat(req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) : cursor.continue();\n }\n var virtualCursor = Object.create(cursor, {\n continue: {\n value: _continue\n },\n continuePrimaryKey: {\n value: function (key, primaryKey) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n primaryKey: {\n get: function () {\n return cursor.primaryKey;\n }\n },\n key: {\n get: function () {\n var key = cursor.key;\n return keyLength === 1 ? key[0] : key.slice(0, keyLength);\n }\n },\n value: {\n get: function () {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\n }\n return table.openCursor(translateRequest(req)).then(function (cursor) {\n return cursor && createVirtualCursor(cursor);\n });\n }\n });\n return result;\n }\n });\n }\n var virtualIndexMiddleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n };\n function getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop)) {\n rv[prfx + prop] = undefined;\n } else {\n var ap = a[prop],\n bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName !== bpTypeName) {\n rv[prfx + prop] = b[prop];\n } else if (apTypeName === 'Object') {\n getObjectDiff(ap, bp, rv, prfx + prop + '.');\n } else if (ap !== bp) {\n rv[prfx + prop] = b[prop];\n }\n } else if (ap !== bp) rv[prfx + prop] = b[prop];\n }\n });\n keys(b).forEach(function (prop) {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop];\n }\n });\n return rv;\n }\n function getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete') return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n }\n var hooksMiddleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: function (downCore) {\n return __assign(__assign({}, downCore), {\n table: function (tableName) {\n var downTable = downCore.table(tableName);\n var primaryKey = downTable.schema.primaryKey;\n var tableMiddleware = __assign(__assign({}, downTable), {\n mutate: function (req) {\n var dxTrans = PSD.trans;\n var _a = dxTrans.table(tableName).hook,\n deleting = _a.deleting,\n creating = _a.creating,\n updating = _a.updating;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop) break;\n return dxTrans._promise('readwrite', function () {\n return addPutOrDelete(req);\n }, true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop) break;\n return dxTrans._promise('readwrite', function () {\n return addPutOrDelete(req);\n }, true);\n case 'delete':\n if (deleting.fire === nop) break;\n return dxTrans._promise('readwrite', function () {\n return addPutOrDelete(req);\n }, true);\n case 'deleteRange':\n if (deleting.fire === nop) break;\n return dxTrans._promise('readwrite', function () {\n return deleteRange(req);\n }, true);\n }\n return downTable.mutate(req);\n function addPutOrDelete(req) {\n var dxTrans = PSD.trans;\n var keys = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys) throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), {\n keys: keys\n }) : __assign({}, req);\n if (req.type !== 'delete') req.values = __spreadArray([], req.values, true);\n if (req.keys) req.keys = __spreadArray([], req.keys, true);\n return getExistingValues(downTable, req, keys).then(function (existingValues) {\n var contexts = keys.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = {\n onerror: null,\n onsuccess: null\n };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n } else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n } else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n if (hasOwn(requestedValue_1, keyPath)) {\n requestedValue_1[keyPath] = additionalChanges_1[keyPath];\n } else {\n setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n }\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(function (_a) {\n var failures = _a.failures,\n results = _a.results,\n numFailures = _a.numFailures,\n lastResult = _a.lastResult;\n for (var i = 0; i < keys.length; ++i) {\n var primKey = results ? results[i] : keys[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n } else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ? req.values[i] : primKey);\n }\n }\n return {\n failures: failures,\n results: results,\n numFailures: numFailures,\n lastResult: lastResult\n };\n }).catch(function (error) {\n contexts.forEach(function (ctx) {\n return ctx.onerror && ctx.onerror(error);\n });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({\n trans: trans,\n values: false,\n query: {\n index: primaryKey,\n range: range\n },\n limit: limit\n }).then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({\n type: 'delete',\n keys: result,\n trans: trans\n }).then(function (res) {\n if (res.numFailures > 0) return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return {\n failures: [],\n numFailures: 0,\n lastResult: undefined\n };\n } else {\n return deleteNextChunk(trans, __assign(__assign({}, range), {\n lower: result[result.length - 1],\n lowerOpen: true\n }), limit);\n }\n });\n });\n }\n }\n });\n return tableMiddleware;\n }\n });\n }\n };\n function getExistingValues(table, req, effectiveKeys) {\n return req.type === \"add\" ? Promise.resolve([]) : table.getMany({\n trans: req.trans,\n keys: effectiveKeys,\n cache: \"immutable\"\n });\n }\n function getFromTransactionCache(keys, cache, clone) {\n try {\n if (!cache) return null;\n if (cache.keys.length < keys.length) return null;\n var result = [];\n for (var i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n if (cmp(cache.keys[i], keys[j]) !== 0) continue;\n result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n ++j;\n }\n return result.length === keys.length ? result : null;\n } catch (_a) {\n return null;\n }\n }\n var cacheExistingValuesMiddleware = {\n stack: \"dbcore\",\n level: -1,\n create: function (core) {\n return {\n table: function (tableName) {\n var table = core.table(tableName);\n return __assign(__assign({}, table), {\n getMany: function (req) {\n if (!req.cache) {\n return table.getMany(req);\n }\n var cachedResult = getFromTransactionCache(req.keys, req.trans[\"_cache\"], req.cache === \"clone\");\n if (cachedResult) {\n return DexiePromise.resolve(cachedResult);\n }\n return table.getMany(req).then(function (res) {\n req.trans[\"_cache\"] = {\n keys: req.keys,\n values: req.cache === \"clone\" ? deepClone(res) : res\n };\n return res;\n });\n },\n mutate: function (req) {\n if (req.type !== \"add\") req.trans[\"_cache\"] = null;\n return table.mutate(req);\n }\n });\n }\n };\n }\n };\n function isCachableContext(ctx, table) {\n return ctx.trans.mode === 'readonly' && !!ctx.subscr && !ctx.trans.explicit && ctx.trans.db._options.cache !== 'disabled' && !table.schema.primaryKey.outbound;\n }\n function isCachableRequest(type, req) {\n switch (type) {\n case 'query':\n return req.values && !req.unique;\n case 'get':\n return false;\n case 'getMany':\n return false;\n case 'count':\n return false;\n case 'openCursor':\n return false;\n }\n }\n var observabilityMiddleware = {\n stack: \"dbcore\",\n level: 0,\n name: \"Observability\",\n create: function (core) {\n var dbName = core.schema.name;\n var FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n return __assign(__assign({}, core), {\n transaction: function (stores, mode, options) {\n if (PSD.subscr && mode !== 'readonly') {\n throw new exceptions.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(PSD.querier));\n }\n return core.transaction(stores, mode, options);\n },\n table: function (tableName) {\n var table = core.table(tableName);\n var schema = table.schema;\n var primaryKey = schema.primaryKey,\n indexes = schema.indexes;\n var extractKey = primaryKey.extractKey,\n outbound = primaryKey.outbound;\n var indexesWithAutoIncPK = primaryKey.autoIncrement && indexes.filter(function (index) {\n return index.compound && index.keyPath.includes(primaryKey.keyPath);\n });\n var tableClone = __assign(__assign({}, table), {\n mutate: function (req) {\n var _a, _b;\n var trans = req.trans;\n var mutatedParts = req.mutatedParts || (req.mutatedParts = {});\n var getRangeSet = function (indexName) {\n var part = \"idb://\".concat(dbName, \"/\").concat(tableName, \"/\").concat(indexName);\n return mutatedParts[part] || (mutatedParts[part] = new RangeSet());\n };\n var pkRangeSet = getRangeSet(\"\");\n var delsRangeSet = getRangeSet(\":dels\");\n var type = req.type;\n var _c = req.type === \"deleteRange\" ? [req.range] : req.type === \"delete\" ? [req.keys] : req.values.length < 50 ? [getEffectiveKeys(primaryKey, req).filter(function (id) {\n return id;\n }), req.values] : [],\n keys = _c[0],\n newObjs = _c[1];\n var oldCache = req.trans[\"_cache\"];\n if (isArray(keys)) {\n pkRangeSet.addKeys(keys);\n var oldObjs = type === 'delete' || keys.length === newObjs.length ? getFromTransactionCache(keys, oldCache) : null;\n if (!oldObjs) {\n delsRangeSet.addKeys(keys);\n }\n if (oldObjs || newObjs) {\n trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n }\n } else if (keys) {\n var range = {\n from: (_a = keys.lower) !== null && _a !== void 0 ? _a : core.MIN_KEY,\n to: (_b = keys.upper) !== null && _b !== void 0 ? _b : core.MAX_KEY\n };\n delsRangeSet.add(range);\n pkRangeSet.add(range);\n } else {\n pkRangeSet.add(FULL_RANGE);\n delsRangeSet.add(FULL_RANGE);\n schema.indexes.forEach(function (idx) {\n return getRangeSet(idx.name).add(FULL_RANGE);\n });\n }\n return table.mutate(req).then(function (res) {\n if (keys && (req.type === 'add' || req.type === 'put')) {\n pkRangeSet.addKeys(res.results);\n if (indexesWithAutoIncPK) {\n indexesWithAutoIncPK.forEach(function (idx) {\n var idxVals = req.values.map(function (v) {\n return idx.extractKey(v);\n });\n var pkPos = idx.keyPath.findIndex(function (prop) {\n return prop === primaryKey.keyPath;\n });\n for (var i = 0, len = res.results.length; i < len; ++i) {\n idxVals[i][pkPos] = res.results[i];\n }\n getRangeSet(idx.name).addKeys(idxVals);\n });\n }\n }\n trans.mutatedParts = extendObservabilitySet(trans.mutatedParts || {}, mutatedParts);\n return res;\n });\n }\n });\n var getRange = function (_a) {\n var _b, _c;\n var _d = _a.query,\n index = _d.index,\n range = _d.range;\n return [index, new RangeSet((_b = range.lower) !== null && _b !== void 0 ? _b : core.MIN_KEY, (_c = range.upper) !== null && _c !== void 0 ? _c : core.MAX_KEY)];\n };\n var readSubscribers = {\n get: function (req) {\n return [primaryKey, new RangeSet(req.key)];\n },\n getMany: function (req) {\n return [primaryKey, new RangeSet().addKeys(req.keys)];\n },\n count: getRange,\n query: getRange,\n openCursor: getRange\n };\n keys(readSubscribers).forEach(function (method) {\n tableClone[method] = function (req) {\n var subscr = PSD.subscr;\n var isLiveQuery = !!subscr;\n var cachable = isCachableContext(PSD, table) && isCachableRequest(method, req);\n var obsSet = cachable ? req.obsSet = {} : subscr;\n if (isLiveQuery) {\n var getRangeSet = function (indexName) {\n var part = \"idb://\".concat(dbName, \"/\").concat(tableName, \"/\").concat(indexName);\n return obsSet[part] || (obsSet[part] = new RangeSet());\n };\n var pkRangeSet_1 = getRangeSet(\"\");\n var delsRangeSet_1 = getRangeSet(\":dels\");\n var _a = readSubscribers[method](req),\n queriedIndex = _a[0],\n queriedRanges = _a[1];\n if (method === 'query' && queriedIndex.isPrimaryKey && !req.values) {\n delsRangeSet_1.add(queriedRanges);\n } else {\n getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n }\n if (!queriedIndex.isPrimaryKey) {\n if (method === \"count\") {\n delsRangeSet_1.add(FULL_RANGE);\n } else {\n var keysPromise_1 = method === \"query\" && outbound && req.values && table.query(__assign(__assign({}, req), {\n values: false\n }));\n return table[method].apply(this, arguments).then(function (res) {\n if (method === \"query\") {\n if (outbound && req.values) {\n return keysPromise_1.then(function (_a) {\n var resultingKeys = _a.result;\n pkRangeSet_1.addKeys(resultingKeys);\n return res;\n });\n }\n var pKeys = req.values ? res.result.map(extractKey) : res.result;\n if (req.values) {\n pkRangeSet_1.addKeys(pKeys);\n } else {\n delsRangeSet_1.addKeys(pKeys);\n }\n } else if (method === \"openCursor\") {\n var cursor_1 = res;\n var wantValues_1 = req.values;\n return cursor_1 && Object.create(cursor_1, {\n key: {\n get: function () {\n delsRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.key;\n }\n },\n primaryKey: {\n get: function () {\n var pkey = cursor_1.primaryKey;\n delsRangeSet_1.addKey(pkey);\n return pkey;\n }\n },\n value: {\n get: function () {\n wantValues_1 && pkRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.value;\n }\n }\n });\n }\n return res;\n });\n }\n }\n }\n return table[method].apply(this, arguments);\n };\n });\n return tableClone;\n }\n });\n }\n };\n function trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) {\n function addAffectedIndex(ix) {\n var rangeSet = getRangeSet(ix.name || \"\");\n function extractKey(obj) {\n return obj != null ? ix.extractKey(obj) : null;\n }\n var addKeyOrKeys = function (key) {\n return ix.multiEntry && isArray(key) ? key.forEach(function (key) {\n return rangeSet.addKey(key);\n }) : rangeSet.addKey(key);\n };\n (oldObjs || newObjs).forEach(function (_, i) {\n var oldKey = oldObjs && extractKey(oldObjs[i]);\n var newKey = newObjs && extractKey(newObjs[i]);\n if (cmp(oldKey, newKey) !== 0) {\n if (oldKey != null) addKeyOrKeys(oldKey);\n if (newKey != null) addKeyOrKeys(newKey);\n }\n });\n }\n schema.indexes.forEach(addAffectedIndex);\n }\n function adjustOptimisticFromFailures(tblCache, req, res) {\n if (res.numFailures === 0) return req;\n if (req.type === 'deleteRange') {\n return null;\n }\n var numBulkOps = req.keys ? req.keys.length : 'values' in req && req.values ? req.values.length : 1;\n if (res.numFailures === numBulkOps) {\n return null;\n }\n var clone = __assign({}, req);\n if (isArray(clone.keys)) {\n clone.keys = clone.keys.filter(function (_, i) {\n return !(i in res.failures);\n });\n }\n if ('values' in clone && isArray(clone.values)) {\n clone.values = clone.values.filter(function (_, i) {\n return !(i in res.failures);\n });\n }\n return clone;\n }\n function isAboveLower(key, range) {\n return range.lower === undefined ? true : range.lowerOpen ? cmp(key, range.lower) > 0 : cmp(key, range.lower) >= 0;\n }\n function isBelowUpper(key, range) {\n return range.upper === undefined ? true : range.upperOpen ? cmp(key, range.upper) < 0 : cmp(key, range.upper) <= 0;\n }\n function isWithinRange(key, range) {\n return isAboveLower(key, range) && isBelowUpper(key, range);\n }\n function applyOptimisticOps(result, req, ops, table, cacheEntry, immutable) {\n if (!ops || ops.length === 0) return result;\n var index = req.query.index;\n var multiEntry = index.multiEntry;\n var queryRange = req.query.range;\n var primaryKey = table.schema.primaryKey;\n var extractPrimKey = primaryKey.extractKey;\n var extractIndex = index.extractKey;\n var extractLowLevelIndex = (index.lowLevelIndex || index).extractKey;\n var finalResult = ops.reduce(function (result, op) {\n var modifedResult = result;\n var includedValues = [];\n if (op.type === 'add' || op.type === 'put') {\n var includedPKs = new RangeSet();\n for (var i = op.values.length - 1; i >= 0; --i) {\n var value = op.values[i];\n var pk = extractPrimKey(value);\n if (includedPKs.hasKey(pk)) continue;\n var key = extractIndex(value);\n if (multiEntry && isArray(key) ? key.some(function (k) {\n return isWithinRange(k, queryRange);\n }) : isWithinRange(key, queryRange)) {\n includedPKs.addKey(pk);\n includedValues.push(value);\n }\n }\n }\n switch (op.type) {\n case 'add':\n {\n var existingKeys_1 = new RangeSet().addKeys(req.values ? result.map(function (v) {\n return extractPrimKey(v);\n }) : result);\n modifedResult = result.concat(req.values ? includedValues.filter(function (v) {\n var key = extractPrimKey(v);\n if (existingKeys_1.hasKey(key)) return false;\n existingKeys_1.addKey(key);\n return true;\n }) : includedValues.map(function (v) {\n return extractPrimKey(v);\n }).filter(function (k) {\n if (existingKeys_1.hasKey(k)) return false;\n existingKeys_1.addKey(k);\n return true;\n }));\n break;\n }\n case 'put':\n {\n var keySet_1 = new RangeSet().addKeys(op.values.map(function (v) {\n return extractPrimKey(v);\n }));\n modifedResult = result.filter(function (item) {\n return !keySet_1.hasKey(req.values ? extractPrimKey(item) : item);\n }).concat(req.values ? includedValues : includedValues.map(function (v) {\n return extractPrimKey(v);\n }));\n break;\n }\n case 'delete':\n var keysToDelete_1 = new RangeSet().addKeys(op.keys);\n modifedResult = result.filter(function (item) {\n return !keysToDelete_1.hasKey(req.values ? extractPrimKey(item) : item);\n });\n break;\n case 'deleteRange':\n var range_1 = op.range;\n modifedResult = result.filter(function (item) {\n return !isWithinRange(extractPrimKey(item), range_1);\n });\n break;\n }\n return modifedResult;\n }, result);\n if (finalResult === result) return result;\n finalResult.sort(function (a, b) {\n return cmp(extractLowLevelIndex(a), extractLowLevelIndex(b)) || cmp(extractPrimKey(a), extractPrimKey(b));\n });\n if (req.limit && req.limit < Infinity) {\n if (finalResult.length > req.limit) {\n finalResult.length = req.limit;\n } else if (result.length === req.limit && finalResult.length < req.limit) {\n cacheEntry.dirty = true;\n }\n }\n return immutable ? Object.freeze(finalResult) : finalResult;\n }\n function areRangesEqual(r1, r2) {\n return cmp(r1.lower, r2.lower) === 0 && cmp(r1.upper, r2.upper) === 0 && !!r1.lowerOpen === !!r2.lowerOpen && !!r1.upperOpen === !!r2.upperOpen;\n }\n function compareLowers(lower1, lower2, lowerOpen1, lowerOpen2) {\n if (lower1 === undefined) return lower2 !== undefined ? -1 : 0;\n if (lower2 === undefined) return 1;\n var c = cmp(lower1, lower2);\n if (c === 0) {\n if (lowerOpen1 && lowerOpen2) return 0;\n if (lowerOpen1) return 1;\n if (lowerOpen2) return -1;\n }\n return c;\n }\n function compareUppers(upper1, upper2, upperOpen1, upperOpen2) {\n if (upper1 === undefined) return upper2 !== undefined ? 1 : 0;\n if (upper2 === undefined) return -1;\n var c = cmp(upper1, upper2);\n if (c === 0) {\n if (upperOpen1 && upperOpen2) return 0;\n if (upperOpen1) return -1;\n if (upperOpen2) return 1;\n }\n return c;\n }\n function isSuperRange(r1, r2) {\n return compareLowers(r1.lower, r2.lower, r1.lowerOpen, r2.lowerOpen) <= 0 && compareUppers(r1.upper, r2.upper, r1.upperOpen, r2.upperOpen) >= 0;\n }\n function findCompatibleQuery(dbName, tableName, type, req) {\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (!tblCache) return [];\n var queries = tblCache.queries[type];\n if (!queries) return [null, false, tblCache, null];\n var indexName = req.query ? req.query.index.name : null;\n var entries = queries[indexName || ''];\n if (!entries) return [null, false, tblCache, null];\n switch (type) {\n case 'query':\n var equalEntry = entries.find(function (entry) {\n return entry.req.limit === req.limit && entry.req.values === req.values && areRangesEqual(entry.req.query.range, req.query.range);\n });\n if (equalEntry) return [equalEntry, true, tblCache, entries];\n var superEntry = entries.find(function (entry) {\n var limit = 'limit' in entry.req ? entry.req.limit : Infinity;\n return limit >= req.limit && (req.values ? entry.req.values : true) && isSuperRange(entry.req.query.range, req.query.range);\n });\n return [superEntry, false, tblCache, entries];\n case 'count':\n var countQuery = entries.find(function (entry) {\n return areRangesEqual(entry.req.query.range, req.query.range);\n });\n return [countQuery, !!countQuery, tblCache, entries];\n }\n }\n function subscribeToCacheEntry(cacheEntry, container, requery, signal) {\n cacheEntry.subscribers.add(requery);\n signal.addEventListener(\"abort\", function () {\n cacheEntry.subscribers.delete(requery);\n if (cacheEntry.subscribers.size === 0) {\n enqueForDeletion(cacheEntry, container);\n }\n });\n }\n function enqueForDeletion(cacheEntry, container) {\n setTimeout(function () {\n if (cacheEntry.subscribers.size === 0) {\n delArrayItem(container, cacheEntry);\n }\n }, 3000);\n }\n var cacheMiddleware = {\n stack: 'dbcore',\n level: 0,\n name: 'Cache',\n create: function (core) {\n var dbName = core.schema.name;\n var coreMW = __assign(__assign({}, core), {\n transaction: function (stores, mode, options) {\n var idbtrans = core.transaction(stores, mode, options);\n if (mode === 'readwrite') {\n var ac_1 = new AbortController();\n var signal = ac_1.signal;\n var endTransaction = function (wasCommitted) {\n return function () {\n ac_1.abort();\n if (mode === 'readwrite') {\n var affectedSubscribers_1 = new Set();\n for (var _i = 0, stores_1 = stores; _i < stores_1.length; _i++) {\n var storeName = stores_1[_i];\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(storeName)];\n if (tblCache) {\n var table = core.table(storeName);\n var ops = tblCache.optimisticOps.filter(function (op) {\n return op.trans === idbtrans;\n });\n if (idbtrans._explicit && wasCommitted && idbtrans.mutatedParts) {\n for (var _a = 0, _b = Object.values(tblCache.queries.query); _a < _b.length; _a++) {\n var entries = _b[_a];\n for (var _c = 0, _d = entries.slice(); _c < _d.length; _c++) {\n var entry = _d[_c];\n if (obsSetsOverlap(entry.obsSet, idbtrans.mutatedParts)) {\n delArrayItem(entries, entry);\n entry.subscribers.forEach(function (requery) {\n return affectedSubscribers_1.add(requery);\n });\n }\n }\n }\n } else if (ops.length > 0) {\n tblCache.optimisticOps = tblCache.optimisticOps.filter(function (op) {\n return op.trans !== idbtrans;\n });\n for (var _e = 0, _f = Object.values(tblCache.queries.query); _e < _f.length; _e++) {\n var entries = _f[_e];\n for (var _g = 0, _h = entries.slice(); _g < _h.length; _g++) {\n var entry = _h[_g];\n if (entry.res != null && idbtrans.mutatedParts) {\n if (wasCommitted && !entry.dirty) {\n var freezeResults = Object.isFrozen(entry.res);\n var modRes = applyOptimisticOps(entry.res, entry.req, ops, table, entry, freezeResults);\n if (entry.dirty) {\n delArrayItem(entries, entry);\n entry.subscribers.forEach(function (requery) {\n return affectedSubscribers_1.add(requery);\n });\n } else if (modRes !== entry.res) {\n entry.res = modRes;\n entry.promise = DexiePromise.resolve({\n result: modRes\n });\n }\n } else {\n if (entry.dirty) {\n delArrayItem(entries, entry);\n }\n entry.subscribers.forEach(function (requery) {\n return affectedSubscribers_1.add(requery);\n });\n }\n }\n }\n }\n }\n }\n }\n affectedSubscribers_1.forEach(function (requery) {\n return requery();\n });\n }\n };\n };\n idbtrans.addEventListener('abort', endTransaction(false), {\n signal: signal\n });\n idbtrans.addEventListener('error', endTransaction(false), {\n signal: signal\n });\n idbtrans.addEventListener('complete', endTransaction(true), {\n signal: signal\n });\n }\n return idbtrans;\n },\n table: function (tableName) {\n var downTable = core.table(tableName);\n var primKey = downTable.schema.primaryKey;\n var tableMW = __assign(__assign({}, downTable), {\n mutate: function (req) {\n var trans = PSD.trans;\n if (primKey.outbound || trans.db._options.cache === 'disabled' || trans.explicit || trans.idbtrans.mode !== 'readwrite') {\n return downTable.mutate(req);\n }\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (!tblCache) return downTable.mutate(req);\n var promise = downTable.mutate(req);\n if ((req.type === 'add' || req.type === 'put') && (req.values.length >= 50 || getEffectiveKeys(primKey, req).some(function (key) {\n return key == null;\n }))) {\n promise.then(function (res) {\n var reqWithResolvedKeys = __assign(__assign({}, req), {\n values: req.values.map(function (value, i) {\n var _a;\n if (res.failures[i]) return value;\n var valueWithKey = ((_a = primKey.keyPath) === null || _a === void 0 ? void 0 : _a.includes('.')) ? deepClone(value) : __assign({}, value);\n setByKeyPath(valueWithKey, primKey.keyPath, res.results[i]);\n return valueWithKey;\n })\n });\n var adjustedReq = adjustOptimisticFromFailures(tblCache, reqWithResolvedKeys, res);\n tblCache.optimisticOps.push(adjustedReq);\n queueMicrotask(function () {\n return req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n });\n });\n } else {\n tblCache.optimisticOps.push(req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n promise.then(function (res) {\n if (res.numFailures > 0) {\n delArrayItem(tblCache.optimisticOps, req);\n var adjustedReq = adjustOptimisticFromFailures(tblCache, req, res);\n if (adjustedReq) {\n tblCache.optimisticOps.push(adjustedReq);\n }\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n }\n });\n promise.catch(function () {\n delArrayItem(tblCache.optimisticOps, req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n });\n }\n return promise;\n },\n query: function (req) {\n var _a;\n if (!isCachableContext(PSD, downTable) || !isCachableRequest(\"query\", req)) return downTable.query(req);\n var freezeResults = ((_a = PSD.trans) === null || _a === void 0 ? void 0 : _a.db._options.cache) === 'immutable';\n var _b = PSD,\n requery = _b.requery,\n signal = _b.signal;\n var _c = findCompatibleQuery(dbName, tableName, 'query', req),\n cacheEntry = _c[0],\n exactMatch = _c[1],\n tblCache = _c[2],\n container = _c[3];\n if (cacheEntry && exactMatch) {\n cacheEntry.obsSet = req.obsSet;\n } else {\n var promise = downTable.query(req).then(function (res) {\n var result = res.result;\n if (cacheEntry) cacheEntry.res = result;\n if (freezeResults) {\n for (var i = 0, l = result.length; i < l; ++i) {\n Object.freeze(result[i]);\n }\n Object.freeze(result);\n } else {\n res.result = deepClone(result);\n }\n return res;\n }).catch(function (error) {\n if (container && cacheEntry) delArrayItem(container, cacheEntry);\n return Promise.reject(error);\n });\n cacheEntry = {\n obsSet: req.obsSet,\n promise: promise,\n subscribers: new Set(),\n type: 'query',\n req: req,\n dirty: false\n };\n if (container) {\n container.push(cacheEntry);\n } else {\n container = [cacheEntry];\n if (!tblCache) {\n tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)] = {\n queries: {\n query: {},\n count: {}\n },\n objs: new Map(),\n optimisticOps: [],\n unsignaledParts: {}\n };\n }\n tblCache.queries.query[req.query.index.name || ''] = container;\n }\n }\n subscribeToCacheEntry(cacheEntry, container, requery, signal);\n return cacheEntry.promise.then(function (res) {\n return {\n result: applyOptimisticOps(res.result, req, tblCache === null || tblCache === void 0 ? void 0 : tblCache.optimisticOps, downTable, cacheEntry, freezeResults)\n };\n });\n }\n });\n return tableMW;\n }\n });\n return coreMW;\n }\n };\n function vipify(target, vipDb) {\n return new Proxy(target, {\n get: function (target, prop, receiver) {\n if (prop === 'db') return vipDb;\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n var Dexie$1 = function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons,\n autoOpen: true,\n indexedDB: deps.indexedDB,\n IDBKeyRange: deps.IDBKeyRange,\n cache: 'cloned'\n }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n this._novip = this;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true,\n PR1398_maxLoop: 3,\n autoOpen: options.autoOpen\n };\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", {\n ready: [promisableChain, nop]\n });\n this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) {\n return function (subscriber, bSticky) {\n Dexie.vip(function () {\n var state = _this._state;\n if (state.openComplete) {\n if (!state.dbOpenError) DexiePromise.resolve().then(subscriber);\n if (bSticky) subscribe(subscriber);\n } else if (state.onReadyBeingFired) {\n state.onReadyBeingFired.push(subscriber);\n if (bSticky) subscribe(subscriber);\n } else {\n subscribe(subscriber);\n var db_1 = _this;\n if (!bSticky) subscribe(function unsubscribe() {\n db_1.on.ready.unsubscribe(subscriber);\n db_1.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n };\n });\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n this.on(\"versionchange\", function (ev) {\n if (ev.newVersion > 0) console.warn(\"Another connection wants to upgrade database '\".concat(_this.name, \"'. Closing db now to resume the upgrade.\"));else console.warn(\"Another connection wants to delete database '\".concat(_this.name, \"'. Closing db now to resume the delete request.\"));\n _this.close({\n disableAutoOpen: false\n });\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion) console.warn(\"Dexie.delete('\".concat(_this.name, \"') was blocked\"));else console.warn(\"Upgrade '\".concat(_this.name, \"' blocked by other connection holding version \").concat(ev.oldVersion / 10));\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) {\n return new _this.Transaction(mode, storeNames, dbschema, _this._options.chromeTransactionDurability, parentTransaction);\n };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections.filter(function (c) {\n return c.name === _this.name && c !== _this && !c._state.vcFired;\n }).map(function (c) {\n return c.on(\"versionchange\").fire(ev);\n });\n };\n this.use(cacheExistingValuesMiddleware);\n this.use(cacheMiddleware);\n this.use(observabilityMiddleware);\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n var vipDB = new Proxy(this, {\n get: function (_, prop, receiver) {\n if (prop === '_vip') return true;\n if (prop === 'table') return function (tableName) {\n return vipify(_this.table(tableName), vipDB);\n };\n var rv = Reflect.get(_, prop, receiver);\n if (rv instanceof Table) return vipify(rv, vipDB);\n if (prop === 'tables') return rv.map(function (t) {\n return vipify(t, vipDB);\n });\n if (prop === '_createTransaction') return function () {\n var tx = rv.apply(this, arguments);\n return vipify(tx, vipDB);\n };\n return rv;\n }\n });\n this.vip = vipDB;\n addons.forEach(function (addon) {\n return addon(_this);\n });\n }\n Dexie.prototype.version = function (versionNumber) {\n if (isNaN(versionNumber) || versionNumber < 0.1) throw new exceptions.Type(\"Given version is not a positive number\");\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened) throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n var versions = this._versions;\n var versionInstance = versions.filter(function (v) {\n return v._cfg.version === versionNumber;\n })[0];\n if (versionInstance) return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n versionInstance.stores({});\n this._state.autoSchema = false;\n return versionInstance;\n };\n Dexie.prototype._whenReady = function (fn) {\n var _this = this;\n return this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip) ? fn() : new DexiePromise(function (resolve, reject) {\n if (_this._state.openComplete) {\n return reject(new exceptions.DatabaseClosed(_this._state.dbOpenError));\n }\n if (!_this._state.isBeingOpened) {\n if (!_this._state.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack,\n create = _a.create,\n level = _a.level,\n name = _a.name;\n if (name) this.unuse({\n stack: stack,\n name: name\n });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({\n stack: stack,\n create: create,\n level: level == null ? 10 : level,\n name: name\n });\n middlewares.sort(function (a, b) {\n return a.level - b.level;\n });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack,\n name = _a.name,\n create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create : name ? mw.name !== name : false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n var _this = this;\n return usePSD(globalPSD, function () {\n return dexieOpen(_this);\n });\n };\n Dexie.prototype._close = function () {\n var state = this._state;\n var idx = connections.indexOf(this);\n if (idx >= 0) connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n } catch (e) {}\n this.idbdb = null;\n }\n if (!state.isBeingOpened) {\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n }\n };\n Dexie.prototype.close = function (_a) {\n var _b = _a === void 0 ? {\n disableAutoOpen: true\n } : _a,\n disableAutoOpen = _b.disableAutoOpen;\n var state = this._state;\n if (disableAutoOpen) {\n if (state.isBeingOpened) {\n state.cancelOpen(new exceptions.DatabaseClosed());\n }\n this._close();\n state.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n } else {\n this._close();\n state.autoOpen = this._options.autoOpen || state.isBeingOpened;\n state.openComplete = false;\n state.dbOpenError = null;\n }\n };\n Dexie.prototype.delete = function (closeOptions) {\n var _this = this;\n if (closeOptions === void 0) {\n closeOptions = {\n disableAutoOpen: true\n };\n }\n var hasInvalidArguments = arguments.length > 0 && typeof arguments[0] !== 'object';\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close(closeOptions);\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n _onDatabaseDeleted(_this._deps, _this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasInvalidArguments) throw new exceptions.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n } else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && dbOpenError.name === 'DatabaseClosed';\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) {\n return _this._allTables[name];\n });\n },\n enumerable: false,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1) parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string') throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY) idbMode = READONLY;else if (mode == \"rw\" || mode == READWRITE) idbMode = READWRITE;else throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n } else throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n } else throw new exceptions.SubTransaction(\"Table \" + storeName + \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n } catch (e) {\n return parentTransaction ? parentTransaction._promise(null, function (_, reject) {\n reject(e);\n }) : rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return parentTransaction ? parentTransaction._promise(idbMode, enterTransaction, \"lock\") : PSD.trans ? usePSD(PSD.transless, function () {\n return _this._whenReady(enterTransaction);\n }) : this._whenReady(enterTransaction);\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \".concat(tableName, \" does not exist\"));\n }\n return this._allTables[tableName];\n };\n return Dexie;\n }();\n var symbolObservable = typeof Symbol !== \"undefined\" && \"observable\" in Symbol ? Symbol.observable : \"@@observable\";\n var Observable = function () {\n function Observable(subscribe) {\n this._subscribe = subscribe;\n }\n Observable.prototype.subscribe = function (x, error, complete) {\n return this._subscribe(!x || typeof x === \"function\" ? {\n next: x,\n error: error,\n complete: complete\n } : x);\n };\n Observable.prototype[symbolObservable] = function () {\n return this;\n };\n return Observable;\n }();\n var domDeps;\n try {\n domDeps = {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n } catch (e) {\n domDeps = {\n indexedDB: null,\n IDBKeyRange: null\n };\n }\n function liveQuery(querier) {\n var hasValue = false;\n var currentValue;\n var observable = new Observable(function (observer) {\n var scopeFuncIsAsync = isAsyncFunction(querier);\n function execute(ctx) {\n var wasRootExec = beginMicroTickScope();\n try {\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var rv = newScope(querier, ctx);\n if (scopeFuncIsAsync) {\n rv = rv.finally(decrementExpectedAwaits);\n }\n return rv;\n } finally {\n wasRootExec && endMicroTickScope();\n }\n }\n var closed = false;\n var abortController;\n var accumMuts = {};\n var currentObs = {};\n var subscription = {\n get closed() {\n return closed;\n },\n unsubscribe: function () {\n if (closed) return;\n closed = true;\n if (abortController) abortController.abort();\n if (startedListening) globalEvents.storagemutated.unsubscribe(mutationListener);\n }\n };\n observer.start && observer.start(subscription);\n var startedListening = false;\n var doQuery = function () {\n return execInGlobalContext(_doQuery);\n };\n function shouldNotify() {\n return obsSetsOverlap(currentObs, accumMuts);\n }\n var mutationListener = function (parts) {\n extendObservabilitySet(accumMuts, parts);\n if (shouldNotify()) {\n doQuery();\n }\n };\n var _doQuery = function () {\n if (closed || !domDeps.indexedDB) {\n return;\n }\n accumMuts = {};\n var subscr = {};\n if (abortController) abortController.abort();\n abortController = new AbortController();\n var ctx = {\n subscr: subscr,\n signal: abortController.signal,\n requery: doQuery,\n querier: querier,\n trans: null\n };\n var ret = execute(ctx);\n Promise.resolve(ret).then(function (result) {\n hasValue = true;\n currentValue = result;\n if (closed || ctx.signal.aborted) {\n return;\n }\n accumMuts = {};\n currentObs = subscr;\n if (!objectIsEmpty(currentObs) && !startedListening) {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n startedListening = true;\n }\n execInGlobalContext(function () {\n return !closed && observer.next && observer.next(result);\n });\n }, function (err) {\n hasValue = false;\n if (!['DatabaseClosedError', 'AbortError'].includes(err === null || err === void 0 ? void 0 : err.name)) {\n if (!closed) execInGlobalContext(function () {\n if (closed) return;\n observer.error && observer.error(err);\n });\n }\n });\n };\n setTimeout(doQuery, 0);\n return subscription;\n });\n observable.hasValue = function () {\n return hasValue;\n };\n observable.getValue = function () {\n return currentValue;\n };\n return observable;\n }\n var Dexie = Dexie$1;\n props(Dexie, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie(databaseName, {\n addons: []\n });\n return db.delete();\n },\n exists: function (name) {\n return new Dexie(name, {\n addons: []\n }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () {\n return false;\n });\n },\n getDatabaseNames: function (cb) {\n try {\n return getDatabaseNames(Dexie.dependencies).then(cb);\n } catch (_a) {\n return rejection(new exceptions.MissingAPI());\n }\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n ignoreTransaction: function (scopeFunc) {\n return PSD.trans ? usePSD(PSD.transless, scopeFunc) : scopeFunc();\n },\n vip: vip,\n async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function') return DexiePromise.resolve(rv);\n return rv;\n } catch (e) {\n return rejection(e);\n }\n };\n },\n spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function') return DexiePromise.resolve(rv);\n return rv;\n } catch (e) {\n return rejection(e);\n }\n },\n currentTransaction: {\n get: function () {\n return PSD.trans || null;\n }\n },\n waitFor: function (promiseOrFunction, optionalTimeout) {\n var promise = DexiePromise.resolve(typeof promiseOrFunction === 'function' ? Dexie.ignoreTransaction(promiseOrFunction) : promiseOrFunction).timeout(optionalTimeout || 60000);\n return PSD.trans ? PSD.trans.waitFor(promise) : promise;\n },\n Promise: DexiePromise,\n debug: {\n get: function () {\n return debug;\n },\n set: function (value) {\n setDebug(value);\n }\n },\n derive: derive,\n extend: extend,\n props: props,\n override: override,\n Events: Events,\n on: globalEvents,\n liveQuery: liveQuery,\n extendObservabilitySet: extendObservabilitySet,\n getByKeyPath: getByKeyPath,\n setByKeyPath: setByKeyPath,\n delByKeyPath: delByKeyPath,\n shallowClone: shallowClone,\n deepClone: deepClone,\n getObjectDiff: getObjectDiff,\n cmp: cmp,\n asap: asap$1,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: domDeps,\n cache: cache,\n semVer: DEXIE_VERSION,\n version: DEXIE_VERSION.split('.').map(function (n) {\n return parseInt(n);\n }).reduce(function (p, c, i) {\n return p + c / Math.pow(10, i * 2);\n })\n }));\n Dexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n if (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (updatedParts) {\n if (!propagatingLocally) {\n var event_1;\n event_1 = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n detail: updatedParts\n });\n propagatingLocally = true;\n dispatchEvent(event_1);\n propagatingLocally = false;\n }\n });\n addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, function (_a) {\n var detail = _a.detail;\n if (!propagatingLocally) {\n propagateLocally(detail);\n }\n });\n }\n function propagateLocally(updateParts) {\n var wasMe = propagatingLocally;\n try {\n propagatingLocally = true;\n globalEvents.storagemutated.fire(updateParts);\n signalSubscribersNow(updateParts, true);\n } finally {\n propagatingLocally = wasMe;\n }\n }\n var propagatingLocally = false;\n var bc;\n var createBC = function () {};\n if (typeof BroadcastChannel !== 'undefined') {\n createBC = function () {\n bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n bc.onmessage = function (ev) {\n return ev.data && propagateLocally(ev.data);\n };\n };\n createBC();\n if (typeof bc.unref === 'function') {\n bc.unref();\n }\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n if (!propagatingLocally) {\n bc.postMessage(changedParts);\n }\n });\n }\n if (typeof addEventListener !== 'undefined') {\n addEventListener('pagehide', function (event) {\n if (!Dexie$1.disableBfCache && event.persisted) {\n if (debug) console.debug('Dexie: handling persisted pagehide');\n bc === null || bc === void 0 ? void 0 : bc.close();\n for (var _i = 0, connections_1 = connections; _i < connections_1.length; _i++) {\n var db = connections_1[_i];\n db.close({\n disableAutoOpen: false\n });\n }\n }\n });\n addEventListener('pageshow', function (event) {\n if (!Dexie$1.disableBfCache && event.persisted) {\n if (debug) console.debug('Dexie: handling persisted pageshow');\n createBC();\n propagateLocally({\n all: new RangeSet(-Infinity, [[]])\n });\n }\n });\n }\n function add(value) {\n return new PropModification({\n add: value\n });\n }\n function remove(value) {\n return new PropModification({\n remove: value\n });\n }\n function replacePrefix(a, b) {\n return new PropModification({\n replacePrefix: [a, b]\n });\n }\n DexiePromise.rejectionMapper = mapError;\n setDebug(debug);\n var namedExports = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Dexie: Dexie$1,\n liveQuery: liveQuery,\n Entity: Entity,\n cmp: cmp,\n PropModSymbol: PropModSymbol,\n PropModification: PropModification,\n replacePrefix: replacePrefix,\n add: add,\n remove: remove,\n 'default': Dexie$1,\n RangeSet: RangeSet,\n mergeRanges: mergeRanges,\n rangesOverlap: rangesOverlap\n });\n __assign(Dexie$1, namedExports, {\n default: Dexie$1\n });\n return Dexie$1;\n});\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csAbTestingConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: abTestingClientConfigFactory,\n})\nexport class ABTestingClientConfig {\n isEnabled: boolean;\n recentlyPlayedAsContainer: boolean;\n recentlyPlayedAsWidget: boolean;\n}\n\nexport function abTestingClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ABTestingClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csAdvanceGameDataModel', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: advanceGameDataClientConfigFactory,\n})\nexport class AdvanceGameDataClientConfig {\n enableAdvanceGameData: boolean;\n advanceUrlPattern: string;\n enableFeatureId: boolean;\n}\n\nexport function advanceGameDataClientConfigFactory(service: LazyClientConfigService) {\n return service.get(AdvanceGameDataClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csApiPathsConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: apiPathsClientConfigFactory,\n})\nexport class ApiPathsClientConfig {\n bingo: any;\n globalJackpots: any;\n lmt: any;\n slotRaces: any;\n jackpots: any;\n gameData: any;\n teasers: any;\n playerSegmentation: any;\n portal: any;\n cashier: any;\n liveCasino: any;\n freeSpins: any;\n nonCriticalFeeds: any;\n gamesServices: any;\n disjointFeeds: any;\n ping: any;\n}\n\nexport function apiPathsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ApiPathsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csAracdeLobbyConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: arcadeLobbyClientConfigFactory,\n})\nexport class ArcadeLobbyClientConfig {\n rpCount: number;\n rpCountOverlay: number;\n widgetGamesConfig: any;\n arcadeIconConfigMap: any;\n tabletRpCount: number;\n}\n\nexport function arcadeLobbyClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ArcadeLobbyClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csBetMGMOriginals', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: betMGMOriginalsClientConfigFactory,\n})\nexport class BetMGMOriginalsClientConfig {\n enabledBetMGMOriginals: boolean;\n originalsExpiryDateFormat: string;\n betmgmOriginalsConfigurations: betmgmOriginalsSitecoreData;\n}\n\nexport interface betmgmOriginalsSitecoreData {\n readonly AditionalInformation: string;\n readonly BackGroundImage: string;\n readonly BeforeOptInContent: string;\n readonly Days: string;\n readonly Description: string;\n readonly DurationText: string;\n readonly BonusIcon: string;\n readonly GreenTick: string;\n readonly HeaderTextcolour: string;\n readonly HeaderTitleText: string;\n readonly HedearTextSize: string;\n readonly Hours: string;\n readonly IconContent: string;\n readonly Minutes: string;\n readonly OptedInText: string;\n readonly OptinText: string;\n readonly OverlayHeaderButtonText: string;\n readonly OverlayHeaderText: string;\n readonly PrizeText: string;\n readonly PrizeValue: string;\n readonly SeeDetailsDesc: string;\n readonly SeeDetailsLastPrize: string;\n readonly SeeDetailsText: string;\n readonly SubCategoryPill: string;\n readonly SubDetailsHeaderText: string;\n readonly SubDetailsText1: string;\n readonly SubDetaisText2: string;\n readonly CategoryBackgroundImage: string;\n readonly TicketIcon: string;\n readonly TicketInfo: string;\n readonly TicketTextDetails: string;\n readonly TimeTextDetails: string;\n readonly TimeZoneText: string;\n readonly TimerIcon: string;\n readonly ViewDetailsText: string;\n readonly ViewGamesText: string;\n readonly TimerCount: number;\n readonly Seconds: string;\n readonly SourceType: string;\n readonly SourceId: string;\n readonly HeaderTitleSubText: string;\n readonly MobileBackGroundImage: string;\n readonly MobileCategoryBackgroundImage: string;\n readonly ViewDetailsUrl: string;\n readonly TimerExpiryDate: string;\n}\n\nexport function betMGMOriginalsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(BetMGMOriginalsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csCasinoConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: casinoCoreConfigClientConfigFactory,\n})\nexport class CasinoCoreConfigClientConfig {\n gameLogUrl: string;\n frontendId: string;\n brandId: string;\n productId: string;\n defaultCategory: string;\n teasers: any;\n gameIconsQuality: string;\n desktopGameIconsQuality: string;\n liveGamesCategories: string[];\n maxNavigationLevel: number;\n gamesLoadCount: any;\n gymlLimit: number;\n gymlLimitForSearch: number;\n recentGamesCountLimit: number;\n defaultyLobbyTypeCategory: any;\n cacheKeys: any;\n casinoContextValues: any;\n detailPageModeLobbyType: any;\n enableLiveGames: boolean;\n}\n\nexport function casinoCoreConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(CasinoCoreConfigClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csCasinoAsIFrameOverlayConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: casinoAsIFrameOverlayConfigFactory,\n})\nexport class CasinoAsIFrameOverlayConfig {\n bottomNavCategoriesToLobbyTypeMap: any;\n isIFrameOverlay: any;\n appendOpenCasinoCoreOverlayQueryParam: boolean;\n hideBottomNav: boolean;\n overlayLobbyTypeMap: any;\n overlayBottomNavLobbyTypeMap: any;\n enableSearch: boolean;\n}\n\nexport function casinoAsIFrameOverlayConfigFactory(service: LazyClientConfigService) {\n return service.get(CasinoAsIFrameOverlayConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csClientSideConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: clientSideConfigClientConfigFactory,\n})\nexport class ClientSideConfigClientConfig {\n bonusInterval: number;\n playForFunAndRealButtons: boolean;\n labelId: string;\n playForFunAndRealButtonsLobbyType: any;\n}\n\nexport function clientSideConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ClientSideConfigClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csCommonConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: commonClientConfigFactory,\n})\nexport class CommonClientConfig {\n scriptsInjectionData: { [key: string]: { url: string; customAttributes: { [key: string]: string } } };\n}\n\nexport function commonClientConfigFactory(service: LazyClientConfigService) {\n return service.get(CommonClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csCozyBingo', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: cozyBingoClientConfigFactory,\n})\nexport class CozyBingoClientConfig {\n cozyBingoWidgetPosition: any;\n cozyBingoWidgetIframeSegment: string;\n cozyBingoFavouritesInRpwidget: boolean;\n cozybingoSchedulerWidgetIframeSegment: string;\n cozyBingoRecentGamesInRpwidget: boolean;\n enableBingoGameLaunchPostMethod: boolean;\n enableLastLoginTimeCheck: boolean;\n enableWidgetImageForBingoGame: boolean;\n}\n\nexport function cozyBingoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(CozyBingoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csDevSettingsConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: devSettingsConfigFactory,\n})\nexport class DevSettingsConfig {\n categoryDataCacheTimeOut: number;\n enableCategoryDataCache: boolean;\n gameIconTemplate: string;\n getGameIconFromLMT: boolean;\n isOptimizedLobby: boolean;\n isFullyOptimizedLobby: boolean;\n multiProductSupport: boolean;\n showInhouseGamesConsole: boolean;\n masterUserPattern: string;\n isPreviewUser: boolean;\n subCategoryLoadLimit: number;\n subCategoryLoadLimitOverlayOverride: number;\n}\n\nexport function devSettingsConfigFactory(service: LazyClientConfigService) {\n return service.get(DevSettingsConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csDiscoverFeed', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: discoverFeedClientConfigFactory,\n})\nexport class DiscoverFeedClientConfig {\n discoverFeedLmtkey: any;\n enableDiscoverFeed: boolean;\n staticDiscoverfeedLobbytype: string;\n}\n\nexport function discoverFeedClientConfigFactory(service: LazyClientConfigService) {\n return service.get(DiscoverFeedClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csDownloadAppFromDevice', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: downloadAppFromDeviceClientConfigFactory,\n})\nexport class DownloadAppFromDeviceClientConfig {\n downloadAppFromDevice: boolean;\n downloadAppErrorMsgs: string;\n geoComplyMessage: any;\n}\n\nexport function downloadAppFromDeviceClientConfigFactory(service: LazyClientConfigService) {\n return service.get(DownloadAppFromDeviceClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csFeatures', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: featuresClientConfigFactory,\n})\nexport class FeaturesClientConfig {\n showMD3Teasers: boolean;\n useFavouriteGames: boolean;\n useRecentGames: boolean;\n useEmbeddedTeasers: boolean;\n sendJSErrorsToServer: boolean;\n showAddToHome: boolean;\n isAnonymousLobbyEnabled: boolean;\n isPromotionPagesEnabled: boolean;\n gamesSearch: boolean;\n gameVideo: any;\n showSearchInTopNavigation: boolean;\n showHomeInTopNavigation: boolean;\n taxWithheld: boolean;\n bonusSection: boolean;\n freespinsSection: boolean;\n showGameTitle: boolean;\n goToTopArrow: boolean;\n showSeoBoxes: boolean;\n showLastLoginTime: boolean;\n showUnfinishedTooltipIcon: boolean;\n instagramHeight: string;\n disableFreeSpins: boolean;\n enableJackpotTickerTeasers: boolean;\n showHomeFixedNavigation: boolean;\n enableRefresh: boolean;\n aamsEnabled: boolean;\n quickInfo: boolean;\n useLMTFeed: boolean;\n isFullyOptimizedLobby: boolean;\n browserLocalStorageCacheDuration: any;\n browserLocalStorageCategoryDataValidityDuration: number;\n browserLocalStorageCategoryDataUpdateInterval: number;\n enableClientStorage: boolean;\n downloadAppOnGameLaunch: boolean;\n enableEnhancedSearch: boolean;\n enableHashText: boolean;\n hashText: string;\n showSeeAllGamesCount: boolean;\n hideHomeInSubNav: boolean;\n setNavBarLimitTimeout: number;\n showSmartBanner: boolean;\n hideFavouritesOnPreLogin: string;\n favouriteGamesLobbyType: any;\n enableQuickInfoLobbyType: any;\n matGridColCount: number;\n showSubNavigationAboveTeaser: boolean;\n matGridColCountForLobbyType: any;\n showSubNavigationAboveTeaserLobbyType: any;\n newJackpotRibbonStyling: boolean;\n stickersForUk: any;\n newQuickInfoStyle: any;\n showStickersInOverlay: any;\n showJackpotvalueInOverlay: any;\n enableHotIcon: any;\n isUkHeading: any;\n enableFastLoadingGames: boolean;\n enableSkeletonLoading: any;\n enableUkMouseOverStyle: boolean;\n alignIconRight: any;\n globalJackpotInterVal: any;\n isGlobalJackpotEnabled: boolean;\n isAnchorTagVisibleOnQuickInfo: boolean;\n globalSearchFixedNavMobile: boolean;\n enableGSInRegularSearch: boolean;\n extendedTopMenuStatus: any;\n enableTitleOnGameTile: any;\n playNowHoverEffect: boolean;\n showEmbeddedTeasersAboveGames: boolean;\n enableEmbeddedTeasers: boolean;\n enableAccountUpgrade: boolean;\n preLoginPlayNowText: boolean;\n extendedTopMenuToRight: boolean;\n highlightCategoryHeader: any;\n enableFixedMobileNavigation: boolean;\n enableFortifiedOnWithdrwal: boolean;\n enablePlayBingoButton: boolean;\n isVanillaHomePageEnabled: boolean;\n enableRpForPrelogin: any;\n enableSignpostingSticker: any;\n enablePreLoginRecentlyPlayed: any;\n enableFreeSpinSummary: boolean;\n isPromoHubExist: boolean;\n showGlobalSearch: boolean;\n useSingleCookieForGameIndexCountInEGV: boolean;\n delimiterForDynamicGameNames: any;\n checkQDAllowedForDepositURL: boolean;\n rpPositionLmtKey: any;\n liveGamesIFrameHeight: number;\n showDesktopSearch: boolean;\n enableSkeleton: boolean;\n enableBottomSubNavigation: boolean;\n enableHeaderforCategory: boolean;\n skipDocReferrer: boolean;\n enableOptimoveFavProduct: boolean;\n showNetflixVideo: boolean;\n enableSlotRacesForLobbyType: any;\n enableVideoPhase2: boolean;\n downloadAppFromDevice: boolean;\n enableLobbyBackgroundImage: boolean;\n enableLobbyStaticImage: boolean;\n teaserSetIndexTimeout: number;\n enableTransparentLobbyBackground: any;\n enableDefaultCategoryStaticImage: any;\n enableStaticImageNonDefault: any;\n gameIconTheming: any;\n enableGameIconTheming: any;\n enableLobbyStaticImageForMobile: boolean;\n enableLocalDateTimeFormat: boolean;\n changeCarouselView: boolean;\n dynamicSeeAllLink: any;\n rpGamesFilterInLiveCasino: boolean;\n rpWidgetGamesFilterInLiveCasino: boolean;\n enableOverlayMobileSearchTopPosition: boolean;\n navigationBackgroundColor: boolean;\n hotIconPath: any;\n enableNewQuickInfoLobbyType: any;\n showVolatilityTable: any;\n storeVendorInfoInCache: boolean;\n nonCasinoUrls: any;\n scrollOnTopTimeFrame: number;\n clickInteractionTimeout: number;\n enableTrackingEntireNavigation: boolean;\n singleGameErrorTimeout: number;\n scrollTopTimeout: number;\n enableFullTakeOverImageForAllCategories: boolean;\n fullTakeOverImageForAllCategories: any;\n gameLaunchTrackingParams: boolean;\n enableStickerStyles: boolean;\n superButtonTimeout: number;\n enableGameIconImageSuffix: boolean;\n displayEdsSmartWidget: boolean;\n activateDesignSystem: boolean;\n enableDsComponents: DsComponentsModel;\n}\nexport interface DsComponentsModel {\n DsComponents: 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@LazyClientConfig({ key: 'csFeedCacheConfiguration', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: feedCacheClientConfigFactory,\n})\nexport class FeedCacheClientConfig {\n disabledCacheTimeOut: number;\n disabledRequestThreshold: number;\n enableDisabledGames: boolean;\n favouriteCacheTimeOut: number;\n favouriteRequestThreshold: number;\n enableFavoritesFeed: boolean;\n jackpotCacheTimeOut: number;\n jackpotRequestThreshold: number;\n enableJackpotFeed: boolean;\n freeSpinsCacheTimeOut: number;\n freespinRequestThreshold: number;\n enableFreespinsFeed: boolean;\n recentCacheTimeOut: number;\n recentRequestThreshold: number;\n enableRecentlyPlayed: boolean;\n unFinishedCacheTimeOut: number;\n unFinishedRequestThreshold: number;\n enableUnfinishedGamesFeed: boolean;\n lmtCacheThreshold: number;\n enableLMTFeedCache: boolean;\n}\n\nexport function feedCacheClientConfigFactory(service: LazyClientConfigService) {\n return service.get(FeedCacheClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { IContentImage } from '@casinocore/type-utils';\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csFreeSpins', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: freeSpinsClientConfigFactory,\n})\nexport class FreeSpinsClientConfig {\n freeSpinsConfigurations: any;\n freeSpinsMoreInfo: any;\n freespinHost: string;\n freeSpinSummaryPathSegment: string;\n rewardDetailsPathSegment: string;\n isFreeSpinSummaryEnabled: boolean;\n isEnableFreeSpinsOnQuickInfo: boolean;\n freespinsVanillaActiveHeader: string;\n prominentFreeSpinsConfigurations: any;\n isEnableProminentFreeSpinsDisplay: boolean;\n prominentFreeSpinsWidgetBackgroundImage: IContentImage;\n currentWinningsImage: IContentImage;\n ctaSpinBackgroundImage: IContentImage;\n}\n\nexport function freeSpinsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(FreeSpinsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGameLaunchTrackingConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gameLaunchTrackingClientConfigFactory,\n})\nexport class GameLaunchTrackingClientConfig {\n endpoint: any;\n gA3: any;\n gA4: any;\n isEnabled: boolean;\n mp: any;\n onetrustKey: any;\n}\n\nexport function gameLaunchTrackingClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GameLaunchTrackingClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { IContentImage } from '@casinocore/type-utils';\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\nimport { IContentLink, IContentParameters, IContentVideo } from '../public-api';\n\n@LazyClientConfig({ key: 'csGamePremiere', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gamePremiereClientConfigFactory,\n})\nexport class GamePremiereClientConfig {\n readonly enableGamePremiere: boolean;\n readonly gamePremiereOverlayConfiguration: GamePremiereOverlayConfiguration;\n readonly showOverlyByCampaignStatus: string[];\n readonly showGamePremiereByLobbyTypeCategory: any;\n}\nexport interface GamePremiereOverlayConfiguration {\n readonly headerText: string;\n readonly closeCTA: string;\n readonly sticker: string;\n readonly desktopGameImage: IContentImage;\n readonly mobileGameImage: IContentImage;\n readonly desktopGameVideo: IContentVideo;\n readonly mobileGameVideo: IContentVideo;\n readonly enableVideo: boolean;\n readonly subTitle1: string;\n readonly subTitile2: string;\n readonly mainTitle: string;\n readonly stepsTitle: string;\n readonly step1: string;\n readonly step2: string;\n readonly step3: string;\n readonly additionalInfo: string;\n readonly optinCta: IContentLink;\n readonly playnowCta: IContentLink;\n readonly viewDetails: IContentLink;\n readonly moreInfoText: string;\n readonly lessInfoText: string;\n readonly moreInfoContent: string;\n readonly styles: IContentParameters;\n}\n\nexport function gamePremiereClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GamePremiereClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGameSelectorConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gameSelectorWidgetClientConfigFactory,\n})\nexport class GameSelectorWidgetClientConfig {\n isEnabled: boolean;\n gameSelectionLimit: number;\n gameSelectorWidgetPhaseTwo: boolean;\n}\n\nexport function gameSelectorWidgetClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GameSelectorWidgetClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGameShowHubConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gameShowHubClientConfigFactory,\n})\nexport class GameShowHubClientConfig {\n lobbyType: string;\n loadingConfig: any;\n triviaGameType: string;\n onboardingDataPath: string;\n noOfHours: number;\n gameLaunchUri: string;\n tiltingPhoneMessageImageUrl: string;\n scheduleGames: Array<string>;\n tiltingMessage: string;\n idleTimeout: number;\n enableSupportForLandscape: boolean;\n mobileLandscapeConfig: any;\n mobilePortraitMaxWidth: number;\n defaultRenderer: string;\n fallbackRenderer: string;\n fallbackForIpad: boolean;\n setMapAdjustedTimeout: number;\n enableAudioButton: boolean;\n jackpotGroupName: string;\n pauseLottieAnimations: boolean;\n chatWindowEvents: object;\n enableGSPreloginPopup: boolean;\n}\n\nexport function gameShowHubClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GameShowHubClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGameConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gameConfigClientConfigFactory,\n})\nexport class GameConfigClientConfig {\n host: string;\n gameIconTemplate: string;\n iconTypeMapping: string[];\n maxGamesPerCategory: number;\n showLoadigIndicatorOnGamesLoading: boolean;\n nativeGameLaunchEnabled: boolean;\n vendorsWithOnlyRealModeLobbyType: any;\n enableDemoPlayLobbyType: any;\n showRGLinkOnDetailPageLobbyType: any;\n responsibleGamingLink: any;\n gameMode: string;\n iconConfigMap: any;\n enablePlaytechLiveGameDetailsPage: boolean;\n enableRCPFavWidgetOnPublicPages: boolean;\n enableDemoMode: boolean;\n mgsGameLaunchUrl: any;\n desktopMGSGameLaunchUrl: any;\n desktopMGSLiveGameLaunchURL: any;\n win: any;\n desktopChannelIds: Array<string>;\n demoModeExcludedGamesRegex: string;\n enableQuickInfoReels: boolean;\n removeAllQueryParamsForVendor: Array<string>;\n enableSpinnerOnGameLaunch: boolean;\n gameCloseDelay: number;\n isGameCloseApiEnabled: boolean;\n gameCloseApiPath: string;\n gameCloseApiTimeOut: number;\n isGameCloseAckEventEnabled: boolean;\n gameOwnerIdMap: any;\n enableRefreshonGameClose: boolean;\n iframeAllowattributes: string;\n storeSsotokenInCookies: boolean;\n enableGamestartCookie: boolean;\n gameNotAvailableTimeOut: any;\n enableArcPlayBreakEvent: boolean;\n passNativeAppCookieToGameLaunch: boolean;\n egvOverlayFlag: boolean;\n singleHostLobbyMap: any;\n arcadeLobbyType: string;\n singleGameLaunchUrl: string;\n storeUserDetails: boolean;\n enableNativeOdrEvent: any;\n backToPortalLobby: string;\n enableSlotRaceParams: boolean;\n lottoMGSGameLaunchUrl: any;\n storeLottoSsotokenInCookies: boolean;\n enableSGLForPokerOrOdr: any;\n enableNgOptimizedImage: boolean;\n}\n\nexport function gameConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GameConfigClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGameImpressionsConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gameImpressionsClientConfigFactory,\n})\nexport class GameImpressionsClientConfig {\n isEnabled: boolean;\n targetedCategoryRoutes: any;\n}\n\nexport function gameImpressionsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GameImpressionsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGamificationWidget', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gamificationWidgetConfigFactory,\n})\nexport class GamificationWidgetConfig {\n enableGamificationForLobbyType: any;\n enableGamificationWidget: boolean;\n}\n\nfunction gamificationWidgetConfigFactory(service: LazyClientConfigService) {\n return service.get(GamificationWidgetConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGamingStoriesConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gamingStoriesClientConfigFactory,\n})\nexport class GamingStoriesClientConfig {\n localStorageExpirationDuration: number;\n trackViewedStateForPostLogin: boolean;\n trackViewedStateForPreLogin: boolean;\n showStoryViewedTickMark: boolean;\n enableOverlayMobileSearchTopPosition: boolean;\n gameLaunchSetTimeOut: number;\n}\n\nexport function gamingStoriesClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GamingStoriesClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\nimport { IGamingStoriesNpmModel } from '../shared/models/gaming-stories.model';\n\n@LazyClientConfig({ key: 'csGamingStoriesPhase2Config', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: gamingStoriesPhase2ClientConfigFactory,\n})\nexport class GamingStoriesPhase2ClientConfig {\n enabled: boolean;\n storyItemInterval: number;\n gamingStoriesNpmPath: Array<IGamingStoriesNpmModel>;\n}\n\nexport function gamingStoriesPhase2ClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GamingStoriesPhase2ClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\nimport { GeolocationConfigurationModel, InstallerSettingsModel, OobeeIntimationModel } from '../shared/models/geolocation.configuration.model';\n\n@LazyClientConfig({ key: 'csGeolocationConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: geolocationClientConfigFactory,\n})\nexport class GeolocationClientConfig {\n isEnabled: boolean;\n coordinatorSettings: GeolocationConfigurationModel;\n installerSettings: InstallerSettingsModel;\n oobeeIntimation: OobeeIntimationModel;\n synchronizationEvent: string;\n synchronizeCoordination: boolean;\n assetsPath: any;\n gdsUrl: any;\n initialRetryInterval: number;\n isRetryButtonEnabled: boolean;\n retryInterval: number;\n shouldCheckNativeGeoLocation: boolean;\n loadAssetsOnServer: boolean;\n enableRetryCountToCallNative: boolean;\n gdsFailureCount: number;\n enableNDBS: boolean;\n}\n\nexport function geolocationClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GeolocationClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGlobalJackpot', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: globalJackpotClientConfigFactory,\n})\nexport class GlobalJackpotClientConfig {\n globalJackpotPathSegments: string;\n lobbyType: string;\n}\n\nexport function globalJackpotClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GlobalJackpotClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\nimport { IPathBasedEnableORDisable } from '../shared/models/common.model';\n\n@LazyClientConfig({ key: 'csCasinoGlobalSearch', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: globalSearchClientConfigFactory,\n})\nexport class GlobalSearchClientConfig {\n isEnabled: boolean;\n bootstrapOrigin: string;\n bootstraptimeout: number;\n pathBasedEnabler: IPathBasedEnableORDisable;\n}\n\nexport function globalSearchClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GlobalSearchClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csGlobal', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: globalClientConfigFactory,\n})\nexport class GlobalClientConfig {\n messages: any;\n unfinishedTooltip: any;\n unfinishedStyle: any;\n lobbyConfigurations: any;\n arcadeLobbyConfigurations: any;\n gameDescriptionMapping: any;\n globalJackpotEnabled: boolean;\n takeoverStaticImage: any;\n stickerStyles: any;\n freespinsCountBackgroundColor: string;\n jackpotDisplayNameConfigurations: any;\n moreInfoConfiguration: {\n HighVolatilityText: string;\n High: string;\n HighVolatilityImagelink: string;\n MildVolatilityText: string;\n Low: string;\n MildVolatilityImagelink: string;\n RegVolatilityHeaderText: string;\n Medium: string;\n RegVolatilityImagelink: string;\n MaxPayout: string;\n GameProviderHeader: string;\n RelatedGamesText: string;\n MaxPayoutText: string;\n ReelsText: string;\n LinesText: string;\n HowItWorksLink: string;\n GotItCta: string;\n HighVolatilityDescription: string;\n MildVolatilityDescription: string;\n RegVolatilityText: string;\n RegVolatilityDescription: string;\n stickerStyles: any;\n };\n staticImages: StaticImages;\n}\n\nexport function globalClientConfigFactory(service: LazyClientConfigService) {\n return service.get(GlobalClientConfig);\n}\n\ninterface StaticImages {\n gray: string;\n potrait: string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csHeaderTeasers', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: headerTeasersClientConfigFactory,\n})\nexport class HeaderTeasersClientConfig {\n teaserModels: any;\n}\n\nexport function headerTeasersClientConfigFactory(service: LazyClientConfigService) {\n return service.get(HeaderTeasersClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csImageLoadOptimizationConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: imageLoadOptimizationClientConfigFactory,\n})\nexport class ImageLoadOptimizationClientConfig {\n isDynamicResizingEnabled: boolean;\n dynamicResizingQueryString: string;\n}\n\nexport function imageLoadOptimizationClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ImageLoadOptimizationClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'csImmersiveLobbyConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: immersiveLobbyClientConfigFactory,\n})\nexport class ImmersiveLobbyClientConfig {\n enabled: boolean;\n lobbyType: string;\n defaultCategoryId: string;\n loadingConfig: any;\n onboardingDataPath: string;\n mobileLandscapeConfig: any;\n mobilePortraitMaxWidth: number;\n defaultRenderer: string;\n fallbackRenderer: string;\n fallbackForIpad: boolean;\n idleTimeout: number;\n setMapAdjustedTimeout: number;\n gameLaunchUri: string;\n statCategoriesDataPath: string;\n statItemsDataPath: string;\n statsDataPath: string;\n pauseLottieAnimations: boolean;\n enableAudioButton: boolean;\n enableStats: boolean;\n chatWindowEvents: object;\n enableGameNameMapping: boolean;\n enableSupportForLandscape: boolean;\n scheduleGames: Array<string>;\n triviaGameType: string;\n noOfHours: number;\n tiltingPhoneMessageImageUrl: string;\n tiltingMessage: string;\n jackpotGroupName: string;\n enableGSPreloginPopup: boolean;\n}\nexport function immersiveLobbyClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ImmersiveLobbyClientConfig);\n}\n","import { Time } from '@angular/common';\nimport { Injectable } from '@angular/core';\n\nimport { IContentImage } from '@casinocore/type-utils';\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csJackpotData', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: jackpotDataClientConfigFactory,\n})\nexport class JackpotDataClientConfig {\n showOnTiles: boolean;\n jpInterval: number;\n mustGoJackpotTimerBase: Time;\n showJackpotOnGameTilesLobbyType: any;\n enableTickingForJackpotOnGameTiles: boolean;\n enableJpTickingForLobbyType: any;\n enableJpGroupTickingForLobbyType: any;\n showJackpotCurrencyOnRight: boolean;\n enableRibbonConfig: boolean;\n enableSingleJackpot: boolean;\n enableMultiJackpot: boolean;\n enableMustGoJackpot: boolean;\n jackpotWidgetConfigurations: any;\n multiJackpotLeftArrowImage: IContentImage;\n multiJackpotRightArrowImage: IContentImage;\n mustGoJackpotRightGradientImage: IContentImage;\n mustGoJackpotLeftGradientImage: IContentImage;\n multiJackpotBottomImage: IContentImage;\n jackpotGamesSortingTime: any;\n enableJackpotSortGames: boolean;\n isEnableMustgoRedesignModes: boolean;\n jackpotMoreInfoEnable: boolean;\n nativeProductKeys: object;\n}\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/**\n * @stable\n */\n@LazyClientConfig({ key: 'csLiveCasinoLoungeConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: liveCasinoLoungeClientConfigFactory,\n})\nexport class LiveCasinoLoungeClientConfig {\n enabled: boolean;\n lobbyType: string;\n defaultCategoryId: string;\n loadingConfig: any;\n onboardingDataPath: string;\n mobileLandscapeConfig: any;\n mobilePortraitMaxWidth: number;\n defaultRenderer: string;\n fallbackRenderer: string;\n fallbackForIpad: boolean;\n idleTimeout: number;\n setMapAdjustedTimeout: number;\n gameLaunchUri: string;\n statCategoriesDataPath: string;\n statItemsDataPath: string;\n statsDataPath: string;\n pauseLottieAnimations: boolean;\n enableAudioButton: boolean;\n enableStats: boolean;\n enableFlagIconForVendor: any;\n}\n\nexport function liveCasinoLoungeClientConfigFactory(service: LazyClientConfigService) {\n return service.get(LiveCasinoLoungeClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csLiveDealerConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: liveDealerConfigClientConfigFactory,\n})\nexport class LiveDealerConfigClientConfig {\n operatingHoursEnabled: boolean;\n openHours: number;\n openMinutes: number;\n openSeconds: number;\n closeHours: number;\n closeMinutes: number;\n closeSeconds: number;\n}\n\nexport function liveDealerConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(LiveDealerConfigClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csLiveCasinoApi', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: liveCasinoClientConfigFactory,\n})\nexport class LiveCasinoClientConfig {\n enabled: any;\n vendorName: any;\n liveCasinoApiFeedInterval: number;\n flagUrlPattern: string;\n enableQuickInfo: boolean;\n enableFavouriteGames: boolean;\n hideMoreInfoLink: boolean;\n avatarIcon: string;\n enableLobbyType: any;\n enableIconsForAll: boolean;\n enableFlagIconForEvolution: boolean;\n displayPlaytechBackgroundImage: boolean;\n displayPlaytechDealerImage: boolean;\n}\n\nexport function liveCasinoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(LiveCasinoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'cslmtData', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: lmtDataClientConfigFactory,\n})\nexport class LMTDataClientConfig {\n useLMTFeedForLobby: boolean;\n brand: string;\n invokerProd: string;\n enableLMTGameLaunch: boolean;\n lmtCacheTimeout: number;\n lmtCacheTimeoutAuth: number;\n lobbyType: string;\n noIconUrl: string;\n fallbackCategoryTheme: string;\n homeCategory: string;\n gamesYouMightLikeCategory: string;\n lobbyTypeMap: any;\n enableDefaultHomeUrl: any;\n defaultProductHomeUrl: string;\n enableValidateGames: boolean;\n otherProductsLobbyTypeForOdr: any;\n enableLMTMockData: boolean;\n enableIndexedDBStorage: boolean;\n subLobbyType: Record<string, string[]>;\n}\n\nexport function lmtDataClientConfigFactory(service: LazyClientConfigService) {\n return service.get(LMTDataClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csMcPage', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: mcPageClientConfigFactory,\n})\nexport class McPageClientConfig {\n cashierTrackerIds: any[];\n cashierWithdrawUrlTemplate: string;\n cashierDepositUrlTemplate: string;\n cashierQDUrlTemplate: string;\n prefix: string;\n myFreeSpinsHistoryItem: any;\n minAgeValidationCasinoPlay: number;\n defaultPage: any;\n defaultHomePage: any;\n casinoHomePage: any;\n portalUrl: any;\n langName: string;\n nativeAppScheme: string;\n extendTopMenu: any;\n labelPrefix: string;\n isAccountPage: boolean;\n isLobbyPage: boolean;\n isFreespinsPage: boolean;\n channelId: any;\n accountUpgrade: string;\n invokerProductHomePage: any;\n depositUrl: any;\n bingoPageUrl: any;\n bingoSeeAllOnCasino: any;\n playBingoButton: any;\n widgetHelpButton: any;\n widgetContactusButton: any;\n gamingHomeButtonUrl: any;\n gamingOverlayLogoUrl: any;\n gameLaunchTrackingParams: any;\n}\n\nexport function mcPageClientConfigFactory(service: LazyClientConfigService) {\n return service.get(McPageClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csMinBetGamesConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: minBetGamesClientConfigFactory,\n})\nexport class MinBetGamesClientConfig {\n CoinArcade_MinBetGames: any;\n}\n\nexport function minBetGamesClientConfigFactory(service: LazyClientConfigService) {\n return service.get(MinBetGamesClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csModularBingo', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: modularBingoClientConfigFactory,\n})\nexport class ModularBingoClientConfig {\n bingoTournamentsRoute: string;\n isEnabled: boolean;\n isBingoTournamentsEnabled: boolean;\n stopSchedulePolling: boolean;\n}\n\nexport function modularBingoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ModularBingoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csModularSettings', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: modularSettingsClientConfigFactory,\n})\nexport class ModularSettingsClientConfig {\n productMap: any;\n forceLoginGameObjectExpirationTime: any;\n featuredGridSetHeightTimeOut: any;\n forceGameLaunchExecutionTimeOut: number;\n}\n\nexport function modularSettingsClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ModularSettingsClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csModularization', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: modularizationClientConfigFactory,\n})\nexport class ModularizationClientConfig {\n modularComposition: ModularComponentCompositionModel[];\n enableModularization: boolean;\n}\n\nexport function modularizationClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ModularizationClientConfig);\n}\n\nexport interface ModularComponentCompositionModel {\n lobbyType: string;\n jsonValue: JsonValueModel[];\n}\nexport interface JsonValueModel {\n component: string;\n enabled: boolean;\n category: string[];\n subCategory: string[];\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csNativeGameLaunch', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: nativeGameLaunchClientConfigFactory,\n})\nexport class NativeGameLaunchClientConfig {\n isOnlyGameidLaunchEvent: boolean;\n vendorsforShouldOverrideUserAgent: string[];\n isNewMacEvent: boolean;\n}\n\nexport function nativeGameLaunchClientConfigFactory(service: LazyClientConfigService) {\n return service.get(NativeGameLaunchClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csNewsFeedConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: newsFeedConfigClientConfigFactory,\n})\nexport class NewsFeedConfigClientConfig {\n isEnabled: boolean;\n isEnabledOnHomeCategory: boolean;\n isEnabledOnNonHomeCategory: boolean;\n newsFeedPosition: any;\n isEnableNewsFeedV2: boolean;\n newsFeedConfiguration: any;\n}\n\nexport function newsFeedConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(NewsFeedConfigClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csNonCriticalFeedConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: nonCriticalClientConfigFactory,\n})\nexport class NonCriticalClientConfig {\n enableRecommendationGames: boolean;\n}\n\nexport function nonCriticalClientConfigFactory(service: LazyClientConfigService) {\n return service.get(NonCriticalClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csOptimizedTeaser', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: optimizedTeaserClientConfigFactory,\n})\nexport class OptimizedTeaserClientConfig {\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 desktopViewEmbeddedTeaserheight: number;\n mobileViewEmbeddedTeaserHeight: number;\n tabletViewEmbeddedTeaserHeight: number;\n enableTickingForJackpotOnTeasers: boolean;\n enableOptMiniTeasers: boolean;\n enableAluminiumTeaser: boolean;\n enableFixedWidthAluminiumTeaser: boolean;\n setAluminiumDesktopTeaserHeight: number;\n setAluminiumTabletTeaserHeight: number;\n setAluminiumMobileTeaserHeight: number;\n setAluminiumDesktopTeaserWidth: number;\n setAluminiumTabletTeaserWidth: number;\n setAluminiumMobileTeaserWidth: number;\n desktopFixedWidthAluTeaserOffsetValue: any;\n tabletFixedWidthAluTeaserOffsetValue: any;\n mobileFixedWidthAluTeaserOffsetValue: any;\n}\n\nexport function optimizedTeaserClientConfigFactory(service: LazyClientConfigService) {\n return service.get(OptimizedTeaserClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csPlayerStatsConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: playerStatsWidgetClientConfigFactory,\n})\nexport class PlayerStatsWidgetClientConfig {\n readonly enablePlayerstats: boolean;\n readonly playerStatFilters: Array<{ readonly name: string; readonly value: string }>;\n readonly playerStatsWidgetImagesContent: PlayerStatsWidgetImagesContent;\n readonly playerStatsSitecoreData: PlayerStatsSitecoreData;\n readonly playerStatsInterval: number;\n readonly minimumMuliplierBet: number;\n readonly enableTitleOnGameIcon: boolean;\n}\n\nexport interface PlayerStatsWidgetImagesContent {\n readonly backgroundImageLayer1: string;\n readonly backgroundImageLayer2: string;\n readonly backgroundImageLayer3: string;\n readonly playerStatsWidgetMultiplier: any;\n}\nexport interface PlayerStatsSitecoreData {\n readonly playerStatsWidgetSubtitleConfigs: any;\n readonly playerStatsWidgetFilterNameConfigs: any;\n readonly playerStatsWidgetTitleConfigs: any;\n readonly displayFilterNameColor: string;\n readonly titleTextColor: string;\n readonly subtitleTextColor: string;\n readonly statsWigetCarousalIconBgColor: string;\n readonly multiplierColor: string;\n readonly filterNameBgColor: string;\n readonly multiplierBorderColor: string;\n readonly multiplierBgColor: string;\n readonly filterCarousalIconBgColor: string;\n readonly multiplierComponent: string;\n readonly displayfilterNamefontsize: any;\n readonly displayfilterNamefontweight: string;\n readonly filterTextfontSize: string;\n readonly filterTextfontweight: string;\n readonly subtitlefontsize: string;\n readonly subtitlefontweight: string;\n readonly titlefontSize: string;\n readonly titlefontweight: string;\n readonly filterTextColor: string;\n readonly statsWigetCarousalIconColor: string;\n readonly filterCarousalIconColor: string;\n readonly mobileDisplayfilterNamefontsize: string;\n readonly mobileDisplayfilterNamefontweight: string;\n readonly mobileSubtitlefontsize: string;\n readonly mobileSubtitlefontweight: string;\n readonly mobileTitlefontSize: string;\n readonly mobileTitlefontweight: string;\n}\n\nexport function playerStatsWidgetClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PlayerStatsWidgetClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csPrelogin', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: preLoginClientConfigFactory,\n})\nexport class PreLoginClientConfig {\n nemIDHost: string;\n nemIdPathSegment: string;\n redirectForLogin: boolean;\n}\n\nexport function preLoginClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PreLoginClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csPromoCoinEconomyConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: promoCoinEconomyClientConfigFactory,\n})\nexport class PromoCoinEconomyClientConfig {\n coinExpiryDay: number;\n}\n\nexport function promoCoinEconomyClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PromoCoinEconomyClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csPromoOfferWidget', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: promoOfferWidgetConfigFactory,\n})\nexport class PromoOfferWidgetConfig {\n promoOfferWidgetPosition: any;\n products: any;\n enablePromoOfferWidget: boolean;\n headerColor: string;\n viewallColor: string;\n subTitleFontSize: string;\n titleFontSize: string;\n fontFamily: string;\n titleFontWeight: number;\n viewallSize: string;\n isUkHeading: string;\n viewallTextTransform: string;\n viewallFontFamily: string;\n viewallSizeMobile: string;\n subtitleMobileFontSize: string;\n titleMobileFontSize: string;\n subtitleFontFamily: string;\n}\n\nexport function promoOfferWidgetConfigFactory(service: LazyClientConfigService) {\n return service.get(PromoOfferWidgetConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csPromotedGamesConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: promotedGamesClientConfigFactory,\n})\nexport class PromotedGamesClientConfig {\n isEnabled: boolean;\n}\n\nexport function promotedGamesClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PromotedGamesClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'csPromotionsBannerConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: promotionsBannerClientConfigFactory,\n})\nexport class PromotionsBannerClientConfig {\n isEnablePromotionsBanner: boolean;\n showPromotionsCount: boolean;\n}\n\nexport function promotionsBannerClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PromotionsBannerClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csPromotionsInfo', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: promotionsInfoClientConfigFactory,\n})\nexport class PromotionsInfoClientConfig {\n showPromotions: boolean;\n promotionPageLink: any;\n}\n\nexport function promotionsInfoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(PromotionsInfoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csQuickInfo', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: quickInfoClientConfigFactory,\n})\nexport class QuickInfoClientConfig {\n quickInfo: {\n cta: string;\n gameProviderHeader: string;\n preLogincta: string;\n };\n}\n\nexport function quickInfoClientConfigFactory(service: LazyClientConfigService) {\n return service.get(QuickInfoClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csRecentWinnersConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: recentWinnersWidgetClientConfigFactory,\n})\nexport class RecentWinnersWidgetClientConfig {\n readonly enablePagination: boolean;\n readonly enableLoadingIcon: boolean;\n readonly enableNewsfeedStyle: boolean;\n readonly enableODR: boolean;\n readonly filters: Array<{ readonly name: string; readonly value: string }>;\n readonly isEnabled: boolean;\n readonly maximumGamesLength: number;\n readonly recentWinnersInterval: number;\n readonly recentWinnersWidgetGlobalMessages: RecentWinnersWidgetGlobalMessages;\n readonly recentWinnerWidgetConfiguration: RecentWinnersWidgetConfiguration;\n readonly winnersFeedUrl: string;\n readonly enableFilterWidth: boolean;\n readonly enableTitleOnGameIcon: boolean;\n readonly maxNumbersForDecimal: number;\n}\n\ninterface RecentWinnersWidgetConfiguration {\n readonly backgroundImageLayer1: string;\n readonly backgroundImageLayer2: string;\n readonly backgroundImageLayer3: string;\n}\n\ninterface RecentWinnersWidgetGlobalMessages {\n readonly FilterBgColor?: string;\n readonly FilterCarousalIconBgColor?: string;\n readonly NewsFeedAnimationTiming?: string;\n readonly WinnerBgColor?: string;\n readonly WinnersErrorTextColor?: string;\n readonly WinnersTextColor?: string;\n readonly winners?: string;\n readonly winnersResult?: string;\n readonly RECENT?: string;\n readonly TEN_DAYS?: string;\n readonly PREVIOUS_MONTH?: string;\n readonly CURRENT_MONTH?: string;\n readonly PREVIOUS_YEAR?: string;\n readonly LIFE_TIME?: string;\n readonly WinnersGameNameFontsize?: string;\n}\n\nfunction recentWinnersWidgetClientConfigFactory(service: LazyClientConfigService) {\n return service.get(RecentWinnersWidgetClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csRecentlyPlayed', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: recentlyPlayedClientConfigFactory,\n})\nexport class RecentlyPlayedClientConfig {\n recentlyPlayedRoutes: any;\n isMostRecentlyPlayedEnabled: boolean;\n recentlyPlayedFilterThreshold: number;\n}\n\nexport function recentlyPlayedClientConfigFactory(service: LazyClientConfigService) {\n return service.get(RecentlyPlayedClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csSearchConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: searchClientConfigFactory,\n})\nexport class SearchClientConfig {\n CategoryGamesSearchCriteria: any;\n EnableCategorySearchCriteria: any;\n}\n\nexport function searchClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SearchClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csSlotRaces', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: slotRacesClientConfigFactory,\n})\nexport class SlotRacesClientConfig {\n enableOptIn: boolean;\n host: string;\n joinUrlTemplate: string;\n leaderboardUrl: string;\n raceListUrl: string;\n racesListPollingInterval: number;\n notificationPopupTimeout: number;\n leaderboardPollingInterval: number;\n showAwardsAndPrizes: boolean;\n slotRacesLMTCategoryIdForLobbyType: any;\n maxLeaderboardRows: number;\n upcomingSlotsDuration: number;\n noOfCards: number;\n resultsForNoOfDays: number;\n enablePreLogin: boolean;\n disableWhenNoPromotions: boolean;\n enableResultsHistoryPage: boolean;\n enableMaxBet: boolean;\n enableStickersFreeToPlay: boolean;\n enableStickersFreePlayTech: boolean;\n enableSlotRacesStickers: boolean;\n enableJpRibbonOnFreeTourney: boolean;\n enable24HrTimeFormat: boolean;\n enableSlotRaces: boolean;\n displayBonusAsText: boolean;\n upcomingSlotStickersDuration: number;\n slotraceLobbytypeForGamesOrdering: string;\n enableBetterVisualization: boolean;\n hideGenericPoints: boolean;\n enableUpcomingOptinForPlaytech: boolean;\n disablePreloginApiCalls: boolean;\n disablePrizesApiCall: boolean;\n enableRaceNotification: boolean;\n disableSlotRacesPoints: boolean;\n enableCoinEconomy: boolean;\n enableConfigMaps: boolean;\n enableCoinShower: boolean;\n resultsDateFormat: string;\n enableSlotRacesPhase2: boolean;\n raceInfoGameCount: number;\n characterIconPath: string;\n enableTermsNConditions: boolean;\n}\n\nexport function slotRacesClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SlotRacesClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csSmartLobbyConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: smartLobbyClientConfigFactory,\n})\nexport class SmartLobbyClientConfig {\n enableGameIconFallback: boolean;\n}\n\nexport function smartLobbyClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SmartLobbyClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csSubNavigationConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: subNavigationClientConfigFactory,\n})\nexport class SubNavigationClientConfig {\n isEnabledCondition: string;\n showFavInSubNav: any;\n showRecentInSubNav: any;\n hardProductOverride: string;\n enableDesktopIcon: boolean;\n isInstaStoriesEnabled: any;\n enableSubNavigationBgColor: boolean;\n enableIconTextColor: boolean;\n enableEpcotSubNavigation: boolean;\n hideNavBarForEpcotTouch: any;\n}\n\nexport function subNavigationClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SubNavigationClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'csSuperButtonConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: superButtonClientConfigFactory,\n})\nexport class SuperButtonClientConfig {\n enabled: boolean;\n}\n\nexport function superButtonClientConfigFactory(service: LazyClientConfigService) {\n return service.get(SuperButtonClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csThumbnail', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: thumbnailConfigClientConfigFactory,\n})\nexport class ThumbnailConfigClientConfig {\n enableGameThumbnail: any;\n isGameThumbnailsVisible: any;\n thumbnailConfigurations: any;\n displayStaticThumbnail: any;\n}\n\nexport function thumbnailConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(ThumbnailConfigClientConfig);\n}\n","//import { PlatformModule } from '../platform.module';\nimport { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'csVideoPreviewConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: videoPreviewClientConfigFactory,\n})\nexport class VideoPreviewClientConfig {\n playVideoFromStart: boolean;\n setVideoPlayTimeoutint: number;\n}\n\nexport function videoPreviewClientConfigFactory(service: LazyClientConfigService) {\n return service.get(VideoPreviewClientConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'csWidgetConfig', product: ClientConfigProductName.CASINO })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: widgetConfigClientConfigFactory,\n})\nexport class WidgetConfigClientConfig {\n authenticatePromoEdsWidget: boolean;\n isRpFavWidgetEnabled: any;\n isGymlInFavourites: any;\n favouriteGamesBaseCount: any;\n recentGamesCountLimit: number;\n enableRcpwidgetHelpContactUs: any;\n isStickyEnabledForWidget: any;\n maxHeightCount: number;\n enableHelpContactForPrelogin: any;\n enableBingoWidgetForLabel: boolean;\n enableWidgetinFreespinsPage: boolean;\n enablePromoEdsWidget: boolean;\n widgetLinks: any;\n lobbyTypeForRpFavOnOtherProducts: string;\n lobbyTypeForRpGymlOnOtherProducts: string;\n lobbyTypeForFooterOnOtherProducts: string;\n lobbyTypeForSlotRacesOnOtherProducts: string;\n enableSlotRacesForOtherProducts: boolean;\n subCatRouteForSlotRacesOnOtherProducts: string;\n subCategoryRouteForFooterOnOtherProducts: string;\n rpGymlWidgetPostHeightTimeOut: number;\n rpFavWidgetPostHeightTimeOut: number;\n rpFavTogglePostHeightTimeOut: number;\n displayFavInRPFavWidget: boolean;\n}\n\nexport function widgetConfigClientConfigFactory(service: LazyClientConfigService) {\n return service.get(WidgetConfigClientConfig);\n}\n","import 'hammerjs';\n\nexport * from './cashier-iframe/cashier-iframe.component';\nexport * from './cashier-iframe/game-pop-out.component';\nexport * from './casino-lobby-manager/casino-lobby.models';\nexport * from './casino-lobby-manager/casino-lobby.service';\nexport * from './client-config/betmgmoriginals-config';\nexport * from './client-config/game-premiere.config';\nexport * from './client-config/gamification-widget-config';\nexport * from './client-config/global.config';\nexport * from './client-config/modularization-config';\nexport * from './client-config/player-stats-config';\nexport * from './client-config/recent-winners-config';\nexport * from './client-config/lmt-data.config';\nexport { CasinoAudioButtonComponent } from './components/casino-audio-button/casino-audio-button.component';\nexport * from './config-provider/config-provider.service';\nexport * from './confirm-message/confirm-message.component';\nexport * from './directives/browser-state.directive';\nexport * from './directives/custom-carousel-pagination.component';\nexport * from './directives/draggable.directive';\nexport * from './directives/globaltranslate/globaltranslate.component';\nexport * from './directives/intersection-observer/from-intersection-observer';\nexport * from './directives/intersection-observer/intersection-observer.directive';\nexport * from './directives/long-press.directive';\nexport * from './directives/search-highlight-filter/search-highlight.filter';\nexport * from './embedded-game-popup/embedded-game-popup.component';\nexport * from './embedded-game-view/embedded-game-view.component';\nexport * from './game-detail/game-detail-buttons/game-detail-buttons.component';\nexport * from './game-detail/game-detail.component';\nexport * from './game-embed/game-embed.component';\nexport * from './geolocation/geo-location-error/geo-location-error.component';\nexport * from './geolocation/installer/installer.component';\nexport * from './geolocation/services/activator.service';\nexport * from './geolocation/services/coordinator.service';\nexport * from './geolocation/services/geolocation-check.service';\nexport * from './geolocation/services/geolocation-validation.service';\nexport * from './geolocation/services/installer-dialog.service';\nexport * from './geolocation/services/oobee-intimation-toaster.service';\nexport * from './gif-tag/gif-tag.component';\nexport * from './header-box/header-box.component';\nexport * from './image-loader/image-loader.component';\nexport * from './lc-timer/lc-timer.component';\nexport * from './platform-api/platform-api.service';\nexport { LazySearchDesktopComponent } from './search-desktop/lazy-search-desktop.component';\nexport * from './search-desktop/search-desktop.component';\nexport * from './shared/advance-game-data.service';\nexport * from './shared/api-paths-helper-service';\nexport * from './shared/arcade-lobby-tracking.service';\nexport * from './shared/betmgm-originals.service';\nexport * from './shared/bingo-favorite-service';\nexport * from './shared/bingo-vf-services/bingo-game-launch.service';\nexport * from './shared/cache-manager.service';\nexport * from './shared/cashier.service';\nexport * from './shared/casino-api.service';\nexport * from './shared/casino-core-npm-params.service';\nexport * from './shared/casino-iframe-overlay.service';\nexport * from './shared/casino-manager.service';\nexport * from './shared/casino-widget.service';\nexport * from './shared/category-manager.service';\nexport * from './shared/const.service';\nexport * from './shared/cookie.service';\nexport * from './shared/cozybingo-toast-message.service';\nexport * from './shared/cozybingodata.service';\nexport * from './shared/discover-feed.service';\nexport * from './shared/ds-enabler.service';\nexport * from './shared/favourite.service';\nexport * from './shared/forceGameLaunchHandler.service';\nexport * from './shared/freespins-summary.service';\nexport * from './shared/game-data-manager.service';\nexport * from './shared/game-launch-places.service';\nexport * from './shared/game-launch-tracking.service';\nexport * from './shared/game-premiere.service';\nexport * from './shared/game-selector-widget.service';\nexport * from './shared/game-show-hub.service';\nexport * from './shared/game.service';\nexport * from './shared/gamelaunch-url-formation.service';\nexport * from './shared/gamelaunch.service';\nexport * from './shared/gamelaunchfactory.service';\nexport * from './shared/gaming-stories.service';\nexport * from './shared/geolocation-tracking.service';\nexport * from './shared/global-jackpot-constants.service';\nexport * from './shared/global-jackpot-mod.service';\nexport * from './shared/global-jackpots.service';\nexport * from './shared/globalsearch-helper.service';\nexport * from './shared/immersive-lobby.service';\nexport * from './shared/invoker-product.service';\nexport * from './shared/jackpot.service';\nexport * from './shared/jackpotdata-service';\nexport * from './shared/live-casino-lounge.service';\nexport * from './shared/live-dealer.service';\nexport * from './shared/livecasino.service';\nexport * from './shared/localstorage.expirable.persistence.service';\nexport * from './shared/models/advance-game-data.model';\nexport * from './shared/models/betmgm-originals.model';\nexport * from './shared/models/casino-core-npm.params';\nexport * from './shared/models/common.model';\nexport * from './shared/models/game-lobby.model';\nexport * from './shared/models/game-premiere.model';\nexport * from './shared/models/game-selector-widget.model';\nexport * from './shared/models/game-show-hub.model';\nexport * from './shared/models/gameDataFromCacheResponse.model';\nexport * from './shared/models/gamelaunch.model';\nexport * from './shared/models/gaming-stories.model';\nexport * from './shared/models/geolocation.configuration.model';\nexport * from './shared/models/home-lobby.model';\nexport * from './shared/models/immersive-lobby.model';\nexport * from './shared/models/live-casino-lounge.model';\nexport * from './shared/models/modular-game-tile.model';\nexport * from './shared/models/output-event.model';\nexport * from './shared/models/promotions-banner.model';\nexport * from './shared/models/publish-lobby.model';\nexport * from './shared/models/super-button.model';\nexport * from './shared/monitor.service';\nexport * from './shared/nativeapi.service';\nexport * from './shared/nativeapphelper.service';\nexport * from './shared/navigator.service';\nexport * from './shared/new-quick-info.service';\nexport * from './shared/news-feed-v2.service';\nexport * from './shared/news-feed.service';\nexport * from './shared/open-login-dialog-v6';\nexport * from './shared/optimizedTeaser-manager.service';\nexport * from './shared/other-product.service';\nexport * from './shared/pipes/asterisk.pipe';\nexport * from './shared/pipes/culture-date.pipe';\nexport * from './shared/pipes/currencySymbol.pipe';\nexport * from './shared/pipes/currencyformat.pipe';\nexport * from './shared/pipes/safe.pipe';\nexport * from './shared/pipes/sitecore-image-resize.pipe';\nexport * from './shared/player-segmentation.service';\nexport * from './shared/player-stats.service';\nexport * from './shared/promoted-games.service';\nexport * from './shared/promotions-banner.service';\nexport * from './shared/quick-info-modal.service';\nexport * from './shared/recent-games.service';\nexport * from './shared/recent-winners.service';\nexport * from './shared/script-injector.service';\nexport * from './shared/search-section.service';\nexport * from './shared/sign-posting.service';\nexport * from './shared/smartBanner.service';\nexport * from './shared/super-button.service';\nexport * from './shared/teaser.service';\nexport * from './shared/thumbnail.service';\nexport * from './shared/time-zone.service';\nexport { TimeZoneFormatPipe } from './shared/timezone-format.pipe';\nexport * from './shared/unfinished-games-service';\nexport * from './shared/utility.service';\nexport * from './shared/vc-client.service';\nexport * from './shared/windowref.service';\nexport * from './slot-races/shared/slot-races-tracking.service';\nexport * from './slot-races/shared/slot-races.models';\nexport * from './slot-races/shared/slot-races.service';\nexport * from './toaster-msg/toaster-msg.component';\nexport * from './tracking/vanilla-tracking-adapter.model';\nexport * from './tracking/vanilla-tracking-adapter.service';\nexport * from './utilities/url-utility.service';\nexport * from './casino-lobby-manager/global-search/global-search.service';\nexport * from './casino-lobby-manager/casino-styles/casino-styles.service';\nexport * from './casino-lobby-manager/game-manager/game-manager.service';\nexport * from './casino-lobby-manager/jackpot-and-promotions/jackpot-and-promotions.service';\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef } from '@angular/material/dialog';\n\nimport { AppInfoConfig, Page, UserService, UtilsService, WindowRef } from '@frontend/vanilla/core';\nimport { TrustAsResourceUrlPipe } from '@frontend/vanilla/shared/browser';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Component({\n selector: 'cc-cashier-iframe',\n templateUrl: 'cashier-iframe.component.html',\n standalone: true,\n imports: [MatDialogContent, MatDialogActions, TrustAsResourceUrlPipe],\n})\nexport class CashierIframeComponent implements OnInit, OnDestroy {\n @Input() isQDAllowed: boolean;\n cashierIframeUrl: string;\n private iframeCommunicationEnabled: boolean = false;\n private qdUrl: string;\n private depositUrl: string;\n\n constructor(\n public dialogRef: MatDialogRef<CashierIframeComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private user: UserService,\n private page: Page,\n private windowRef: WindowRef,\n private utils: UtilsService,\n private appInfoConfig: AppInfoConfig,\n private configProviderService: ConfigProviderService,\n ) {}\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n ngOnInit() {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const mcPage = this.configProviderService.provideMcPageConfig();\n const features = this.configProviderService.provideFeaturesConfig();\n if (!this.iframeCommunicationEnabled) {\n this.enableIframeCommunication();\n this.iframeCommunicationEnabled = true;\n }\n\n this.qdUrl = this.utils.format(\n mcPage.cashierQDUrlTemplate,\n this.user.id,\n this.appInfoConfig.brand,\n casinoConfig.productId,\n this.appInfoConfig.channel,\n this.page.lang,\n this.user.ssoToken,\n );\n this.qdUrl += '&hideCloseButton=true';\n\n this.depositUrl = mcPage.cashierDepositUrlTemplate;\n this.depositUrl = this.depositUrl.replace('{0}', 'this.user.ssoToken');\n this.depositUrl = this.depositUrl.replace('{1}', this.page.lang);\n this.depositUrl = this.depositUrl.replace('{2}', '');\n this.depositUrl = this.depositUrl.replace('{3}', '');\n this.depositUrl = this.depositUrl + '&hideCloseButton=true';\n\n if (features.checkQDAllowedForDepositURL && this.isQDAllowed) {\n this.cashierIframeUrl = this.qdUrl;\n } else {\n this.cashierIframeUrl = this.depositUrl;\n }\n }\n\n ngOnDestroy(): void {\n this.windowRef.nativeWindow.removeEventListener('message', () => {});\n }\n\n private enableIframeCommunication() {\n const cashierIframe = document.getElementById('casinocashieriframe') as HTMLIFrameElement;\n this.windowRef.nativeWindow.addEventListener('message', (event) => {\n if (!event || !event.data || typeof event.data !== 'string') {\n return;\n }\n const message = unescape(event.data)\n .split('&')\n .reduce((seed, cur): any => {\n const param: any = cur.trim().split('=');\n const paramIndex: any = param[0];\n seed[paramIndex as keyof Object] = param[1];\n return seed;\n }, {}) as {\n action: string;\n [key: string]: any;\n };\n const action = (message.action || '').toUpperCase();\n if (action === 'CLOSE') {\n if (message.showAllOptions === 'true') {\n cashierIframe.src = this.depositUrl;\n } else {\n this.dialogRef.close();\n }\n }\n });\n }\n}\n","<!-- <h1 mat-dialog-title>Hi {{data.name}}</h1> -->\n<div mat-dialog-content class=\"cashier-iframe-content embed-overlay-popup\">\n <div class=\"cashier-iframe\">\n <div mat-dialog-actions class=\"iframe-close iframe-theme-bg-popup\">\n <button mat-button (click)=\"onNoClick()\">\n <span class=\"theme-ex\"></span>\n </button>\n </div>\n <iframe\n id=\"casinocashieriframe\"\n scrolling=\"yes\"\n horizontalscrolling=\"yes\"\n verticalscrolling=\"yes\"\n frameborder=\"0\"\n allowtransparency=\"true\"\n [src]=\"cashierIframeUrl | trustAsResourceUrl\">\n </iframe>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef } from '@angular/material/dialog';\n\nimport { CommonMessages } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Component({\n selector: 'cc-game-pop-out',\n templateUrl: 'game-pop-out.component.html',\n standalone: true,\n imports: [MatDialogContent, MatDialogActions, MatDialogClose],\n})\nexport class GamePopoutComponent implements OnInit {\n gamePopOutUrl: string;\n continue: string;\n cancel: string;\n gameLaunchNewWindow: string;\n gameSessionRestart: string;\n\n constructor(\n public dialogRef: MatDialogRef<GamePopoutComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private commonMessages: CommonMessages,\n private configProviderService: ConfigProviderService,\n ) {}\n onNoClick(): void {\n this.dialogRef.close();\n }\n ngOnInit() {\n const global = this.configProviderService.provideGlobalConfig();\n const mcPage = this.configProviderService.provideMcPageConfig();\n this.continue = this.commonMessages['Continue'];\n this.cancel = this.commonMessages['Cancel'];\n this.gameLaunchNewWindow = global.messages['LaunchGameNewWindow'];\n this.gameSessionRestart = global.messages['GameSessionRestart'];\n this.gamePopOutUrl = mcPage.cashierDepositUrlTemplate;\n }\n}\n","<div class=\"casino-lobby-container-main\">\n <div class=\"embed-overlay-popup\">\n <div mat-dialog-content>\n <div class=\"game-pop-out\">\n <h1 class=\"iframe-theme-bg-popup\">{{ gameLaunchNewWindow }}</h1>\n <h2 class=\"iframe-theme-bg-popup\">{{ gameSessionRestart }}</h2>\n </div>\n </div>\n <div mat-dialog-actions class=\"iframe-theme-bg-popup\">\n <button class=\"egv-pop-btn-left\" mat-button cdkFocusInitial [mat-dialog-close]=\"'continue'\">{{ continue }}</button>\n <button class=\"egv-pop-btn-right\" mat-button (click)=\"onNoClick()\">{{ cancel }}</button>\n </div>\n </div>\n</div>\n","import { Categories } from './categories.model';\nimport { CategoryFeatureMetadata } from './category-feature-metadata-model';\nimport { GameMetaDataMap } from './game-metadata.model';\n\nexport class LobbyItemBaseModel {\n lsCategoriesMap: [string, Categories][];\n lsCategorytNameLangMap: [string, string][];\n lsStickerNameMap: [string, string][];\n lsGameMetaDataMap: [string, GameMetaDataMap][];\n catVsFeatureMetadata: Map<string, CategoryFeatureMetadata>;\n lbyTempName: string;\n lbyTargetType: string;\n lobbyGameIconImageSuffix: string;\n optSegName?: string;\n lsCatVsFeatureMetadata: [string, CategoryFeatureMetadata][];\n}\n","import { Categories } from './lobby-details-model/categories.model';\nimport { GameMetaDataMap } from './lobby-details-model/game-metadata.model';\nimport { LobbyItemBaseModel } from './lobby-details-model/lobby-item.model';\n\nexport class LobbyItem extends LobbyItemBaseModel {\n categoriesMap: Map<string, Categories>;\n categoryNameLangMap: Map<string, string>;\n stickerNameMap: Map<string, string>;\n gameMetaDataMap: Map<string, GameMetaDataMap>;\n setCategoriesMap(map: Map<string, Categories>) {\n this.categoriesMap = map;\n this.lsCategoriesMap = Array.from(map.entries());\n }\n\n setcategoryNameLangMap(map: Map<string, string>) {\n this.categoryNameLangMap = map;\n this.lsCategorytNameLangMap = Array.from(map.entries());\n }\n\n setStickerNameMap(map: Map<string, string>) {\n this.stickerNameMap = map;\n this.lsStickerNameMap = Array.from(map.entries());\n }\n\n setGameMetaDataMap(map: Map<string, GameMetaDataMap>) {\n this.gameMetaDataMap = map;\n this.lsGameMetaDataMap = Array.from(map.entries());\n }\n\n setLobbyItemFromLocalStorage(lobbyInfoLocalStorage: LobbyItemBaseModel) {\n if (lobbyInfoLocalStorage) {\n if (lobbyInfoLocalStorage.lsCategoriesMap && lobbyInfoLocalStorage.lsCategoriesMap.length > 0) {\n this.categoriesMap = new Map(lobbyInfoLocalStorage.lsCategoriesMap);\n }\n if (lobbyInfoLocalStorage.lsCategorytNameLangMap && lobbyInfoLocalStorage.lsCategorytNameLangMap.length > 0) {\n this.categoryNameLangMap = new Map(lobbyInfoLocalStorage.lsCategorytNameLangMap);\n }\n if (lobbyInfoLocalStorage.lsStickerNameMap && lobbyInfoLocalStorage.lsStickerNameMap.length > 0) {\n this.stickerNameMap = new Map(lobbyInfoLocalStorage.lsStickerNameMap);\n }\n if (lobbyInfoLocalStorage.lsGameMetaDataMap && lobbyInfoLocalStorage.lsGameMetaDataMap.length > 0) {\n this.gameMetaDataMap = new Map(lobbyInfoLocalStorage.lsGameMetaDataMap);\n }\n if (lobbyInfoLocalStorage.lbyTempName) {\n this.lbyTempName = lobbyInfoLocalStorage.lbyTempName;\n }\n if (lobbyInfoLocalStorage.lbyTargetType) {\n this.lbyTargetType = lobbyInfoLocalStorage.lbyTargetType;\n }\n if (lobbyInfoLocalStorage.optSegName) {\n this.optSegName = lobbyInfoLocalStorage.optSegName;\n }\n if (lobbyInfoLocalStorage.lsCatVsFeatureMetadata) {\n this.catVsFeatureMetadata = new Map(lobbyInfoLocalStorage.lsCatVsFeatureMetadata);\n }\n\n this.lobbyGameIconImageSuffix = lobbyInfoLocalStorage.lobbyGameIconImageSuffix;\n }\n }\n}\n\nexport interface LobbyInfo {\n key: string;\n value: LobbyItem;\n}\n","export function getPosition(element: HTMLElement): { left: number; top: number } {\n let xPosition = 0;\n let yPosition = 0;\n\n while (element) {\n xPosition += element.offsetLeft - element.scrollLeft + element.clientLeft;\n yPosition += element.offsetTop - element.scrollTop + element.clientTop;\n element = element.offsetParent as HTMLElement;\n }\n\n return { left: xPosition, top: yPosition };\n}\n\nexport function getClientPosition(element: HTMLElement): { left: number; top: number } {\n const postion = element.getBoundingClientRect();\n return { left: postion.x, top: postion.y };\n}\n\nexport function getHiddenValues(child: HTMLElement, parent: HTMLElement): { x: number; y: number } {\n return {\n x: child.clientWidth - parent.clientWidth,\n y: child.clientHeight - parent.clientHeight,\n };\n}\n\nexport function isElementInView(element: HTMLElement, fullyInView: boolean = false) {\n const pageTop = document.documentElement.scrollTop;\n const pageBottom = pageTop + document.documentElement.clientHeight;\n const elementTop = element.offsetTop;\n const elementBottom = elementTop + element.clientHeight;\n\n if (fullyInView === true) {\n return pageTop < elementTop && pageBottom > elementBottom;\n } else {\n return elementTop <= pageBottom && elementBottom >= pageTop;\n }\n}\n\nexport function getTranslateValues(element: HTMLElement): { x: number; y: number; z: number } {\n try {\n const style = window.getComputedStyle(element);\n const matrix = style['transform'];\n\n // No transform property. Simply return 0 values.\n if (matrix === 'none' || typeof matrix === 'undefined') {\n return { x: 0, y: 0, z: 0 };\n }\n\n // Can either be 2d or 3d transform\n const matrixType = matrix.includes('3d') ? '3d' : '2d';\n const matrixArray = matrix.match(/matrix.*\\((.+)\\)/);\n if (matrixArray && matrixArray.length) {\n const matrixValues = matrixArray[1]!.split(', ');\n\n // 2d matrices have 6 values\n // Last 2 values are X and Y.\n // 2d matrices does not have Z value.\n if (matrixType === '2d') {\n return { x: parseFloat(matrixValues[4]!), y: parseFloat(matrixValues[5]!), z: 0 };\n }\n\n // 3d matrices have 16 values\n // The 13th, 14th, and 15th values are X, Y, and Z\n if (matrixType === '3d') {\n return { x: parseFloat(matrixValues[12]!), y: parseFloat(matrixValues[13]!), z: parseFloat(matrixValues[14]!) };\n }\n\n return { x: 0, y: 0, z: 0 };\n }\n\n return { x: 0, y: 0, z: 0 };\n } catch {\n return { x: 0, y: 0, z: 0 };\n }\n}\n\nexport function onlyUnique(value: string, index: number, self: Array<string>): boolean {\n return self.indexOf(value) === index;\n}\n\nexport function hasClass(el: HTMLElement, className: string): boolean {\n if (el.classList) return el.classList.contains(className);\n return !!el.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'));\n}\n\nexport function addClass(className: string, el?: HTMLElement): void {\n const elm = el || document.documentElement;\n if (elm.classList) elm.classList.add(className);\n else if (!hasClass(elm, className)) elm.className += ' ' + className;\n}\n\nexport function removeClass(className: string, el?: HTMLElement): void {\n const elm = el || document.documentElement;\n if (elm.classList) elm.classList.remove(className);\n else if (hasClass(elm, className)) {\n const reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n elm.className = elm.className.replace(reg, ' ');\n }\n}\n\nexport function endsWith(str: string, suffix: string): boolean {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\nexport function getAmount(amount: any, currency: string, locale: string): { value: string; isValid: boolean } {\n try {\n if (isNaN(amount) && amount.indexOf(' ') > -1) currency = amount.split(' ')[1];\n\n const formatter = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n });\n\n let value = parseFloat(amount);\n value = isNaN(value) || !value ? 0 : value;\n return { value: formatter.format(value), isValid: value !== 0 };\n } catch {\n return { value: amount, isValid: false };\n }\n}\n\nexport function toDate(text: any): string {\n try {\n if (isNaN(text)) {\n const date = text.replace(/\\./g, '/').replaceAll(' ', '');\n const year = date.substring(0, 4);\n const month = date.substring(5, 7);\n const day = date.substring(8, 10);\n return day + '/' + month + '/' + year;\n }\n\n const timestamp = parseFloat(text);\n return new Date(timestamp).toLocaleDateString('en-GB');\n } catch {\n return text;\n }\n}\n\nexport function toTimeStamp(text: any): string {\n try {\n let totalMinutes = text.replace(/\\./g, '/').replaceAll(' ', '');\n totalMinutes = totalMinutes && !isNaN(totalMinutes) ? parseInt(totalMinutes) : null;\n if (!totalMinutes) return text;\n\n const minutes = Math.floor(totalMinutes % 60);\n const hours = Math.floor(Math.floor(totalMinutes / 60) % 24);\n const days = Math.floor(totalMinutes / 60 / 24);\n\n let timeStamp = '';\n if (days) timeStamp = days + (days > 1 ? ' days' : ' day');\n if (hours) timeStamp = (timeStamp ? timeStamp + ' ' : '') + hours + (hours > 1 ? ' hrs' : ' hr');\n if (minutes) timeStamp = (timeStamp ? timeStamp + ' ' : '') + minutes + (minutes > 1 ? ' mins' : ' min');\n\n return timeStamp;\n } catch {\n return text;\n }\n}\n\nexport function textToNumber(text: string) {\n const small: any = {\n zero: 0,\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5,\n six: 6,\n seven: 7,\n eight: 8,\n nine: 9,\n ten: 10,\n eleven: 11,\n twelve: 12,\n thirteen: 13,\n fourteen: 14,\n fifteen: 15,\n sixteen: 16,\n seventeen: 17,\n eighteen: 18,\n nineteen: 19,\n twenty: 20,\n thirty: 30,\n forty: 40,\n fifty: 50,\n sixty: 60,\n seventy: 70,\n eighty: 80,\n ninety: 90,\n };\n\n const magnitude: any = {\n hundred: 100,\n thousand: 1000,\n million: 1000000,\n billion: 1000000000,\n };\n\n let finalNumber = 0;\n const words = text.toString().split(/[\\s-]+/);\n\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n let number = small[word] || null;\n\n if (number !== null) finalNumber += number;\n else {\n number = magnitude[word] || null;\n if (number !== null) {\n finalNumber = finalNumber ? finalNumber * number : number;\n } else finalNumber = -1;\n }\n }\n\n return finalNumber;\n}\n\nexport function elementScroll(\n element: HTMLElement,\n offsetWidth: number,\n isLeft: boolean,\n leftCheckValue: number = 0,\n event?: Event,\n): { showLeft: boolean; showRight: boolean } {\n event && event.preventDefault();\n event && event.stopImmediatePropagation();\n\n let offset = element.scrollLeft;\n offset = isLeft ? offset - offsetWidth : offset + offsetWidth;\n offset = offset < 0 ? 0 : offset;\n\n if (!isLeft && element.scrollWidth - offset - offsetWidth < offsetWidth) offset = element.scrollWidth;\n\n if (isLeft && offset < offsetWidth) offset = 0;\n\n const showLeft = offset > leftCheckValue;\n const showRight = element.scrollWidth - leftCheckValue * 2 > element.clientWidth + offset;\n\n const isSafari = hasClass(document.documentElement, 'is-safari');\n if (isSafari) {\n element.style.overflow = 'auto';\n requestAnimationFrame(() => (element.scrollLeft = offset));\n setTimeout(() => (element.style.overflow = 'hidden'), 500);\n } else element.scrollLeft = offset;\n\n return { showLeft, showRight };\n}\n\nexport function replaceUrlState(urlPrefix: string): void {\n const location = window.location.href;\n window.history.replaceState(null, '', location.substring(0, location.indexOf(urlPrefix)));\n}\n\nexport function pushUrlState(urlParts: Array<string>): void {\n window.history.pushState({}, '', window.location.origin + '/' + urlParts.join('/'));\n}\n\nexport function isNotInUrl(urlPrefix: string): boolean {\n return window.location.href.indexOf(urlPrefix) === -1;\n}\n\nexport function findParent(element: HTMLElement, className: string): HTMLElement | null {\n // while (element.parentElement && (element = element.parentElement) && !element.classList.contains(className));\n // return element;\n return element.closest('.' + className);\n}\n\nexport function isDateValid(date: string | number | Date): boolean {\n const convertedDate = new Date(date);\n return !isNaN(convertedDate.getTime());\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 PlatformApiService extends ApiBase {}\n\nexport function apiServiceFactory(apiServiceFactory: ApiServiceFactory, productService: ProductService) {\n return apiServiceFactory.createForProduct(PlatformApiService, {\n product: ClientConfigProductName.CASINO,\n area: 'games',\n forwardProductApiRequestHeader: productService.getMetadata(ClientConfigProductName.CASINO).isEnabledProductApi,\n });\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nimport { IGameShowHubSectorItem } from './game-show-hub.model';\nimport { IImmersiveLobbySectorItem } from './immersive-lobby.model';\nimport { ILiveCasinoLoungeCustomLink } from './live-casino-lounge.model';\n\nexport enum ImageType {\n SVG,\n Image,\n Lottie,\n}\n\nexport enum PromoOptinStatusType {\n Offered = 'OFFERED',\n NotOffered = 'NOT_OFFERED',\n Expired = 'EXPIRED',\n OptedIn = 'OPTED_IN',\n OptedOut = 'OPTED_OUT',\n Invalid = 'INVALID',\n AccountNew = 'ACCOUNT_NEW',\n NotVerified = 'NOT_VERIFIED',\n RGLimitNew = 'RGLIMIT_NEW',\n WithdrowPending = 'WITHDROW_PENDING',\n SelfExcluded = 'SELF_EXCLUDED',\n Risky = 'RISKY',\n Blocked = 'BLOCKED',\n Error = 'ERROR',\n}\n\nexport interface IContentLink {\n url: any;\n attributes: any;\n title: string;\n text: string;\n}\n\nexport interface IContentVideo {\n id: string;\n src: string;\n width?: number;\n height?: number;\n}\n\nexport interface IOption {\n title: string;\n key: string;\n condition: string;\n selected: boolean;\n selectedValue: number;\n defaultValue: number;\n}\n\nexport const CUSTOM_LINK_TYPE_DRAWER = 'Drawer';\nexport const CUSTOM_LINK_TYPE_LINK = 'Link';\n\nexport class ImmersiveLobbySkeletonLoadingConfiguration {\n logo?: string;\n lottieUrl?: string;\n spinnerType: string;\n backgroundColor?: string;\n loadingText?: string;\n loadingTextColor?: string;\n gameShowLogoUrl?: string;\n ferrisSpinningWheelUrl?: string;\n}\n\nexport class Dimension {\n width: string;\n height: string;\n y: string;\n x: string;\n}\n\nexport interface IMobileLandscapeConfiguration {\n minWidth: number;\n maxWidth: number;\n minHeight: number;\n maxHeight: number;\n}\n\nexport interface ICustomLinkDrawerContent {\n title: string;\n content: string;\n isOnboarding: boolean;\n onboardingCTAText: string;\n image?: IContentImage;\n imageCTA?: IContentLink;\n imageLink?: IContentLink;\n terms: string;\n primaryCTA?: IContentLink;\n condition: string;\n path: string;\n}\n\nexport interface ICustomLinkModalInfo {\n index: number;\n event: Event;\n panelClass: string;\n isMobilePhone: boolean;\n isStats: boolean;\n modalItem: IGameShowHubSectorItem | ILiveCasinoLoungeCustomLink | IImmersiveLobbySectorItem;\n launchRealtiveUri: string;\n from: string;\n}\n\nexport class ImmersiveLobbyConfig {\n lobbyType: string;\n loadingConfig: ImmersiveLobbySkeletonLoadingConfiguration;\n onboardingDataPath: string;\n enableSupportForLandscape: boolean;\n mobileLandscapeConfig: IMobileLandscapeConfiguration;\n defaultRenderer: string;\n fallbackRenderer: string;\n fallbackForIpad: boolean;\n idleTimeout: number;\n setMapAdjustedTimeout: number;\n gameLaunchUri: string;\n pauseLottieAnimations: boolean;\n}\n\nexport class LobbyGameInfo {\n gameId: string;\n gameIconUrl: string;\n icon?: number;\n isLoaded: boolean;\n isDisabled: boolean;\n isGameIconFallback: boolean;\n}\n\nexport enum LottieAnimationStatus {\n Play,\n Pause,\n}\n\nexport class ISchedule {\n gameId: string;\n position: string;\n timestamp: Date;\n}\nexport class ICustomLinkDrawer {\n content: Array<ICustomLinkDrawerContent>;\n}\n\nexport class IPathBasedEnableORDisable {\n disablePaths: Array<string>;\n disableDelay: string;\n enablePaths: Array<string>;\n enableDelay: string;\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nimport { Dimension, IContentLink, ISchedule, ImageType, ImmersiveLobbyConfig, LobbyGameInfo } from './common.model';\n\nexport const ITEM_TYPE_GAME_LOGO = 'GameLogo';\nexport const ITEM_TYPE_GAME = 'Game';\nexport const ITEM_TYPE_CUSTOM_LINK = 'CustomLink';\nexport const CUSTOM_LINK_TYPE_JACKPOT_DRAWER = 'JackpotDrawer';\nexport const GSHUB_ONBOARDING_COOKIE_NAME = 'hideGSHubOnboarding';\n\nexport interface IContentParameters {\n CustomLinkDrawerBgClr: string;\n CustomLinkDrawerHeaderClr: string;\n GlowingIconColor: string;\n}\n\nexport interface IGameShowHubSectorItem extends LobbyGameInfo {\n width: number;\n height: number;\n top: number;\n left: number;\n itemType: string;\n customLinkIcon?: IContentImage;\n customLinkType?: string;\n customLink?: IContentLink;\n customLinkDrawerTitle?: string;\n customLinkDrawerBackgroundImage: IContentImage;\n customLinkDrawerContent?: Array<string>;\n glowingIconType: string;\n messages: any;\n configurationsContent: any;\n constantMessages: any;\n condition: string;\n // Custom Props\n dimension: Dimension;\n isSquareIcon: boolean;\n showTimer: boolean;\n isOffline: boolean;\n schedule: string | undefined;\n timerPosition: string | undefined;\n cmsTimer: any;\n}\n\nexport interface IGameShowHubSector {\n lmtCategoryId: string;\n top: number;\n left: number;\n width: number;\n height: number;\n sectorImage: IContentImage;\n lottieImage: string;\n zoomedOutClipPath: string;\n zoomedInClipPath: string;\n zoomForDesktop: number;\n zoomForMobile: number;\n displayJackpotTicker: boolean;\n jackpotTickerText?: string;\n jackpotTickerImage?: IContentImage;\n gameLogos: Array<IGameShowHubSectorItem>;\n customLinks: Array<IGameShowHubSectorItem>;\n games: Array<IGameShowHubSectorItem>;\n //schedules: Map<string, Date>;\n schedules: Array<ISchedule>;\n condition: string;\n // Custom Props\n categoryId: string;\n categoryIndex: number;\n sectorContainerId: string;\n isLoaded: boolean;\n type: ImageType;\n}\n\nexport interface IGameShowHubMap {\n width: number;\n height: number;\n backgroundImage: IContentImage;\n lottieImage?: string;\n layeredImage?: IContentImage;\n audioFile?: string;\n sectors: Array<IGameShowHubSector>;\n condition: string;\n}\n\nexport interface IGameShowHubJackpotDrawerContent {\n jackpotGroupName: string;\n jackpotImage?: IContentImage;\n jackpotContent: string;\n displayJackpotTicker: boolean;\n howItWorks: string;\n howCanIParticipate: string;\n terms: string;\n condition: string;\n // Custom Props\n path: string;\n}\n\nexport class GameShowHubConfiguration extends ImmersiveLobbyConfig {\n triviaGameType: string;\n noOfHours: number;\n tiltingPhoneMessageImageUrl: string;\n scheduleGames: Array<string>;\n jackpotGroupName: string;\n // enableSupportForLandscape: boolean;\n enableAudioButton: boolean;\n}\n\nexport interface IGameShowHubGlobalConfig {\n noOfDays: string;\n offlineTableContent: string;\n tiltingMessage: string;\n}\n\nexport interface IGameShowHubGlobalClrConfig {\n offlineTableTextClr: string;\n mapBgClr: string;\n glowingIconClr: string;\n jackpotTickeringBgClr: string;\n jackpotTickeringTextClr: string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { onlyUnique } from '@casinocore/platform/utils';\nimport { IOnboarding } from '@casinocore/type-utils';\nimport { DeviceService, Message, MessageLifetime, MessageQueueService, MessageType, TrackingService, WindowRef } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { CUSTOM_LINK_TYPE_DRAWER, ICustomLinkDrawerContent, ImageType, LottieAnimationStatus } from './models/common.model';\nimport {\n CUSTOM_LINK_TYPE_JACKPOT_DRAWER,\n GameShowHubConfiguration,\n IGameShowHubGlobalClrConfig,\n IGameShowHubGlobalConfig,\n IGameShowHubJackpotDrawerContent,\n IGameShowHubMap,\n IGameShowHubSector,\n IGameShowHubSectorItem,\n ITEM_TYPE_CUSTOM_LINK,\n} from './models/game-show-hub.model';\n\ninterface IGetMapResponse {\n map: IGameShowHubMap;\n globalConfig: IGameShowHubGlobalConfig;\n globalClrConfig: IGameShowHubGlobalClrConfig;\n}\n\ninterface IGameShowHubJackpotSectorItem {\n sectorItem: IGameShowHubSectorItem;\n index: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameShowHubService {\n document: Document;\n categoryRoutePrefix = '/c/';\n sectorIdPrefix = 'gsCat';\n loadingObservable: Observable<boolean>;\n mapObservable: Observable<boolean>;\n backgroundObservable: Observable<boolean>;\n animatedLayerObservable: Observable<boolean>;\n sectorsObservable: Observable<boolean>;\n sectorOpenedObservable: Observable<IGameShowHubSector | null>;\n chatWindowOpenedObservable: Observable<boolean | null>;\n lottieAnimationStatusObservable: Observable<LottieAnimationStatus | null>;\n drawerContentMapAvailable: Observable<boolean | null>;\n onboardingDataAvailable: Observable<boolean | null>;\n jackpotDrawerContentMapAvailable: Observable<boolean | null>;\n\n private currentLobbyType: string;\n private lobbyGames: Array<string>;\n private jackpotSectorItem: IGameShowHubJackpotSectorItem;\n private gameShowHubConfig: GameShowHubConfiguration;\n private loadingPublisher = new BehaviorSubject<boolean>(true);\n private mapPublisher = new BehaviorSubject<boolean>(false);\n private backgroundPublisher = new BehaviorSubject<boolean>(false);\n private animatedLayerPublisher = new BehaviorSubject<boolean>(false);\n private sectorsMap: Map<string, IGameShowHubSector> = new Map<string, IGameShowHubSector>();\n private sectorsPublisher = new BehaviorSubject<boolean>(false);\n private sectorOpenedPublisher = new BehaviorSubject<IGameShowHubSector | null>(null);\n private chatWindowOpenedPublisher = new BehaviorSubject<boolean | null>(null);\n private lottieAnimationStatusPublisher = new BehaviorSubject<LottieAnimationStatus | null>(null);\n private globalConfigData: IGameShowHubGlobalConfig;\n private mapData: IGameShowHubMap;\n private globalConfigClr: IGameShowHubGlobalClrConfig;\n private drawerContentMap: Map<string, ICustomLinkDrawerContent> = new Map<string, ICustomLinkDrawerContent>();\n private drawerContentMapPublisher = new BehaviorSubject<boolean | null>(null);\n private onboardingData: IOnboarding;\n private onboardingDataPublisher = new BehaviorSubject<boolean | null>(null);\n private jackpotDrawerContentMap: Map<string, IGameShowHubJackpotDrawerContent> = new Map<string, IGameShowHubJackpotDrawerContent>();\n private jackpotDrawerContentMapPublisher = new BehaviorSubject<boolean | null>(null);\n\n constructor(\n private windowRef: WindowRef,\n private api: PlatformApiService,\n private tracking: TrackingService,\n private deviceService: DeviceService,\n private messageQueue: MessageQueueService,\n private casinoLobbyService: CasinoLobbyService,\n private configProviderService: ConfigProviderService,\n ) {\n const nativeWindow = <any>this.windowRef.nativeWindow;\n this.document = nativeWindow.document;\n\n this.lobbyGames = [];\n this.gameShowHubConfig = this.configProviderService.provideGameShowHubConfig();\n this.loadingObservable = this.loadingPublisher.asObservable();\n this.mapObservable = this.mapPublisher.asObservable();\n this.backgroundObservable = this.backgroundPublisher.asObservable();\n this.animatedLayerObservable = this.animatedLayerPublisher.asObservable();\n this.sectorsObservable = this.sectorsPublisher.asObservable();\n this.sectorOpenedObservable = this.sectorOpenedPublisher.asObservable();\n this.chatWindowOpenedObservable = this.chatWindowOpenedPublisher.asObservable();\n this.lottieAnimationStatusObservable = this.lottieAnimationStatusPublisher.asObservable();\n this.drawerContentMapAvailable = this.drawerContentMapPublisher.asObservable();\n this.onboardingDataAvailable = this.onboardingDataPublisher.asObservable();\n this.gameShowHubConfig = this.configProviderService.provideGameShowHubConfig();\n this.jackpotDrawerContentMapAvailable = this.jackpotDrawerContentMapPublisher.asObservable();\n }\n\n get map(): IGameShowHubMap {\n return this.mapData;\n }\n\n get globalConfig(): IGameShowHubGlobalConfig {\n return this.globalConfigData;\n }\n\n get globalClrConfig(): IGameShowHubGlobalClrConfig {\n return this.globalConfigClr;\n }\n\n get isMobile(): boolean {\n return this.currentWidth <= 1024;\n }\n\n get lobbyType(): string {\n return this.currentLobbyType;\n }\n\n get mainElement(): HTMLDivElement {\n return this.document.getElementById('main-content')?.parentElement as HTMLDivElement;\n }\n\n get currentWidth(): number {\n return this.deviceService.isiOS\n ? (this.document.getElementById('casino-viewport') as HTMLElement)?.offsetWidth\n : this.deviceService.windowWidth();\n }\n\n get currentHeight(): number {\n return this.deviceService.isiOS ? (this.document.getElementById('casino-viewport') as HTMLElement)?.offsetHeight : window.innerHeight;\n }\n\n get isMobileLandscape(): boolean {\n return (\n this.deviceService.isMobilePhone &&\n this.currentWidth >= this.gameShowHubConfig.mobileLandscapeConfig.minWidth &&\n this.currentWidth <= this.gameShowHubConfig.mobileLandscapeConfig.maxWidth\n );\n }\n\n getScreenName(title: string): string {\n const content = document.createElement('span');\n content.className = 'removeHtmlTags';\n content.innerHTML = title;\n content.style.visibility = 'hidden';\n content.style.opacity = '0';\n content.style.height = '0';\n return content.innerHTML.split('<br>').join(' ');\n }\n\n getLoadingStatus() {\n return combineLatest([this.mapObservable, this.backgroundObservable, this.animatedLayerObservable, this.sectorsObservable]);\n }\n\n getMap(mapPath: string): void {\n this.api.post('GameShowHub/GetMap', { mapPath: mapPath }, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe(\n (response: IGetMapResponse) => {\n if (response) {\n this.globalConfigData = response?.globalConfig;\n this.globalConfigClr = response?.globalClrConfig;\n this.mapData = response.map;\n this.mapPublisher.next(true);\n\n // Trigger Customlink Drawer Content\n this.setCustomLinkDrawerContent();\n }\n },\n (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n () => {},\n );\n }\n\n getLobbyGames(): Array<string> {\n return this.lobbyGames;\n }\n\n setLobbyGame(game: string): void {\n this.lobbyGames.push(game);\n }\n\n getJackpotSectorItem(): IGameShowHubJackpotSectorItem {\n return this.jackpotSectorItem;\n }\n\n setJackpotSectorItem(jackpotSectorItem: IGameShowHubSectorItem, index: number): void {\n this.jackpotSectorItem = { sectorItem: jackpotSectorItem, index: index } as IGameShowHubJackpotSectorItem;\n }\n\n initSectors(): void {\n if (this.sectorsMap.size) {\n const lottieSectors = Array.from(this.sectorsMap.values()).filter((sector: IGameShowHubSector) => sector.type === ImageType.Lottie);\n lottieSectors.forEach((m: IGameShowHubSector) => {\n m.isLoaded = false;\n });\n this.sectorsPublisher.next(true);\n }\n }\n\n initMap(): void {\n this.mainElement.classList.remove('casino-lobby-height');\n this.loadingPublisher.next(true);\n this.backgroundPublisher.next(false);\n this.animatedLayerPublisher.next(false);\n this.sectorsMap = new Map<string, IGameShowHubSector>();\n this.sectorsPublisher.next(false);\n }\n\n setLobbyType(lobbyType: string): void {\n this.currentLobbyType = lobbyType;\n }\n\n setBackgroundStatus(loaded: boolean): void {\n this.backgroundPublisher.next(loaded);\n }\n\n setAnimatedLayerStatus(loaded: boolean): void {\n this.animatedLayerPublisher.next(loaded);\n }\n\n setSectorLoaded(sectorId: string, sectorType: ImageType): void {\n if (this.sectorsMap.size && this.sectorsMap.has(sectorId)) {\n this.sectorsMap.set(sectorId, { ...this.sectorsMap.get(sectorId), isLoaded: true } as IGameShowHubSector);\n } else {\n this.sectorsMap.set(sectorId, { isLoaded: true, type: sectorType } as IGameShowHubSector);\n }\n\n this.sectorsPublisher.next(true);\n }\n\n getSectorsLoadedCount(): number {\n return this.sectorsMap.size ? Array.from(this.sectorsMap.values()).filter((sector: IGameShowHubSector) => sector.isLoaded).length : 0;\n }\n\n setSectorOpened(selectedMapItem: IGameShowHubSector | null): void {\n this.sectorOpenedPublisher.next(selectedMapItem);\n }\n\n setChatWindowOpened(isOpened: boolean): void {\n this.chatWindowOpenedPublisher.next(isOpened);\n }\n\n setLottieAnimationStatus(status: LottieAnimationStatus): void {\n this.lottieAnimationStatusPublisher.next(status);\n }\n\n setOnboardingData(): void {\n this.api.get('GameShowHub/GetOnboardingContent', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe(\n (response: IOnboarding) => {\n if (response) {\n this.onboardingData = response;\n this.onboardingDataPublisher.next(true);\n }\n },\n (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n () => {},\n );\n }\n\n getOnboardingData(): IOnboarding {\n return this.onboardingData;\n }\n\n fetchDrawerContent(paths: Array<string>): void {\n this.api\n .post('GameShowHub/FetchContent', { contentPaths: paths }, { responseType: 'json', withCredentials: true, showSpinner: false })\n .subscribe(\n (response: Array<ICustomLinkDrawerContent>) => {\n if (response) {\n this.emptyDrawerMap();\n response.forEach((drawerContent: ICustomLinkDrawerContent) => {\n this.drawerContentMap.set(drawerContent.path, drawerContent);\n });\n this.drawerContentMapPublisher.next(true);\n }\n },\n (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n () => {},\n );\n }\n // NFR - Services optimization - Remove\n getDrawerContentMap(): Map<string, ICustomLinkDrawerContent> {\n return this.drawerContentMap;\n }\n\n getDrawerContent(paths: Array<string>): ICustomLinkDrawerContent[] {\n const content = new Array<ICustomLinkDrawerContent>();\n paths.forEach((path: string) => {\n content.push(this.drawerContentMap.get(path) as ICustomLinkDrawerContent);\n });\n\n return content;\n }\n\n fetchJackpotDrawerContent(paths: Array<string>): void {\n this.api\n .post(\n 'GameShowHub/FetchJackpotDrawerContent',\n { contentPaths: paths },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n )\n .subscribe(\n (response: Array<IGameShowHubJackpotDrawerContent>) => {\n if (response) {\n this.emptyJackpotDrawerMap();\n response.forEach((drawerContent: IGameShowHubJackpotDrawerContent) => {\n this.jackpotDrawerContentMap.set(drawerContent.path, drawerContent);\n });\n this.jackpotDrawerContentMapPublisher.next(true);\n }\n },\n (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n );\n }\n // NFR - Services optimization - Remove\n getJackpotDrawerContentMap(): Map<string, IGameShowHubJackpotDrawerContent> {\n return this.jackpotDrawerContentMap;\n }\n\n getJackpotDrawerContent(paths: Array<string>): IGameShowHubJackpotDrawerContent[] {\n const content = new Array<IGameShowHubJackpotDrawerContent>();\n paths.forEach((path: string) => {\n content.push(this.jackpotDrawerContentMap.get(path) as IGameShowHubJackpotDrawerContent);\n });\n\n return content;\n }\n\n getJackpotAmount(jackpotAmount: string, jpTickerIncrement: number, formatCurrency: Function): { jpAmount: string; jpTickerIncrement: number } {\n const globalClientConfig = this.configProviderService.provideGlobalConfig();\n const jackpotConfig = this.configProviderService.provideJackpotConfig();\n let currency: string = '';\n\n jackpotAmount = jackpotAmount.replace(/\\ /g, '');\n const initialcurrency = jackpotAmount.match(/[^\\d\\.\\,\\s]/g);\n if (initialcurrency && initialcurrency.length > 0) {\n for (let i = 0; i < initialcurrency.length; i++) {\n currency = currency + initialcurrency[i];\n }\n currency = currency.replace(/\\,/g, '');\n currency = currency.replace(/\\./g, '');\n }\n\n jackpotAmount = jackpotAmount.replace(/\\ /g, '');\n jackpotAmount = jackpotAmount.replace(/\\ /g, '');\n jackpotAmount = jackpotAmount.replace(/\\,/g, '');\n jackpotAmount = jackpotAmount.replace(/\\./g, '');\n jackpotAmount = jackpotAmount.replace(currency, '');\n jackpotAmount = jackpotAmount.replace(/\\s/g, '');\n jackpotAmount = jackpotAmount.match(/\\b[\\d, ]+\\b/g)![0];\n\n if (jackpotAmount.length > 2) {\n const realpart = jackpotAmount.slice(0, jackpotAmount.length - 2);\n const decimalpart = jackpotAmount.slice(-2);\n jackpotAmount = realpart + '.' + decimalpart;\n }\n\n let jackpotTickValue: number | string = parseFloat(jackpotAmount.replace(/,/g, ''));\n if (globalClientConfig.lobbyConfigurations.IncrementTickingForJackpotOnGameTiles)\n jpTickerIncrement = +globalClientConfig.lobbyConfigurations.IncrementTickingForJackpotOnGameTiles;\n\n jackpotTickValue = jackpotTickValue + jpTickerIncrement * 0.01;\n jackpotTickValue = formatCurrency(jackpotTickValue.toFixed(2));\n if (jackpotConfig?.showJackpotCurrencyOnRight) {\n jackpotTickValue = (jackpotTickValue as string).replace(/[,.]/g, (m: any) => (m === ',' ? '.' : ','));\n return { jpAmount: jackpotTickValue + ' ' + currency + '.', jpTickerIncrement: jpTickerIncrement };\n } else return { jpAmount: currency + ' ' + jackpotTickValue, jpTickerIncrement: jpTickerIncrement };\n }\n\n showLoading(): void {\n if (!this.document.querySelector('.height-cls-skeleton')) this.loadingPublisher.next(true);\n }\n\n hideLoading(): void {\n if (this.document.querySelector('.height-cls-skeleton')) this.loadingPublisher.next(false);\n }\n\n getCategoryInfo(): { categoryId: string; categoryName: string } {\n const link = window.location.href;\n const subCategoryUrl = this.categoryRoutePrefix;\n let categoryId = link.substr(link.indexOf(subCategoryUrl) + (subCategoryUrl?.length || 0));\n if (categoryId.indexOf('?') !== -1) categoryId = categoryId.substr(0, categoryId.indexOf('?'));\n const lobbyInfo = this.casinoLobbyService.getLobbyInfo(this.lobbyType);\n const categoryInfo = lobbyInfo!.categoriesMap.get(categoryId);\n return { categoryId, categoryName: categoryInfo?.engCategoryName || '' };\n }\n\n trackEvent(\n trackingType: string,\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ): void {\n this.tracking.triggerEvent(trackingType, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n\n private emptyDrawerMap(): void {\n if (this.drawerContentMap && this.drawerContentMap.size > 0) this.drawerContentMap.clear();\n }\n\n private emptyJackpotDrawerMap(): void {\n if (this.jackpotDrawerContentMap && this.jackpotDrawerContentMap.size > 0) this.jackpotDrawerContentMap.clear();\n }\n\n private setCustomLinkDrawerContent(): void {\n if (this.mapData) {\n const paths = new Map<string, Array<string>>();\n this.mapData?.sectors.forEach((sector: IGameShowHubSector) => {\n const customLinks = sector.customLinks.filter((m) => m?.itemType === ITEM_TYPE_CUSTOM_LINK) || [];\n const customLinkDrawers = customLinks\n .filter((m) => m?.customLinkType === CUSTOM_LINK_TYPE_DRAWER && m?.customLinkDrawerContent)\n .map((m) => m.customLinkDrawerContent);\n const customLinkDrawerContents = this.arrayString(customLinkDrawers);\n if (customLinkDrawerContents.length) {\n if (paths.has(CUSTOM_LINK_TYPE_DRAWER))\n paths.set(CUSTOM_LINK_TYPE_DRAWER, paths.get(CUSTOM_LINK_TYPE_DRAWER)!.concat(customLinkDrawerContents));\n else paths.set(CUSTOM_LINK_TYPE_DRAWER, customLinkDrawerContents);\n }\n const customLinkJackpotDrawers = customLinks\n .filter((m) => m?.customLinkType === CUSTOM_LINK_TYPE_JACKPOT_DRAWER && m?.customLinkDrawerContent)\n .map((m) => m.customLinkDrawerContent);\n const customLinkJackpotDrawerContents = this.arrayString(customLinkJackpotDrawers);\n if (customLinkJackpotDrawerContents.length) {\n if (paths.has(CUSTOM_LINK_TYPE_JACKPOT_DRAWER))\n paths.set(\n CUSTOM_LINK_TYPE_JACKPOT_DRAWER,\n paths.get(CUSTOM_LINK_TYPE_JACKPOT_DRAWER)!.concat(customLinkJackpotDrawerContents),\n );\n else paths.set(CUSTOM_LINK_TYPE_JACKPOT_DRAWER, customLinkJackpotDrawerContents);\n }\n });\n\n if (paths && paths.size) {\n paths.forEach((value: string[], key: string) => {\n if (!value?.length) return;\n if (key === CUSTOM_LINK_TYPE_DRAWER) this.fetchDrawerContent(value.filter(onlyUnique));\n if (key === CUSTOM_LINK_TYPE_JACKPOT_DRAWER) this.fetchJackpotDrawerContent(value.filter(onlyUnique));\n });\n }\n }\n }\n\n private arrayString(arr: any) {\n return new Array<string>().concat(...arr);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { GameMetaDataMap } from '../lobby-details-model/game-metadata.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameManagerService {\n gameMetaDataMap: Map<string, GameMetaDataMap> = new Map<string, GameMetaDataMap>();\n gameMetaDataPlayerStatsSubject = new BehaviorSubject<Map<string, GameMetaDataMap> | null>(null);\n gameMetaDataPlayerStatsObservable: Observable<number> = this.gameMetaDataPlayerStatsSubject.asObservable().pipe(\n map((arr) => (arr ? arr.size : 0)),\n distinctUntilChanged(),\n );\n\n getGameInfo(gameId: string): GameMetaDataMap | null {\n if (!this.gameMetaDataMap) {\n return null;\n }\n return this.gameMetaDataMap.get(gameId) ?? null;\n }\n\n getGameDisplayName(gameId: string): string {\n if (!this.gameMetaDataMap) {\n return '';\n }\n return this.gameMetaDataMap.get(gameId)?.name ?? '';\n }\n\n setGameIconNotFound(gameId: string, iconType: number = 1): void {\n const gameInfo: GameMetaDataMap | null = this.gameMetaDataMap?.get(gameId) || null;\n if (gameInfo && !gameInfo.isImageNotFound) {\n gameInfo.isImageNotFound = new Map();\n gameInfo.isImageNotFound.set(iconType.toString(), true);\n }\n }\n\n isGameIconNotAvailable(gameId: string, iconType: number = 1): boolean {\n if (!this.gameMetaDataMap) {\n return false;\n }\n const gameInfo: GameMetaDataMap | null = this.gameMetaDataMap.get(gameId) || null;\n if (gameInfo?.isImageNotFound && gameInfo?.isImageNotFound?.size > 0) {\n return gameInfo.isImageNotFound.get(iconType.toString()) || false;\n }\n return false;\n }\n\n updateMetaData(gameMetaDataMap: Map<string, GameMetaDataMap>): void {\n if (gameMetaDataMap) {\n this.gameMetaDataMap = gameMetaDataMap;\n this.gameMetaDataPlayerStatsSubject.next(gameMetaDataMap);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, booleanAttribute, computed, input } from '@angular/core';\n\nexport const DS_BADGE_VARIANT_ARRAY = [\n 'primary',\n 'primary-strong',\n 'primary-subtle',\n 'secondary',\n 'secondary-strong',\n 'secondary-subtle',\n 'green',\n 'green-strong',\n 'green-subtle',\n 'blue',\n 'blue-strong',\n 'blue-subtle',\n 'red',\n 'red-strong',\n 'red-subtle',\n 'purple',\n 'purple-strong',\n 'purple-subtle',\n 'neutral',\n 'neutral-strong',\n 'neutral-subtle',\n 'yellow',\n 'yellow-strong',\n 'yellow-subtle',\n 'orange',\n 'orange-strong',\n 'orange-subtle',\n] as const;\n\nexport type DsBadgeVariant = (typeof DS_BADGE_VARIANT_ARRAY)[number];\nexport const DS_BADGE_SIZE_ARRAY = ['xsmall', 'medium'] as const;\nexport type DsBadgeSize = (typeof DS_BADGE_SIZE_ARRAY)[number];\n\n@Component({\n selector: 'ds-badge',\n template: `\n <div class=\"ds-badge-slot-container\">\n <ng-content select=\"[slot=start]\" />\n </div>\n <span class=\"ds-badge-text\">\n <ng-content />\n </span>\n <div class=\"ds-badge-slot-container\">\n <ng-content select=\"[slot=end]\" />\n </div>\n `,\n host: {\n '[class]': 'hostClass()',\n '[class.ds-badge-disabled]': 'disabled() ? true : null',\n '[class.ds-badge-inverse]': 'inverse()',\n '[attr.aria-label]': 'getAriaLabel()',\n 'role': 'img', // for now we are using role img till we find better solution to work with nvda\n },\n styleUrl: 'badge.component.scss',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DsBadge {\n size = input<DsBadgeSize>('medium');\n variant = input<DsBadgeVariant>('primary');\n disabled = input(false, { transform: booleanAttribute });\n inverse = input(false, { transform: booleanAttribute });\n\n hostClass = computed(() => `ds-badge ds-badge-${this.size()} ds-badge-${this.variant()}`);\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n\n public getAriaLabel(): string {\n const mainContent = this.elementRef.nativeElement.querySelector('.ds-badge-text')?.textContent?.trim();\n\n let label = mainContent || '';\n\n if (this.disabled()) {\n return `Disabled badge: ${label}`;\n }\n return `Badge: ${label}`;\n }\n}\n","/* eslint-disable @nx/enforce-module-boundaries */\n/* eslint-disable @angular-eslint/component-max-inline-declarations */\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { DsBadge, DsBadgeSize, DsBadgeVariant } from '@frontend/ui/badge';\n\nexport type StcikerStyles = {\n [key: string]: string | undefined;\n};\n@Component({\n selector: 'cs-badge',\n standalone: true,\n template: `\n @for (badge of badges(); track badge.value; let i = $index) {\n @if (isLegacy()) {\n <b id=\"cs-badge-text\" class=\"cs-badge-text\" [style]=\"enableStickerStyles() ? getStickerStyles(i) : getStyles(badge.value, i)\">\n {{ badge.value }}\n </b>\n } @else {\n <ds-badge [variant]=\"variant()\" [size]=\"size()\">{{ badge.value }}</ds-badge>\n }\n }\n `,\n styleUrl: './badge.component.scss',\n imports: [DsBadge],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CsBadgeComponent {\n size = input.required<DsBadgeSize>();\n variant = input.required<DsBadgeVariant>();\n isLegacy = input<boolean>(false);\n badges = input.required<Array<{ value: string }>>();\n stickerStyles = input.required<StcikerStyles>();\n isUk = input<boolean>(false);\n enableStickerStyles = input<boolean>(true);\n\n getStickerStyles(index: number) {\n if (this.isUk()) {\n return index % 2 === 0 ? this.stickerStyles()['UkStickerStyle1'] : this.stickerStyles()['UkStickerStyle2'];\n } else {\n return this.stickerStyles()['GameStickerStyle'];\n }\n }\n\n getStyles(sticker: any, index: number): string | undefined {\n const stickerKey = Object.keys(this.stickerStyles() || '');\n if (stickerKey.includes(sticker)) {\n return this.stickerStyles()[sticker];\n } else if (this.isUk()) {\n return index % 2 === 0 ? this.stickerStyles()['UkStickerStyle1'] : this.stickerStyles()['UkStickerStyle2'];\n } else {\n return this.stickerStyles()['GameStickerStyle'];\n }\n }\n}\n","@if (chevronKind === 'up') {\n <i class=\"theme-arrow-down theme-arrow-up\"></i>\n}\n@if (chevronKind === 'down') {\n <i class=\"theme-arrow-down\"></i>\n}\n","/* eslint-disable @angular-eslint/component-max-inline-declarations */\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cs-chevron',\n templateUrl: './chevron.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n .theme-arrow-up:before {\n vertical-align: middle;\n margin-top: 0;\n padding-right: 0;\n font-size: 0.75rem;\n transform: rotate(-180deg);\n }\n `,\n ],\n})\nexport class CsChevronComponent {\n @Input() chevronKind: ChevronKind = 'down';\n}\n\nexport type ChevronKind = 'up' | 'down';\n","@if (isLegacy) {\n <div class=\"casino-game-tile-desc-container\">\n <div class=\"container-icon\">\n @if (iconClass) {\n <!-- We need icon component here -->\n <div id=\"cs-icon\" class=\"cs-icon\" [ngClass]=\"iconClass\"></div>\n }\n </div>\n\n <div class=\"container-desc-text\">\n @if (titleText) {\n <div id=\"cs-title-text\" class=\"title-uk\" [style]=\"titleInlineStyle\">{{ titleText }}</div>\n }\n\n @if (subtitleText) {\n <div id=\"cs-subtitle-text\" class=\"subtitle-uk\" [class]=\"subtitleClass\" [style]=\"subtitleInlineStyle\">\n {{ subtitleText }}\n </div>\n }\n </div>\n </div>\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\n@Component({\n selector: 'cs-container-description',\n templateUrl: './container-description.component.html',\n standalone: true,\n styleUrl: './container-description.component.scss',\n imports: [NgClass],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContainerDescriptionComponent {\n @Input() iconClass = '';\n @Input() subtitleClass = '';\n @Input() titleText = '';\n @Input() subtitleText = '';\n @Input() titleInlineStyle = '';\n @Input() subtitleInlineStyle = '';\n @Input({ transform: booleanAttribute }) isLegacy = false;\n}\n","/* eslint-disable @nx/enforce-module-boundaries */\n/* eslint-disable @angular-eslint/component-max-inline-declarations */\nimport { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\nimport {\n DS_BUTTON_KIND_ARRAY as CS_CTA_KIND_ARRAY,\n DS_BUTTON_SIZES_ARRAY as CS_CTA_SIZES_ARRAY,\n DS_BUTTON_VARIANTS_ARRAY as CS_CTA_VARIANTS_ARRAY,\n DsButtonKind as CsCtaKind,\n DsButtonSize as CsCtaSize,\n DsButtonVariant as CsCtaVariant,\n DsButton,\n} from '@frontend/ui/button';\n\n/*\n Don't use this. Soon will be removed.\n It has identical template redundancy with DsButton\n*/\n@Component({\n selector: 'cs-cta',\n template: `\n <button\n ds-button\n [kind]=\"kind\"\n [variant]=\"variant\"\n [size]=\"size\"\n [class]=\"casinoDsClass\"\n [class.ds-btn-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [style]=\"inlineStyle\">\n <ng-content slot=\"start\" select=\"[slot=start]\"></ng-content>\n {{ cta_text }}\n <ng-content slot=\"end\" select=\"[slot=end]\"></ng-content>\n </button>\n `,\n standalone: true,\n styleUrl: './cs-cta.component.scss',\n imports: [DsButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CsCtaComponent implements CsCtaViewModel {\n @Input() size: CsCtaSize = 'large';\n @Input() variant: CsCtaVariant = 'filled';\n @Input() kind: CsCtaKind = 'primary';\n @Input() cta_text = '';\n @Input() casinoDsClass = '';\n @Input() inlineStyle = '';\n @Input({ transform: booleanAttribute }) disabled = false;\n}\n\nexport { CS_CTA_KIND_ARRAY, CS_CTA_SIZES_ARRAY, CS_CTA_VARIANTS_ARRAY, CsCtaKind, CsCtaSize, CsCtaVariant };\n\nexport interface CsCtaViewModel {\n size: CsCtaSize;\n variant: CsCtaVariant;\n kind: CsCtaKind;\n cta_text: string;\n casinoDsClass: string;\n disabled: boolean;\n // Color customisation properties, experimental, start\n inlineStyle: string;\n // Color customisation properties, experimental, end\n}\n","@if (!isLegacy) {\n <cs-cta\n class=\"cs-cta\"\n [kind]=\"kind\"\n [variant]=\"variant\"\n [size]=\"size\"\n [casinoDsClass]=\"casinoDsClass\"\n [cta_text]=\"cta_text\"\n [disabled]=\"disabled\"\n [inlineStyle]=\"getComputerStyle()\">\n <ng-content slot=\"start\" select=\"[slot=start]\"></ng-content>\n {{ cta_text }}\n <ng-content slot=\"end\" select=\"[slot=end]\"></ng-content>\n </cs-cta>\n}\n\n@if (isLegacy) {\n <button class=\"btn\" data-decoratorclass-host data-legacy=\"true\" [class.btn-primary]=\"kind === 'primary'\" [style]=\"getComputerStyle()\">\n {{ cta_text }}\n </button>\n}\n","import { ChangeDetectionStrategy, Component, Input, booleanAttribute, numberAttribute } from '@angular/core';\n\nimport { CsCtaComponent, CsCtaKind, CsCtaSize, CsCtaVariant } from '../cs-cta/cs-cta.component';\n\n@Component({\n selector: 'cs-gametile-cta',\n templateUrl: './gametile-cta.component.html',\n styleUrl: './gametile-cta.component.scss',\n standalone: true,\n imports: [CsCtaComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GameTileCtaComponent implements GameTileCtaViewModel, GameTileCtaLegacyViewModel, GameTileCtaViewBinding {\n @Input() size: CsCtaSize = 'large';\n @Input() variant: CsCtaVariant = 'filled';\n @Input() kind: CsCtaKind = 'primary';\n @Input() cta_text = '';\n @Input() casinoDsClass = '';\n @Input() customBgColor = '';\n @Input() customTextColor = '';\n @Input() inlineStyle = '';\n @Input({ transform: booleanAttribute }) isLegacy = false;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: numberAttribute }) ctaWidth: number | undefined;\n\n getComputerStyle() {\n return `width: ${this.ctaWidth}%; background-color: ${this.customBgColor}; color: ${this.customTextColor}; ${this.inlineStyle}`;\n }\n}\n\nexport interface GameTileCtaViewModel {\n size: CsCtaSize;\n variant: CsCtaVariant;\n kind: CsCtaKind;\n cta_text: string;\n casinoDsClass: string;\n inlineStyle: string;\n customBgColor: string;\n customTextColor: string;\n disabled: boolean;\n ctaWidth: number | undefined;\n}\n\nexport interface GameTileCtaLegacyViewModel {\n isLegacy: boolean;\n}\n\ninterface GameTileCtaViewBinding {\n getComputerStyle(): string;\n}\n","@if (!isLegacy) {\n <cs-cta [kind]=\"kind\" [variant]=\"variant\" [size]=\"size\" [casinoDsClass]=\"casinoDsClass\" [cta_text]=\"cta_text\" [inlineStyle]=\"inlineStyle\">\n <ng-content slot=\"start\" select=\"[slot=start]\"></ng-content>\n {{ cta_text }}\n <ng-content slot=\"end\" select=\"[slot=end]\"></ng-content>\n </cs-cta>\n}\n\n@if (isLegacy) {\n <button class=\"btn\" data-decoratorclass-host data-legacy=\"true\" [class.btn-primary]=\"kind === 'primary'\" [style]=\"inlineStyle\">\n {{ cta_text }}\n </button>\n}\n","import { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\nimport { CsCtaComponent, CsCtaKind, CsCtaSize, CsCtaVariant } from '../cs-cta/cs-cta.component';\n\n@Component({\n selector: 'cs-global-jackpot-cta',\n templateUrl: './global-jackpot-cta.component.html',\n standalone: true,\n imports: [CsCtaComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GlobalJackpotCtaComponent implements GlobalJackpotCtaViewModel, GlobalJackpotCtaLegacyViewModel {\n @Input() size: CsCtaSize = 'large';\n @Input() variant: CsCtaVariant = 'filled';\n @Input() kind: CsCtaKind = 'primary';\n @Input() cta_text = '';\n @Input({ transform: booleanAttribute }) isLegacy = false;\n @Input() casinoDsClass = '';\n @Input() inlineStyle = '';\n}\n\nexport interface GlobalJackpotCtaViewModel {\n size: CsCtaSize;\n variant: CsCtaVariant;\n kind: CsCtaKind;\n cta_text: string;\n casinoDsClass: string;\n inlineStyle: string;\n}\n\nexport interface GlobalJackpotCtaLegacyViewModel {\n isLegacy: boolean;\n}\n","@if (showIcon) {\n @if (!isLegacy) {\n <cs-cta class=\"cs-cta\" [kind]=\"kind\" [variant]=\"variant\" [size]=\"size\" [cta_text]=\"cta_text\" [casinoDsClass]=\"casinoDsClass\">\n <ng-content slot=\"start\" select=\"[slot=start]\"></ng-content>\n {{ cta_text }}\n <ng-content slot=\"end\" select=\"[slot=end]\"></ng-content>\n </cs-cta>\n }\n\n @if (isLegacy) {\n <div id=\"cs-more-info\" class=\"cs-overlay-moreinfo\">\n {{ cta_text }}\n </div>\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\nimport { CsCtaComponent, CsCtaKind, CsCtaSize, CsCtaVariant } from '../cs-cta/cs-cta.component';\n\n@Component({\n selector: 'cs-hyperlink-cta',\n templateUrl: './hyperlink-cta.component.html',\n standalone: true,\n styleUrl: './hyperlink-cta.component.scss',\n imports: [CsCtaComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HyperLinkCtaComponent {\n @Input() size: CsCtaSize = 'large';\n @Input() variant: CsCtaVariant = 'filled';\n @Input() kind: CsCtaKind = 'primary';\n @Input() cta_text = '';\n @Input() casinoDsClass = '';\n @Input({ transform: booleanAttribute }) isLegacy = false;\n @Input({ transform: booleanAttribute }) showIcon = true;\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cs-class-icon',\n template: `\n @if (startIconClass) {\n <div data-decoratorclass-host [class]=\"startIconClass\"></div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CsClassIconComponent implements CsClassIconViewModel {\n @Input() startIconClass = '';\n}\n\nexport interface CsClassIconViewModel {\n startIconClass: string;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\nimport { CsClassIconComponent } from '../../icons/class-icon/class-icon.component';\n\n@Component({\n selector: 'cs-rp-fav-cta-legacy',\n templateUrl: './rp-fav-cta-legacy.component.html',\n standalone: true,\n imports: [CommonModule, CsClassIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RpFavCtaLegacyComponent implements RpFavCtaLegacyViewModel {\n @Input() color = '';\n @Input() backgroundColor = '';\n @Input() startIconClass = '';\n @Input() endIconClass = '';\n @Input({ transform: booleanAttribute }) isFav = false;\n @Input({ transform: booleanAttribute }) setActive = false;\n}\n\nexport interface RpFavCtaLegacyViewModel {\n color: string;\n backgroundColor: string;\n startIconClass: string;\n endIconClass: string;\n isFav: boolean;\n setActive: boolean;\n}\n","<button\n style=\"display: inline-flex\"\n class=\"btn btn-primary\"\n [class.rcp-fav-btn]=\"isFav ? true : null\"\n [class.rcp-widget-btn]=\"!isFav ? true : null\"\n [class.activebtn]=\"setActive ? true : null\"\n [class.inactive]=\"!setActive ? true : null\"\n [style.color]=\"color\"\n [style.background-color]=\"backgroundColor\">\n <cs-class-icon [startIconClass]=\"startIconClass\"></cs-class-icon>\n <ng-content></ng-content>\n <i class=\"theme-arrow-down\" [class.theme-arrow-up]=\"!setActive ? true : null\"></i>\n</button>\n","@if (!isLegacy) {\n <cs-gametile-cta\n [kind]=\"kind\"\n [variant]=\"variant\"\n [size]=\"size\"\n [customBgColor]=\"backgroundColor\"\n [customTextColor]=\"color\"\n [cta_text]=\"cta_text\"\n [isLegacy]=\"isLegacy\">\n @if (startIconClass) {\n <cs-class-icon slot=\"start\" [startIconClass]=\"startIconClass\"></cs-class-icon>\n }\n {{ cta_text }}\n <cs-chevron slot=\"end\" [chevronKind]=\"chevronKind\"></cs-chevron>\n </cs-gametile-cta>\n}\n\n<!-- This is legacy and can be omitted after moving to design system completely -->\n@if (isLegacy) {\n <cs-rp-fav-cta-legacy\n [isFav]=\"isFav\"\n [setActive]=\"setActive\"\n [color]=\"color\"\n [backgroundColor]=\"backgroundColor\"\n [startIconClass]=\"startIconClass\"\n [endIconClass]=\"endIconClass\">\n {{ cta_text }}\n </cs-rp-fav-cta-legacy>\n}\n","import { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\nimport { ChevronKind, CsChevronComponent } from '../../chevron/chevron.component';\nimport { CsClassIconComponent } from '../../icons/class-icon/class-icon.component';\nimport { CsCtaKind, CsCtaSize, CsCtaVariant } from '../cs-cta/cs-cta.component';\nimport { GameTileCtaComponent } from '../gametile-cta/gametile-cta.component';\nimport { RpFavCtaLegacyComponent, RpFavCtaLegacyViewModel } from './rp-fav-cta-legacy.component';\n\n@Component({\n selector: 'cs-rp-fav-cta',\n templateUrl: './rp-fav-cta.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GameTileCtaComponent, RpFavCtaLegacyComponent, CsChevronComponent, CsClassIconComponent],\n})\nexport class RpFavWidgetCtaComponent implements RpFavWidgetCtaViewModel, RpFavWidgetCtaViewBinding, RpFavCtaLegacyViewModel {\n size: CsCtaSize = 'medium';\n variant: CsCtaVariant = 'filled';\n kind: CsCtaKind = 'primary';\n @Input() chevronKind: ChevronKind = 'down';\n @Input() cta_text = 'XXX';\n @Input() color = '';\n @Input() backgroundColor = '';\n @Input() startIconClass = '';\n @Input() endIconClass = '';\n @Input({ transform: booleanAttribute }) isLegacy = false;\n @Input({ transform: booleanAttribute }) isFav = false;\n @Input({ transform: booleanAttribute }) setActive = false;\n}\n\nexport interface RpFavWidgetCtaViewModel {\n cta_text: string;\n color: string;\n backgroundColor: string;\n startIconClass: string;\n chevronKind: ChevronKind;\n}\n\ninterface RpFavWidgetCtaViewBinding {\n size: CsCtaSize;\n variant: CsCtaVariant;\n kind: CsCtaKind;\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cs-image-icon',\n template: ` @if (imgSrc) {\n <img [src]=\"imgSrc\" [alt]=\"altText\" />\n }`,\n styles: ['img { width: 100%; height: 100%; display: block; }'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CsImageIconComponent implements CsImageIconViewModel {\n @Input() imgSrc = '';\n @Input() altText = 'image not found';\n}\n\nexport interface CsImageIconViewModel {\n imgSrc: string;\n altText: string;\n}\n","@if (!isLegacy) {\n <cs-cta\n [kind]=\"kind\"\n [variant]=\"variant\"\n [size]=\"size\"\n [casinoDsClass]=\"casinoDsClass\"\n [disabled]=\"disabled\"\n [cta_text]=\"'' + (coinsForOptin || cta_text)\">\n <cs-class-icon\n slot=\"end\"\n [startIconClass]=\"startIconClass\"\n [style.display]=\"(startIconClass || '').trim() === '' ? 'none' : 'unset'\"></cs-class-icon>\n\n <cs-image-icon\n slot=\"end\"\n style=\"position: relative\"\n [imgSrc]=\"imgSrc\"\n [style.display]=\"(imgSrc || '').trim() === '' ? 'none' : 'unset'\"></cs-image-icon>\n </cs-cta>\n}\n\n@if (isLegacy) {\n <button class=\"btn btn-primary\" data-decoratorclass-host data-legacy=\"true\" [class.btn-primary]=\"kind === 'primary'\" [disabled]=\"disabled\">\n {{ cta_text }}\n @if (coinsForOptin) {\n <ng-container>\n <span class=\"sr-card-total-coin\">\n <span>{{ coinsForOptin }}</span>\n @if (imgSrc) {\n <img class=\"coin-img\" alt=\"Coin Image\" width=\"23px\" height=\"23px\" alt=\"image not found\" [src]=\"imgSrc\" />\n }\n </span>\n </ng-container>\n }\n @if (startIconClass) {\n <i class=\"alert-icon\" [class]=\"startIconClass\"></i>\n }\n </button>\n}\n","/* eslint-disable @angular-eslint/no-host-metadata-property */\nimport { ChangeDetectionStrategy, Component, Input, booleanAttribute, numberAttribute } from '@angular/core';\n\nimport { CsClassIconComponent } from '../../icons/class-icon/class-icon.component';\nimport { CsImageIconComponent } from '../../icons/image-icon/image-icon.component';\nimport { CsCtaComponent, CsCtaKind, CsCtaSize, CsCtaVariant } from '../cs-cta/cs-cta.component';\n\n@Component({\n selector: 'cs-slotrace-cta',\n templateUrl: './slotrace-cta.component.html',\n standalone: true,\n imports: [CsCtaComponent, CsImageIconComponent, CsClassIconComponent],\n host: {\n '[style]': \"disabled ? 'pointer-events:none' : ''\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlotRaceCtaComponent implements SlotRaceCtaViewModel, SlotRaceCtaLegacyViewModel {\n @Input() cta_text = '';\n @Input() imgSrc = '';\n @Input() startIconClass = '';\n @Input({ transform: booleanAttribute }) isLegacy = false;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input() casinoDsClass = '';\n\n // Legacy Properties, start\n @Input({ transform: numberAttribute }) coinsForOptin: number | undefined;\n @Input() size: CsCtaSize = 'large';\n @Input() variant: CsCtaVariant = 'filled';\n @Input() kind: CsCtaKind = 'primary';\n}\n\nexport interface SlotRaceCtaViewModel {\n size: CsCtaSize;\n variant: CsCtaVariant;\n kind: CsCtaKind;\n cta_text: string;\n casinoDsClass: string;\n startIconClass: string;\n imgSrc: string;\n disabled: boolean;\n coinsForOptin: number | undefined;\n}\n\nexport interface SlotRaceCtaLegacyViewModel {\n isLegacy: boolean;\n}\n","@if (categoryNametext() || gameNametext() || gameTypeText()) {\n <div class=\"cs-game-content-container game-content-default-version\" [class]=\"customCategoryContainerClass()\">\n @if (categoryNametext()) {\n <div class=\"category-name\" [class]=\"customCategoryNameClass()\" [style]=\"inlineStyleCategoryName()\">\n {{ categoryNametext() }}\n </div>\n }\n @if (gameNametext()) {\n <div id=\"game-name\" class=\"game-name\" [class]=\"customGameNameClass()\" [style]=\"inlineStyleGameName()\">\n {{ gameNametext() }}\n </div>\n }\n @if (gameTypeText()) {\n <div class=\"game-type\" [class]=\"customGameTypeClass()\" [style]=\"inlineStyleGameType()\">\n {{ gameTypeText() }}\n </div>\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'cs-tile-footer',\n standalone: true,\n imports: [],\n templateUrl: './tile-footer.component.html',\n styleUrl: './tile-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TileFooterComponent {\n categoryNametext = input('');\n gameNametext = input('');\n gameTypeText = input('');\n inlineStyleCategoryName = input('');\n inlineStyleGameName = input('');\n inlineStyleGameType = input('');\n isLegacy = input(false);\n customCategoryContainerClass = input('');\n customCategoryNameClass = input('');\n customGameNameClass = input('');\n customGameTypeClass = input('');\n}\n","import { Subject, of, Observable, ReplaySubject, never, empty } from 'rxjs';\nimport { filter, tap, take, mergeMap, map, catchError, switchMap, startWith, sampleTime, share } from 'rxjs/operators';\nimport { isPlatformServer } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, NgModule } from '@angular/core';\nfunction getNavigator() {\n return typeof window !== 'undefined' ? window.navigator : undefined;\n}\nfunction isChildOfPicture(element) {\n return Boolean(element.parentElement && element.parentElement.nodeName.toLowerCase() === 'picture');\n}\nfunction isImageElement(element) {\n return element.nodeName.toLowerCase() === 'img';\n}\nfunction setImage(element, imagePath, useSrcset) {\n if (isImageElement(element)) {\n if (useSrcset && 'srcset' in element) {\n element.srcset = imagePath;\n } else {\n element.src = imagePath;\n }\n } else {\n element.style.backgroundImage = `url('${imagePath}')`;\n }\n return element;\n}\nfunction setSources(attrName) {\n return image => {\n const sources = image.parentElement.getElementsByTagName('source');\n for (let i = 0; i < sources.length; i++) {\n const attrValue = sources[i].getAttribute(attrName);\n if (attrValue) {\n // Check if `srcset` is supported by the current browser\n if ('srcset' in sources[i]) {\n sources[i].srcset = attrValue;\n } else {\n sources[i].src = attrValue;\n }\n }\n }\n };\n}\nconst setSourcesToDefault = setSources('defaultImage');\nconst setSourcesToLazy = setSources('lazyLoad');\nconst setSourcesToError = setSources('errorImage');\nfunction setImageAndSources(setSourcesFn) {\n return (element, imagePath, useSrcset) => {\n if (isImageElement(element) && isChildOfPicture(element)) {\n setSourcesFn(element);\n }\n if (imagePath) {\n setImage(element, imagePath, useSrcset);\n }\n };\n}\nconst setImageAndSourcesToDefault = setImageAndSources(setSourcesToDefault);\nconst setImageAndSourcesToLazy = setImageAndSources(setSourcesToLazy);\nconst setImageAndSourcesToError = setImageAndSources(setSourcesToError);\nclass Hooks {\n constructor() {\n this.navigator = getNavigator();\n }\n setPlatformId(platformId) {\n this.platformId = platformId;\n }\n onDestroy(attributes) {}\n onAttributeChange(newAttributes) {}\n}\nconst cssClassNames = {\n loaded: 'ng-lazyloaded',\n loading: 'ng-lazyloading',\n failed: 'ng-failed-lazyloaded'\n};\nfunction removeCssClassName(element, cssClassName) {\n element.className = element.className.replace(cssClassName, '');\n}\nfunction addCssClassName(element, cssClassName) {\n if (!element.className.includes(cssClassName)) {\n element.className += ` ${cssClassName}`;\n }\n}\nfunction hasCssClassName(element, cssClassName) {\n return element.className && element.className.includes(cssClassName);\n}\nclass SharedHooks extends Hooks {\n setup(attributes) {\n setImageAndSourcesToDefault(attributes.element, attributes.defaultImagePath, attributes.useSrcset);\n if (attributes.imagePath) {\n addCssClassName(attributes.element, cssClassNames.loading);\n }\n if (hasCssClassName(attributes.element, cssClassNames.loaded)) {\n removeCssClassName(attributes.element, cssClassNames.loaded);\n }\n }\n finally(attributes) {\n addCssClassName(attributes.element, cssClassNames.loaded);\n removeCssClassName(attributes.element, cssClassNames.loading);\n }\n loadImage(attributes) {\n if (this.skipLazyLoading(attributes)) {\n // Set the image right away for bots for better SEO\n return [attributes.imagePath];\n }\n const {\n element,\n useSrcset,\n imagePath,\n decode\n } = attributes;\n let img;\n if (isImageElement(element) && isChildOfPicture(element)) {\n const parentClone = element.parentNode.cloneNode(true);\n img = parentClone.getElementsByTagName('img')[0];\n setSourcesToLazy(img);\n setImage(img, imagePath, useSrcset);\n } else {\n img = new Image();\n if (isImageElement(element) && element.referrerPolicy) {\n img.referrerPolicy = element.referrerPolicy;\n }\n if (isImageElement(element) && element.sizes) {\n img.sizes = element.sizes;\n }\n if (useSrcset && 'srcset' in img) {\n img.srcset = imagePath;\n } else {\n img.src = imagePath;\n }\n }\n if (decode && img.decode) {\n return img.decode().then(() => imagePath);\n }\n return new Promise((resolve, reject) => {\n img.onload = () => resolve(imagePath);\n img.onerror = () => reject(null);\n });\n }\n setErrorImage(error, attributes) {\n const {\n element,\n useSrcset,\n errorImagePath\n } = attributes;\n setImageAndSourcesToError(element, errorImagePath, useSrcset);\n addCssClassName(element, cssClassNames.failed);\n }\n setLoadedImage(imagePath, attributes) {\n const {\n element,\n useSrcset\n } = attributes;\n setImageAndSourcesToLazy(element, imagePath, useSrcset);\n }\n isDisabled() {\n // Disable if SSR and the user isn't a bot\n return isPlatformServer(this.platformId) && !this.isBot();\n }\n skipLazyLoading(attributes) {\n return this.isBot(attributes);\n }\n isBot(attributes) {\n if (this.navigator?.userAgent) {\n return /googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\\ link\\ preview|showyoubot|outbrain|pinterest\\/0\\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp|duckduckbot|prerender/i.test(this.navigator.userAgent);\n }\n return false;\n }\n}\nclass IntersectionObserverHooks extends SharedHooks {\n constructor() {\n super(...arguments);\n this.observers = new WeakMap();\n this.intersectionSubject = new Subject();\n this.uniqKey = {};\n }\n getObservable(attributes) {\n if (this.skipLazyLoading(attributes)) {\n return of({\n isIntersecting: true\n });\n }\n if (attributes.customObservable) {\n return attributes.customObservable;\n }\n const scrollContainerKey = attributes.scrollContainer || this.uniqKey;\n const options = {\n root: attributes.scrollContainer || null\n };\n if (attributes.offset) {\n options.rootMargin = `${attributes.offset}px`;\n }\n let observer = this.observers.get(scrollContainerKey);\n if (!observer) {\n observer = new IntersectionObserver(entrys => this.loadingCallback(entrys), options);\n this.observers.set(scrollContainerKey, observer);\n }\n observer.observe(attributes.element);\n return Observable.create(obs => {\n const subscription = this.intersectionSubject.pipe(filter(entry => entry.target === attributes.element)).subscribe(obs);\n return () => {\n subscription.unsubscribe();\n observer.unobserve(attributes.element);\n };\n });\n }\n isVisible(event) {\n return event.isIntersecting;\n }\n loadingCallback(entrys) {\n entrys.forEach(entry => this.intersectionSubject.next(entry));\n }\n}\nfunction lazyLoadImage(hooks, attributes) {\n return evntObservable => {\n return evntObservable.pipe(tap(data => attributes.onStateChange.emit({\n reason: 'observer-emit',\n data\n })), filter(event => hooks.isVisible(event, attributes)), take(1), tap(() => attributes.onStateChange.emit({\n reason: 'start-loading'\n })), mergeMap(() => hooks.loadImage(attributes)), tap(() => attributes.onStateChange.emit({\n reason: 'mount-image'\n })), tap(imagePath => hooks.setLoadedImage(imagePath, attributes)), tap(() => attributes.onStateChange.emit({\n reason: 'loading-succeeded'\n })), map(() => true), catchError(error => {\n attributes.onStateChange.emit({\n reason: 'loading-failed',\n data: error\n });\n hooks.setErrorImage(error, attributes);\n return of(false);\n }), tap(() => {\n attributes.onStateChange.emit({\n reason: 'finally'\n });\n hooks.finally(attributes);\n }));\n };\n}\nconst LAZYLOAD_IMAGE_HOOKS = new InjectionToken('LazyLoadImageHooks');\nlet LazyLoadImageDirective = /*#__PURE__*/(() => {\n class LazyLoadImageDirective {\n constructor(el, ngZone, platformId, hooks) {\n this.onStateChange = new EventEmitter(); // Emits an event on every state change\n this.elementRef = el;\n this.ngZone = ngZone;\n this.propertyChanges$ = new ReplaySubject();\n this.hooks = hooks;\n this.hooks.setPlatformId(platformId);\n this.uid = Math.random().toString(36).substr(2, 9);\n }\n ngOnChanges() {\n if (this.debug === true && !this.debugSubscription) {\n this.debugSubscription = this.onStateChange.subscribe(e => console.log(e));\n }\n this.propertyChanges$.next({\n element: this.elementRef.nativeElement,\n imagePath: this.lazyImage,\n defaultImagePath: this.defaultImage,\n errorImagePath: this.errorImage,\n useSrcset: this.useSrcset,\n offset: this.offset ? this.offset | 0 : 0,\n scrollContainer: this.scrollTarget,\n customObservable: this.customObservable,\n decode: this.decode,\n onStateChange: this.onStateChange,\n id: this.uid\n });\n }\n ngAfterContentInit() {\n if (this.hooks.isDisabled()) {\n return null;\n }\n this.ngZone.runOutsideAngular(() => {\n this.loadSubscription = this.propertyChanges$.pipe(tap(attributes => this.hooks.onAttributeChange(attributes)), tap(attributes => attributes.onStateChange.emit({\n reason: 'setup'\n })), tap(attributes => this.hooks.setup(attributes)), switchMap(attributes => {\n if (!attributes.imagePath) {\n return never();\n }\n return this.hooks.getObservable(attributes).pipe(lazyLoadImage(this.hooks, attributes));\n })).subscribe({\n next: () => null\n });\n });\n }\n ngOnDestroy() {\n this.propertyChanges$.pipe(take(1)).subscribe({\n next: attributes => this.hooks.onDestroy(attributes)\n }).unsubscribe();\n this.loadSubscription?.unsubscribe();\n this.debugSubscription?.unsubscribe();\n }\n }\n LazyLoadImageDirective.ɵfac = function LazyLoadImageDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LazyLoadImageDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(LAZYLOAD_IMAGE_HOOKS));\n };\n LazyLoadImageDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LazyLoadImageDirective,\n selectors: [[\"\", \"lazyLoad\", \"\"]],\n inputs: {\n lazyImage: [0, \"lazyLoad\", \"lazyImage\"],\n defaultImage: \"defaultImage\",\n errorImage: \"errorImage\",\n scrollTarget: \"scrollTarget\",\n customObservable: \"customObservable\",\n offset: \"offset\",\n useSrcset: \"useSrcset\",\n decode: \"decode\",\n debug: \"debug\"\n },\n outputs: {\n onStateChange: \"onStateChange\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return LazyLoadImageDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet LazyLoadImageModule = /*#__PURE__*/(() => {\n class LazyLoadImageModule {}\n LazyLoadImageModule.ɵfac = function LazyLoadImageModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LazyLoadImageModule)();\n };\n LazyLoadImageModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: LazyLoadImageModule\n });\n LazyLoadImageModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: LAZYLOAD_IMAGE_HOOKS,\n useClass: IntersectionObserverHooks\n }]\n });\n return LazyLoadImageModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass Rect {\n constructor(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n static fromElement(element) {\n const {\n left,\n top,\n right,\n bottom\n } = element.getBoundingClientRect();\n if (left === 0 && top === 0 && right === 0 && bottom === 0) {\n return Rect.empty;\n } else {\n return new Rect(left, top, right, bottom);\n }\n }\n static fromWindow(_window) {\n return new Rect(0, 0, _window.innerWidth, _window.innerHeight);\n }\n inflate(inflateBy) {\n this.left -= inflateBy;\n this.top -= inflateBy;\n this.right += inflateBy;\n this.bottom += inflateBy;\n }\n intersectsWith(rect) {\n return rect.left < this.right && this.left < rect.right && rect.top < this.bottom && this.top < rect.bottom;\n }\n getIntersectionWith(rect) {\n const left = Math.max(this.left, rect.left);\n const top = Math.max(this.top, rect.top);\n const right = Math.min(this.right, rect.right);\n const bottom = Math.min(this.bottom, rect.bottom);\n if (right >= left && bottom >= top) {\n return new Rect(left, top, right, bottom);\n } else {\n return Rect.empty;\n }\n }\n}\nRect.empty = new Rect(0, 0, 0, 0);\nclass ScrollHooks extends SharedHooks {\n constructor() {\n super(...arguments);\n this.getWindow = () => window;\n this.scrollListeners = new WeakMap();\n // Only create one scroll listener per target and share the observable.\n // Typical, there will only be one observable per application\n this.getScrollListener = scrollTarget => {\n if (!scrollTarget || typeof scrollTarget.addEventListener !== 'function') {\n console.warn('`addEventListener` on ' + scrollTarget + ' (scrollTarget) is not a function. Skipping this target');\n return empty();\n }\n const scrollListener = this.scrollListeners.get(scrollTarget);\n if (scrollListener) {\n return scrollListener;\n }\n const srollEvent = Observable.create(observer => {\n const eventName = 'scroll';\n const handler = event => observer.next(event);\n const options = {\n passive: true,\n capture: false\n };\n scrollTarget.addEventListener(eventName, handler, options);\n return () => scrollTarget.removeEventListener(eventName, handler, options);\n });\n const listener = this.sampleObservable(srollEvent);\n this.scrollListeners.set(scrollTarget, listener);\n return listener;\n };\n }\n getObservable(attributes) {\n if (this.skipLazyLoading(attributes)) {\n return of('load');\n } else if (attributes.customObservable) {\n return attributes.customObservable.pipe(startWith(''));\n } else if (attributes.scrollContainer) {\n return this.getScrollListener(attributes.scrollContainer);\n }\n return this.getScrollListener(this.getWindow());\n }\n isVisible(event, attributes) {\n const elementBounds = Rect.fromElement(attributes.element);\n if (elementBounds === Rect.empty) {\n return false;\n }\n const windowBounds = Rect.fromWindow(this.getWindow());\n elementBounds.inflate(attributes.offset);\n if (attributes.scrollContainer) {\n const scrollContainerBounds = Rect.fromElement(attributes.scrollContainer);\n const intersection = scrollContainerBounds.getIntersectionWith(windowBounds);\n return elementBounds.intersectsWith(intersection);\n } else {\n return elementBounds.intersectsWith(windowBounds);\n }\n }\n sampleObservable(obs, scheduler) {\n return obs.pipe(sampleTime(100, scheduler), share(), startWith(''));\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Hooks, IntersectionObserverHooks, LAZYLOAD_IMAGE_HOOKS, LazyLoadImageDirective, LazyLoadImageModule, ScrollHooks, SharedHooks };\n","<div class=\"casino-image-loader\">\n @if (isLegacy) {\n @if (!disableLazyLoading && isDll && !enableFallback) {\n <img\n alt=\"no-fallback\"\n [style]=\"computedStyle()\"\n [lazyLoad]=\"src()\"\n [defaultImage]=\"isImageLoaded ? src() : defaultSrc\"\n [ngClass]=\"{ 'game-image-block-version': isBlockModuleVersion(), 'game-image-default-version': !isBlockModuleVersion() }\"\n (onStateChange)=\"onImageStateChanged($event)\"\n (error)=\"onGameIconError(src())\" />\n } @else {\n <img alt=\"disableLazy\" [src]=\"src()\" (error)=\"onGameIconError(src())\" />\n }\n }\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, booleanAttribute, computed, input } from '@angular/core';\n\nimport { LazyLoadImageModule, StateChange } from 'ng-lazyload-image';\n\nimport { IntersectionObserverDirective } from '../../utils/intersection-observer/intersection-observer.directive';\n\nexport enum IntersectionStatus {\n Visible = 'Visible',\n Pending = 'Pending',\n NotVisible = 'NotVisible',\n}\n\nexport class ImageStyles {\n gameTileBorderRadius: string | undefined;\n}\n\n@Component({\n selector: 'cs-image-loader',\n templateUrl: './image-loader.component.html',\n standalone: true,\n styleUrl: './image-loader.component.scss',\n imports: [LazyLoadImageModule, IntersectionObserverDirective, NgClass],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageLoaderComponent {\n @Input({ transform: booleanAttribute }) isLegacy = true;\n @Input({ transform: booleanAttribute }) disableLazyLoading = true;\n @Input({ transform: booleanAttribute }) isDll = true;\n @Input({ transform: booleanAttribute }) enableFallback = true;\n @Input({ transform: booleanAttribute }) isImageLoaded = false;\n @Input() defaultSrc: string;\n readonly src = input.required<string>();\n readonly lazySrc = input.required<string>();\n readonly icon = input.required<ImageStyles>();\n readonly isBlockModuleVersion = input<boolean>(false);\n\n @Output() readonly visibilityChanged = new EventEmitter<IntersectionStatus>();\n computedStyle = computed(() => this.getComputedStyle(this.icon()));\n\n onImageStateChanged(event: StateChange) {\n if (event.reason === 'loading-succeeded') {\n this.isImageLoaded = true;\n }\n }\n\n onGameIconError(src: string): void {\n this.defaultSrc = src;\n }\n\n onVisibilityChanged(elementIntersect: IntersectionStatus) {\n this.visibilityChanged.emit(elementIntersect);\n }\n\n getComputedStyle(icon: ImageStyles) {\n return this.isImageLoaded\n ? `border-radius: ${icon.gameTileBorderRadius}; background-color: 'unset'`\n : `border-radius: ${icon.gameTileBorderRadius};`;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, QueryList, computed, input } from '@angular/core';\n\n/* eslint-disable @nx/enforce-module-boundaries */\n\n/* eslint-disable @angular-eslint/component-max-inline-declarations */\nimport { SwiperComponent } from '@frontend/vanilla/shared/swiper';\n\n@Component({\n selector: 'cs-feature-container',\n standalone: true,\n imports: [SwiperComponent, NgIf],\n templateUrl: './feature-container.component.html',\n styleUrl: './feature-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeatureContainerComponent implements AfterContentInit {\n private defaultChunkSize = 5;\n private defaultSwipeSize = 5;\n\n chunkSize = input(this.defaultChunkSize);\n enableNavigation = input(true);\n swipeSize = input(this.defaultSwipeSize);\n\n swiperOptions = computed(() => ({\n slidesPerView: this.chunkSize(),\n navigation: this.enableNavigation(),\n slidesPerGroup: this.swipeSize(),\n }));\n\n @ContentChildren('containerContent') contentChildren!: QueryList<ElementRef>;\n\n ngAfterContentInit(): void {\n this.contentChildren?.forEach((contentItem) => {\n const contentElement = contentItem.nativeElement as HTMLElement;\n if (!contentElement.classList.contains('swiper-slide')) {\n contentElement.classList.add('swiper-slide');\n }\n });\n }\n}\n","<div id=\"casino-tiles-container\" class=\"casino-tiles-container\">\n <div class=\"top-description-container\">\n <ng-content select=\"[slot=top-left]\" />\n </div>\n <vn-swiper #tilesContentHost [swiperOptions]=\"swiperOptions()\" [showPagination]=\"true\">\n <ng-content />\n </vn-swiper>\n</div>\n","@if (isLegacy && isOptedIn) {\n <div\n class=\"casino-freespins-alignment theme-refresh active\"\n [style.background-color]=\"freespinscountbg\"\n [ngClass]=\"{ 'fsp-gt-count': isThreeDigit }\">\n <span class=\"fsp-text-info\">Free<br />Spins</span>\n @if (!isThreeDigit) {\n <span class=\"fsp-count-info\">\n <b class=\"active\">{{ freespinAvailableCount }}</b\n >/{{ freespinTotalCount }}\n </span>\n }\n @if (isThreeDigit) {\n <span class=\"fsp-count-info\">\n <div>\n <b class=\"active\">{{ freespinAvailableCount }}</b>\n </div>\n <div class=\"fsp-count-border\"></div>\n <div>{{ freespinTotalCount }}</div>\n </span>\n }\n </div>\n <!-- <div\n class=\"casino-freespins-alignment theme-refresh\"\n [style.background-color]=\"freespinscountbg\"\n [ngClass]=\"{ 'fsp-gt-count': isThreeDigit }\"\n *ngIf=\"!isOptedIn\">\n <span class=\"fsp-text-info\">Free<br />Spins</span>\n <span class=\"fsp-count-info\" *ngIf=\"freespinAvailableCount != 0 && freespinTotalCount != 0 && !isThreeDigit\"\n >{{ freespinAvailableCount }}/{{ freespinTotalCount }}</span\n >\n <span class=\"fsp-count-info\" *ngIf=\"freespinAvailableCount != 0 && freespinTotalCount != 0 && isThreeDigit\">\n <div>{{ freespinAvailableCount }}</div>\n <div class=\"fsp-count-border\"></div>\n <div>{{ freespinTotalCount }}</div>\n </span>\n </div> -->\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, booleanAttribute, numberAttribute } from '@angular/core';\n\n@Component({\n selector: 'cs-freespinssummary-icon',\n templateUrl: './freespins-summary-icon.component.html',\n styleUrl: './freespins-summary-icon.component.scss',\n standalone: true,\n imports: [NgClass],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FreeSpinsSummaryIconComponent implements OnInit {\n @Input() freespinscountbg = '';\n @Input({ transform: numberAttribute }) freespinAvailableCount: number;\n @Input({ transform: numberAttribute }) freespinTotalCount: number;\n @Input({ transform: booleanAttribute }) isLegacy = false;\n @Input({ transform: booleanAttribute }) isOptedIn = false;\n isThreeDigit: boolean;\n\n ngOnInit(): void {\n this.isThreeDigit = this.freespinAvailableCount > 99 || this.freespinTotalCount > 99;\n }\n}\n","@if (gradientIndex()) {\n <div class=\"gradient-number-wrapper\" [ngClass]=\"customClassBasedOnNumber\">\n <div id=\"first-num\" class=\"gradient-digit\" [class.second-digit]=\"isMultipleDigit\">{{ gradientIndex() }}</div>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, input } from '@angular/core';\n\n@Component({\n selector: 'cs-gradient-number',\n templateUrl: './gradient-number.component.html',\n styleUrls: ['./gradient-number.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class GradientNumberComponent implements OnInit {\n readonly gradientIndex = input.required<number>();\n readonly SINGLE_DIGIT_THRESHOLD = 9;\n readonly customGradientClassMap: { [key: number]: string } = {\n 1: 'gradient-number-wrapper-for-one',\n 10: 'gradient-number-wrapper-for-ten',\n };\n isMultipleDigit: boolean;\n customClassBasedOnNumber: string;\n\n ngOnInit() {\n this.isMultipleDigit = this.gradientIndex() > this.SINGLE_DIGIT_THRESHOLD;\n this.customClassBasedOnNumber = this.customGradientClassMap[this.gradientIndex()] || 'gradient-number-wrapper-for-others';\n }\n}\n","<div [class]=\"'tile-aggregator ' + currentViewState()\">\n <div class=\"game-tile\">\n <div class=\"top-ten-games-wrapper\">\n <div class=\"game-tile-children\">\n <div class=\"gradient-container\">\n <ng-content select=\"[slot=gradient]\"></ng-content>\n </div>\n <div\n class=\"image-container\"\n [class.hovered]=\"currentViewState() === viewStates.Overlay\"\n (mouseenter)=\"mouseenter()\"\n (mouseleave)=\"mouseleave()\">\n <div class=\"game-badge\" [class.fixed]=\"currentViewState() === viewStates.Normal\">\n <ng-content select=\"[slot=badge]\"></ng-content>\n </div>\n @if (withFav() && (!withOverlay() || currentViewState() === viewStates.Overlay)) {\n <div class=\"positioned-fav-cta\">\n <ng-content select=\"[slot=gametileFavCta]\"></ng-content>\n </div>\n }\n <ng-content select=\"[slot=freespinsSummaryIcon]\"></ng-content>\n <ng-content select=\"[slot=imageLoader]\"></ng-content>\n @if (currentViewState() === viewStates.Normal) {\n <div class=\"positioned-jackpot-ribbon\" [class.fixed]=\"currentViewState() === viewStates.Overlay\">\n <ng-content select=\"[slot=jackpotHotIcon]\"></ng-content>\n </div>\n }\n <div class=\"positioned-mobile-i-icon\">\n <ng-content select=\"[slot=quickInfoIcon]\"></ng-content>\n </div>\n @if (withOverlay()) {\n <div class=\"overlay-container\" [class.view-state-disabled]=\"currentViewState() === viewStates.Disabled\">\n <div [class.overlay-bg]=\"currentViewState() !== viewStates.Disabled\"></div>\n <div [class.overlay-buttons]=\"currentViewState() !== viewStates.Disabled\">\n <ng-content select=\"[slot=gameTileCta]\"></ng-content>\n <ng-content select=\"[slot=hyperlinkCta]\"></ng-content>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"game-tile-children\">\n <div class=\"gradient-container\"></div>\n <ng-content select=\"[slot=gameTileFooter]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\n\nimport { GradientNumberComponent } from '../gradient-numbers/gradient-number.component';\n\n/**\n * Component providing an aggregation context for Top10 Game Tile\n * The component provides 10 different slots for placing all the constituents\n * making-up the game tile across various breakpoints, aka mobile, desktop, tabs etc.\n * Supported slots are:\n * 1. gradient\n * 2. badge\n * 3. freespinsSummaryIcon\n * 4. imageLoader\n * 5. jackpotHotIcon\n * 6. quickInfoIcon\n * 7. gametileFavCta\n * 8. gameTileCta\n * 9. hyperlinkCta\n * 10. gameTileFooter\n */\n@Component({\n selector: 'cs-top10-game-tile-aggregator',\n templateUrl: './tile-aggregation.component.html',\n standalone: true,\n styleUrl: './tile-aggregation.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, CommonModule, GradientNumberComponent],\n})\nexport class TopTenGameTileAggregationComponent {\n /**\n * The corresponding state of view in which the tile is currently,\n * Supported states are:\n * 1. normal\n * 2. overlay\n * 3. disabled\n * overlay state is also activated during mouseover(using css)\n */\n viewStates = TileViewState;\n viewState = input<TopTenTileViewState>(TileViewState.Normal);\n showonMouseHover = false;\n withOverlay = input<boolean>(true);\n currentViewState = signal<TopTenTileViewState>(this.viewState());\n withFav = input<boolean>(true);\n gradientIndex = input<number>(1);\n imageContainerClass: string;\n\n mouseenter() {\n if (this.withOverlay() && this.viewState() === TileViewState.Normal) {\n this.currentViewState.set(TileViewState.Overlay);\n }\n }\n\n mouseleave() {\n if (this.withOverlay()) {\n this.currentViewState.set(this.viewState());\n }\n }\n}\n\nexport enum TileViewState {\n Normal = 'normal',\n Overlay = 'overlay',\n Disabled = 'disabled',\n}\n\nexport type TopTenTileViewState = TileViewState;\n","@if (showIcon()) {\n <div\n id=\"cs-fav-icon\"\n class=\"icon-container theme-favorite-i-non-touch\"\n data-decoratorclass-host\n [class.theme-favorite-i]=\"variant() === favVariants.Filled && iconKind() === favIconKinds.Star\"\n [class.theme-favorite]=\"variant() === favVariants.Hollow && iconKind() === favIconKinds.Star\"\n [class.theme-heart-outline]=\"variant() === favVariants.Hollow && iconKind() === favIconKinds.Heart\"\n [class.theme-heart-solid]=\"variant() === favVariants.Filled && iconKind() === favIconKinds.Heart\"></div>\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input } from '@angular/core';\n\n@Component({\n selector: 'cs-fav-cta',\n styleUrl: './fav-cta.component.scss',\n templateUrl: './fav-cta.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FavCtaComponent {\n favVariants = FavVariantType;\n favIconKinds = FavIconKindType;\n showIcon = input<boolean, string>(false, {\n transform: booleanAttribute,\n });\n variant = input.required<FavVariant>();\n iconKind = input.required<FavIconKind>();\n}\n\nexport enum FavVariantType {\n Filled = 'filled',\n Hollow = 'hollow',\n}\n\nexport enum FavIconKindType {\n Star = 'star',\n Heart = 'heart',\n}\nexport type FavVariant = FavVariantType;\nexport type FavIconKind = FavIconKindType;\n","@if (showIcon()) {\n <div class=\"cs-mobile-i-icon theme-info\" data-decoratorclass-host data-legacy=\"true\"></div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'cs-quick-info-icon',\n templateUrl: './quick-info-icon.component.html',\n styleUrl: './quick-info-icon.component.scss',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class QuickInfoIconComponent {\n showIcon = input<boolean>(false);\n}\n","import { AfterViewInit, Directive, DoCheck, ElementRef, Input } from '@angular/core';\n\ntype NgClassSupportedTypes = string[] | Set<string> | { [klass: string]: any } | null | undefined;\n\nconst WS_REGEXP = /\\s+/;\n\nconst EMPTY_ARRAY: string[] = [];\n\ninterface CssClassState {\n enabled: boolean;\n changed: boolean;\n touched: boolean;\n}\n\n@Directive({\n selector: '[csDecoratorClass]',\n standalone: true,\n})\nexport class DecoratorClassDirective implements DoCheck, AfterViewInit {\n private initialClasses = EMPTY_ARRAY;\n // private rawClass: NgClassSupportedTypes;\n private rawClasses: Array<NgClassSupportedTypes> = [];\n\n private stateMap = new Map<string, CssClassState>();\n private decoratorClassHost!: HTMLElement | null;\n constructor(private _ngEl: ElementRef) {}\n\n ngAfterViewInit(): void {\n this.decoratorClassHost = (this._ngEl.nativeElement as HTMLElement).querySelector('[data-decoratorclass-host]');\n this._applyStateDiff();\n }\n\n @Input()\n set csDecoratorClass(value: string | string[] | Set<string> | { [klass: string]: any } | null | undefined) {\n this.rawClasses.push(typeof value === 'string' ? value.trim().split(WS_REGEXP) : value);\n }\n\n toggleClass(className: string) {\n this._toggleClass(className, true);\n }\n\n ngDoCheck(): void {\n // classes from the [class] binding\n for (const klass of this.initialClasses) {\n this._updateState(klass, true);\n }\n\n // classes from the [decoratorClass] binding\n this.rawClasses.forEach((rawClass) => {\n if (Array.isArray(rawClass) || rawClass instanceof Set) {\n for (const klass of rawClass) {\n this._updateState(klass, true);\n }\n } else if (rawClass != null) {\n for (const klass of Object.keys(rawClass)) {\n this._updateState(klass, Boolean(rawClass[klass]));\n }\n }\n });\n\n this._applyStateDiff();\n }\n\n private _updateState(klass: string, nextEnabled: boolean) {\n const state = this.stateMap.get(klass);\n if (state === undefined) {\n this.stateMap.set(klass, { enabled: nextEnabled, changed: true, touched: true });\n } else {\n if (state.enabled !== nextEnabled) {\n state.changed = true;\n state.enabled = nextEnabled;\n }\n state.touched = true;\n }\n }\n\n private _applyStateDiff() {\n for (const stateEntry of this.stateMap) {\n const klass = stateEntry[0];\n const state = stateEntry[1];\n\n if (state.changed) {\n this._toggleClass(klass, state.enabled);\n state.changed = false;\n } else if (!state.touched) {\n // A class that was previously active got removed from the new collection of classes -\n // remove from the DOM as well.\n if (state.enabled) {\n this._toggleClass(klass, false);\n }\n this.stateMap.delete(klass);\n }\n\n state.touched = false;\n }\n }\n\n private _toggleClass(klass: string, enabled: boolean): void {\n klass = klass.trim();\n if (klass.length > 0) {\n klass.split(WS_REGEXP).forEach((c_lass) => {\n if (enabled) {\n if (this.decoratorClassHost) {\n this.decoratorClassHost.classList.add(c_lass);\n }\n } else {\n if (this.decoratorClassHost) {\n this.decoratorClassHost.classList.remove(c_lass);\n }\n }\n });\n }\n }\n}\n","<div class=\"image-load-div\" [ngStyle]=\"{ position: 'relative' }\">\n @if (isError()) {\n <img class=\"ngoptimizedimage\" [src]=\"src()\" [style]=\"styles()\" alt=\"{{ alt() }}\" />\n } @else {\n <img\n class=\"ngoptimizedimage\"\n placeholder\n fill\n [ngSrc]=\"src()\"\n [style]=\"styles()\"\n alt=\"{{ alt() }}\"\n [priority]=\"priority()\"\n (load)=\"onImageLoad($event)\"\n (error)=\"onImageLoadError($event)\" />\n }\n</div>\n","import { NgOptimizedImage, NgStyle } from '@angular/common';\nimport { Component, computed, input, output, signal } from '@angular/core';\n\n@Component({\n selector: 'cs-image',\n templateUrl: 'image.component.html',\n standalone: true,\n imports: [NgStyle, NgOptimizedImage],\n})\nexport class Image {\n src = input.required<string>();\n isError = input<boolean>();\n alt = input.required<string>();\n priority = input<boolean>(false);\n imageStyle = input<string>('');\n\n readonly loaded = output<Event>();\n readonly loadedFailed = output<Event>();\n\n isLoaded = signal<boolean>(false);\n // Adding inherit to width and height since it is overriding the custom css added in features\n styles = computed<string>(\n () => this.imageStyle() + (this.isLoaded() ? ' position: revert-layer; width: revert-layer; height: revert-layer;' : ''),\n ); // Some images were not loading due to position: absolute\n\n onImageLoad(event: Event) {\n this.loaded.emit(event);\n this.isLoaded.set(true);\n }\n\n onImageLoadError(event: Event) {\n this.loadedFailed.emit(event);\n this.isLoaded.set(true);\n }\n}\n","import { Component, computed, inject, input, signal } from '@angular/core';\n\nimport { Image } from '@frontend/casino-ui';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoManager, CasinoStylesService, GameManagerService } from '../public-api';\n\ninterface ImageConfig {\n src: string;\n gameTileBorderRadius: string;\n}\n\n@Component({\n selector: 'cc-image-loader',\n templateUrl: 'image-loader.component.html',\n standalone: true,\n imports: [Image],\n})\nexport class ImageLoaderComponent {\n icon = input.required<ImageConfig>();\n gameId = input.required<string>();\n iconType = input.required<number>();\n alt = input<string>('');\n priority = input<boolean>(false);\n disableTheme = input<boolean>(false);\n\n src = signal<string>('');\n defaultSrc = signal<string>('');\n host = signal<string>('');\n isImageLoaded = signal<boolean>(false);\n // This signal and lifecycle should be removed once grey image is under the cloudflare domain\n isImageLoadError = signal<boolean>(false);\n\n optimisedSrc = computed<string>(() => {\n return this.src();\n });\n\n computedStyle = computed<string>(() => this.getComputedStyle(this.icon()));\n\n private casinoManagerService = inject(CasinoManager);\n private configProviderService = inject(ConfigProviderService);\n private gameManagerService = inject(GameManagerService);\n private casinoStylesService = inject(CasinoStylesService);\n\n ngOnInit() {\n this.initialiseImageConfig();\n }\n\n private initialiseImageConfig() {\n let gameConfig = this.configProviderService.provideGameConfig();\n let defaultUrl = this.casinoManagerService.getGrayImageUrl();\n let src = this.icon().src;\n\n this.host.set(gameConfig.host);\n this.defaultSrc.set(defaultUrl);\n\n const feature = this.configProviderService.provideFeaturesConfig();\n if (feature.enableGameIconTheming) {\n src = this.casinoStylesService.appendTheme(src, this.gameId());\n }\n\n if (this.disableTheme()) {\n const isImageNotFound = this.gameManagerService.isGameIconNotAvailable(this.gameId(), this.iconType());\n src = isImageNotFound ? this.defaultSrc() : this.icon().src;\n isImageNotFound && this.isImageLoadError.set(true);\n }\n\n this.src.set(src || '');\n }\n\n getComputedStyle(icon: ImageConfig) {\n return `border-radius: ${icon.gameTileBorderRadius}; background-color: unset;`;\n }\n\n onLoad() {\n this.isImageLoaded.set(true);\n }\n\n onLoadError() {\n this.gameManagerService.setGameIconNotFound(this.gameId(), this.iconType());\n this.src.set(this.defaultSrc());\n this.isImageLoadError.set(true);\n }\n}\n","<cs-image\n [src]=\"optimisedSrc()\"\n [imageStyle]=\"computedStyle()\"\n [alt]=\"alt()\"\n [priority]=\"priority()\"\n [isError]=\"isImageLoadError()\"\n (loaded)=\"onLoad()\"\n (loadedFailed)=\"onLoadError()\" />\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, ClientConfigProductName, NativeAppService, ProductService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InvokerProductService {\n invokerProduct: string;\n constructor(\n private appInfoConfig: AppInfoConfig,\n private nativeAppService: NativeAppService,\n private productService: ProductService,\n ) {}\n\n getInvokerProduct(): string {\n // Note: Single domain app condition is temporary, until we move all products to single domain\n if (this.productService.isSingleDomainApp && this.productService.current.name === ClientConfigProductName.HOST) {\n this.productService.setActive(ClientConfigProductName.CASINO);\n }\n\n let appProduct: string = this.productService.isSingleDomainApp\n ? this.productService.current.name\n : this.appInfoConfig?.product?.toLowerCase();\n if (this.nativeAppService.isNative) {\n appProduct = this.nativeAppService?.product?.toLowerCase();\n }\n return appProduct;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NativeAppService, NavigationService } from '@frontend/vanilla/core';\n\nimport { InvokerProductService } from './invoker-product.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoWidgetService {\n product: string | null;\n currentWidgetHeight: number;\n newWidgetHeight: number;\n interval: any;\n maxHeightCount: number;\n constructor(\n private nativeAppService: NativeAppService,\n private navigationService: NavigationService,\n private invokerProductService: InvokerProductService,\n ) {}\n\n isCasinoWidget(): boolean {\n if (window.location.href.indexOf('casinowidget') > -1) {\n return true;\n }\n return false;\n }\n // NFR - Services optimization - Remove\n isfromCasino(): boolean {\n if (window.location.href.indexOf('launchEmbedded') == -1) {\n return true;\n }\n return false;\n }\n\n setWidgetProduct(): void {\n const invokerProduct: string = this.invokerProductService.getInvokerProduct();\n const widgetInvokerProduct: string | null = this.navigationService.location.search.get('invokerProduct');\n if (widgetInvokerProduct && widgetInvokerProduct != '') {\n this.product = widgetInvokerProduct.toUpperCase();\n } else if (invokerProduct) {\n this.product = invokerProduct;\n } else {\n this.product = null;\n }\n }\n\n getApiParams(params?: any): any {\n if (this.product) {\n const invokerProduct: string = params && params.invokerProduct && params.invokerProduct.length > 0 ? params.invokerProduct : this.product;\n if (params) {\n params.invokerProduct = invokerProduct;\n } else {\n params = {\n invokerProduct: invokerProduct,\n };\n }\n }\n return params;\n }\n\n postMessageToParent(eventName: string, params: any): void {\n window.parent.postMessage({ eventName: eventName, params: params }, '*');\n }\n\n getWidgetPosition() {\n const widgetPosition = this.navigationService.location.search.get('widgetPosition');\n if (widgetPosition) {\n return widgetPosition?.toLowerCase();\n } else {\n return '';\n }\n }\n\n getWidgetHeight(categoryId: string, elementId: string) {\n if (this.isCasinoWidget()) {\n const widget = document.getElementById(elementId);\n if (widget) {\n this.currentWidgetHeight = widget.scrollHeight;\n this.assigningWidgetParams(categoryId, this.currentWidgetHeight);\n }\n if (!this.interval) {\n this.interval = setInterval(() => {\n this.checkAndUpdateWidgetHeight(categoryId, elementId);\n }, 500);\n }\n }\n }\n\n checkAndUpdateWidgetHeight(categoryId: string, elementId: string) {\n this.newWidgetHeight = document.getElementById(elementId)?.scrollHeight || 0;\n if (this.currentWidgetHeight === this.newWidgetHeight) {\n this.maxHeightCount--;\n }\n if (!this.maxHeightCount) {\n clearInterval(this.interval);\n }\n if (this.newWidgetHeight !== this.currentWidgetHeight) {\n this.currentWidgetHeight = this.newWidgetHeight;\n this.assigningWidgetParams(categoryId, this.currentWidgetHeight);\n }\n }\n\n assigningWidgetParams(categoryId: string, currentWidgetHeight: number) {\n const isFooterWidget: boolean = this.getWidgetPosition() === 'footer' ? true : false;\n if (isFooterWidget) {\n const params = {\n isFooterWidget: this.getWidgetPosition() ? true : false,\n categoryid: categoryId,\n height: currentWidgetHeight + 30,\n };\n this.postMessageToParent('FooterLobbyLoaded', params);\n } else {\n const params = {\n isFooterWidget: this.getWidgetPosition() ? true : false,\n categoryid: categoryId,\n height: currentWidgetHeight + 30,\n };\n this.postMessageToParent('LobbyLoaded', params);\n }\n }\n\n getWidgetProduct(): string {\n let widgetInvokerProduct: string = this.invokerProductService.getInvokerProduct();\n if (!widgetInvokerProduct || widgetInvokerProduct === '') {\n widgetInvokerProduct = this.navigationService.location.search.get('invokerProduct') || '';\n }\n if (this.nativeAppService.isNative) {\n widgetInvokerProduct = this.nativeAppService.product;\n }\n return widgetInvokerProduct;\n }\n // NFR - Services optimization - Remove\n setInvokerProduct(invokerProduct: string) {\n this.product = invokerProduct.toUpperCase();\n }\n}\n","export class HomeLobbyModel {\n activeCategory: string;\n navigationLevel: number;\n currentCategory: any;\n changeEvent: string;\n lobbyType: string;\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\n\nimport { NativeAppService, WindowRef } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NativeApiService {\n mcPage: any;\n constructor(\n private nativeApplication: NativeAppService,\n private windowRef: WindowRef,\n private configProviderService: ConfigProviderService,\n ) {\n this.mcPage = this.configProviderService.provideMcPageConfig();\n }\n count: number = 0;\n raiseEvent(event: string, action?: string, parameters?: string) {\n const actionValue = action ? action : 'action';\n if (this.nativeApplication.isNative) {\n this.count++;\n const id = 'NativeApi_iframe_' + this.count;\n const frame = document.createElement('iframe');\n frame.id = id;\n frame.src = `bwinex://?event=${event}&${actionValue}=${parameters}`;\n frame.style.display = 'none';\n this.windowRef.nativeWindow.document.body.appendChild(frame);\n return id;\n }\n return null;\n }\n\n raiseEventCommon(eventInfo: string) {\n if (this.nativeApplication.isNative || this.nativeApplication.isNativeWrapper) {\n this.count++;\n const id = 'NativeApi_iframe_' + this.count;\n const frame = document.createElement('iframe');\n frame.id = id;\n frame.src = `bwinex://${eventInfo}`;\n frame.style.display = 'none';\n this.windowRef.nativeWindow.document.body.appendChild(frame);\n return id;\n }\n return null;\n }\n\n raiseTeaserEvent(prevEventId: string, eventInfo: string) {\n if (prevEventId) {\n this.clearEvent(prevEventId);\n }\n\n return this.raiseEventCommon(eventInfo);\n }\n // NFR - Services optimization - Remove\n processPromoEvent(link: string, eventId: string) {\n const index = link.indexOf('?event=promo');\n if (index === -1) {\n return null;\n }\n if (eventId !== null) {\n this.clearEvent(eventId);\n }\n return this.raiseEventCommon(link.substr(index));\n }\n // NFR - Services optimization - Remove\n processLobbyEvent(link: string, eventId: string) {\n const index = link.indexOf('?event=lobby');\n if (index === -1) {\n return null;\n }\n if (eventId !== null) {\n this.clearEvent(eventId);\n }\n return this.raiseEventCommon(link.substr(index));\n }\n\n raiseOpenGameEvent(prevEventId: string, openUrl: string, gameId: string, isAuthenticated: boolean) {\n if (prevEventId) {\n this.clearEvent(prevEventId);\n }\n\n if (!isAuthenticated) {\n return this.raiseEvent('lobby', 'opengame', 'gameId=' + gameId);\n }\n\n return this.raiseEvent('lobby', 'opengame', 'url=' + openUrl);\n }\n\n raiseNativeAppEvent(eventInfo: string) {\n if (this.nativeApplication.isNative) {\n this.count++;\n const nativeScheme = this.mcPage.nativeAppScheme;\n const id = 'NativeApi_iframe_' + this.count;\n const frame = document.createElement('iframe');\n frame.id = id;\n frame.src = `${nativeScheme}://${eventInfo}`;\n frame.style.display = 'none';\n this.windowRef.nativeWindow.document.body.appendChild(frame);\n return id;\n }\n return null;\n }\n\n // NFR - Services optimization - Remove\n targetEvent(event: string, scheme: string = 'bwinex://') {\n if (this.nativeApplication.isNative) {\n const iframe: any = document.createElement('iframe');\n iframe.src = scheme + event;\n\n document.documentElement.appendChild(iframe);\n iframe.parentNode.removeChild(iframe);\n }\n }\n\n clearEvent(id: string) {\n if (this.nativeApplication.isNative && id !== null) {\n this.windowRef?.nativeWindow?.document?.getElementById(id)?.remove();\n }\n }\n}\n","import { Injectable, effect } from '@angular/core';\n\nimport { CookieService, DeviceService, Logger, NativeAppService, NavigationService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, distinctUntilChanged } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoWidgetService } from './casino-widget.service';\nimport { InvokerProductService } from './invoker-product.service';\nimport { HomeLobbyModel } from './models/home-lobby.model';\nimport { PublishLobbyModel } from './models/publish-lobby.model';\nimport { NativeApiService } from './nativeapi.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoManager {\n lobbyType: string;\n gameEventId: any;\n private isTouchDevice = this.checkTouchDevice();\n toggleEnabled: string;\n gameHomeUrl: string;\n get currentWidth() {\n return this.deviceService.windowRect().width;\n }\n product: string;\n headerTeasers: any;\n currentlobbyType: any;\n\n private loadNextGamesSetPublisher = new BehaviorSubject<any>(null);\n loadNextGamesSetObservable: Observable<any> = this.loadNextGamesSetPublisher.asObservable();\n\n private lobbyModelPublisher = new BehaviorSubject<HomeLobbyModel>(new HomeLobbyModel());\n lobbyObservable: Observable<HomeLobbyModel> = this.lobbyModelPublisher.asObservable();\n\n private reSizePublisher = new BehaviorSubject<number>(this.deviceService.windowRect().width);\n reSizeObservable = this.reSizePublisher.pipe(distinctUntilChanged());\n\n categoryLookup: any;\n lobbyModel: HomeLobbyModel = new HomeLobbyModel();\n\n private playerSegmentionSubject = new BehaviorSubject<any>(null);\n playerSegmentDataObservable: Observable<any> = this.playerSegmentionSubject.asObservable();\n\n previousProduct: string;\n invokerProduct: string;\n constructor(\n private deviceService: DeviceService,\n private casinoWidgetService: CasinoWidgetService,\n private cookieService: CookieService,\n private nativeAppService: NativeAppService,\n private nativeApiService: NativeApiService,\n private navigation: NavigationService,\n private configProviderService: ConfigProviderService,\n private invokerProductService: InvokerProductService,\n private logger: Logger,\n ) {\n effect(() => {\n this.reSizePublisher.next(this.deviceService.windowRect().width);\n });\n }\n setCategoryLobby(publishCategory: PublishLobbyModel) {\n const sourceCategory = this.navigation.location;\n const publishCtgry = publishCategory.category?.toLowerCase();\n let defCategory: any;\n if (this.deviceService.windowRect().width > 500) {\n if (\n publishCtgry != defCategory &&\n (sourceCategory.pathname.indexOf(defCategory) > -1 || sourceCategory.pathname === '/' || sourceCategory.pathname == '/en/games')\n ) {\n document.documentElement.style.setProperty('--isNewsFeedDisplayed', 'none');\n }\n if (publishCtgry == defCategory && !(sourceCategory.pathname.indexOf(defCategory) > -1)) {\n document.documentElement.style.setProperty('--isNewsFeedDisplayed', 'none');\n }\n } else {\n document.documentElement.style.setProperty('--isNewsFeedDisplayed', 'none');\n }\n this.lobbyModel.activeCategory = publishCategory.category;\n this.lobbyModel.navigationLevel = publishCategory.navigationLevel;\n if (this.previousProduct !== publishCategory.product) {\n this.previousProduct = publishCategory.product;\n this.lobbyModel.currentCategory = null;\n }\n this.lobbyModelPublisher.next(this.lobbyModel);\n }\n\n setWidgetToggleInfo(enableToggle: string) {\n this.toggleEnabled = enableToggle;\n }\n getWidgetToggleInfo() {\n return this.toggleEnabled;\n }\n\n getActiveCategory() {\n return this.lobbyModel.activeCategory;\n }\n\n getLobbyType() {\n let lobbyType: string = this.cookieService.get('LobbyType');\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n if (lobbyType) {\n return lobbyType;\n } else if (lmtConfig.lobbyTypeMap) {\n lobbyType = lmtConfig.lobbyTypeMap[0].lobbyType;\n return lobbyType;\n } else {\n return null;\n }\n }\n\n getProductForLobbyType(lobbyType: string): string {\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n const lobbyTypeMap: any = lmtConfig.lobbyTypeMap;\n if (lobbyTypeMap) {\n for (let lobbyTypeMapt of lobbyTypeMap) {\n if (lobbyTypeMapt.lobbyType == lobbyType) {\n return lobbyTypeMapt.product;\n }\n }\n } else {\n return '';\n }\n return '';\n }\n\n private checkTouchDevice(): boolean {\n try {\n return (\n !this.nativeAppService.isDownloadClient &&\n this.deviceService.isTouch &&\n !window.matchMedia('(pointer: fine)').matches &&\n !navigator.userAgent.match(/Win64/ || /WOW64/)\n );\n } catch (error) {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n }\n\n isTouch(): boolean {\n return this.isTouchDevice;\n }\n\n setGameHomeUrl(gameHomeUrl: string) {\n this.gameHomeUrl = gameHomeUrl;\n }\n getGameHomeUrl(): string {\n return this.gameHomeUrl;\n }\n\n loadNextGamesSet() {\n this.loadNextGamesSetPublisher.next(true);\n }\n\n getCurrentWidth() {\n return this.currentWidth;\n }\n\n getDefaultCategoryType1(): string {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const defaultCategory = casinoConfig.defaultCategory;\n\n if (this.categoryLookup?.filter((c: any) => c.sitecoreData?.categoryId === defaultCategory)[0]) {\n return defaultCategory;\n }\n\n return this.categoryLookup[0] ? this.categoryLookup[0].sitecoreData.categoryId : undefined;\n }\n\n getDefaultCategoryType(): string {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n return casinoConfig.defaultCategory;\n }\n\n goToLobby() {\n const mcPage = this.configProviderService.provideMcPageConfig();\n if (this.nativeAppService.isNative && this.nativeAppService.product === 'CASINO') {\n if (this.gameEventId) {\n this.nativeApiService.clearEvent(this.gameEventId);\n }\n\n this.gameEventId = this.nativeApiService.raiseEventCommon('?event=promo&action=openlobbytab');\n\n return;\n }\n this.navigation.goTo(mcPage?.prefix);\n }\n\n getLobbyUrlPrefix(lobbyType: string = ''): string {\n if (!this.lobbyType) {\n this.lobbyType = lobbyType;\n }\n const lmtDataClientConfig = this.configProviderService.provideLmtConfig();\n for (let lobbyTypeMap of lmtDataClientConfig.lobbyTypeMap) {\n if (lobbyTypeMap.lobbyType.toLowerCase() === lobbyType.toLowerCase()) {\n return lobbyTypeMap.product?.toLowerCase();\n }\n }\n return '';\n }\n getProduct(): string {\n const lmtDataClientConfig = this.configProviderService.provideLmtConfig();\n if (!this.product && lmtDataClientConfig.lobbyTypeMap) {\n this.product = lmtDataClientConfig.lobbyTypeMap[0].product;\n }\n return this.product;\n }\n\n getProductForGivenLobbyType(lobbyType: string): string {\n const lmtDataClientConfig = this.configProviderService.provideLmtConfig();\n const lobbyTypeMap: any = lmtDataClientConfig.lobbyTypeMap;\n for (let lobbyTypet of lobbyTypeMap) {\n if (lobbyTypet.lobbyType == lobbyType) {\n if (lobbyTypet.product) return lobbyTypet?.product?.toLowerCase();\n }\n }\n return '';\n }\n\n IsFeatureEnabledforLobbytype(lobbyType: string, features: any): any {\n if (features && lobbyType) {\n const featureType = features.find((x: { lobbyType?: string }) => x?.lobbyType?.toLowerCase() == lobbyType?.toLowerCase());\n if (featureType?.countValue) {\n return featureType.countValue;\n }\n if (featureType?.value) {\n return true;\n }\n if (featureType?.stringValue) {\n return featureType.stringValue;\n }\n if (featureType?.stringArray && featureType.stringArray.length > 0) {\n return featureType.stringArray;\n }\n if (featureType?.jsonValue) {\n return featureType.jsonValue;\n }\n if (featureType?.defaultCategory) {\n return featureType.defaultCategory;\n }\n if (featureType?.forceMobileNav) {\n return featureType.forceMobileNav;\n }\n if (featureType?.fetchMeta) {\n return featureType.fetchMeta;\n }\n return false;\n }\n return false;\n }\n\n IsFeatureEnabledforLobbytypeWithInvokerProduct(lobbyType: string, feature: any): any {\n if (feature?.[0].invokerProduct) {\n let invokerproduct: string = this.getInvokerProduct();\n if (!invokerproduct || invokerproduct === '') {\n invokerproduct = 'casino';\n }\n feature = feature.filter((x: any) => x?.invokerProduct?.toLowerCase() == invokerproduct?.toLowerCase());\n }\n if (!lobbyType || lobbyType === '') {\n lobbyType = this.cookieService.get('LobbyType');\n }\n if (feature && lobbyType) {\n const featureType = feature.find((x: any) => x?.lobbyType?.toLowerCase() == lobbyType?.toLowerCase());\n if (featureType?.countValue) {\n return featureType.countValue;\n }\n if (featureType?.value) {\n return true;\n }\n if (featureType?.stringValue) {\n return featureType.stringValue;\n }\n if (featureType?.stringArray && featureType.stringArray.length > 0) {\n return featureType.stringArray;\n }\n return false;\n }\n return false;\n }\n\n assignGameClass(currentWidth: any, iconType: any): any {\n if (currentWidth < 383) {\n switch (iconType) {\n case '1':\n return 'xs-icon';\n\n case '2':\n return 'medium-icon';\n\n case '3':\n return 'xs-icon';\n\n case '4':\n return 'medium-icon';\n\n case '5':\n return 'large-icon';\n\n case '6':\n return 'xs-icon';\n\n case '7':\n return 'xs-icon';\n case '10':\n return 'medium-icon';\n default:\n return 'xs-icon';\n }\n } else if (currentWidth < 480) {\n switch (iconType) {\n case '1':\n case '2':\n case '3':\n return 'small-icon';\n\n case '4':\n case '5':\n return 'medium-icon';\n\n case '6':\n case '7':\n return 'small-icon';\n\n case '10':\n return 'medium-icon';\n\n default:\n return 'small-icon';\n }\n } else if (currentWidth < 533) {\n switch (iconType) {\n case '1':\n return 'xs-icon';\n\n case '2':\n return 'medium-icon';\n\n case '3':\n return 'xs-icon';\n\n case '4':\n return 'medium-icon';\n\n case '5':\n return 'large-icon';\n\n case '6':\n return 'xs-icon';\n\n case '7':\n return 'xs-icon';\n\n case '10':\n return 'medium-icon';\n\n default:\n return 'xs-icon';\n }\n } else if (currentWidth < 625) {\n switch (iconType) {\n case '1':\n return 'small-icon';\n\n case '2':\n return 'medium-icon';\n\n case '3':\n return 'small-icon';\n\n case '4':\n return 'large-icon';\n\n case '5':\n return 'large-icon';\n\n case '6':\n return 'small-icon';\n\n case '7':\n return 'small-icon';\n\n case '10':\n return 'large-icon';\n\n default:\n return 'small-icon';\n }\n } else if (currentWidth < 689) {\n switch (iconType) {\n case '1':\n return 'xs-icon';\n\n case '2':\n return 'medium-icon';\n\n case '3':\n return 'xs-icon';\n\n case '4':\n return 'medium-icon';\n\n case '5':\n return 'large-icon';\n\n case '6':\n return 'xs-icon';\n\n case '7':\n return 'xs-icon';\n\n case '10':\n return 'medium-icon';\n\n default:\n return 'xs-icon';\n }\n } else if (currentWidth < 768) {\n switch (iconType) {\n case '1':\n return 'small-icon';\n\n case '2':\n return 'medium-icon';\n\n case '3':\n return 'small-icon';\n\n case '4':\n return 'large-icon';\n\n case '5':\n return 'large-icon';\n\n case '6':\n return 'small-icon';\n\n case '7':\n return 'small-icon';\n\n case '10':\n return 'large-icon';\n\n default:\n return 'small-icon';\n }\n } else if (currentWidth < 1024) {\n switch (iconType) {\n case '1':\n return 'xs-icon';\n\n case '2':\n return 'medium-icon';\n\n case '3':\n return 'small-icon';\n\n case '4':\n return 'medium-icon';\n\n case '5':\n return 'medium-icon';\n\n case '6':\n return 'xs-icon';\n\n case '7':\n return 'xs-icon';\n\n case '10':\n return 'medium-icon';\n\n default:\n return 'small-icon';\n }\n } else {\n switch (iconType) {\n case '1':\n return 'small-icon';\n\n case '2':\n return 'large-icon';\n\n case '3':\n return 'small-icon';\n\n case '4':\n return 'large-icon';\n\n case '5':\n return 'large-icon';\n\n case '6':\n return 'small-icon';\n\n case '7':\n return 'small-icon';\n\n case '10':\n return 'large-icon';\n\n default:\n return 'small-icon';\n }\n }\n }\n\n getInvokerProduct(): string {\n return this.casinoWidgetService.getWidgetProduct();\n }\n\n getSlotRaceCategoryId(lobbyType: string): string {\n const slotRacesConfig = this.configProviderService.provideSlotRacesConfig();\n for (let slotRacesLMTCategoryIdForLobbyType of slotRacesConfig.slotRacesLMTCategoryIdForLobbyType) {\n if (slotRacesLMTCategoryIdForLobbyType.lobbyType === lobbyType) {\n return slotRacesLMTCategoryIdForLobbyType.stringValue;\n }\n }\n return '';\n }\n\n getJackpotTileCategoryId(lobbyType: string): string {\n const jackpotConfig = this.configProviderService.provideJackpotConfig();\n for (let jackpotTilesLMTCategoryIdForLobbyType of jackpotConfig.jackpotTilesLMTCategoryIdForLobbyType) {\n if (jackpotTilesLMTCategoryIdForLobbyType.lobbyType.toLowerCase() === lobbyType.toLowerCase()) {\n return jackpotTilesLMTCategoryIdForLobbyType.stringValue;\n }\n }\n return '';\n }\n\n getLobbyTypeForProduct(productRoute: string): string {\n const lmtDataClientConfig = this.configProviderService.provideLmtConfig();\n if (lmtDataClientConfig?.lobbyTypeMap?.length > 0) {\n let invokerProduct: string = this.invokerProductService.getInvokerProduct();\n if (!invokerProduct || invokerProduct === '') {\n invokerProduct = 'CASINO';\n }\n const productLobbyTypes: any = lmtDataClientConfig.lobbyTypeMap.filter((lobbytype: any) => {\n return lobbytype?.invokerProduct?.toLowerCase() === invokerProduct?.toLowerCase();\n });\n if (productLobbyTypes && productLobbyTypes.length > 0) {\n return this.extractLobbyType(productLobbyTypes, productRoute);\n } else {\n this.logger.error(\n 'No lobby types configured for invoker product::',\n invokerProduct,\n ':: Considering all configured values for product route.',\n );\n return this.extractLobbyType(lmtDataClientConfig.lobbyTypeMap, productRoute);\n }\n }\n this.logger.error('Lobby Type Map values not configured.');\n return '';\n }\n\n setCurrentLobby(lobbyType: string) {\n this.currentlobbyType = lobbyType;\n }\n\n getCurrentLobby() {\n return this.currentlobbyType;\n }\n private extractLobbyType(lobbyTypeMap: any, product: string): string {\n if (lobbyTypeMap?.length > 0) {\n for (let lobbyType of lobbyTypeMap) {\n if (lobbyType?.product?.toLowerCase() == product?.toLowerCase()) {\n return lobbyType.lobbyType;\n }\n }\n this.logger.error('No lobby type found for product route::', product);\n }\n return '';\n }\n\n isSingleHostLobbyType(lobbyType: string, currentProduct: string): boolean {\n let singleHostLobbyItem: any = null;\n let singleHostLobbyMap: any = this.configProviderService.provideGameConfig()?.singleHostLobbyMap;\n if (singleHostLobbyMap) {\n singleHostLobbyItem = singleHostLobbyMap.filter((sh: any) => {\n return currentProduct && sh?.lobbyType?.toLowerCase() == lobbyType?.toLowerCase();\n });\n }\n return singleHostLobbyItem?.length && singleHostLobbyItem[0].singleHost ? true : false;\n }\n\n getGrayImageUrl(): string {\n return this.configProviderService.provideGlobalConfig()?.staticImages?.gray;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConstService {\n public static readonly Instant_Casino: string = 'instantCasino';\n public static readonly Live_Casino: string = 'LiveCasino';\n public static readonly Recent_Games: string = 'RECENTGAMES';\n public static readonly Favourite_Games: string = 'FAVOURITEGAMES';\n public static readonly LMC_GYML = 'LMC_GYML';\n public static readonly ALL_GAMES_CATEGORY_ID: string = 'allgames';\n public static readonly LIVE_DEALER_GAMES_CATEGORY_ID: string = 'livecasino';\n public static readonly LIVE_CASINO_ALL_GAMES_CATEGORY_ID: string = 'livecasinoallgames';\n public static readonly LOBBY_LOADING_COMPLETED_EVENT: string = '?event=lobby&action=loadingcompleted';\n public static readonly FAVOURITE_GAMES_CATEGORY_ID: string = 'favouritegames';\n public static readonly RECENT_GAMES_CATEGORY_ID: string = 'recentgames';\n public static readonly SPORTS_HOME_ICON_EVENT: string = 'Highlights';\n public static readonly UNFINISHED_GAMES_CATEGORY_ID: string = 'unfinishedgames';\n public static readonly GYML_GAMES_CATEGORY_ID: string = 'gamesyoumightlike';\n public static readonly HOME_CATEGORY_ID = 'home';\n public static readonly LMC_GYML_CATEGORY_ID = 'LMC_GYML';\n public static readonly EGV_GYML = 'GYML';\n public static readonly DETAIL_PAGE_MODE_PICKER = 'Picker';\n public static readonly DETAIL_PAGE_MODE_FORCEPICKER = 'ForcePicker';\n public static readonly DETAIL_PAGE_MODE_FORCE = 'Force';\n public static readonly DETAIL_PAGE_MODE_ALL = 'All';\n public static readonly GAME_OF_THE_DAY = 'gameoftheday';\n public static readonly HIGHLIGHT_JACKPOTS = 'highlightjackpots';\n public static readonly LIVE_CASINO = 'livecasino';\n public static readonly PROMOTIONS_DISCOVER = 'promotions';\n public static readonly QUICK_LINKS = 'quicklinks';\n public static readonly EDITORS_PICK = 'editorspick';\n public static readonly SEARCH = 'Search';\n public static readonly SEARCH_GYML = 'Search_GYML';\n public static readonly ADV_GAME = 'advanceGameDataModel';\n}\n","import { GameLaunch } from '../public-api';\n\nexport enum EventNames {\n EventClick = 'Event.Clicks',\n EventTracking = 'Event.Tracking',\n GameOpen = 'gameOpen',\n GameInteraction = 'GameInteraction',\n}\n\nexport enum EventDataKeys {\n ComponentUrlClicked = 'component.URLClicked',\n ComponentGameName = 'component.gameName',\n ComponentGameType = 'component.gameType',\n ComponentGamePosition = 'component.Game.position',\n ComponentGameSection = 'component.Game.section',\n ComponentGameGridPosition = 'component.Game.GridPosition',\n ComponentGameContainerLocation = 'component.gameContainerLocation',\n ComponentGameStatus = 'component.gameStatus',\n ComponentGameContainerDescription = 'component.gameContainerDescription',\n ComponentGameFavorite = 'component.gameFavourite',\n ComponentGamePlayingStatus = 'component.gamePlayingStatus',\n ComponentGameDisplayName = 'component.gameDisplayName',\n ComponentCategoryType = 'component.categoryType',\n ComponentCategorySubType = 'component.categorySubType',\n ComponentRecommendationType = 'component.recommendationtype',\n ComponentGameInteraction = 'component.Game.interaction',\n CasinoLobbyName = 'casino.lobbyName',\n CasinoLobbySource = 'casino.lobbySource',\n CasinoOptimoveSegment = 'casino.optimoveSegment',\n AddGameFavorites = 'Add_Game_Favorites',\n RemoveGameFavourite = 'Remove_Game_Favorites',\n}\n\ntype EventData = {\n [EventDataKeys.ComponentUrlClicked]?: string;\n [EventDataKeys.ComponentGameName]?: string;\n [EventDataKeys.ComponentGameType]?: string;\n [EventDataKeys.ComponentGamePosition]?: number;\n [EventDataKeys.ComponentGameSection]?: string;\n [EventDataKeys.ComponentGameGridPosition]?: string;\n [EventDataKeys.ComponentGameContainerLocation]?: string;\n [EventDataKeys.ComponentGameStatus]?: string;\n [EventDataKeys.ComponentGameContainerDescription]?: string;\n [EventDataKeys.ComponentGameFavorite]?: string;\n [EventDataKeys.ComponentGamePlayingStatus]?: string;\n [EventDataKeys.ComponentGameDisplayName]?: string;\n [EventDataKeys.ComponentCategoryType]?: string;\n [EventDataKeys.ComponentCategorySubType]?: string;\n [EventDataKeys.ComponentRecommendationType]?: string;\n [EventDataKeys.ComponentGameInteraction]?: string;\n [EventDataKeys.CasinoLobbyName]?: string;\n [EventDataKeys.CasinoLobbySource]?: string;\n [EventDataKeys.CasinoOptimoveSegment]?: string;\n [EventDataKeys.CasinoLobbyName]?: string;\n [EventDataKeys.AddGameFavorites]?: string;\n [EventDataKeys.RemoveGameFavourite]?: string;\n};\n\nexport interface Event {\n name: EventNames;\n data: EventData;\n}\n\ntype ErrorType = {\n message: string;\n code?: string;\n};\n\nexport interface ErrorEvent {\n data: ErrorType;\n}\n\nenum UpdateTypeKeys {\n Event = 'event',\n PageName = 'page.name',\n}\n\ntype UpdateType = {\n [UpdateTypeKeys.Event]?: string;\n [UpdateTypeKeys.PageName]?: string;\n};\n\nexport interface DataUpdateEvent {\n data: UpdateType;\n}\n\nexport interface TrackGame {\n name: string;\n type: string;\n position: number;\n section: string;\n gridPosition: string;\n location: string;\n status: string;\n description: string;\n favourite: string;\n playingStatus: string;\n displayName: string;\n categoryType: string;\n categorySubType: string;\n recommendationType: string;\n lobbyName: string;\n lobbySource: string;\n optimoveSegment: string;\n params: GameLaunch;\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { TrackingService as VanillaTrackingService } from '@frontend/vanilla/core';\n\nimport { DataUpdateEvent, ErrorEvent, Event } from './vanilla-tracking-adapter.model';\n\n@Injectable({ providedIn: 'root' })\nexport class VanillaTrackingAdapter {\n vanillaTrackingService = inject(VanillaTrackingService);\n\n trigger(event: Event) {\n this.vanillaTrackingService.triggerEvent(event.name, event.data);\n }\n\n reportError(event: ErrorEvent) {\n this.vanillaTrackingService.reportError(event.data);\n }\n\n update(event: DataUpdateEvent) {\n this.vanillaTrackingService.updateDataLayer(event.data);\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 PlatformBingoApiService extends ApiBase {}\n\nexport function apiServiceFactory(apiServiceFactory: ApiServiceFactory, productService: ProductService) {\n return apiServiceFactory.createForProduct(PlatformBingoApiService, {\n product: ClientConfigProductName.BINGO,\n area: 'bingo',\n forwardProductApiRequestHeader: productService.getMetadata(ClientConfigProductName.BINGO).isEnabled,\n });\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, Page, ProductHomepagesConfig, ProductService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UrlUtilityService {\n isDev: boolean;\n devUrl: string;\n\n constructor(\n private products: ProductHomepagesConfig,\n private page: Page,\n private productService: ProductService,\n private appInfoConfig: AppInfoConfig,\n ) {}\n\n getCasinoBaseUrl = (): string => this.getUrl('casino') || '';\n\n getProductBaseUrl = (productOverride?: string) => this.getUrl('', true, productOverride);\n\n getProductApiBaseUrl = (productOverride?: string): string => this.getProductBaseUrl(productOverride) + '/' + this.page.lang;\n\n getApiBaseUrl = (): string => this.getCasinoBaseUrl() + '/' + this.page.lang;\n\n getCasinoApiBaseUrl = (): string => this.productService.getMetadata('casino').apiBaseUrl;\n\n getClientConfigUrl = () => `${this.getCasinoApiBaseUrl()}/${this.page.lang}/api/clientconfig`;\n\n getCategoryNavigationBaseUrl = (): string => this.getUrl('casino') || '';\n\n getBingoApiBaseUrl = (): string => this.getUrl('bingo') + '/' + this.page.lang;\n\n getPromoSmartUrl = (): string => `${this.getUrl('promo')}/${this.page.lang}`;\n\n getDiceSmartUrl = (): string => `${this.getUrl('dicegames')}/${this.page.lang}`;\n\n getCasinoSmartUrl = (): string => `${this.getUrl('casino')}/${this.page.lang}`;\n\n private getUrl = (type: string, isProduct: boolean = false, productOverride?: string) => {\n // Note: Single domain app condition is temporary, until we move all products to single domain\n let currentProduct: string = this.productService.isSingleDomainApp\n ? this.productService.current.name\n : this.appInfoConfig?.product?.toLowerCase();\n const product: any = isProduct && productOverride ? productOverride : isProduct ? currentProduct.toLowerCase() : type;\n const productUrl = new URL(this.products[product as keyof ProductHomepagesConfig]);\n return productUrl.origin;\n };\n\n getAppCurrentProduct(): boolean {\n const appProduct: string = this.productService.isSingleDomainApp\n ? this.productService.current.name\n : this.appInfoConfig?.product?.toLowerCase();\n return appProduct === 'casino';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Logger } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiPathsHelperService {\n constructor(private logger: Logger) {}\n\n transformApi(apiPathConfig: string, ...args: any[]) {\n this.logger.info('Api Path Arguments::', args);\n\n const interpolate = new Function('args', 'return `' + apiPathConfig + '`;');\n return interpolate(args);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { PlatformBingoApiService } from '../platform-api/platform-bingo-api.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { ApiPathsHelperService } from './api-paths-helper-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BingoFavouriteService {\n _favouriteAddedMessage: string;\n _favouriteRemovedMessage: string;\n _favouriteAddedErrorMessage: string;\n _favouriteRemovedErrorMessage: string;\n\n constructor(\n private apiBingoService: PlatformBingoApiService,\n private api: PlatformApiService,\n private router: Router,\n private urlUtilityService: UrlUtilityService,\n private apiPathsHelperService: ApiPathsHelperService,\n private readonly configProviderService: ConfigProviderService,\n ) {}\n\n addFavourite(roomId: string, accountName: string) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n return this.apiBingoService.get(apiPathsConfig.bingo['bgSetFavourite'], { roomId: roomId, isFavourite: true, accountName: accountName });\n } else {\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.bingo['bgSetFavourite'],\n this.urlUtilityService.getBingoApiBaseUrl(),\n );\n return this.api.get(endPoint, { roomId: roomId, isFavourite: true, accountName: accountName });\n }\n }\n\n removeFavourite(roomId: string, accountName: string) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n return this.apiBingoService.get(apiPathsConfig.bingo['bgSetFavourite'], { roomId: roomId, isFavourite: false, accountName: accountName });\n } else {\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.bingo['bgSetFavourite'],\n this.urlUtilityService.getBingoApiBaseUrl(),\n );\n return this.api.get(endPoint, { roomId: roomId, isFavourite: false, accountName: accountName });\n }\n }\n // NFR - Services optimization - Remove\n getFavouriteUrl(roomId: string, isFavourite: boolean, favAddClass: string, favRemClass: string): string {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const result = this.apiPathsHelperService.transformApi(\n apiPathsConfig.bingo['bgForcedFavourite'],\n this.urlUtilityService.getBingoApiBaseUrl(),\n roomId,\n isFavourite,\n favAddClass,\n favRemClass,\n this.router.url,\n );\n return result;\n }\n\n getFavouriteWidgetGames(sso: string, accountName: string) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n return this.apiBingoService.get(apiPathsConfig.bingo['bgSchedule'], { sso: sso, accountName: accountName });\n } else {\n const endPoint = this.apiPathsHelperService.transformApi(apiPathsConfig.bingo['bgSchedule'], this.urlUtilityService.getBingoApiBaseUrl());\n return this.api.get(endPoint, { sso: sso, accountName: accountName });\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { CasinoCoreNpmParams } from './models/casino-core-npm.params';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoCoreNpmParamsService {\n private casinoNpmParams: CasinoCoreNpmParams;\n\n constructor() {}\n\n setcasinoCoreNpmParams(casinoCoreNpmParams: CasinoCoreNpmParams) {\n this.casinoNpmParams = casinoCoreNpmParams;\n }\n\n getcasinoCoreNpmParams(): CasinoCoreNpmParams {\n return this.casinoNpmParams;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoCoreNpmParamsService } from './casino-core-npm-params.service';\nimport { CasinoManager } from './casino-manager.service';\nimport { InvokerProductService } from './invoker-product.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoIFrameOverlayService {\n isOverlay: boolean;\n constructor(\n private casinoManager: CasinoManager,\n private configProviderService: ConfigProviderService,\n private casinoCoreNpmParamsService: CasinoCoreNpmParamsService,\n private invokerProductService: InvokerProductService,\n ) {}\n\n setOverlayStatus(isOverlay: boolean) {\n this.isOverlay = isOverlay;\n }\n\n getOverlayStatus() {\n return this.isOverlay;\n }\n\n isOverLayOnAProduct(lobbyType: string = ''): boolean {\n const casinoAsIFrameOverlayConfig = this.configProviderService.provideCasinoAsIFrameConfig();\n if (casinoAsIFrameOverlayConfig?.overlayLobbyTypeMap && casinoAsIFrameOverlayConfig.overlayLobbyTypeMap.length > 0) {\n const overlayLobbyTypeMap = casinoAsIFrameOverlayConfig?.overlayLobbyTypeMap.filter(\n (l: any) => l?.invokerProduct?.toLowerCase() === this.invokerProductService?.getInvokerProduct()?.toLowerCase(),\n );\n return lobbyType ? this.casinoManager.IsFeatureEnabledforLobbytype(lobbyType, overlayLobbyTypeMap) : false;\n }\n return false;\n }\n\n lobbyTypeForNavCategories(): string {\n const casinoAsIFrameOverlayConfig = this.configProviderService.provideCasinoAsIFrameConfig();\n if (\n casinoAsIFrameOverlayConfig &&\n casinoAsIFrameOverlayConfig.overlayBottomNavLobbyTypeMap &&\n casinoAsIFrameOverlayConfig.overlayBottomNavLobbyTypeMap.length > 0\n ) {\n const overlayBottomNavLobbyTypeMap = casinoAsIFrameOverlayConfig.overlayBottomNavLobbyTypeMap.filter(\n (l: any) => l?.invokerProduct?.toLowerCase() === this.invokerProductService?.getInvokerProduct()?.toLowerCase(),\n );\n if (overlayBottomNavLobbyTypeMap && overlayBottomNavLobbyTypeMap.length > 0) {\n for (let overlayBottomNavLobbyTypeMapItem of overlayBottomNavLobbyTypeMap.length) {\n return overlayBottomNavLobbyTypeMapItem.lobbyType;\n }\n }\n }\n return '';\n }\n\n fetchOverlayLobby(): string {\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n const invokerProduct: string = this.invokerProductService.getInvokerProduct();\n const overlayConfig: any = this.configProviderService.provideCasinoAsIFrameConfig();\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n let overlayLobbyType: string = '';\n\n if (lmtConfig.lobbyTypeMap && lmtConfig.lobbyTypeMap.length > 0) {\n const applicableLobbyTypeMaps: any = lmtConfig.lobbyTypeMap.filter(\n (l: any) => l?.invokerProduct?.toLowerCase() === invokerProduct?.toLowerCase(),\n );\n if (applicableLobbyTypeMaps && applicableLobbyTypeMaps.length > 0) {\n if (casinoNpmParams.customLobbyTypeMaps && casinoNpmParams.customLobbyTypeMaps.length > 0) {\n overlayLobbyType = applicableLobbyTypeMaps[0].lobbyType ? applicableLobbyTypeMaps[0].lobbyType : '';\n } else if (overlayConfig && overlayConfig.overlayLobbyTypeMap && overlayConfig.overlayLobbyTypeMap.length > 0) {\n const lobbyTypeObj = overlayConfig.overlayLobbyTypeMap.filter(\n (l: any) => l?.invokerProduct?.toLowerCase() === invokerProduct?.toLowerCase(),\n );\n if (lobbyTypeObj?.length > 0) overlayLobbyType = lobbyTypeObj[0].fetchMeta ? lobbyTypeObj[0].lobbyType : '';\n }\n }\n }\n return overlayLobbyType;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiOptions, ClientConfigProductName, Page, ProductsConfig } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { PlatformBingoApiService } from '../platform-api/platform-bingo-api.service';\nimport { CasinoWidgetService } from './casino-widget.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoApiService {\n constructor(\n private casinoWidgetService: CasinoWidgetService,\n private apiService: PlatformApiService,\n private apiBingoService: PlatformBingoApiService,\n private configProviderService: ConfigProviderService,\n private page: Page,\n private productConfig: ProductsConfig,\n ) {}\n // NFR - Services optimization - Remove\n request(url: string, options?: any): Observable<any> {\n return this.apiService.request(url, options);\n }\n\n get(url: string, params?: any, options?: any): Observable<any> {\n const requestParams = this.casinoWidgetService.getApiParams(params);\n return this.apiService.get(url, requestParams, options);\n }\n\n post(url: string, data?: any, options?: any): Observable<any> {\n return this.apiService.post(url, data, options);\n }\n /**\n * @getCasinoProductApi is also used by other products like bingo, lottery. In that case we need to send x-bwin-casino-api in headers.\n * @param url relative url\n * @param params optional\n * @param options optional *\n */\n getCasinoProductApi(url: string, params?: any, options?: ApiOptions): Observable<any> {\n const requestParams = params ? this.casinoWidgetService.getApiParams(params) : null;\n if (!options) options = { headers: {} };\n if (this.productConfig[ClientConfigProductName.CASINO].enabled) {\n options.headers!['x-bwin-casino-api'] = this.page.environment;\n }\n options.withCredentials = true;\n return this.apiService.get(url, requestParams, options);\n }\n\n getBingoApi(url: string, params?: any, options?: any): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const requestParams = this.casinoWidgetService.getApiParams(params);\n // remove newApiStrucute check when new bingo api structure is ready and rolled out.\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled')\n return this.apiBingoService.get(url, requestParams, options);\n else return this.apiService.get(url, requestParams, options);\n }\n\n postBingoApi(url: string, data?: any, options?: any): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n // remove newApiStrucute check when new bingo api structure is ready and rolled out.\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled')\n return this.apiBingoService.post(url, data, options);\n else return this.apiService.post(url, data, options);\n }\n\n // NFR - Services optimization - Remove\n put(url: string, data?: any, options?: any): Observable<any> {\n return this.apiService.put(url, data, options);\n }\n // NFR - Services optimization - Remove\n delete(url: string, params?: any, options?: any): Observable<any> {\n return this.apiService.delete(url, params, options);\n }\n // NFR - Services optimization - Remove\n jsonp(url: string, callbackParam: string): Observable<Object> {\n return this.apiService.jsonp(url, callbackParam);\n }\n}\nexport const headerValue = '';\n","import { Injectable } from '@angular/core';\n\nimport { Logger, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { ApiPathsHelperService } from './api-paths-helper-service';\nimport { CasinoApiService } from './casino-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CozyBingoDataService {\n private cozyBingoRoomsData = new BehaviorSubject<any>(null);\n cozyBingoRoomsDataObservable: Observable<any> = this.cozyBingoRoomsData.asObservable();\n private cozyBingoRecentGamesData = new BehaviorSubject<any>(null);\n cozyBingoRecentGamesObservable: Observable<any> = this.cozyBingoRecentGamesData.asObservable();\n cozyBingoRoomsMap: Map<string, any> = new Map<string, any>();\n cozyBingofavourites: any = [];\n sitecoreResponseRooms: any;\n sitecoreResponseRoomnames: any;\n featuresConfiguration: any;\n globalMessages: any;\n categoryList: any;\n bingoConfiguration: any;\n schedulePolling: any;\n cozyBingoRecentGames: any = [];\n constructor(\n private casinoApiService: CasinoApiService,\n private urlUtilityService: UrlUtilityService,\n private configProviderService: ConfigProviderService,\n private apiPathsHelperService: ApiPathsHelperService,\n private logger: Logger,\n private user: UserService,\n ) {}\n\n getBingoData(fetchBingoRoomsSitecoreData: boolean, fetchRecentlyPlayed: boolean) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n let endPoint = this.apiPathsHelperService.transformApi(apiPathsConfig.bingo['bgExternalBingo'], this.urlUtilityService.getBingoApiBaseUrl());\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n // Remove this once bingo moved to new api structure\n endPoint = apiPathsConfig.bingo['bgExternalBingo'];\n }\n this.casinoApiService\n .getBingoApi(\n endPoint,\n { fetchBingoRoomsSitecoreData: fetchBingoRoomsSitecoreData, fetchRecentlyPlayed: fetchRecentlyPlayed },\n { withCredentials: true },\n )\n .subscribe(\n (response) => {\n if (response) {\n if (fetchBingoRoomsSitecoreData) {\n this.sitecoreResponseRooms = response['bingoRoomsSitecoreResponse']['rooms'];\n this.sitecoreResponseRoomnames = response['bingoRoomsSitecoreResponse']['roomNames'];\n this.featuresConfiguration = response['dynaconConfigurations']['featuresConfiguration'];\n this.globalMessages = response['dynaconConfigurations']['globalMessages'];\n this.categoryList = response['dynaconConfigurations']['categoryList'];\n this.bingoConfiguration = response['dynaconConfigurations']['bingoConfiguration'];\n }\n if (response.scheduleData?.result?.games_list) {\n this.roomDataMap(\n response['scheduleData']['result']['games_list'],\n this.sitecoreResponseRooms,\n this.sitecoreResponseRoomnames,\n );\n }\n const cozybingoConfig: any = this.configProviderService.provideCozyBingoConfig();\n if (cozybingoConfig.cozyBingoFavouritesInRpwidget) {\n this.cozyBingofavourites = response['scheduleData']['result']['favouriteRooms'];\n }\n if (cozybingoConfig.cozyBingoRecentGamesInRpwidget && response['recentGamesData']) {\n this.cozyBingoRecentGames = response['recentGamesData']['result']['rooms'];\n //Send recently played games to Global Search\n this.raiseEventForRecentlyPlayed(this.cozyBingoRecentGames);\n }\n if (this.cozyBingoRoomsMap) {\n this.cozyBingoRoomsData.next(this.cozyBingoRoomsMap);\n }\n }\n },\n (error) => {\n this.logger.error('unable to retrieve data from bgExternalBingo API : ' + error);\n },\n );\n }\n\n // Method to send Recent Games to Global Search\n private raiseEventForRecentlyPlayed(recentGamesObject: any): void {\n const recentgames: any = {};\n recentgames['cozybingo'] = recentGamesObject;\n const globalsearchconfig: any = this.configProviderService.provideGlobalSearchConfig();\n if (globalsearchconfig.isEnabled && recentGamesObject.length > 0) {\n this.cozyBingoRecentGamesData.next(recentgames);\n }\n }\n\n roomDataMap(rooms: any, sitecorerooms: any, sitecoreroomnames: any) {\n if (this.schedulePolling) clearInterval(this.schedulePolling);\n if (rooms && sitecorerooms) {\n let defaultRoomSitecoreInfo: any = sitecorerooms.filter((item: any) => item.roomId == 'default');\n if (defaultRoomSitecoreInfo) {\n defaultRoomSitecoreInfo = defaultRoomSitecoreInfo[0];\n }\n rooms &&\n rooms.forEach((room: any) => {\n let roomSitecoreInfo = sitecorerooms.filter((sitecoreroom: any) => sitecoreroom.roomId == room.id);\n\n if (roomSitecoreInfo && roomSitecoreInfo.length > 0) {\n roomSitecoreInfo = roomSitecoreInfo[0];\n if (!roomSitecoreInfo.desktopImage) {\n roomSitecoreInfo.desktopImage = defaultRoomSitecoreInfo.desktopImage;\n }\n } else {\n roomSitecoreInfo = defaultRoomSitecoreInfo;\n }\n const cozybingoConfig: any = this.configProviderService.provideCozyBingoConfig();\n if (cozybingoConfig.enableWidgetImageForBingoGame) {\n roomSitecoreInfo.desktopImage = roomSitecoreInfo?.widgetImage\n ? roomSitecoreInfo.widgetImage\n : defaultRoomSitecoreInfo.widgetImage;\n }\n if (sitecoreroomnames && roomSitecoreInfo && sitecoreroomnames[roomSitecoreInfo.roomId]) {\n roomSitecoreInfo.titleFromRoomNames = sitecoreroomnames[roomSitecoreInfo.roomId];\n }\n room.sitecoreInfo = roomSitecoreInfo;\n if (room.sitecoreInfo.roomId !== 'default' && room.sitecoreInfo.titleFromRoomNames) {\n room.name = room.sitecoreInfo.titleFromRoomNames;\n }\n this.cozyBingoRoomsMap.set(room.id, room);\n });\n }\n }\n getRoomdatabyId(roomid: any) {\n return this.cozyBingoRoomsMap.get(roomid);\n }\n getcozybingofavourites() {\n let cozyFavs: any = [];\n if (this.cozyBingoRoomsMap && this.cozyBingoRoomsMap.size > 0 && this.cozyBingofavourites && this.cozyBingofavourites.length > 0) {\n cozyFavs = this.cozyBingofavourites.filter((item: any) => this.cozyBingoRoomsMap.has(item));\n if (cozyFavs && cozyFavs.length > 0) {\n return cozyFavs;\n }\n }\n return cozyFavs;\n }\n checkForFavouriteGame(game: any): boolean {\n if (this.user.isAuthenticated && game?.fromCasino != undefined && game?.fromCasino && this.cozyBingofavourites.length > 0) {\n return this.cozyBingofavourites.indexOf(game.gameId) > -1;\n }\n return false;\n }\n getcozybingorecentgames() {\n let cozyrpgames: any = [];\n if (this.cozyBingoRoomsMap && this.cozyBingoRoomsMap.size > 0 && this.cozyBingoRecentGames && this.cozyBingoRecentGames.length > 0) {\n cozyrpgames = this.cozyBingoRecentGames.filter((item: any) => this.cozyBingoRoomsMap.has(item));\n if (cozyrpgames && cozyrpgames.length > 0) {\n return cozyrpgames;\n }\n }\n return cozyrpgames;\n }\n\n getFeatureConfigs() {\n return this.featuresConfiguration;\n }\n getGlobalMessages() {\n return this.globalMessages;\n }\n getcategoryList() {\n return this.categoryList;\n }\n getbingoConfiguration() {\n return this.bingoConfiguration;\n }\n // NFR - Services optimization - Remove\n ReloadFeed(gameData: any) {\n let timeOut = 0;\n const curentTime = new Date().getTime();\n if (gameData && gameData.length != 0) {\n const games = gameData.filter((g: any) => {\n return (\n this.cozyBingofavourites &&\n this.cozyBingofavourites.indexOf(g.id) > -1 &&\n g.status.state_end_time != null &&\n new Date(g.status.state_end_time * 1000).getTime() > curentTime\n );\n });\n const f_game = Math.min.apply(\n Math,\n games.map((g: any) => {\n return g.status.state_end_time;\n }),\n );\n if (f_game) timeOut = Math.max(0, new Date(f_game * 1000).getTime() - curentTime);\n }\n if (this.bingoConfiguration && this.bingoConfiguration['schedulePagePolling']) {\n if (timeOut > this.bingoConfiguration['scheduleLobbyRefreshTimeFrame'] || timeOut == 0)\n timeOut = this.bingoConfiguration['scheduleLobbyRefreshTimeFrame'];\n }\n if (timeOut > 0)\n this.schedulePolling = setTimeout(() => {\n this.getBingoData(false, false);\n }, timeOut);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { CookieService, MessageLifetime, MessageQueueService, MessageType, NavigationService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { EventDataKeys, EventNames } from '../tracking/vanilla-tracking-adapter.model';\nimport { VanillaTrackingAdapter } from '../tracking/vanilla-tracking-adapter.service';\nimport { BingoFavouriteService } from './bingo-favorite-service';\nimport { CasinoIFrameOverlayService } from './casino-iframe-overlay.service';\nimport { CasinoWidgetService } from './casino-widget.service';\nimport { CozyBingoDataService } from './cozybingodata.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FavouriteService {\n favouriteGames: string[] = [];\n otherProductFavouriteGames: string[] = [];\n private favouriteGamesSubject = new BehaviorSubject<any>(null);\n favouriteGamesFeedObservable: Observable<any> = this.favouriteGamesSubject.asObservable();\n private otherProductFavouriteGamesSubject = new BehaviorSubject<any>(null);\n private bingoProductFavouriteGamesSubject = new BehaviorSubject<any>(null);\n otherProductFavouriteGamesFeedObservable: Observable<any> = this.otherProductFavouriteGamesSubject.asObservable();\n bingoProductFavouriteGamesFeedObservable: Observable<any> = this.bingoProductFavouriteGamesSubject.asObservable();\n private quickInfoPublisher = new BehaviorSubject<boolean>(false);\n quickIconObservable: Observable<boolean> = this.quickInfoPublisher.asObservable();\n\n vanillaTrackingAdapter = inject(VanillaTrackingAdapter);\n\n constructor(\n private api: PlatformApiService,\n private user: UserService,\n private messageQueueService: MessageQueueService,\n private navigator: NavigationService,\n private casinoWidgetService: CasinoWidgetService,\n private configProviderService: ConfigProviderService,\n private cookie: CookieService,\n private bingoFavouriteService: BingoFavouriteService,\n private cozyBingoService: CozyBingoDataService,\n private casinoIFrameOverlayService: CasinoIFrameOverlayService,\n ) {\n window.addEventListener('cc:casinocore_AB_fav_game', (event) => {\n if (event) {\n this.setFavouriteGames();\n }\n });\n }\n\n setFavouriteGames() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const isOverlay: boolean = this.casinoIFrameOverlayService.getOverlayStatus();\n this.api.get(apiPathsConfig.nonCriticalFeeds['favGames'], { isOverlay: isOverlay }, { withCredentials: true }).subscribe(\n (response: any) => {\n this.favouriteGames = response;\n this.favouriteGamesSubject.next(this.favouriteGames);\n if (this.cookie.getObject('favouriteGame')) {\n const gameToBeFavorited = this.cookie.getObject('favouriteGame');\n this.toggleGameFavourite({ ...gameToBeFavorited }, true);\n this.cookie.remove('favouriteGame');\n }\n },\n () => {\n this.favouriteGamesSubject.next(this.favouriteGames);\n },\n );\n }\n\n getFavouriteGames() {\n if (this.favouriteGames && this.favouriteGames.length > 0) {\n return this.favouriteGames;\n }\n return [];\n }\n // NFR - Services optimization - Remove\n updateOtherProductFavouriteGames(isFavourite: boolean, gameId: string) {\n if (isFavourite) {\n this.otherProductFavouriteGames.push(gameId);\n } else if (this.otherProductFavouriteGames) {\n this.otherProductFavouriteGames.splice(this.otherProductFavouriteGames.indexOf(gameId), 1);\n }\n this.otherProductFavouriteGamesSubject.next(this.otherProductFavouriteGames);\n this.publishingFavObervable(isFavourite, gameId);\n }\n\n publishingFavObervable(isFavourite: boolean, gameId: string) {\n let bingoFavData: any;\n bingoFavData = {\n isFavourite: isFavourite,\n gameName: gameId,\n };\n this.bingoProductFavouriteGamesSubject.next(bingoFavData);\n }\n\n trackFavourite(gameInteraction: string, game: any) {\n this.vanillaTrackingAdapter.trigger({\n name: EventNames.GameInteraction,\n data: {\n [EventDataKeys.ComponentGameInteraction]: gameInteraction,\n [EventDataKeys.ComponentGameSection]: game.shouldTrackSection ? game.gameSection : undefined,\n },\n });\n }\n\n fetchGames(gameToBeFavorited?: any, preLoginFavourite: boolean = false, isFromEgv: boolean = false) {\n const global = this.configProviderService.provideGlobalConfig();\n if (preLoginFavourite && gameToBeFavorited && this.checkForFavouriteGame(gameToBeFavorited)) {\n this.trackFavourite(EventDataKeys.RemoveGameFavourite, gameToBeFavorited);\n return;\n }\n if (this.user.isAuthenticated) {\n const gameVariantName = gameToBeFavorited.gameId;\n const isFavourite = !this.checkForFavouriteGame(gameToBeFavorited);\n if (gameToBeFavorited.fromCasino != undefined && !gameToBeFavorited.fromCasino) {\n if (gameToBeFavorited.isFavourite) {\n this.bingoFavouriteService.removeFavourite(gameToBeFavorited.gameId, this.user.id || '').subscribe(\n (response: any) => {\n if (response.result) {\n this.cozyBingoService.getBingoData(false, false);\n this.publishingFavObervable(false, gameToBeFavorited.gameId);\n if (this.casinoWidgetService.isCasinoWidget() || gameToBeFavorited.fromCozybingo) {\n const contactUsParam = {\n categoryid: 'rcp-widget',\n roomid: gameToBeFavorited.gameId,\n isFavourite: false,\n };\n this.casinoWidgetService.postMessageToParent('favupdated', contactUsParam);\n }\n }\n },\n () => {},\n );\n } else {\n this.bingoFavouriteService.addFavourite(gameToBeFavorited.gameId, this.user.id || '').subscribe(\n (response: any) => {\n if (response.result) {\n this.cozyBingoService.getBingoData(false, false);\n this.publishingFavObervable(true, gameToBeFavorited.gameId);\n if (this.casinoWidgetService.isCasinoWidget() || gameToBeFavorited.fromCozybingo) {\n const contactUsParam = {\n categoryid: 'rcp-widget',\n roomid: gameToBeFavorited.gameId,\n isFavourite: true,\n };\n this.casinoWidgetService.postMessageToParent('favupdated', contactUsParam);\n }\n }\n },\n () => {},\n );\n }\n } else {\n const requestBody = { gameVariantName, isFavourite };\n this.api.put('update-favourite-games', requestBody, { withCredentials: true, showSpinner: false }).subscribe(\n (response: any) => {\n if (response) {\n if (response && response.errorcode === 0) {\n this.favouriteGames = response.favourites;\n const arr = response.favourites;\n this.raiseFavEvent(gameToBeFavorited);\n this.favouriteGamesSubject.next(this.favouriteGames);\n if (arr && arr.indexOf(gameToBeFavorited.gameId) > -1 && !isFromEgv) {\n this.trackFavourite(EventDataKeys.AddGameFavorites, gameToBeFavorited);\n } else if (!isFromEgv) {\n this.trackFavourite(EventDataKeys.RemoveGameFavourite, gameToBeFavorited);\n }\n }\n }\n },\n (response) => {\n if (response && response.redirect) {\n const message = this.messageQueueService.addError('SessionExpired');\n if (message) {\n this.messageQueueService.remove(message);\n }\n if (global?.messages['SessionExpired']) {\n this.messageQueueService.add(global.messages['SessionExpired'], MessageType.Information, MessageLifetime.TempData);\n }\n this.navigator.goTo(response.redirect, { forceReload: true });\n }\n },\n );\n }\n }\n }\n\n removeQuickInfoClass() {\n this.quickInfoPublisher.next(true);\n }\n toggleGameFavourite(gameToBeFavorited: any, preLoginFavourite: boolean = false, isFromEgv: boolean = false) {\n this.fetchGames(gameToBeFavorited, preLoginFavourite, isFromEgv);\n }\n\n checkForFavouriteGame(game: any): boolean {\n if (this.user.isAuthenticated && game != undefined) {\n if (game.fromCasino != undefined && !game.fromCasino && this.otherProductFavouriteGames && !game.fromCozybingo) {\n return this.otherProductFavouriteGames.indexOf(game.gameId) > -1;\n } else if (game.fromCozybingo) {\n return game.isFavourite;\n } else if (this.favouriteGames) {\n return this.favouriteGames && this.favouriteGames.indexOf(game.gameId) > -1;\n }\n }\n return false;\n }\n\n raiseFavEvent(game: any) {\n const isFavourite = this.checkForFavouriteGame(game);\n const favEvent = {\n gameId: game.gameId,\n isFavourite: isFavourite,\n };\n const evt = new CustomEvent('cc:casinocore_fav_game', { detail: favEvent });\n window.dispatchEvent(evt);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoCoreGameLaunchFactoryService {\n gameLaunchService: any;\n gameService: any;\n constructor() {}\n setGameLaunchService(gameLaunchService: any): void {\n this.gameLaunchService = gameLaunchService;\n }\n\n getGameLaunchService(): any {\n return this.gameLaunchService;\n }\n // NFR - Services optimization - Remove\n setGameService(gameService: any): void {\n this.gameService = gameService;\n }\n\n getGameService(): any {\n return this.gameService;\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport { Logger, TimerService, WebWorkerService, WorkerType } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { ApiPathsHelperService } from './api-paths-helper-service';\nimport { CasinoApiService } from './casino-api.service';\nimport { InvokerProductService } from './invoker-product.service';\n\nconst JACKPOT_MAP_BROADCAST_EVENT = 'cs-jackpot-map-broadcast';\nconst JACKPOT_VALUE_QUERY_EVENT = 'cs-jackpot-value-query';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class JackpotDataService {\n private jackpotSubject = new BehaviorSubject<any>(null);\n private jpTickingSubject = new BehaviorSubject<any>(null);\n private jackpotSortGames = new BehaviorSubject<any>(null);\n private jackpotTilesSubject = new BehaviorSubject<any>(null);\n jpSortGamesObservable: Observable<any> = this.jackpotSortGames.asObservable();\n private multiJackpotWidgetCarouselSubject = new BehaviorSubject<boolean>(false);\n jackpotFeedObservable: Observable<any> = this.jackpotSubject.asObservable();\n jackpotTilesFeedObservable: Observable<any> = this.jackpotTilesSubject.asObservable();\n multiJackpotWidgetCarouselChangedObservable: Observable<boolean> = this.multiJackpotWidgetCarouselSubject.asObservable();\n jpTickingObservable: Observable<any> = this.jpTickingSubject.asObservable();\n jackpotsCache: any;\n gameJackpotMap: Map<string, any> = new Map<string, any>();\n jackpotGroupNameMap: Map<string, any> = new Map<string, any>();\n fetchJackpotPromise: any;\n listenersCnt = 0;\n tickingInterval: any;\n sortInterval: any;\n incrementTickingForJackpotOnGameTiles: any = 1;\n overlayLobbyType: any;\n jackpotValue: any;\n sortGames: any;\n enableJpGroupTicking: boolean;\n currentLobbyType: any;\n constructor(\n private api: PlatformApiService,\n private casinoApiService: CasinoApiService,\n private configProviderService: ConfigProviderService,\n private timerService: TimerService,\n private apiPathsHelperService: ApiPathsHelperService,\n private invokerProductService: InvokerProductService,\n private logger: Logger,\n private ngZone: NgZone,\n private webWorkerService: WebWorkerService,\n private urlUtilityService: UrlUtilityService,\n ) {\n addEventListener(JACKPOT_VALUE_QUERY_EVENT, this.queryJackpotValueHandler);\n }\n\n fetchJackpot() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.jackpots['jpDataOfProduct'],\n this.invokerProductService.getInvokerProduct(),\n );\n\n this.casinoApiService.getCasinoProductApi(endPoint).subscribe(\n (response: any) => {\n this.jackpotsCache = response;\n this.setJackpots(response);\n },\n () => {\n this.logger.error('Unable to retrieve data from jpDataOfProduct API');\n },\n );\n }\n\n fetchJackpotTiles() {\n const jackpotConfig = this.configProviderService.provideJackpotConfig();\n if (jackpotConfig.enableJackpotTile) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.jackpotTiles['jpDataOfProduct'],\n this.invokerProductService.getInvokerProduct(),\n );\n this.casinoApiService.get(endPoint).subscribe(\n (response: any) => {\n this.jackpotTilesSubject.next(response);\n },\n () => {\n this.logger.error('Unable to retrieve data from jpDataOfProduct API');\n },\n );\n }\n }\n\n startFeed() {\n const JackpotData = this.configProviderService.provideJackpotConfig();\n const feedCacheConfig = this.configProviderService.provideFeedCacheConfig();\n if (feedCacheConfig.enableJackpotFeed) {\n this.listenersCnt++;\n if (!this.fetchJackpotPromise) {\n this.fetchJackpot();\n this.fetchJackpotTiles();\n\n if (JackpotData.enableTickingForJackpotOnGameTiles) {\n this.setJackpotTickers();\n }\n this.webWorkerService.createWorker(WorkerType.SelfExclusionPollInterval, { interval: JackpotData.jpInterval }, () => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.fetchJackpot();\n this.fetchJackpotTiles();\n if (JackpotData.enableTickingForJackpotOnGameTiles) {\n this.setJackpotTickers();\n }\n });\n }\n }\n }\n\n setJackpots(jackpotFeed: any) {\n if (jackpotFeed) {\n Object.keys(jackpotFeed).forEach((jackpotKey: string) => {\n if (jackpotFeed[jackpotKey]?.jackpotGroupName) {\n this.jackpotGroupNameMap?.set(jackpotFeed[jackpotKey].jackpotGroupName?.toLowerCase(), jackpotFeed[jackpotKey]);\n }\n if (jackpotFeed[jackpotKey] && jackpotFeed[jackpotKey].gamesList && jackpotFeed[jackpotKey].gamesList.length > 0) {\n jackpotFeed[jackpotKey].gamesList.forEach((gameId: string) => {\n const jackpotObject: any = {\n amount: jackpotFeed[jackpotKey].amount,\n isHotJackpotGroup: jackpotFeed[jackpotKey].isHotJackpotGroup,\n jackpotName: jackpotKey,\n jackpotAttributes: jackpotFeed[jackpotKey].attributes,\n globalJackpotAttributes: jackpotFeed[jackpotKey].globalJackpotAttributes,\n };\n this.gameJackpotMap.set(gameId, jackpotObject);\n });\n }\n });\n }\n dispatchEvent(\n new CustomEvent(JACKPOT_MAP_BROADCAST_EVENT, {\n detail: this.gameJackpotMap,\n }),\n );\n this.jackpotSubject.next(this.gameJackpotMap);\n this.incrementJackpotValues();\n }\n // NFR - Services optimization - Remove\n changeActiveMultiJackpotWidget(isChanged: boolean) {\n this.multiJackpotWidgetCarouselSubject.next(isChanged);\n }\n\n getJackpotData() {\n return this.jackpotsCache;\n }\n private get globalMessages(): any {\n return this.configProviderService.provideGlobalConfig()?.messages;\n }\n\n get jpRibbonBgColor(): string {\n return this.globalMessages?.JackpotRibbonBgColor;\n }\n\n get jpRibbonTextColor(): string {\n return this.globalMessages?.JackpotRibbonTextColor;\n }\n\n getJackpotRibbonStyles(jackpotValue: any): { jpBgColor: string; jpTextColor: string } {\n let jpRibbonBgClr: string = '';\n let jpRibbonTextClr: string = '';\n if (jackpotValue && this.jpRibbonBgColor && this.jpRibbonTextColor) {\n jpRibbonBgClr = this.jpRibbonBgColor;\n jpRibbonTextClr = this.jpRibbonTextColor;\n }\n if (jackpotValue?.jackpotAttributes?.JackpotRibbonBgColor && jackpotValue?.jackpotAttributes?.JackpotRibbonTextColor) {\n jpRibbonBgClr = jackpotValue?.jackpotAttributes?.JackpotRibbonBgColor;\n jpRibbonTextClr = jackpotValue?.jackpotAttributes?.JackpotRibbonTextColor;\n }\n if (jackpotValue?.globalJackpotAttributes) {\n jpRibbonBgClr = jackpotValue?.globalJackpotAttributes?.JackpotRibbonBgColor;\n jpRibbonTextClr = jackpotValue?.globalJackpotAttributes?.JackpotRibbonTextColor;\n }\n return { jpBgColor: jpRibbonBgClr, jpTextColor: jpRibbonTextClr };\n }\n\n getJackpotGroupNameMap() {\n return this.jackpotGroupNameMap;\n }\n\n getJackpotByGroupName(groupName: string): any {\n if (this.jackpotGroupNameMap && this.jackpotGroupNameMap.size > 0) {\n return this.jackpotGroupNameMap.get(groupName);\n }\n return null;\n }\n\n getGameJackpotValue(gameId: string) {\n return this.gameJackpotMap.get(gameId);\n }\n\n stopFeed() {\n this.listenersCnt--;\n if (this.listenersCnt === 0 && this.fetchJackpotPromise) {\n // this.timerService.clearInterval(this.fetchJackpotPromise);\n this.webWorkerService.removeWorker(WorkerType.SelfExclusionPollInterval);\n this.fetchJackpotPromise = undefined;\n this.jackpotsCache = undefined;\n this.gameJackpotMap = new Map<string, string>();\n }\n }\n\n setJackpotTickers() {\n clearInterval(this.tickingInterval);\n this.tickingInterval = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.incrementJackpotValues();\n }, 1500);\n }\n\n formatcurrency(value: any) {\n const inputarr = value.toString().split('.');\n const realpart = inputarr[0];\n const decimalpart = inputarr[1];\n let amt = '';\n for (let i = realpart.length; i > 0; i = i - 3) {\n if (i - 3 > 0) {\n amt = ',' + realpart.substring(i - 3, i) + amt;\n } else {\n amt = realpart.substring(0, i) + amt;\n }\n }\n return amt + '.' + decimalpart;\n }\n\n incrementJackpotValues() {\n const globalClientConfig = this.configProviderService.provideGlobalConfig();\n const JackpotData = this.configProviderService.provideJackpotConfig();\n\n this.gameJackpotMap.forEach((value, key) => {\n let currency: any = '';\n let valueStr = value.amount;\n valueStr = valueStr.replace(/\\ /g, '');\n const initialcurrency = valueStr.match(/[^\\d\\.\\,\\s]/g);\n if (initialcurrency && initialcurrency.length > 0) {\n for (let i = 0; i < initialcurrency.length; i++) {\n currency = currency + initialcurrency[i];\n }\n currency = currency.replace(/\\,/g, '');\n currency = currency.replace(/\\./g, '');\n }\n valueStr = valueStr.replace(/\\ /g, '');\n valueStr = valueStr.replace(/\\,/g, '');\n valueStr = valueStr.replace(/\\./g, '');\n valueStr = valueStr.replace(currency, '');\n valueStr = valueStr.replace(/\\s/g, '');\n valueStr = valueStr.match(/\\b[\\d, ]+\\b/g)[0];\n if (valueStr.length > 2) {\n const realpart = valueStr.slice(0, valueStr.length - 2);\n const decimalpart = valueStr.slice(-2);\n valueStr = realpart + '.' + decimalpart;\n }\n\n let jackpotTickValue: any = parseFloat(valueStr.replace(/,/g, ''));\n if (globalClientConfig.lobbyConfigurations.IncrementTickingForJackpotOnGameTiles) {\n this.incrementTickingForJackpotOnGameTiles = +globalClientConfig.lobbyConfigurations.IncrementTickingForJackpotOnGameTiles;\n }\n jackpotTickValue = jackpotTickValue + this.incrementTickingForJackpotOnGameTiles * 0.01;\n\n jackpotTickValue = this.formatcurrency(jackpotTickValue.toFixed(2));\n if (JackpotData && JackpotData.showJackpotCurrencyOnRight) {\n jackpotTickValue = jackpotTickValue.replace(/[,.]/g, (m: any) => (m === ',' ? '.' : ','));\n value.amount = jackpotTickValue + ' ' + currency + '.';\n } else {\n value.amount = currency + ' ' + jackpotTickValue;\n }\n\n this.gameJackpotMap.set(key, value);\n });\n\n this.ngZone.run(() => {\n // observable fire\n this.jpTickingSubject.next(this.gameJackpotMap);\n });\n }\n currencyFormat(value: any) {\n const JackpotData = this.configProviderService.provideJackpotConfig();\n let currency: any = '';\n let valueStr = value;\n valueStr = valueStr.replace(/\\ /g, '');\n const initialcurrency = valueStr.match(/[^\\d\\.\\,\\s]/g);\n if (initialcurrency && initialcurrency.length > 0) {\n for (let i = 0; i < initialcurrency.length; i++) {\n currency = currency + initialcurrency[i];\n }\n currency = currency.replace(/\\,/g, '');\n currency = currency.replace(/\\./g, '');\n }\n valueStr = valueStr.replace(/\\ /g, '');\n valueStr = valueStr.replace(/\\,/g, '');\n valueStr = valueStr.replace(/\\./g, '');\n valueStr = valueStr.replace(currency, '');\n valueStr = valueStr.replace(/\\s/g, '');\n valueStr = valueStr.match(/\\b[\\d, ]+\\b/g)[0];\n if (valueStr.length > 2) {\n const realpart = valueStr.slice(0, valueStr.length - 2);\n const decimalpart = valueStr.slice(-2);\n valueStr = realpart + '.' + decimalpart;\n }\n let jackpotTickValue: any = parseFloat(valueStr.replace(/,/g, ''));\n jackpotTickValue = this.formatcurrency(jackpotTickValue.toFixed(2));\n if (JackpotData && JackpotData.showJackpotCurrencyOnRight) {\n jackpotTickValue = jackpotTickValue.replace(/[,.]/g, (m: any) => (m === ',' ? '.' : ','));\n this.jackpotValue = jackpotTickValue + ' ' + currency + '.';\n } else {\n this.jackpotValue = currency + ' ' + jackpotTickValue;\n }\n return this.jackpotValue;\n }\n\n fetchJackpotSortGames(): void {\n this.api.get('jackpot/GetJackpotGamesSort').subscribe((response: any) => {\n this.jackpotSortGames.next(response);\n this.sortgamesInterval(response.nextUpdateTime);\n });\n }\n sortgamesInterval(sortDataNextTime: any) {\n let resultTime: number = 0;\n const jackpotDataConfig = this.configProviderService.provideJackpotConfig();\n const nextUpdateTime = sortDataNextTime - Math.floor(Date.now());\n if (nextUpdateTime > 0 && nextUpdateTime < jackpotDataConfig?.jackpotGamesSortingTime) {\n resultTime = nextUpdateTime;\n } else {\n resultTime = jackpotDataConfig?.jackpotGamesSortingTime;\n }\n\n if (this.sortInterval) {\n clearInterval(this.sortInterval);\n }\n this.sortInterval = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.fetchJackpotSortGames();\n }, resultTime);\n }\n /// filter Jackport group games\n filterJpGroup(jackpotGroups: any, gpGroupName: any) {\n const gamesList = jackpotGroups.filter((sortData: any) => sortData.jackpotGroupName == gpGroupName);\n if (gamesList && gamesList[0]?.gamesAvailable) return gamesList[0]?.gamesAvailable;\n }\n // filter sort games and un sort games\n filterGames(sortGamesList: any, gamesList: any) {\n const sortGames: any = [];\n sortGamesList.forEach((sgame: any) => {\n gamesList.forEach((game: any) => {\n if (sgame.game == game.gameId) {\n sortGames.push(game);\n }\n });\n });\n const unSortGames: any = gamesList.filter(({ gameId: id1 }: any) => !sortGames.some(({ gameId: id2 }: any) => id2 === id1));\n const sortList = sortGames.concat(unSortGames);\n return sortList;\n }\n //sort feature grid Array games and rowspan and calspan in single jackpot\n newFeaturegridArray(gamesList: any) {\n const featureGrid: any = [];\n gamesList.forEach((game: any) => {\n featureGrid.push({\n games: [game],\n maxRowSpan: game.rowSpan,\n maxColSpan: game.colSpan,\n });\n });\n return featureGrid;\n }\n\n private queryJackpotValueHandler(ev: CustomEventInit): JackpotData {\n const gameId = ev.detail?.gameId ?? '';\n if (ev.detail) {\n return {\n ...ev.detail.value,\n amount: this.gameJackpotMap?.get(gameId)?.amount ?? '',\n isHotJackpotGroup: this.gameJackpotMap?.get(gameId)?.isHotJackpotGroup ?? false,\n };\n }\n return { gameId: 'ivybookofhorus', value: { amount: '', isHotJackpotGroup: false } };\n }\n}\ninterface JackpotData {\n gameId: string;\n value: { amount: string; isHotJackpotGroup: boolean };\n}\n","// Making the module version consumable via require - to prohibit\n// multiple occurrancies of the same module in the same app\n// (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard)\nimport _Dexie from \"./dist/dexie.js\";\nconst DexieSymbol = Symbol.for(\"Dexie\");\nconst Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie);\nif (_Dexie.semVer !== Dexie.semVer) {\n throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`);\n}\nconst {\n liveQuery,\n mergeRanges,\n rangesOverlap,\n RangeSet,\n cmp,\n Entity,\n PropModSymbol,\n PropModification,\n replacePrefix,\n add,\n remove\n} = Dexie;\nexport { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie, Entity, PropModSymbol, PropModification, replacePrefix, add, remove };\nexport default Dexie;","import { ICacheItem } from '../shared/localstorage.expirable.persistence.service';\n\nexport const IDB_NAME = 'casino';\n\nexport interface IIndexedDBCacheItem extends ICacheItem {\n cacheKey: string;\n}\n\nexport interface ITableSchema {\n name: string;\n schema: string;\n}\n\nexport const DBTableSchemas: ITableSchema[] = [\n {\n name: 'LobbyFeed',\n schema: 'cacheKey',\n },\n];\n","import { Injectable } from '@angular/core';\n\nimport { Logger } from '@frontend/vanilla/core';\nimport Dexie from 'dexie';\n\nimport { DBTableSchemas, IDB_NAME } from './indexed-db.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IndexedDBService extends Dexie {\n versionNumber: number = 1;\n\n constructor(private logger: Logger) {\n super(IDB_NAME);\n this.setupIndexedDB();\n }\n\n private async setupIndexedDB(): Promise<void> {\n this.setIndexedDbTable();\n if (this.isOpen()) return;\n try {\n await this.open();\n this.logger.info('IndexedDB Connected');\n } catch (err) {\n this.logger.error(`Failed to connect ${IDB_NAME} indexedDB, Error: ${err.message}`);\n }\n }\n\n private setIndexedDbTable(): void {\n this.version(this.versionNumber).stores(this.setTablesSchema());\n }\n\n private setTablesSchema(): Record<string, string> {\n return DBTableSchemas.reduce((tables: Record<string, string>, { name, schema }) => {\n tables[name] = schema;\n return tables;\n }, {});\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Logger } from '@frontend/vanilla/core';\nimport Dexie, { Table } from 'dexie';\n\nimport { LobbyItemBaseModel } from '../casino-lobby-manager/lobby-details-model/lobby-item.model';\nimport { ICacheItem } from '../shared/localstorage.expirable.persistence.service';\nimport { DBTableSchemas, IIndexedDBCacheItem } from './indexed-db.model';\nimport { IndexedDBService } from './indexed-db.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IndexedDBManager extends Dexie {\n lobbyFeed!: Table<IIndexedDBCacheItem, string>;\n\n indexedDBService = inject(IndexedDBService);\n logger = inject(Logger);\n\n getIndexedDbStore(): Table<IIndexedDBCacheItem, string> {\n // \"We'll take `DBTableSchemas` as an argument from the caller.\n // Currently, it supports one table, but handling multiple tables for IndexedDB will be addressed in the next task, when we have multiple tables schema ready\n return this.indexedDBService.table(DBTableSchemas[0].name);\n }\n\n async read<T>(cacheKey: string, lmtExpirationTime: number): Promise<T | undefined | LobbyItemBaseModel | null> {\n const cachedItem: ICacheItem | undefined = await this.getIndexedDbStore().get(cacheKey);\n\n if (cachedItem) {\n const cachedAt = cachedItem.createdAt;\n const resolveData = cachedAt && new Date().getTime() - cachedAt < lmtExpirationTime ? cachedItem.value : null;\n\n if (!resolveData) {\n await this.getIndexedDbStore().clear();\n }\n\n return resolveData;\n }\n\n return undefined;\n }\n\n write(key: string, cacheValue: any): void {\n if (key?.trim() && cacheValue) {\n const cachedItem: IIndexedDBCacheItem = { cacheKey: key.trim(), createdAt: new Date().getTime(), value: cacheValue };\n this.getIndexedDbStore()\n .put(cachedItem)\n .catch((err) => this.logger.error('Unable to add the lobby feed to IndexedDB, ', err));\n }\n }\n\n // for now we are adding `any` but there is an ongoing work to remove it and instead introduce proper data models through out the flow of LMTFEED Data\n}\n","import { Injectable } from '@angular/core';\n\nimport { LobbyItemBaseModel } from '../casino-lobby-manager/lobby-details-model/lobby-item.model';\n\nexport interface IExpirablePersistenceService {\n read(key: string, expirationInterval: number): LobbyItemBaseModel | null;\n write(key: string, cacheValue: any): void;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageExpirablePersistenceService implements IExpirablePersistenceService {\n //expirationInterval to be given in miliseconds.\n read(key: string, expirationInterval: number): LobbyItemBaseModel | null {\n if (key && key.trim()) {\n const cachedItem = localStorage.getItem(key.trim());\n const parsedCacheItem: ICacheItem = cachedItem && JSON.parse(cachedItem);\n if (parsedCacheItem) {\n const cachedAt = parsedCacheItem.createdAt;\n if (cachedAt && new Date().getTime() - cachedAt < expirationInterval) {\n return parsedCacheItem.value;\n }\n }\n }\n return null;\n }\n\n write(key: string, cacheValue: LobbyItemBaseModel): void {\n if (key && key.trim() && cacheValue) {\n const cachedItem: ICacheItem = { createdAt: new Date().getTime(), value: cacheValue };\n localStorage.setItem(key.trim(), JSON.stringify(cachedItem));\n }\n }\n}\nexport interface ICacheItem {\n readonly createdAt: number;\n readonly value: LobbyItemBaseModel | any;\n}\n\nexport class CacheItem implements ICacheItem {\n createdAt: number;\n value: LobbyItemBaseModel;\n}\n","export class GameDataFromCacheResponseModel {\n gameMetaData: Map<string, any> = new Map<string, any>();\n gamesNotInCache: string[] = [];\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\n\nimport { Page, UserService } from '@frontend/vanilla/core';\n\nimport { LobbyItemBaseModel } from '../casino-lobby-manager/lobby-details-model/lobby-item.model';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { IndexedDBManager } from '../indexed-db/indexed-db-manager.service';\nimport { LobbyItem } from '../public-api';\nimport { CasinoCoreNpmParamsService } from './casino-core-npm-params.service';\nimport { CasinoWidgetService } from './casino-widget.service';\nimport { LocalStorageExpirablePersistenceService } from './localstorage.expirable.persistence.service';\nimport { GameDataFromCacheResponseModel } from './models/gameDataFromCacheResponse.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CacheManagerService {\n constructor(\n private localStorageExpirablePersistenceService: LocalStorageExpirablePersistenceService,\n private page: Page,\n private casinoWidgetService: CasinoWidgetService,\n private configProviderService: ConfigProviderService,\n private user: UserService,\n private casinoCoreNpmParamsService: CasinoCoreNpmParamsService,\n private indexedDBManager: IndexedDBManager,\n ) {}\n\n getCategoryCacheKey(lobbyType: string = '', invokerProduct: string = '') {\n let cachekey;\n let casinoConfig: any = this.configProviderService.provideCasinoConfig();\n if (this.user.isAuthenticated) {\n cachekey = 'categoryCoreLookUp_' + this.page.lang + '_' + lobbyType + '_' + this.user.username;\n } else {\n cachekey = 'categoryCoreLookUp_' + this.page.lang + '_' + lobbyType;\n }\n if (invokerProduct && invokerProduct != '') {\n cachekey += '_' + invokerProduct;\n } else if (this.casinoWidgetService.product) {\n cachekey += '_' + this.casinoWidgetService.product;\n } else {\n cachekey += '_' + casinoConfig.casinoContextValues.invokerProduct;\n }\n return cachekey;\n }\n\n async readCategoryDataLocalCache(\n expirationIntervalInSeconds: number,\n lobbyType: string = '',\n invokerProduct: string = '',\n ): Promise<LobbyItemBaseModel | any> {\n let cachedCategoryData: LobbyItemBaseModel | any;\n let featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n let devSettingsConfig: any = this.configProviderService.provideDevSettingsConfig();\n let isPreviewUser = lobbyType === 'globalBonusJackpots' ? true : devSettingsConfig.isPreviewUser;\n if (this.isIndexedDBEnabled()) {\n cachedCategoryData =\n featuresConfig.enableClientStorage && !isPreviewUser\n ? await this.indexedDBManager.read(this.getCategoryCacheKey(lobbyType, invokerProduct), expirationIntervalInSeconds * 1000)\n : null;\n return cachedCategoryData;\n } else {\n cachedCategoryData =\n featuresConfig.enableClientStorage && !isPreviewUser\n ? this.localStorageExpirablePersistenceService.read(\n this.getCategoryCacheKey(lobbyType, invokerProduct),\n expirationIntervalInSeconds * 1000,\n )\n : null;\n return Promise.resolve(cachedCategoryData);\n }\n }\n\n readCategoryDataLocalCacheReturnValue(\n expirationIntervalInSeconds: number,\n lobbyType: string = '',\n invokerProduct: string = '',\n ): LobbyItemBaseModel | any {\n let cachedCategoryData: LobbyItemBaseModel | any;\n let featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n let devSettingsConfig: any = this.configProviderService.provideDevSettingsConfig();\n let isPreviewUser = lobbyType === 'globalBonusJackpots' ? true : devSettingsConfig.isPreviewUser;\n cachedCategoryData =\n featuresConfig.enableClientStorage && !isPreviewUser\n ? this.localStorageExpirablePersistenceService.read(\n this.getCategoryCacheKey(lobbyType, invokerProduct),\n expirationIntervalInSeconds * 1000,\n )\n : null;\n return cachedCategoryData;\n }\n\n writeCategoryLocalStorageCacheMap(lobbyType: string, fullLobbyInfo: LobbyItem, invokerProduct: string = '') {\n try {\n let lobbyItemToStore: LobbyItemBaseModel = new LobbyItemBaseModel();\n if (!this.casinoCoreNpmParamsService.getcasinoCoreNpmParams().disableCasinoLocalStorage) {\n lobbyItemToStore.lsCategoriesMap = fullLobbyInfo.lsCategoriesMap;\n lobbyItemToStore.lsCategorytNameLangMap = fullLobbyInfo.lsCategorytNameLangMap;\n lobbyItemToStore.lsStickerNameMap = fullLobbyInfo.lsStickerNameMap;\n lobbyItemToStore.lsGameMetaDataMap = fullLobbyInfo.lsGameMetaDataMap;\n lobbyItemToStore.catVsFeatureMetadata = fullLobbyInfo.catVsFeatureMetadata;\n lobbyItemToStore.lbyTempName = fullLobbyInfo.lbyTempName;\n lobbyItemToStore.lobbyGameIconImageSuffix = fullLobbyInfo.lobbyGameIconImageSuffix;\n if (this.isIndexedDBEnabled()) {\n this.indexedDBManager.write(this.getCategoryCacheKey(lobbyType, invokerProduct), lobbyItemToStore);\n } else {\n this.localStorageExpirablePersistenceService.write(this.getCategoryCacheKey(lobbyType, invokerProduct), lobbyItemToStore);\n }\n }\n } catch (error) {}\n }\n\n isIndexedDBEnabled(): boolean {\n let enableIndexedDBStorage = this.configProviderService.provideLmtConfig()?.enableIndexedDBStorage;\n return enableIndexedDBStorage;\n }\n\n writeForceGameLaunchObjInSessionStorage(sessionStorageObjName: string, gameObj: any) {\n try {\n sessionStorage.setItem(sessionStorageObjName, JSON.stringify(gameObj));\n } catch (error) {}\n }\n getAuthenticatedThumbnailCacheKey(lobbyType: string = '') {\n if (this.user.username) {\n return 'thumbnailLookUp_' + this.user.username + '_' + lobbyType;\n }\n return '';\n }\n getAnonymousThumbnailCacheKey(lobbyType: string = '') {\n return 'thumbnailLookUp_' + lobbyType;\n }\n getThumbnailCacheKey(lobbyType: string = '') {\n let cachekey: any;\n if (this.user.isAuthenticated) {\n cachekey = this.getAuthenticatedThumbnailCacheKey(lobbyType);\n } else {\n cachekey = this.getAnonymousThumbnailCacheKey(lobbyType);\n }\n return cachekey;\n }\n\n setThumbnailLocalStorageCacheMap(lobbyType: string = '', thumbnailGames: any, forceLaunch: boolean = false) {\n try {\n if (!forceLaunch) {\n thumbnailGames && localStorage.setItem(this.getThumbnailCacheKey(lobbyType), thumbnailGames);\n } else {\n thumbnailGames && localStorage.setItem(this.getAuthenticatedThumbnailCacheKey(lobbyType), thumbnailGames);\n thumbnailGames && localStorage.setItem(this.getAnonymousThumbnailCacheKey(lobbyType), thumbnailGames);\n }\n } catch (error) {}\n }\n getThumbnailsfromLocalStorage(lobbyType: string = '') {\n try {\n return localStorage.getItem(this.getThumbnailCacheKey(lobbyType));\n } catch (error) {\n return null;\n }\n }\n\n removeThumbnailfromLocalStorage(lobbyType: string = '') {\n try {\n localStorage.removeItem(this.getThumbnailCacheKey(lobbyType));\n } catch (error) {}\n }\n\n readForceGameLaunchObjDataFromSessionStorage(objName: string) {\n if (sessionStorage.getItem(objName)) {\n let ForceGameLaunchObjData = sessionStorage.getItem(objName) || '';\n return JSON.parse(ForceGameLaunchObjData);\n }\n }\n\n getAllCategoriesFromLocalCache(lobbyType: string = '', invokerProduct: string = ''): LobbyItemBaseModel | null | any {\n let features = this.configProviderService.provideFeaturesConfig();\n return this.readCategoryDataLocalCacheReturnValue(features.browserLocalStorageCategoryDataUpdateInterval, lobbyType, invokerProduct);\n }\n\n setGameToStickersMap(data: any): any {\n data && localStorage.setItem('stickersMap', JSON.stringify(data));\n }\n\n getGamesDataFromCache(gamesList: string[]): GameDataFromCacheResponseModel {\n let features = this.configProviderService.provideFeaturesConfig();\n let devSettings = this.configProviderService.provideDevSettingsConfig();\n try {\n if (features.enableClientStorage && !devSettings.isPreviewUser) {\n let gameDataSet: Map<string, any> = new Map<string, any>(),\n gamesNotInCache: string[] = [];\n gamesList.forEach((game) => {\n let singleGameData: any = localStorage.getItem(game) && JSON.stringify(localStorage.getItem(game));\n if (\n singleGameData &&\n singleGameData.localStorageTimeStamp + features.browserLocalStorageCacheDuration * 1000 > new Date().getTime()\n ) {\n gameDataSet.set(game, singleGameData);\n } else {\n if (singleGameData) {\n localStorage.removeItem(game);\n }\n gamesNotInCache.push(game);\n }\n });\n let data: GameDataFromCacheResponseModel = {\n gameMetaData: gameDataSet,\n gamesNotInCache: gamesNotInCache.length > 0 ? gamesNotInCache : [],\n };\n return data;\n } else return new GameDataFromCacheResponseModel();\n } catch (error) {\n return new GameDataFromCacheResponseModel();\n }\n }\n setGameDataCache(data: Map<string, any>) {\n try {\n Array.from(data.entries()).forEach((entry: any) => {\n if (!localStorage.getItem(entry[0])) {\n entry[1].localStorageTimeStamp = new Date().getTime();\n localStorage.setItem(entry[0], JSON.stringify(entry[1]));\n }\n });\n } catch (error) {}\n }\n getGameToStickersMap(): any {\n let data = localStorage.getItem('stickersMap');\n return data ? JSON.parse(data) : false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Logger } from '@frontend/vanilla/core';\nimport { cloneDeep } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { CacheManagerService } from './cache-manager.service';\nimport { CasinoManager } from './casino-manager.service';\nimport { InvokerProductService } from './invoker-product.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UnfinishedGamesService {\n unfinishedGames: any = [];\n unfinishedGamesFromAllLobby: any = [];\n private unfinishedGamesSubject = new BehaviorSubject<any>(null);\n unfinishedFeedObservable: Observable<any> = this.unfinishedGamesSubject.asObservable();\n private unfinishedGamesFromAllLobbySubject = new BehaviorSubject<any>(null);\n unfinishedFeedFromAllLobbyObservable: Observable<any> = this.unfinishedGamesFromAllLobbySubject.asObservable();\n\n constructor(\n private api: PlatformApiService,\n private readonly configProviderService: ConfigProviderService,\n private casinoManager: CasinoManager,\n private cacheManager: CacheManagerService,\n private invokerProductService: InvokerProductService,\n private logger: Logger,\n ) {}\n\n setUnfinishedGames() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const apiurl: string = `${apiPathsConfig.gamesServices['unfinishedGames']}?invokerProduct=${this.invokerProductService.getInvokerProduct()}`;\n this.api.get(apiurl, null, { withCredentials: true }).subscribe(\n (response: any) => {\n this.unfinishedGames = [];\n if (response) {\n this.unfinishedGames = response?.games;\n this.unfinishedGamesFromAllLobby = cloneDeep(this.unfinishedGames);\n // this.unfinishedGamesFromAllLobby = [...this.unfinishedGames];\n if (featuresConfig?.rpGamesFilterInLiveCasino && this.casinoManager.getCurrentLobby()?.toLowerCase() == 'livecasino')\n this.filterLiveCasinoGames(this.unfinishedGames);\n if (featuresConfig?.rpWidgetGamesFilterInLiveCasino) this.unfinishedGamesFromAllLobby = this.unfinishedGames;\n this.unfinishedGamesSubject.next(this.unfinishedGames);\n this.unfinishedGamesFromAllLobbySubject.next(this.unfinishedGamesFromAllLobby);\n }\n },\n (error) => {\n this.logger.error('unable to retrieve the data from unfinishedGames api ' + error);\n },\n );\n }\n\n filterLiveCasinoGames(unfinishedGames: any) {\n const categoryCoreLookUp: any = this.cacheManager.getAllCategoriesFromLocalCache('LiveCasino', this.casinoManager.getInvokerProduct());\n this.unfinishedGames =\n categoryCoreLookUp?.lsGameMetaDataMap?.map((x: any) => x && x[0])?.filter((y: any) => unfinishedGames?.includes(y)) || [];\n }\n\n getUnfinishedGamesFromAllLobby() {\n return this.unfinishedGamesFromAllLobby;\n }\n\n getUnfinishedGames() {\n return this.unfinishedGames;\n }\n\n checkForUnfinishedGame(game: any) {\n return this.unfinishedGamesFromAllLobby && this.unfinishedGamesFromAllLobby.indexOf(game.gameId) > -1;\n }\n}\n","<div class=\"casino-game-cls small-icon\">\n <a\n class=\"game-image-link\"\n [ngStyle]=\"{ 'border-radius': radius, 'background': unfinishedBG }\"\n (click)=\"action(game)\"\n (window:resize)=\"onResize()\">\n <cc-image-loader\n [icon]=\"game.icon\"\n [iconType]=\"game.iconType\"\n [gameId]=\"game.gameId\"\n [alt]=\"game.icon.alt\"\n [style]=\"setUnfinishedImageStyle()\"\n [priority]=\"true\"\n [disableTheme]=\"true\"></cc-image-loader>\n <div\n class=\"jackpot\"\n *ngIf=\"showJackpotOnGameTiles && game.jackpotValue\"\n [ngStyle]=\"{ background: jpRibbonStyles?.jpBgColor, color: jpRibbonStyles?.jpTextColor }\"\n [ngClass]=\"{ 'embed-jp-styles': newJackpotRibbonStyling }\"\n [class.is-fast-loading-game-embed]=\"game.isFastLoadingGame\">\n <span class=\"hot-icon\" *ngIf=\"game.isHotJackpotGroup && enableHotIcon\">\n <img *ngIf=\"!enableEpcotSubNavigation\" [src]=\"hotIcon\" />\n <img *ngIf=\"enableEpcotSubNavigation\" [src]=\"epcotHotIcon\" />\n </span>\n <span>{{ game.jackpotValue }}</span>\n </div>\n <div class=\"fast-loading-game\" *ngIf=\"game.isFastLoadingGame\">\n <img class=\"embed-fast-loading-img\" src=\"/pictures/Fast-Loading-Game-Animation.gif\" />\n </div>\n <div [ngClass]=\"gameClass\"><span></span></div>\n <div *ngIf=\"isTouch\">\n <div class=\"game-badge theme-info quick-info\" *ngIf=\"useQuickInfo; else Favourite\">\n <span (click)=\"displayQuickInfo(game, $event)\"></span>\n </div>\n <ng-template #Favourite>\n <div class=\"game-badge\" *ngIf=\"useFavouriteGames\" [ngClass]=\"game.isFavourite ? 'theme-favorite-i' : 'theme-favorite'\">\n <span (click)=\"toggleFavourite(game, $event)\"></span>\n </div>\n </ng-template>\n </div>\n <span class=\"theme-playbutton embed-play-icon\"></span>\n </a>\n <div class=\"game-title\" *ngIf=\"showGameTitle\">\n <a (click)=\"action(game)\">{{ game.title }}</a>\n <span *ngIf=\"game.enableDetailPage && !game.forceDetailPage\">\n <a class=\"icon theme-info\" (click)=\"action(game)\"></a>\n </span>\n </div>\n</div>\n","import { NgClass, NgIf, NgStyle } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output } from '@angular/core';\n\nimport { MessageQueueService, UserService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { ImageLoaderComponent } from '../image-loader/image-loader.component';\nimport { CasinoManager } from '../shared/casino-manager.service';\nimport { ConstService } from '../shared/const.service';\nimport { FavouriteService } from '../shared/favourite.service';\nimport { CasinoCoreGameLaunchFactoryService } from '../shared/gamelaunchfactory.service';\nimport { JackpotDataService } from '../shared/jackpotdata-service';\nimport { UnfinishedGamesService } from '../shared/unfinished-games-service';\n\n@Component({\n selector: 'cc-game-embed',\n templateUrl: 'game-embed.component.html',\n standalone: true,\n imports: [NgStyle, ImageLoaderComponent, NgIf, NgClass],\n})\nexport class GameEmbedComponent implements OnInit, OnChanges, OnDestroy {\n @Input() game: any;\n @Input() radius: number;\n @Input() categorytype: string;\n @Input() lobbyType: any;\n @Output() embedGameClicked: EventEmitter<any> = new EventEmitter<any>();\n Navigator: any;\n FavouriteGames: any;\n showJackpotOnGameTiles: any;\n unfinishedStyle: any;\n unfinishedBG: any;\n unfinishedBGOpacity: any;\n unfinishedText: any;\n gameClass: string[] = [];\n forceVisible: boolean = true;\n useFavouriteGames: boolean;\n useQuickInfo: boolean;\n showGameTitle: boolean;\n isTouch: boolean;\n isOverlay: boolean;\n QuickInfoDisplay = new Map();\n unfinishedFeedSubscription: any;\n jackpotHandle: any;\n enableTickingForJackpotOnGameTiles: boolean;\n newJackpotRibbonStyling: boolean;\n enableHotIcon: boolean;\n hotIcon: any;\n epcotHotIcon: any;\n gameService: any;\n enableEpcotSubNavigation: boolean;\n jpRibbonStyles: { jpBgColor: string; jpTextColor: string };\n constructor(\n private user: UserService,\n private favouriteService: FavouriteService,\n private messageQueue: MessageQueueService,\n private unfinishedGamesService: UnfinishedGamesService,\n private casinoManager: CasinoManager,\n private jackpotDataService: JackpotDataService,\n private configProviderService: ConfigProviderService,\n private gameLaunchFactoryService: CasinoCoreGameLaunchFactoryService,\n ) {}\n\n ngOnInit() {\n this.gameService = this.gameLaunchFactoryService.getGameService();\n if (this.game && !this.game.icon) {\n this.game.icon = {\n alt: '',\n height: 0,\n width: 0,\n };\n }\n const global = this.configProviderService.provideGlobalConfig();\n const jackpotData = this.configProviderService.provideJackpotConfig();\n const subnavConfig: any = this.configProviderService.provideSubNavigationConfig();\n this.enableEpcotSubNavigation = subnavConfig.enableEpcotSubNavigation;\n this.enableTickingForJackpotOnGameTiles = this.casinoManager.IsFeatureEnabledforLobbytype(\n this.lobbyType,\n jackpotData.enableJpTickingForLobbyType,\n );\n this.showJackpotOnGameTiles = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, jackpotData.showJackpotOnGameTilesLobbyType);\n this.unfinishedStyle = global.unfinishedStyle.bageStyle;\n this.unfinishedBG = global.unfinishedStyle.unfinishedBackground ? global.unfinishedStyle.unfinishedBackground : 'transparent';\n this.unfinishedBGOpacity = global.unfinishedStyle.unfinishedBGOpacity ? global.unfinishedStyle.unfinishedBGOpacity : '0.5';\n this.unfinishedText = global.messages.UNFINISHED;\n const features = this.configProviderService.provideFeaturesConfig();\n const gameConfig = this.configProviderService.provideGameConfig();\n this.isTouch = this.casinoManager.isTouch();\n this.useFavouriteGames = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, features.favouriteGamesLobbyType);\n this.useQuickInfo = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, features.enableQuickInfoLobbyType);\n this.showGameTitle = features.showGameTitle;\n this.setGameClass();\n this.game.isFavourite = this.favouriteService.checkForFavouriteGame(this.game);\n this.QuickInfoDisplay = new Map();\n this.subscribrToUnfinishedFeed();\n this.setJackPotValue();\n this.subscribtToJackpotFeed();\n this.newJackpotRibbonStyling = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, features.newJackpotRibbonStyling);\n this.enableHotIcon = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, features.enableHotIcon);\n this.hotIcon = gameConfig.host + features.hotIconPath.hotIcon;\n this.epcotHotIcon = gameConfig.host + features.hotIconPath.epcotHotIcon;\n }\n\n ngOnDestroy() {\n this.unfinishedFeedSubscription.unsubscribe();\n this.jackpotHandle.unsubscribe();\n }\n\n onResize() {\n this.isTouch = this.casinoManager.isTouch();\n }\n ngOnChanges() {\n const features = this.configProviderService.provideFeaturesConfig();\n this.newJackpotRibbonStyling = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, features.newJackpotRibbonStyling);\n }\n toggleFavourite(game: any, $event: any) {\n if (this.user.isAuthenticated) {\n $event.stopImmediatePropagation();\n this.FavouriteGames.toggleGameFavourite(game);\n } else {\n this.Navigator.navigateToLogin();\n }\n }\n\n displayQuickInfo(game: any, $event: any) {\n $event.stopImmediatePropagation();\n this.QuickInfoDisplay.set(game.gameId + this.categorytype, true);\n }\n\n hideQuickInfo(game: any) {\n this.QuickInfoDisplay.set(game.gameId + this.categorytype, false);\n }\n\n mouseOver(game: any) {\n this.gameService.overlayVisibilityStatus.subscribe((overlayStatus: any) => {\n if (!this.isTouch && !overlayStatus) {\n this.QuickInfoDisplay.set(game.gameId + this.categorytype, true);\n }\n });\n }\n\n mouseLeave(game: any) {\n if (!this.isTouch) {\n this.QuickInfoDisplay.set(game.gameId + this.categorytype, false);\n }\n }\n\n //Manish- I don't see any use of below method.\n\n //Need to call this function for to track game launch based on position\n // gameLaunchTracking() {\n // //Game launch tracking implementation\n // let gameLuanchCategory;\n // let selectedCategoryType = this.casinoManager.getActiveCategory();\n\n // if (selectedCategoryType) {\n // gameLuanchCategory = selectedCategoryType;\n // }\n\n // if (this.categorytype) {\n // gameLuanchCategory = gameLuanchCategory + '/' + this.categorytype;\n // }\n\n // }\n\n action(game: any) {\n this.messageQueue.clear({ clearPersistent: true });\n this.embedGameClicked.emit(game);\n }\n setUnfinishedImageStyle() {\n if (\n this.game.isUnfinishedBadge &&\n (this.categorytype === ConstService.RECENT_GAMES_CATEGORY_ID || this.categorytype === ConstService.UNFINISHED_GAMES_CATEGORY_ID)\n ) {\n return 'opacity: ' + this.unfinishedBGOpacity + ' ; border-radius : ' + this.radius;\n }\n\n return null;\n }\n setBageStyle() {\n let fullStyle = this.unfinishedStyle;\n\n if (this.unfinishedText.length > 11) {\n fullStyle += '; font-size: 0.56em;';\n }\n\n const isiOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);\n if (\n this.game.isUnfinishedBadge &&\n isiOS &&\n (this.categorytype === ConstService.RECENT_GAMES_CATEGORY_ID || this.categorytype === ConstService.UNFINISHED_GAMES_CATEGORY_ID)\n ) {\n const textLength = this.unfinishedText.length * 5.5;\n fullStyle += ' ; padding : 2px ' + textLength + 'px 2px 2px ; width: -web-fit-content !important;';\n }\n\n return fullStyle;\n }\n subscribrToUnfinishedFeed() {\n this.unfinishedFeedSubscription = this.unfinishedGamesService.unfinishedFeedObservable.subscribe(() => {\n this.game.isUnfinishedBadge = this.unfinishedGamesService.checkForUnfinishedGame(this.game);\n if (\n this.game.isUnfinishedBadge &&\n (this.categorytype === ConstService.RECENT_GAMES_CATEGORY_ID || this.categorytype === ConstService.UNFINISHED_GAMES_CATEGORY_ID)\n ) {\n this.gameClass.push('showunfinishedbage');\n }\n });\n }\n\n setJackPotValue() {\n const jackpotValue = this.jackpotDataService.getGameJackpotValue(this.game.gameId);\n const enableRibbonConfig = this.configProviderService.provideJackpotConfig().enableRibbonConfig;\n if (jackpotValue) {\n this.game.jackpotValue = jackpotValue.amount;\n this.game.isHotJackpotGroup = jackpotValue.isHotJackpotGroup;\n if (enableRibbonConfig) {\n this.jpRibbonStyles = this.jackpotDataService.getJackpotRibbonStyles(jackpotValue);\n }\n }\n }\n\n subscribtToJackpotFeed() {\n this.jackpotHandle = this.jackpotDataService.jackpotFeedObservable.subscribe(() => {\n this.setJackPotValue();\n });\n if (this.enableTickingForJackpotOnGameTiles) {\n this.jackpotDataService.jpTickingObservable.subscribe(() => {\n this.setJackPotValue();\n });\n }\n }\n private setGameClass() {\n if (this.game) {\n if (!this.user.isAuthenticated && this.game.demoAvailable) {\n this.gameClass.push('demo');\n }\n if (this.game.isNewBadge) {\n this.gameClass.push('new');\n }\n if (this.game.isCashbackBadge) {\n this.gameClass.push('cashback');\n }\n if (this.game.isCasinoLiveBadge) {\n this.gameClass.push('casino-live');\n }\n if (this.game.isFlagBadge) {\n this.gameClass.push('flag');\n }\n if (this.game['isExclusiveBadge']) {\n this.gameClass.push('exclusive');\n }\n if (\n this.game.isUnfinishedBadge &&\n (this.categorytype === ConstService.RECENT_GAMES_CATEGORY_ID || this.categorytype === ConstService.UNFINISHED_GAMES_CATEGORY_ID)\n ) {\n this.gameClass.push('showunfinishedbage');\n }\n }\n if (this.gameClass.length > 0) {\n this.gameClass = ['game-badge'].concat(this.gameClass);\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { SearchDesktopComponent } from './search-desktop.component';\n\n@Component({\n selector: 'cc-lazy-search-desktop',\n template: `\n @defer (on immediate) {\n <cc-search-desktop\n [isTouch]=\"isTouch\"\n [lobbyType]=\"lobbyType\"\n [placeholder]=\"placeholder\"\n [categoryRoute]=\"categoryRoute\"\n (embedGameClicked)=\"embedGameClicked.emit($event)\" />\n }\n `,\n standalone: true,\n imports: [SearchDesktopComponent],\n})\nexport class LazySearchDesktopComponent {\n @Input() isTouch: boolean;\n @Input() lobbyType: string;\n @Input() placeholder: string;\n @Input() categoryRoute: string;\n @Output() embedGameClicked = new EventEmitter<any>();\n}\n","export class AdvanceGameDataModel {\n parentcategoryId: string;\n subcategoryId: string;\n rowNumber: any;\n columnNumber: number;\n iconSize: any;\n iconTypeForTracking: string;\n browserName: string;\n browserVersion: any;\n osName: any;\n osVersion: any;\n userAgent: string;\n devicemake: any;\n featureId: any;\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\n\n//need to check\nimport { DeviceService, NativeAppService } from '@frontend/vanilla/core';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { ConstService } from './const.service';\nimport { AdvanceGameDataModel } from './models/advance-game-data.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdvanceGameDataService {\n advanceGameDataModel = new AdvanceGameDataModel();\n featureid: any;\n constructor(\n private casinoLobbyService: CasinoLobbyService,\n private configProviderService: ConfigProviderService,\n private deviceService: DeviceService,\n private nativeAppService: NativeAppService,\n ) {}\n\n getAdvanceCategoryInfo(gameLaunchParam: any) {\n let parentcategoryId: string;\n let subcategoryId: string;\n const categoryType: string = gameLaunchParam.categoryType;\n const catInfoObject = this.casinoLobbyService.getCategoryInfo(gameLaunchParam.game.lobbyType, categoryType);\n\n let rowNumber: any;\n let catInfo: any;\n if (catInfoObject) {\n catInfo = catInfoObject.categoryInfo;\n this.featureid = catInfo?.filterFeatureIds ? catInfo?.filterFeatureIds[0] : null;\n }\n if (!catInfo) {\n parentcategoryId = categoryType;\n subcategoryId = '';\n } else if (!catInfo.parentLMTCategoryId) {\n if (!catInfo.lmtCategoryId) {\n parentcategoryId = categoryType;\n subcategoryId = '';\n } else {\n parentcategoryId = catInfo.lmtCategoryId;\n subcategoryId = '';\n }\n } else {\n parentcategoryId = catInfo.parentLMTCategoryId;\n subcategoryId = catInfo.lmtCategoryId;\n }\n if (categoryType == ConstService.SEARCH || categoryType == ConstService.SEARCH_GYML) {\n rowNumber = '';\n }\n const advanceCatInfoObj = {\n parentCategoryId: parentcategoryId,\n subCategoryId: subcategoryId,\n rowNumber: rowNumber,\n };\n return advanceCatInfoObj;\n }\n createAdvanceGameModel(\n parentCategory: string,\n subCategory: string,\n columnNumber: number,\n iconType: any,\n iconTypeForTracking: string,\n gridPosition?: any,\n ) {\n const advanceGameDataConfig = this.configProviderService.provideAdvanceGameDataConfig();\n const featureId = this.featureid;\n if (advanceGameDataConfig.enableAdvanceGameData) {\n const advanceGameDataModel: AdvanceGameDataModel = new AdvanceGameDataModel();\n advanceGameDataModel.parentcategoryId = parentCategory;\n advanceGameDataModel.subcategoryId = subCategory;\n advanceGameDataModel.rowNumber = gridPosition;\n advanceGameDataModel.columnNumber = columnNumber;\n advanceGameDataModel.iconSize = iconType;\n advanceGameDataModel.iconTypeForTracking = iconTypeForTracking;\n advanceGameDataModel.featureId = featureId;\n this.setRemainingAdvanceGameDataParameters(advanceGameDataModel);\n }\n }\n\n gameClickedFromSearchAdvanceGameDataModel(game: any, section: string, gridPos: any, index: any) {\n const advanceGameDataModel: AdvanceGameDataModel = new AdvanceGameDataModel();\n advanceGameDataModel.parentcategoryId = 'egv_' + section;\n advanceGameDataModel.subcategoryId = '';\n advanceGameDataModel.rowNumber = '';\n if (section != ConstService.SEARCH) {\n advanceGameDataModel.rowNumber = gridPos ? gridPos : '';\n }\n advanceGameDataModel.columnNumber = index + 1;\n advanceGameDataModel.iconSize = game.iconType;\n advanceGameDataModel.iconTypeForTracking = game.iconTypeForTracking;\n this.setRemainingAdvanceGameDataParameters(advanceGameDataModel);\n }\n\n setRemainingAdvanceGameDataParameters(advanceGameDataModel: AdvanceGameDataModel) {\n advanceGameDataModel.userAgent = window.navigator.userAgent;\n advanceGameDataModel.browserName = this.deviceService.getCapability('browserName') || '';\n advanceGameDataModel.browserVersion = this.deviceService.getCapability('browserVersion');\n advanceGameDataModel.osName = this.deviceService.osName;\n advanceGameDataModel.osVersion = this.deviceService.osVersion;\n advanceGameDataModel.devicemake = this.deviceService.vendor;\n this.setAdvanceGameModel(advanceGameDataModel);\n }\n setAdvanceGameModel(advanceGameDataModel: AdvanceGameDataModel) {\n this.advanceGameDataModel = advanceGameDataModel;\n }\n\n getAdvanceGameModel() {\n const advanceGameDataModelObj: AdvanceGameDataModel | null = {\n parentcategoryId: this.advanceGameDataModel.parentcategoryId,\n subcategoryId: this.advanceGameDataModel.subcategoryId,\n rowNumber: this.advanceGameDataModel.rowNumber,\n columnNumber: this.advanceGameDataModel.columnNumber,\n iconSize: this.advanceGameDataModel.iconSize,\n iconTypeForTracking: this.advanceGameDataModel.iconTypeForTracking,\n browserName: this.advanceGameDataModel.browserName,\n browserVersion: this.advanceGameDataModel.browserVersion,\n osName: this.advanceGameDataModel.osName,\n osVersion: this.advanceGameDataModel.osVersion,\n userAgent: this.advanceGameDataModel.userAgent,\n devicemake: this.advanceGameDataModel.devicemake,\n featureId: this.advanceGameDataModel.featureId,\n };\n if (Object.keys(advanceGameDataModelObj).length > 0) {\n return advanceGameDataModelObj;\n }\n return null;\n }\n\n appendAdvanceGameDataUrl(url: string, channelId: string): string {\n const advanceGameDataConfig = this.configProviderService.provideAdvanceGameDataConfig();\n const advanceGameDataModelObj = this.getAdvanceGameModel();\n const device = this.deviceService.isMobilePhone ? 'mobile' : this.deviceService.isTablet ? 'tablet' : 'desktop';\n const clientVersion: string = '';\n const model = this.deviceService.model != null ? this.deviceService.model : '';\n let appType;\n switch (channelId) {\n case 'VC':\n appType = 'VC_Client';\n break;\n case 'MC':\n appType = 'MAC_Client';\n break;\n case 'AW':\n appType = 'Android_Web';\n break;\n case 'IW':\n appType = 'IOS_Web';\n break;\n case 'AN':\n case 'IN':\n appType = this.nativeAppService.isNativeApp ? 'NativeApp' : this.nativeAppService.isNativeWrapper ? 'NativeWrapperApp' : '';\n break;\n case 'FC':\n appType = 'Desktop';\n break;\n default:\n appType = 'Web';\n }\n const advanceGameDataParamArray: Array<string> = [\n advanceGameDataModelObj?.parentcategoryId,\n advanceGameDataModelObj?.subcategoryId,\n advanceGameDataModelObj?.rowNumber,\n advanceGameDataModelObj?.columnNumber,\n advanceGameDataModelObj?.iconTypeForTracking,\n advanceGameDataModelObj?.browserName,\n advanceGameDataModelObj?.browserVersion,\n advanceGameDataModelObj?.osName,\n device,\n clientVersion,\n advanceGameDataModelObj?.userAgent,\n advanceGameDataModelObj?.osVersion,\n advanceGameDataModelObj?.devicemake,\n model,\n appType,\n advanceGameDataModelObj?.featureId,\n ];\n\n const advanceGameDataUrl = this.format(advanceGameDataConfig.advanceUrlPattern, advanceGameDataParamArray);\n const finalUrl = this.appendAdvanceGameDataQueryString(url, advanceGameDataUrl);\n if (\n (advanceGameDataModelObj?.featureId == null || advanceGameDataModelObj?.featureId == '') &&\n finalUrl &&\n finalUrl.indexOf('&featureId=') > -1\n ) {\n const replacedUrl = finalUrl.replace('&featureId=', '');\n return replacedUrl;\n } else {\n return finalUrl;\n }\n }\n format(content: string, array: Array<string>) {\n let theString = content;\n for (let i = 0; i < content.length; i++) {\n const regEx = new RegExp('\\\\{' + i + '\\\\}', 'gm');\n if (array[i] != undefined) {\n theString = theString.replace(regEx, encodeURIComponent(array[i]));\n } else {\n theString = theString.replace(regEx, '');\n }\n }\n return theString;\n }\n\n setGameLaunchProductsIndex() {\n let index = 1;\n const windowObj = window as any;\n if (windowObj.clientConfig.vnHeader !== undefined) {\n windowObj.clientConfig.vnHeader.products.forEach((headerPrduct: any) => {\n headerPrduct.ProductIndex = index++;\n });\n }\n if ((this.deviceService.isMobile || this.deviceService.isTouch) && windowObj.clientConfig.vnBottomNav !== undefined) {\n windowObj.clientConfig.vnBottomNav.items.forEach((bottmNavItems: any) => {\n bottmNavItems.ProductIndex = index++;\n });\n }\n }\n\n appendAdvanceGameDataQueryString(url: string, value: string) {\n if (url.indexOf('?') > -1) {\n url += '&' + value;\n } else {\n url += '?' + value;\n }\n return url;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CashierService {\n constructor(\n private api: PlatformApiService,\n private configProviderService: ConfigProviderService,\n ) {}\n\n getQuickDepositAllowedStatus(): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.cashier['csQuickDeposit']);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Logger, TrackingService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FreespinSummaryService {\n freeSpinsGameDetails = new BehaviorSubject<any>(null);\n freeSpinsCategoryDetails = new BehaviorSubject<any>(null);\n freeSpinsRewardDetails = new BehaviorSubject<any>(null);\n freespinsMoreInfoClick = new BehaviorSubject<any>(null);\n freeSpinsSummaryData = new BehaviorSubject<any>(null);\n private freeSpinsSummaryDataPublisher = new BehaviorSubject<boolean>(false);\n freeSpinsSummaryDataMapObservable: Observable<boolean | null>;\n\n freeSpinsGameDetailsObser: Observable<any> = this.freeSpinsGameDetails.asObservable();\n freeSpinsCategoryDetailsObser: Observable<any> = this.freeSpinsCategoryDetails.asObservable();\n freeSpinsRewardDetailsObser: Observable<any> = this.freeSpinsRewardDetails.asObservable();\n freespinsMoreInfoClickObser: Observable<any> = this.freespinsMoreInfoClick.asObservable();\n freeSpinsGameDetailsMap: Map<string, any> = new Map<string, any>();\n freeSpinsCategoryDetailsMap: Map<string, any> = new Map<string, any>();\n freeSpinsRewardDetailsMap: Map<number, any> = new Map<number, any>();\n freeSpinsSummaryDataObser: Observable<any> = this.freeSpinsSummaryData.asObservable();\n timeZoneData: any;\n moreinfoUrl: string = '';\n constructor(\n private api: PlatformApiService,\n private tracking: TrackingService,\n private configProviderService: ConfigProviderService,\n private logger: Logger,\n ) {\n this.freeSpinsSummaryDataMapObservable = this.freeSpinsSummaryDataPublisher.asObservable();\n }\n\n setFreespinsummary() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.freeSpins['spinsSummary'], {}, { withCredentials: true }).subscribe(\n (response: any) => {\n this.freeSpinsSummaryDataPublisher.next(response);\n this.setFreespinsummaryData(response);\n },\n () => {},\n );\n }\n\n setFreespinsummaryData(freeSpinResponse: any) {\n if (freeSpinResponse) {\n const response = freeSpinResponse.freeSpinSummaryData;\n const rewardDetailsData = freeSpinResponse.freeSpinRewardDetails;\n this.timeZoneData = freeSpinResponse.timeZone;\n if (response) {\n if (response.gameDetails && Object.keys(response.gameDetails) && Object.keys(response.gameDetails).length > 0) {\n for (const game in response.gameDetails) {\n this.freeSpinsGameDetailsMap.set(game, response.gameDetails[game]);\n }\n this.freeSpinsGameDetails.next(this.freeSpinsGameDetailsMap);\n } else {\n this.freeSpinsGameDetailsMap.clear();\n this.freeSpinsGameDetails.next(this.freeSpinsGameDetailsMap);\n }\n if (response.gameTypeDetails) {\n for (const game in response.gameTypeDetails) {\n this.freeSpinsCategoryDetailsMap.set(game, response.gameTypeDetails[game]);\n }\n this.freeSpinsCategoryDetails.next(this.freeSpinsCategoryDetailsMap);\n }\n if (rewardDetailsData && rewardDetailsData.rewardDetails && rewardDetailsData.rewardDetails.length > 0) {\n rewardDetailsData.rewardDetails.forEach((item: any) => {\n this.freeSpinsRewardDetailsMap.set(item.userRewardId, item);\n });\n this.freeSpinsRewardDetails.next(this.freeSpinsRewardDetailsMap);\n } else {\n this.freeSpinsRewardDetailsMap.clear();\n this.freeSpinsRewardDetails.next(this.freeSpinsRewardDetailsMap);\n }\n }\n }\n }\n getTimeZoneInfo() {\n return this.timeZoneData;\n }\n getFreespinCountInfoForGame(gameId: string) {\n return this.freeSpinsGameDetailsMap.get(gameId);\n }\n // NFR - Services optimization - Remove\n getFreespinCountInfoForCategory(categoryId: any) {\n return this.freeSpinsCategoryDetailsMap.get(categoryId);\n }\n\n getFreeSpinRewardDetail(rewardId: number) {\n return this.freeSpinsRewardDetailsMap.get(rewardId);\n }\n getFreeSpinRewardDetails(rewardIds: number[]): any[] {\n if (this.configProviderService.providefreeSpinsClientConfig().freeSpinsMoreInfo) {\n this.moreinfoUrl = this.configProviderService.providefreeSpinsClientConfig().freeSpinsMoreInfo.url;\n }\n const rewardetails: any[] = [];\n if (rewardIds && rewardIds.length > 0) {\n rewardIds.forEach((id: number) => {\n const rewardDetailItem = this.getFreeSpinRewardDetail(id);\n if (rewardDetailItem) {\n const freespinRewardId = String(rewardDetailItem.userRewardId);\n const redirectUrl = this.moreinfoUrl.replace('{freespinId}', freespinRewardId);\n rewardDetailItem.moreinfoUrl = redirectUrl;\n rewardetails.push(rewardDetailItem);\n }\n });\n }\n return rewardetails;\n }\n\n handleRejection(rejection: any) {\n // error\n if (rejection) {\n this.logger.debug('http code: ' + rejection.status + '; message: ' + rejection.message);\n let errorCode = '';\n if (rejection && rejection.errorCode) {\n errorCode = rejection.errorCode;\n }\n this.tracking.updateDataLayer({ 'page.name': 'MyFreeSpins' });\n this.tracking.reportError({ message: 'Technical error', code: errorCode });\n // TODO: To be removed once all teams will migrate Omniture tracking to GTM data layer\n this.tracking.updateDataLayer({\n pageName: 'freespin',\n v68: 'Technical error ' + errorCode,\n });\n\n this.logger.debug('error', rejection);\n }\n }\n freespinMoreinfoClick() {\n this.freespinsMoreInfoClick.next(true);\n }\n addTrackingEvent(\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n index?: any,\n ) {\n const disPlaycontent = actionEvent == 'load' ? 'contentView' : 'Event.Tracking';\n this.tracking.triggerEvent(disPlaycontent, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.ContentPosition': index,\n // 'component.URLClicked': uRLClicked\n });\n }\n}\n","export class GameLobbyModel {\n gameId: string;\n icon: any;\n internalGameName: string;\n ownerId: string;\n launchType: any;\n title: string;\n isDataNotAvailable: boolean = false;\n jackpotvalue: string;\n isFavourite: boolean;\n sticker: string;\n rowSpan: number;\n colSpan: number;\n isUnfinished: boolean;\n isFastLoadingGame: boolean = false;\n infoIconClass: string = '';\n lobbyType: string = '';\n iconType: string;\n iconTypeForTracking: string;\n format: string = 'jpg';\n secondsToStartTable: number;\n name: string;\n provider: string;\n gameSection: string;\n gameContainer: string;\n condition: string;\n gameTileBorderRadius: string;\n gameTileDropShadow: string;\n newgridbgcolor: string;\n amazonstylebottombgclr: string;\n gameIndex: number;\n bgTileMode: boolean;\n jackpotValue: string;\n widgetName: string;\n isPromoted: boolean;\n isGYML: boolean;\n enableDetailPage: boolean;\n forceDetailPage: boolean;\n isHotJackpotGroup: boolean;\n fromCasino?: boolean;\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { CacheManagerService } from './cache-manager.service';\nimport { CasinoManager } from './casino-manager.service';\nimport { GameLobbyModel } from './models/game-lobby.model';\nimport { GameDataFromCacheResponseModel } from './models/gameDataFromCacheResponse.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameDataManager {\n gameDataLookup: Map<string, any> = new Map<string, any>();\n gamesLookUp: string[] = [];\n gameDataFromLMT: any = [];\n liveCasinoLookup: any = [];\n gameConfig: any;\n\n private gameLookUpFilledPublisher = new BehaviorSubject<any>(null);\n gameLookUpObservable: Observable<any> = this.gameLookUpFilledPublisher.asObservable();\n\n constructor(\n private configProviderService: ConfigProviderService,\n private api: PlatformApiService,\n private cacheManager: CacheManagerService,\n private casinoLobbyService: CasinoLobbyService,\n private casinoManager: CasinoManager,\n ) {}\n\n formIconImageUrl(gameModelItem: any, isArcade = false) {\n const gameConfig = this.configProviderService.provideGameConfig();\n\n return `${gameConfig.host}${gameConfig.gameIconTemplate.replace('{0}', this.getGameIcon(gameModelItem, isArcade)).replace('{1}', gameModelItem.game)}.${this.getGameFormat(gameModelItem, isArcade)}`;\n }\n\n setGameLobbyModel(gameModelItem: any, isTouch: boolean, arcadeLobbyType: string = '', currentLobbyType = ''): GameLobbyModel {\n const gameConfig = this.configProviderService.provideGameConfig();\n const isArcade: boolean =\n arcadeLobbyType && currentLobbyType && currentLobbyType?.toLowerCase() == arcadeLobbyType?.toLowerCase() ? true : false;\n const gamelobbyModel: GameLobbyModel = new GameLobbyModel();\n gamelobbyModel.gameId = gameModelItem.game;\n gamelobbyModel.jackpotValue = gameModelItem.jackpotValue ? gameModelItem.jackpotValue : '';\n gamelobbyModel.name = gameModelItem.name;\n gamelobbyModel.provider = gameModelItem.provider;\n gamelobbyModel.ownerId = gameModelItem.ownerId;\n if (gameModelItem.sticker) {\n gamelobbyModel.sticker = gameModelItem.sticker;\n }\n gamelobbyModel.internalGameName = gameModelItem.gameId;\n gamelobbyModel.lobbyType = gameModelItem.lobbyType;\n gamelobbyModel.gameIndex = gameModelItem.gameIndex;\n gamelobbyModel.icon = {\n src:\n gameConfig.host +\n gameConfig.gameIconTemplate.replace('{0}', this.getGameIcon(gameModelItem, isArcade)).replace('{1}', gamelobbyModel.gameId) +\n '.' +\n this.getGameFormat(gameModelItem, isArcade),\n };\n\n gamelobbyModel.format = this.getGameFormat(gameModelItem, isArcade);\n gamelobbyModel.rowSpan = this.getRowSpan(String(gameModelItem.icon), isArcade);\n gamelobbyModel.colSpan = this.getColSpan(String(gameModelItem.icon), isTouch);\n gamelobbyModel.iconType = gameModelItem.icon ? gameModelItem.icon : '1';\n gamelobbyModel.iconTypeForTracking = gamelobbyModel.iconType;\n if (gamelobbyModel.iconType && typeof gamelobbyModel.iconType === 'number') {\n gamelobbyModel.iconType = String(gamelobbyModel.iconType);\n }\n if (gamelobbyModel.iconType && gamelobbyModel.iconType.indexOf('-') > -1) {\n gamelobbyModel.iconType = gamelobbyModel.iconType.replace('-', '');\n }\n\n return gamelobbyModel;\n }\n\n getGameIcon(gameModelItem: any, isArcade: boolean = false): string {\n const gameConfig: any = this.configProviderService.provideGameConfig();\n const arcadeConfig: any = this.configProviderService.provideAracadeLobbyConfig();\n let featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const lobbyType = this.casinoManager.getLobbyType() || '';\n const lobbyInfo = this.casinoLobbyService.getLobbyInfo(lobbyType);\n const gameConfigMap = isArcade ? arcadeConfig.arcadeIconConfigMap : gameConfig.iconConfigMap;\n if (gameModelItem) {\n const gameIcon = gameConfigMap.filter((s: any) => s.id == gameModelItem.icon);\n if (gameIcon && gameIcon[0]) {\n // iskyc check commented\n if (lobbyInfo?.lobbyGameIconImageSuffix && featuresConfig.enableGameIconImageSuffix) {\n return gameIcon[0].icon + lobbyInfo?.lobbyGameIconImageSuffix;\n }\n return gameIcon[0].icon;\n }\n }\n if (lobbyInfo?.lobbyGameIconImageSuffix && featuresConfig.enableGameIconImageSuffix) {\n return gameConfigMap[5].icon + lobbyInfo?.lobbyGameIconImageSuffix;\n }\n return gameConfigMap[5].icon;\n }\n\n getGameFormat(gameModelItem: any, isArcade: boolean = false): string {\n let gameConfig: any = this.configProviderService.provideGameConfig();\n let arcadeConfig: any = this.configProviderService.provideAracadeLobbyConfig();\n let gameConfigMap = isArcade ? arcadeConfig.arcadeIconConfigMap : gameConfig.iconConfigMap;\n if (gameModelItem) {\n let gameIcon = gameConfigMap.filter((s: any) => s.id == gameModelItem.icon);\n if (gameIcon && gameIcon[0]) {\n return gameIcon[0].format;\n }\n }\n return 'jpg';\n }\n\n getRowSpan(icon: string, isArcade: boolean): number {\n switch (icon) {\n case '2':\n case '-2':\n return 1;\n case '3':\n case '-3':\n return 2;\n case '4':\n case '-4':\n return 2;\n case '5':\n case '-5':\n return 2;\n case '6':\n case '-6':\n return isArcade ? 2 : 1;\n case '7':\n case '-7':\n return 1;\n case '10':\n case '-10':\n return 2;\n default:\n return isArcade ? 2 : 1;\n }\n }\n\n getColSpan(icon: string, isTouch: boolean): number {\n switch (icon) {\n case '2':\n case '-2':\n return 2;\n case '3':\n case '-3':\n return 1;\n case '4':\n case '-4':\n return 2;\n case '5':\n case '-5':\n if (isTouch) {\n return 2;\n } else {\n return 3;\n }\n case '6':\n case '-6':\n return 1;\n case '7':\n case '-7':\n return 2;\n case '10':\n case '-10':\n return 2;\n default:\n return 1;\n }\n }\n getAllGamesFromLMT() {\n return this.gameDataFromLMT;\n }\n // NFR - Services optimization - Remove\n getGameData(gameId: string) {\n const promise = new Promise((resolve, reject) => {\n const gameDataFromCache = this.tryAndGetGameDataFromCache([gameId]);\n if (gameDataFromCache && gameDataFromCache.gameMetaData.size > 0 && gameDataFromCache.gameMetaData.get(gameId)) {\n resolve(gameDataFromCache.gameMetaData.get(gameId));\n } else {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n this.api.get(apiPathsConfig.gameData['gameData'], { n: [gameId], gameNames: true }).subscribe(\n (response) => {\n if (response && response[0]) {\n resolve(response[0]);\n this.updateLookUp(response);\n } else {\n const result = this.createEmptyGameModel(gameId);\n resolve(result);\n this.updateLookUp([result]);\n }\n },\n (error) => {\n reject(error);\n },\n );\n }\n });\n return promise;\n }\n tryAndGetGameDataFromCache(gamesList: string[]): GameDataFromCacheResponseModel {\n let response: GameDataFromCacheResponseModel = new GameDataFromCacheResponseModel();\n const gamesData = this.getGamesDataFromLookUp(gamesList);\n if (gamesData !== null) {\n response = gamesData;\n gamesList = gamesData.gamesNotInCache;\n }\n if (gamesData == null || gamesData.gamesNotInCache !== null) {\n const gameDataFromLocalStorage = this.cacheManager.getGamesDataFromCache(gamesList);\n if (gameDataFromLocalStorage !== null && gameDataFromLocalStorage.gameMetaData.size > 0) {\n if (response == null) response = new GameDataFromCacheResponseModel();\n Array.from(gameDataFromLocalStorage.gameMetaData.entries()).forEach((entry: any) => {\n response.gameMetaData.set(entry[0], entry[1]);\n });\n response.gamesNotInCache = gameDataFromLocalStorage.gamesNotInCache;\n }\n }\n return response;\n }\n updateLookUp(gameData: any) {\n gameData.forEach((game: any) => {\n this.gameDataLookup.set(game.gameId, game);\n });\n this.cacheManager.setGameDataCache(this.gameDataLookup);\n }\n createEmptyGameModel(gameId: string) {\n const emptyGameModel: GameLobbyModel = new GameLobbyModel();\n emptyGameModel.isDataNotAvailable = true;\n emptyGameModel.gameId = gameId;\n return emptyGameModel;\n }\n getGamesDataFromLookUp(gamesList: string[]): GameDataFromCacheResponseModel {\n const gameDataSet: Map<string, any> = new Map<string, any>(),\n gamesNotInCache: string[] = [];\n if (this.gameDataLookup.size > 0) {\n const gameDataMap = this.gameDataLookup;\n if (gamesList && gamesList.length > 0) {\n gamesList.forEach((game) => {\n if (gameDataMap.get(game)) {\n gameDataSet.set(game, gameDataMap.get(game));\n } else {\n gamesNotInCache.push(game);\n }\n });\n }\n const data: GameDataFromCacheResponseModel = {\n gameMetaData: gameDataSet,\n gamesNotInCache: gamesNotInCache.length > 0 ? gamesNotInCache : [],\n };\n return data;\n }\n return new GameDataFromCacheResponseModel();\n }\n setDefaultGameIcons(gameIds: string[]) {\n const gamesModel: any[] = [];\n if (gameIds && gameIds.length > 0) {\n gameIds.forEach((gameId: string) => {\n const GameModelItem: any = {\n game: gameId,\n icon: '1',\n };\n gamesModel.push(GameModelItem);\n });\n }\n return gamesModel;\n }\n getGameDisplayName(gameId: string): string {\n const gameMetaData = this.getLMTGameData(gameId);\n return gameMetaData && gameMetaData.name;\n }\n getLMTGameData(gameId: string): any {\n if (this.gameDataFromLMT && this.gameDataFromLMT.length > 0) {\n for (let i = 0; i < this.gameDataFromLMT.length; i++) {\n if (this.gameDataFromLMT[i].game === gameId) {\n return this.gameDataFromLMT[i];\n }\n }\n }\n return null;\n }\n getGameDescription(gameId: string, providerId: string): Observable<any> {\n if (gameId) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n return this.api.get(apiPathsConfig.gameData['gameDataDescription'], { gameId: gameId, providerId: providerId });\n }\n return new Observable<any>();\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { AppInfoConfig, DeviceService, NativeAppService, Page, UserService, WindowRef } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { EventDataKeys, EventNames, TrackGame } from '../tracking/vanilla-tracking-adapter.model';\nimport { VanillaTrackingAdapter } from '../tracking/vanilla-tracking-adapter.service';\n\nenum Type {\n GA3 = 'GA3',\n GA4 = 'GA4',\n MP = 'MP',\n ALL = 'ALL',\n}\n\nenum Group {\n EU = 'EU',\n LCG = 'LCG',\n US = 'US',\n}\n\nconst NA = 'not applicable';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameLaunchTrackingService {\n private config: any;\n\n vanillaTrackingAdapter = inject(VanillaTrackingAdapter);\n\n constructor(\n private configProviderService: ConfigProviderService,\n private user: UserService,\n private page: Page,\n private appInfoConfig: AppInfoConfig,\n private nativeAppService: NativeAppService,\n private windowRef: WindowRef,\n private deviceService: DeviceService,\n ) {}\n //Alex and Oliver from Analytics team told, that dataLayer and API approaches should work together. So removing the toggle\n track(trackingData: TrackGame) {\n this.config = this.configProviderService.provideGameLaunchTrackingConfig();\n this.trackDataLayer(trackingData);\n //Added this if according to POR-41059\n let onetrustKey: any = window[this.config?.onetrustTracking.key];\n if (this.config?.onetrustTracking?.enabled === 'True' && onetrustKey?.split(',')?.indexOf(this.config?.onetrustTracking?.value) === -1) {\n return;\n } //POR-41059\n let url: string, payload: any;\n for (let type in this.config?.endpoint) {\n url = this.config?.endpoint[type];\n payload = this.getPayload(trackingData, type?.toUpperCase());\n if (url && payload) this.trackAPI(url, payload.params, payload.body);\n }\n }\n\n /* This block will be restored when above block is removed\n track(gameTrackingObj: any) {\n this.config = this.configProviderService.provideGameLaunchTrackingConfig();\n if (this.config.isEnabled) {\n let url: string, payload: any;\n for (let type in this.config?.endpoint) {\n url = this.config?.endpoint[type];\n payload = this.getPayload(gameTrackingObj, type?.toUpperCase());\n if (url && payload)\n this.trackAPI(url, payload.params, payload.body);\n }\n } else {\n this.trackDataLayer(gameTrackingObj);\n }\n }\n */\n\n private trackDataLayer(trackingData: TrackGame) {\n const {\n name,\n type,\n position,\n section,\n gridPosition,\n location,\n status,\n description,\n favourite,\n playingStatus,\n displayName,\n categoryType,\n categorySubType,\n recommendationType,\n lobbyName,\n lobbySource,\n optimoveSegment,\n } = trackingData;\n const eventData = {\n [EventDataKeys.ComponentGameName]: name,\n [EventDataKeys.ComponentGameType]: type,\n [EventDataKeys.ComponentGamePosition]: position,\n [EventDataKeys.ComponentGameSection]: section,\n [EventDataKeys.ComponentGameGridPosition]: gridPosition,\n [EventDataKeys.ComponentGameContainerLocation]: location,\n [EventDataKeys.ComponentGameStatus]: status,\n [EventDataKeys.ComponentGameContainerDescription]: description,\n [EventDataKeys.ComponentGameFavorite]: favourite,\n [EventDataKeys.ComponentGamePlayingStatus]: playingStatus,\n [EventDataKeys.ComponentGameDisplayName]: displayName,\n [EventDataKeys.ComponentCategoryType]: categoryType,\n [EventDataKeys.ComponentCategorySubType]: categorySubType,\n [EventDataKeys.ComponentRecommendationType]: recommendationType,\n [EventDataKeys.CasinoLobbyName]: lobbyName,\n [EventDataKeys.CasinoLobbySource]: lobbySource,\n [EventDataKeys.CasinoOptimoveSegment]: optimoveSegment,\n };\n this.vanillaTrackingAdapter.trigger({ name: EventNames.GameOpen, data: eventData });\n }\n\n private getTimeStamp(gameTrackingObj: any) {\n return gameTrackingObj?.params?.clickTimeStamp || new Date().getTime();\n }\n\n private getPageName() {\n return window.location?.pathname?.replace('/' + this.page.lang + '/', '')?.toLowerCase();\n }\n\n private getCookieValue(name: string) {\n return document.cookie\n ?.split(';')\n .find((x) => x.includes(name))\n ?.split('=')[1];\n }\n\n private getSessionValue(sessionId: string) {\n let item: any = document.cookie?.split(';').find((x) => x.includes(sessionId));\n let sessionValue: any = item?.split('.')[2];\n return sessionValue?.match(/^\\d{10}$/) ? sessionValue : '';\n }\n\n private getDistinctId(id: string) {\n if (this.user.isAuthenticated) return this.user.accountId;\n const key: string = 'mp_' + this.config?.mp.token + '_mixpanel';\n let item: any = JSON.parse(localStorage.getItem(key) || 'null');\n return item ? item[id] : null;\n }\n\n //Get Frontend values based on Vanilla Logic\n private getFrontEndValue() {\n if (this.nativeAppService.isNative) {\n return this.nativeAppService.applicationName;\n }\n if (this.deviceService.isMobile) {\n return 'mobile';\n }\n return 'desktop';\n }\n\n private getClientId(id: string) {\n const cid: any = this.windowRef.nativeWindow['ga']?.getAll && this.windowRef.nativeWindow['ga']?.getAll()[0].get(id);\n if (cid) return cid;\n let cookie: string[] | undefined = document.cookie\n .split(';')\n .find((x) => x.includes('_ga='))\n ?.split('.');\n return cookie && cookie.length == 4 ? cookie[2] + '.' + cookie[3] : null;\n }\n\n private getPayload(gameTrackingObj: any, type: string) {\n let payload: any;\n switch (type) {\n case Type.GA3:\n payload = this.getGA3Payload(gameTrackingObj);\n break;\n case Type.GA4:\n payload = this.getGA4Payload(gameTrackingObj);\n break;\n case Type.MP:\n payload = this.getMPPayload(gameTrackingObj);\n break;\n default:\n payload = null;\n break;\n }\n return payload;\n }\n private getGA3Payload(gameTrackingObj: any) {\n let specificParams: any,\n commonParams: any = {\n v: 1,\n t: 'event',\n tid: this.config?.gA3.measurementId,\n cid: this.getClientId('clientId'),\n ds: this.nativeAppService.isNative ? 'native' : 'web',\n z: Math.floor(Math.random() * 1000000 + 1),\n ua: navigator.userAgent?.toLowerCase(),\n de: 'UTF-8',\n je: 0,\n dt: document.title,\n dl: document.URL,\n dr: document.referrer,\n dh: document.location.host,\n ul: this.page.culture?.toLowerCase(),\n geoid: this.user.geoCountry?.toLowerCase(),\n ec: 'game_launch_api',\n el: this.getPageName(),\n ea: gameTrackingObj.displayName?.toLowerCase(),\n ni: 0,\n sid: this.getSessionValue(this.config?.gA4.sessionId),\n };\n if (this.config?.gA3.group === Group.LCG) {\n specificParams = {\n cd1: this.user.accountId,\n cd5: this.user.currency?.toLowerCase(),\n cd6: this.appInfoConfig.brand?.toLowerCase(),\n cd8: commonParams.ds,\n cd11: gameTrackingObj.position,\n cd12: gameTrackingObj.section?.toLowerCase(),\n cd13: gameTrackingObj.type?.toLowerCase(),\n cd84: commonParams.dr,\n cd126: gameTrackingObj.gridPosition,\n cd127: gameTrackingObj.status?.toLowerCase(),\n cd128: gameTrackingObj.location?.toLowerCase(),\n cd129: gameTrackingObj.description?.toLowerCase(),\n cd130: gameTrackingObj.favourite?.toLowerCase(),\n cd131: gameTrackingObj.playingStatus?.toLowerCase(),\n cd132: commonParams.ea,\n cd133: gameTrackingObj.categoryType?.toLowerCase(),\n cd134: gameTrackingObj.categorySubType?.toLowerCase(),\n cd135: commonParams.dl,\n cd164: gameTrackingObj.name?.toLowerCase(),\n cd154: this.appInfoConfig.product?.toLowerCase(),\n cd155: gameTrackingObj.recommendationType?.toLowerCase(),\n cd170: gameTrackingObj.lobbyName?.toLowerCase(),\n cd171: gameTrackingObj.lobbySource?.toLowerCase(),\n cd172: gameTrackingObj.optimoveSegment?.toLowerCase(),\n };\n } else {\n specificParams = {\n cd1: this.user.accountId,\n cd3: this.user.country?.toLowerCase(),\n cd6: this.user.isAuthenticated ? 1 : 0,\n cd11: this.nativeAppService.isNative,\n cd12: this.appInfoConfig.frontend,\n cd15: commonParams.el,\n cd33: commonParams.ea,\n cd35: gameTrackingObj.position,\n cd36: gameTrackingObj.section?.toLowerCase(),\n cd38: gameTrackingObj.gridPosition,\n cd39: gameTrackingObj.type?.toLowerCase(),\n cd40: gameTrackingObj.favourite?.toLowerCase(),\n cd41: gameTrackingObj.name?.toLowerCase(),\n cd42: gameTrackingObj.status?.toLowerCase(),\n cd43: gameTrackingObj.location?.toLowerCase(),\n cd44: gameTrackingObj.description?.toLowerCase(),\n cd96: gameTrackingObj.categoryType?.toLowerCase(),\n cd97: gameTrackingObj.categorySubType?.toLowerCase(),\n cd100: commonParams.dl,\n cd134: this.user.accountId,\n cd157: gameTrackingObj.recommendationType?.toLowerCase(),\n cd174: commonParams.ua,\n cd194: gameTrackingObj.lobbyName?.toLowerCase(),\n cd195: gameTrackingObj.lobbySource?.toLowerCase(),\n cd196: gameTrackingObj.optimoveSegment?.toLowerCase(),\n cd119: document.referrer,\n };\n }\n let params: any = Object.assign({}, commonParams, specificParams);\n let body;\n return { params, body };\n }\n\n private getGA4Payload(gameTrackingObj: any) {\n let params: any = {\n measurement_id: this.config?.gA4.measurementId,\n api_secret: this.config?.gA4.apiSecretKey,\n };\n let data: any = {\n client_id: this.getClientId('clientId'),\n user_id: this.user.accountId,\n timestamp_micros: this.getTimeStamp(gameTrackingObj) * 1000,\n user_properties: {\n appinfo: {\n value: this.appInfoConfig.channel?.toLowerCase(),\n },\n device_native: {\n value: this.nativeAppService.isNative,\n },\n prof_country: {\n value: this.user.country?.toLowerCase(),\n },\n prof_customerid: {\n value: this.user.accountId,\n },\n prof_loggedin: {\n value: this.user.isAuthenticated ? 'logged_in' : 'not_logged_in',\n },\n page_fe: {\n value: this.getFrontEndValue(),\n },\n },\n events: [\n {\n name: 'game_launch_api',\n params: {\n z: Math.floor(Math.random() * 1000000 + 1),\n page_title: document.title,\n page_location: document.URL,\n page_referrer: document.referrer,\n page_hostname: document.location.host,\n ul: this.page.culture?.toLowerCase(),\n session_id: this.getSessionValue(this.config?.gA4.sessionId),\n seg: 1,\n category_event: 'game_launch_api',\n label_event: this.getPageName()?.toLowerCase(),\n action_event: gameTrackingObj.displayName?.toLowerCase(),\n location_event: NA,\n event_details: NA,\n prof_currency: this.user.currency?.toLowerCase(),\n clean_page_URL: document.URL,\n game_name: gameTrackingObj.displayName?.toLowerCase(),\n game_position: gameTrackingObj.position,\n game_category: gameTrackingObj.section?.toLowerCase(),\n game_grid: gameTrackingObj.gridPosition,\n game_type: gameTrackingObj.type?.toLowerCase(),\n game_fav: gameTrackingObj.favourite?.toLowerCase(),\n game_id: gameTrackingObj.name?.toLowerCase(),\n game_status: gameTrackingObj.status?.toLowerCase(),\n game_containerloc: gameTrackingObj.location?.toLowerCase(),\n game_containerdesc: gameTrackingObj.description?.toLowerCase(),\n position_event: NA,\n test_abtest: this.getCookieValue('gvc_expt'),\n category_type: gameTrackingObj.categoryType?.toLowerCase(),\n category_subtype: gameTrackingObj.categorySubType?.toLowerCase(),\n game_recommendation_type: gameTrackingObj.recommendationType?.toLowerCase(),\n lobby_name: gameTrackingObj.lobbyName?.toLowerCase(),\n lobby_source: gameTrackingObj.lobbySource?.toLowerCase(),\n optimove_segment: gameTrackingObj.optimoveSegment?.toLowerCase() || NA,\n custom_timestamp: this.getTimeStamp(gameTrackingObj) * 1000,\n user_agent: navigator.userAgent?.toLowerCase(),\n page_name: this.getPageName(),\n },\n },\n ],\n };\n let body = JSON.stringify(data);\n return { params, body };\n }\n\n private getMPPayload(gameTrackingObj: any) {\n let params: any = {\n ip: 1,\n verbose: 1,\n _: this.getTimeStamp(gameTrackingObj),\n };\n let data: any = [\n {\n event: 'game_open_api',\n properties: {\n token: this.config?.mp.token,\n distinct_id: this.getDistinctId('distinct_id'),\n time: this.getTimeStamp(gameTrackingObj),\n app: this.appInfoConfig,\n game: {\n GridPosition: gameTrackingObj.gridPosition,\n Position: gameTrackingObj.position,\n Section: gameTrackingObj.section?.toLowerCase(),\n CategoryType: gameTrackingObj.categoryType?.toLowerCase(),\n CategorySubType: gameTrackingObj.categorySubType?.toLowerCase(),\n ContainerDescription: gameTrackingObj.description?.toLowerCase(),\n ContainerLocation: gameTrackingObj.location,\n DisplayName: gameTrackingObj.displayName?.toLowerCase(),\n Favourite: gameTrackingObj.favourite?.toLowerCase(),\n Name: gameTrackingObj.name?.toLowerCase(),\n PlayingStatus: gameTrackingObj.playingStatus?.toLowerCase(),\n Status: gameTrackingObj.status?.toLowerCase(),\n Type: gameTrackingObj.type?.toLowerCase(),\n RecommendationType: gameTrackingObj.recommendationType?.toLowerCase(),\n LobbyName: gameTrackingObj.lobbyName?.toLowerCase(),\n LobbySource: gameTrackingObj.lobbySource?.toLowerCase(),\n OptimoveSegment: gameTrackingObj.optimoveSegment?.toLowerCase() || NA,\n },\n page: {\n Brand: this.appInfoConfig.brand,\n Host: document.location.host,\n Label: this.page.domain.replace('.', ''),\n Name: this.getPageName(),\n Referrer: document.referrer,\n Path: document.location.href.replace(document.location.origin, ''),\n },\n },\n },\n ];\n let body = new URLSearchParams({ data: JSON.stringify(data) });\n return { params, body };\n }\n\n private async trackAPI(url: string, params: any, body: any) {\n let xhr = new XMLHttpRequest();\n xhr.open('POST', url + '?' + new URLSearchParams(params));\n xhr.send(body);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Logger, TimerService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class JackpotService {\n jackpotsCache: any = {};\n fetchJackpotPromise: any;\n listenersCnt = 0;\n timer: number;\n\n constructor(\n private api: PlatformApiService,\n private timerService: TimerService,\n private configProviderService: ConfigProviderService,\n private logger: Logger,\n private urlUtilityService: UrlUtilityService,\n ) {}\n fetchJackpot() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.jackpots['jpData'], null, { showSpinner: false }).subscribe(\n (response: any) => {\n this.jackpotsCache = response;\n },\n (error) => {\n this.logger.error('Unable to retrieve data from jpData API : ' + error);\n },\n );\n }\n startFeed() {\n const JackpotData = this.configProviderService.provideJackpotConfig();\n this.listenersCnt++;\n if (!this.fetchJackpotPromise) {\n this.fetchJackpot();\n this.fetchJackpotPromise = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.fetchJackpot();\n }, JackpotData.jpInterval);\n }\n }\n getJackpotData() {\n return this.jackpotsCache;\n }\n stopFeed() {\n this.listenersCnt--;\n if (this.listenersCnt === 0 && this.fetchJackpotPromise) {\n this.timerService.clearInterval(this.fetchJackpotPromise);\n this.fetchJackpotPromise = undefined;\n this.jackpotsCache = [];\n }\n }\n}\n","import { LoadingIndicatorHandler } from '@frontend/vanilla/core';\n\nexport class GameLaunch {\n game: any;\n isTouch: boolean;\n gamePosition: number;\n categoryType: string;\n from: string;\n replaceRouteInHistory: boolean = false;\n isDemoLaunch: boolean = false;\n skipUnfinGame: boolean = false;\n gameLaunchedFrom?: string;\n gridPosition?: number;\n specialProduct: string = '';\n mode?: string = '';\n gameSection: string = '';\n trackingproduct?: string = undefined;\n isNewSportsNative: boolean = false;\n lobbyType: string = '';\n gameContainer: string;\n isLive: boolean;\n returnUrl: string = '';\n highlightedColor: string = '';\n Globalsearchsection?: string = '';\n Globalsearchgameposition?: number;\n appendRUrlToLoginDialogWindow: boolean;\n skipMetaDataCheck?: boolean = false;\n fetchLiveGameIFrame?: boolean = false;\n noGameTraking: boolean;\n clickTimeStamp: any;\n launchSource: string;\n loadingIndicatorHandler: LoadingIndicatorHandler | null;\n recommendationType?: string;\n gameLaunchedLocation?: string;\n customLobbyTypeMap?: any = null;\n moreInfoOverlay: boolean = false;\n isMoreInfoOverlay: boolean = false;\n audioFrom?: boolean = false;\n screennameGameLaunchTracking: any;\n isFavorite: boolean = false;\n currentProduct: string;\n promoId?: number;\n slotUniqueId?: number;\n}\n","import { Injectable } from '@angular/core';\n\nimport { LoginDialogService, NavigationService, UserService } from '@frontend/vanilla/core';\nimport { Subscription } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoCoreGameLaunchFactoryService } from './gamelaunchfactory.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OpenLoginDialog {\n casinoCoreGamelaunchService: any;\n constructor(\n private loginDialogService: LoginDialogService,\n private navigation: NavigationService,\n private user: UserService,\n private configProviderService: ConfigProviderService,\n private gameLaunchFactoryService: CasinoCoreGameLaunchFactoryService,\n ) {}\n open(options?: any) {\n const preLoginConfig = this.configProviderService.providePreLoginConfig();\n if (preLoginConfig.redirectForLogin) {\n const redirectUrl =\n preLoginConfig?.nemIDHost +\n preLoginConfig?.nemIdPathSegment.replace('__encodeURL_location_href__', encodeURIComponent(window?.location?.href));\n if (redirectUrl) {\n this.navigation.goTo(redirectUrl);\n }\n return;\n }\n if (options) {\n this.loginDialogService.whenReady.subscribe(() => {\n const loginDialogRef = this.loginDialogService.open(options);\n const afterclosesubcription: Subscription = loginDialogRef.afterClosed().subscribe(() => {\n if (afterclosesubcription) {\n this.casinoCoreGamelaunchService = this.gameLaunchFactoryService.getGameLaunchService();\n this.casinoCoreGamelaunchService?.stopAudio();\n afterclosesubcription.unsubscribe();\n }\n if (!this.user.isAuthenticated) {\n sessionStorage.removeItem('CasinoCoreForceGameObj');\n sessionStorage.removeItem('CasinoCoreScreenNameGameObj');\n // added newly for force coinbalance and force option\n sessionStorage.removeItem('forceCoinBalance');\n sessionStorage.removeItem('ForceOptin');\n if (options?.loginCloseUrl) {\n this.navigation.goTo(options.loginCloseUrl);\n }\n }\n });\n });\n } else {\n this.loginDialogService.whenReady.subscribe(() => {\n this.loginDialogService.open();\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TrackingService } from '@frontend/vanilla/core';\nimport { cloneDeep } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { ApiPathsHelperService } from './api-paths-helper-service';\nimport { CacheManagerService } from './cache-manager.service';\nimport { CasinoIFrameOverlayService } from './casino-iframe-overlay.service';\nimport { CasinoManager } from './casino-manager.service';\nimport { CozyBingoDataService } from './cozybingodata.service';\nimport { InvokerProductService } from './invoker-product.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RecentGamesService {\n private recentGames: string[] = [];\n private recentGamesFromAllLobby: string[] = [];\n private mostRecentPlayedGames: any[] = [];\n private recentGamesSubject = new BehaviorSubject<any>(null);\n recentGamesFeedObservable: Observable<any> = this.recentGamesSubject.asObservable();\n private recentGamesFromAllLobbySubject = new BehaviorSubject<any>(null);\n recentGamesFeedFromAllLobbyObservable: Observable<any> = this.recentGamesFromAllLobbySubject.asObservable();\n private isRpfavWidgetDisplayed = new BehaviorSubject<any>(null);\n isRpfavWidgetDisplayedObservable: Observable<any> = this.isRpfavWidgetDisplayed.asObservable();\n private collectiveRecentGames: any = {};\n\n constructor(\n private api: PlatformApiService,\n private tracking: TrackingService,\n private invokerProductService: InvokerProductService,\n private configProviderService: ConfigProviderService,\n private casinoManager: CasinoManager,\n private cacheManager: CacheManagerService,\n private apiPathsHelperService: ApiPathsHelperService,\n private casinoIFrameOverlayService: CasinoIFrameOverlayService,\n private cozyBingoDataService: CozyBingoDataService,\n ) {}\n\n setRecentGames() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const isOverlay: boolean = this.casinoIFrameOverlayService.getOverlayStatus();\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.nonCriticalFeeds['rpGamesOfProduct'],\n this.invokerProductService.getInvokerProduct(),\n );\n\n this.api.get(endPoint, { isOverlay: isOverlay }, { withCredentials: true }).subscribe(\n (response: any) => {\n this.collectiveRecentGames = response;\n this.recentGamesFromAllLobby = response?.casino?.map((game: any) => game.gamevariant) || [];\n if (response.casino) {\n if (\n featuresConfig?.rpGamesFilterInLiveCasino &&\n response.casino.length > 0 &&\n this.casinoManager?.getCurrentLobby()?.toLowerCase() == 'livecasino'\n ) {\n this.collectiveRecentGames = cloneDeep(response);\n // this.collectiveRecentGames = {...response};\n response.casino = this.filterLiveCasinoGames(response.casino);\n }\n let arcadeLobby = this.configProviderService.provideGameConfig()?.arcadeLobbyType.toLowerCase();\n if (response.casino.length > 0 && this.casinoManager?.getCurrentLobby()?.toLowerCase() == arcadeLobby) {\n this.collectiveRecentGames = cloneDeep(response);\n // this.collectiveRecentGames = {...response};\n response.casino = this.filterArcadeLobbyGames(response.casino);\n }\n\n this.mostRecentPlayedGames = response.casino;\n this.recentGames = response.casino.map((game: any) => game.gamevariant);\n }\n if (featuresConfig?.rpWidgetGamesFilterInLiveCasino) this.recentGamesFromAllLobby = this.recentGames;\n this.recentGamesSubject.next(this.recentGames);\n this.recentGamesFromAllLobbySubject.next(this.recentGamesFromAllLobby);\n // Send recently played games to GTM\n this.collectiveRecentGames && this.raiseEventForRecentlyPlayed(this.collectiveRecentGames);\n },\n () => {\n this.recentGamesSubject.next(this.recentGames);\n this.recentGamesFromAllLobbySubject.next(this.recentGamesFromAllLobby);\n },\n );\n }\n\n filterLiveCasinoGames(casinoGames: any) {\n const categoryCoreLookUp: any = this.cacheManager.getAllCategoriesFromLocalCache('LiveCasino', this.casinoManager.getInvokerProduct());\n const gamesLookUp: any = categoryCoreLookUp?.lsGameMetaDataMap?.map((x: any) => x && x[0]);\n return casinoGames?.filter((x: any) => gamesLookUp?.includes(x.gamevariant)) || [];\n }\n\n filterArcadeLobbyGames(casinoGames: any) {\n const categoryCoreLookUp: any = this.cacheManager.getAllCategoriesFromLocalCache('coinArcade', this.casinoManager.getInvokerProduct());\n const gamesLookUp: any = categoryCoreLookUp?.lsGameMetaDataMap?.map((x: any) => x && x[0]);\n return casinoGames?.filter((x: any) => gamesLookUp?.includes(x.gamevariant)) || [];\n }\n\n getrecentGames() {\n if (this.recentGames && this.recentGames.length > 0) {\n return this.recentGames;\n }\n return [];\n }\n\n getrecentGamesFromAllLobby() {\n return this.recentGamesFromAllLobby?.length > 0 ? this.recentGamesFromAllLobby : [];\n }\n\n private raiseEventForRecentlyPlayed(recentGamesObject: any): void {\n let recentPlayedGames = {};\n const globalsearchconfig: any = this.configProviderService.provideGlobalSearchConfig();\n if (globalsearchconfig.isEnabled) {\n this.cozyBingoDataService.cozyBingoRecentGamesObservable.subscribe((response: any) => {\n if (response) {\n const cozybingodata = response;\n recentPlayedGames = Object.assign(recentGamesObject, cozybingodata);\n } else {\n recentPlayedGames = recentGamesObject;\n }\n });\n dispatchEvent(new CustomEvent('casino:Recent_Games_Updated', { detail: recentPlayedGames }));\n }\n this.tracking.triggerEvent('Event.RecentlyPlayed', { 'user.recentGames': recentPlayedGames });\n }\n\n getMostRecentlyPlayedGames() {\n if (this.mostRecentPlayedGames && this.mostRecentPlayedGames.length > 0) {\n return this.mostRecentPlayedGames;\n }\n return [];\n }\n\n getMostRecentlyPlayedRouteInfo(subCategoryId: string) {\n const recentlyPlayedClientConfig = this.configProviderService.provideRecentlyPlayedGamesConfig();\n if (recentlyPlayedClientConfig.isMostRecentlyPlayedEnabled) {\n const mostRecentlyPlayedRoutes: any = recentlyPlayedClientConfig.recentlyPlayedRoutes;\n for (let i = 0; i < mostRecentlyPlayedRoutes.length; i++) {\n if (mostRecentlyPlayedRoutes[i]?.mostPlayedRoute?.toLowerCase() == subCategoryId?.toLowerCase()) {\n return mostRecentlyPlayedRoutes[i];\n }\n }\n }\n }\n\n isRpfavDisplayed(value: boolean) {\n this.isRpfavWidgetDisplayed.next(value);\n }\n\n getRecentGames(): any {\n return this.collectiveRecentGames;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClaimsService, MessageLifetime, MessageQueueService, TimerService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, Subject, combineLatest, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { LobbyItem } from '../../casino-lobby-manager/casino-lobby.models';\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { CasinoApiService } from '../../shared/casino-api.service';\nimport { CasinoManager } from '../../shared/casino-manager.service';\nimport { UrlUtilityService } from '../../utilities/url-utility.service';\nimport { Race, ResultsHistory, SitecoreContent, SlotApiParams, SlotRacesLive, SlotRacesResponseError, SlotRacesUpcoming } from './slot-races.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SlotRacesService {\n categoryRoutePrefix = '/c/';\n isSlotRacesEnabled: boolean;\n isNotificationEnabled: boolean;\n slotRacesCategoryId: string;\n isCoin: boolean;\n selectedFilteredtOption: string;\n stickerMap: Map<string, any> = new Map<string, any>();\n raceGamesMap: Map<string, any> = new Map<string, any>();\n messages: { [item: string]: string };\n private contentPublisher = new BehaviorSubject<any>({});\n content: Observable<any> = this.contentPublisher.asObservable();\n contentData: SitecoreContent = {\n raceRuleConfigs: [],\n rules: [],\n rulesBanner: {},\n placeholderCardImage: {},\n coinEconomy: {},\n textTranslations: { sharedList: {}, versionedList: {} },\n tips: [],\n errorMessages: { sharedList: {}, versionedList: {} },\n entryDetails: { sharedList: {}, versionedList: {} },\n };\n\n private notifyPublisher = new Subject<{ promoId: number; slotUniqueId: number; status: boolean }>();\n notifyObservable: Observable<{ promoId: number; slotUniqueId: number; status: boolean }> = this.notifyPublisher.asObservable();\n private liveRacesPublisher = new BehaviorSubject<SlotRacesLive>({ liveNow: [] });\n liveRacesData: Observable<SlotRacesLive> = this.liveRacesPublisher.asObservable();\n\n forcRacepublisher = new BehaviorSubject<any>({});\n forceRace: Observable<any> = this.forcRacepublisher.asObservable();\n\n forceCoinBalancepublisher = new BehaviorSubject<any>({});\n forceCoinBalanceObs: Observable<any> = this.forceCoinBalancepublisher.asObservable();\n\n private upcomingRacesPublisher = new BehaviorSubject<SlotRacesUpcoming>({ upcomingToday: [], upcomingTomorrow: [] });\n upcomingRacesData: Observable<SlotRacesUpcoming> = this.upcomingRacesPublisher.asObservable();\n\n private globalTimerPublisher = new BehaviorSubject<any>({});\n globalTimerObservable: Observable<any> = this.globalTimerPublisher.asObservable();\n\n private updateNavigationCategories = new BehaviorSubject<boolean>(true);\n updateNavigation: Observable<boolean> = this.updateNavigationCategories.asObservable();\n\n private stickerRacesPublisher = new BehaviorSubject<any>({});\n stickerRacesData: Observable<any> = this.stickerRacesPublisher.asObservable();\n\n private rtmsDatPublisher = new BehaviorSubject<any>({});\n rtmsData: Observable<any> = this.rtmsDatPublisher.asObservable();\n\n coinDetailsPublisher = new BehaviorSubject<any>(false);\n coinDetails: Observable<any> = this.coinDetailsPublisher.asObservable();\n\n raceCompletedPublisher = new BehaviorSubject<any>(false);\n raceCompletedObs: Observable<any> = this.raceCompletedPublisher.asObservable();\n\n selectedEntryOption = new Subject<string>();\n liveSlotPollingStarted: boolean;\n pollForUser: boolean = true;\n private pollingInterval: any;\n private globalTimerInterval: number = 1000; //take this value from dynacon if possible\n private gameMetadata: { [game: string]: any };\n private isGameMetadataAvailable: boolean;\n private slotRaces: Race[];\n private disabledGameNames: string[] = [];\n private isSlotRacesInitiated: boolean;\n private isNavCategoryVisible: boolean;\n private promoPrizesMap: any = {};\n private timer: any;\n optInButtonText: string;\n categoryMap: any = [];\n slotInputArr: any[] = [];\n\n constructor(\n private api: CasinoApiService,\n private timerService: TimerService,\n private messageQueue: MessageQueueService,\n private claims: ClaimsService,\n private casinoManager: CasinoManager,\n private user: UserService,\n private configProviderService: ConfigProviderService,\n private urlUtilityService: UrlUtilityService,\n ) {}\n\n setNotifyStatus(promoId: number, slotUniqueId: number, status: boolean): void {\n this.notifyPublisher.next({ promoId: promoId, slotUniqueId: slotUniqueId, status: status });\n }\n\n initSlotRaces(gameDataMap: any, disabledGames: any, lmtData: LobbyItem | undefined, isDLL: boolean, isInItSlotRaces: boolean): void {\n if (isInItSlotRaces) {\n this.emptySlotRacesData();\n }\n if (!this.isSlotRacesInitiated) {\n this.isSlotRacesInitiated = true;\n this.updateLobbyNavigation();\n this.getSitecoreData(!isDLL);\n }\n const configs = this.configProviderService.provideSlotRacesConfig();\n if (lmtData) this.getlmtData(lmtData);\n if (this.user.isAuthenticated || configs.enablePreLogin) {\n this.getLiveRaces();\n this.getUpcomingRaces();\n }\n\n if (gameDataMap && gameDataMap.size > 0) {\n this.updateGameMetaData(Array.from(gameDataMap.values()));\n }\n this.disabledGameNames = disabledGames && disabledGames.length > 0 ? disabledGames : [];\n if (configs.enableSlotRacesStickers) {\n this.slotRaceStickersData();\n }\n }\n\n private emptySlotRacesData(): void {\n this.slotRaces = [];\n this.raceGamesMap.clear();\n this.liveRacesPublisher.next({ liveNow: [] });\n this.upcomingRacesPublisher.next({ upcomingToday: [], upcomingTomorrow: [] });\n }\n\n setSlotRaces(lobbyType: string): void {\n this.setSlotRacesParams(lobbyType);\n const configs = this.configProviderService.provideSlotRacesConfig();\n if (this.isPrizesMapEmpty()) {\n if (!configs.disablePrizesApiCall || (configs.disablePrizesApiCall && this.user.isAuthenticated)) {\n this.getPrizes().subscribe();\n }\n }\n if (!this.timer) {\n this.globalTimerCountDown();\n }\n }\n\n getRaces(): void {\n if (this.isSlotRacesEnabled) {\n this.getLiveRaces();\n this.getUpcomingRaces();\n }\n }\n\n startLiveSlotPolling() {\n if (!this.liveSlotPollingStarted && this.pollForUser) {\n const configs = this.configProviderService.provideSlotRacesConfig();\n\n this.liveSlotPollingStarted = true;\n this.pollingInterval = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.getLiveRaces();\n }, configs.racesListPollingInterval);\n }\n }\n\n stopLiveSlotPolling() {\n this.liveSlotPollingStarted = false;\n this.timerService.clearInterval(this.pollingInterval);\n }\n\n private getSitecoreData(fetchNPMData: boolean): void {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.slotRaces['racesContent'], { fetchNPMData: fetchNPMData }).subscribe((content: SitecoreContent) => {\n this.contentData = content;\n this.contentPublisher.next(content);\n if (\n content &&\n content.textTranslations &&\n content.textTranslations.sharedList &&\n content.textTranslations.sharedList.progressBarColor &&\n content.textTranslations.sharedList.progressBarColor != ''\n ) {\n const style = document.createElement('style');\n style.innerHTML =\n '.sr-progress-bar-color.mat-accent .mat-slider-thumb,.mat-slider-thumb-label,.mat-slider-track-fill { background-color:' +\n content.textTranslations.sharedList.progressBarColor +\n ' !important } ';\n document.getElementsByTagName('head')[0]!.appendChild(style);\n }\n });\n }\n\n getPrizes(): Observable<any> {\n return this.getPrizesFromAPI().pipe(\n map((data: any) => {\n let prizesMap;\n if (data?.offers && data.offers?.length) {\n prizesMap = this.createPrizesMap(data.offers);\n }\n if (prizesMap) {\n this.promoPrizesMap = prizesMap;\n }\n return prizesMap;\n }),\n catchError((error: any) => {\n return error;\n }),\n );\n }\n\n private createPrizesMap(prizes: any): {} {\n const promoPrizes: { [promoId: number]: any } = [];\n prizes = prizes.filter((prize: any) => prize && prize.promoId && prize.rankDetails && prize.rankDetails.length);\n for (let n = 0; n < prizes.length; n++) {\n if (!promoPrizes[prizes[n].promoId]) {\n const prizesArray: any[] = [];\n for (let i = 0; i < prizes[n].rankDetails.length; i++) {\n prizesArray.push(prizes[n].rankDetails[i].configMaps);\n }\n\n if (prizes[n].beatBanker) {\n prizes[n].beatBanker.isBeatBanker = true;\n prizesArray.push([prizes[n].beatBanker]);\n }\n promoPrizes[prizes[n].promoId] = prizesArray;\n }\n }\n return promoPrizes;\n }\n\n getPrizesForPromo(promoId: number): any {\n if (this.promoPrizesMap) {\n const prize = this.promoPrizesMap[promoId];\n if (prize && prize.length) {\n const currencyPrize = prize.find((p: any) => p?.currency && p?.currency?.length);\n if (currencyPrize) {\n if (currencyPrize.currency === this.claims.get('currency')) {\n return prize;\n } else {\n return []; // so that a downstream call is made to fetch latest data for prizes with new currency\n }\n } else {\n return prize; //return prize if it does not involve any prize with currency\n }\n }\n }\n return [];\n }\n\n private isPrizesMapEmpty(): boolean {\n for (const promo in this.promoPrizesMap) {\n if (this.promoPrizesMap.hasOwnProperty(promo)) {\n return false;\n }\n }\n\n return JSON.stringify(this.promoPrizesMap) === JSON.stringify({});\n }\n\n getLiveRaces(): void {\n const params: SlotApiParams = {\n slotInput: 'LIVE',\n };\n this.getRacesList(params);\n }\n\n getUpcomingRaces(): void {\n const configs = this.configProviderService.provideSlotRacesConfig();\n\n const params: SlotApiParams = {\n slotInput: 'UPCOMING',\n slotDuration: configs.upcomingSlotsDuration,\n };\n this.getRacesList(params);\n }\n\n private getRacesList(params: any): void {\n const configs = this.configProviderService.provideSlotRacesConfig();\n if (!configs.disablePreloginApiCalls || (configs.disablePreloginApiCalls && this.user.isAuthenticated)) {\n this.getRacesFromAPI(params).subscribe(\n (races: any) => {\n if (races) {\n if (races.statusDtls && races.statusDtls.statusCode == 1016 && this.liveSlotPollingStarted) {\n this.pollForUser = false;\n this.stopLiveSlotPolling();\n } else {\n if (!this.pollForUser) {\n this.pollForUser = true;\n }\n }\n this.getRaceCompletedStatus(params, configs);\n if (races.offerResponses && races.offerResponses.length > 0) {\n this.makeDateConversions(races.offerResponses, params.slotInput);\n }\n }\n },\n (error: any) => {\n if (error) {\n this.getRaceCompletedStatus(params, configs);\n }\n },\n );\n }\n }\n\n private getRaceCompletedStatus(params: any, configs: any) {\n if (configs?.enableSlotRacesPhase2 && !this.liveSlotPollingStarted) {\n this.slotInputArr.push(params.slotInput);\n const slotInputUniqueArr = this.slotInputArr.filter(function (item, pos, self) {\n return self.indexOf(item) == pos;\n });\n if (slotInputUniqueArr?.length == 2) {\n setTimeout(() => {\n this.raceCompletedPublisher.next(true);\n }, 100);\n }\n }\n }\n\n private makeDateConversions(races: Race[], slotInput: string) {\n const finalRaces: Race[] = [];\n const now = Date.now();\n races.forEach((race: Race) => {\n const startDate = new Date(race.startTime); // as date coming from API is epoch UTC\n const endDate = new Date(race.endTime);\n const optinExpiryDate = new Date(race.optinExpiryTime);\n race.startDate = startDate;\n race.endDate = endDate;\n race.optinExpiryDate = optinExpiryDate;\n //adding following if-else block to eliminate older data showing up in response from pre-login cache\n if (slotInput === 'LIVE' && race.startDate.getTime() < now && race.endDate.getTime() > now) {\n race.startTimeAMPM = this.getAMPMTime(race.startDate);\n finalRaces.push(race);\n } else if (slotInput === 'UPCOMING' && race.startDate.getTime() > now) {\n race.startTimeAMPM = this.getAMPMTime(race.startDate);\n finalRaces.push(race);\n }\n });\n this.slotRaces = finalRaces;\n this.populateRacesObject();\n }\n\n getAMPMTime(date: Date): string {\n const features = this.configProviderService.provideSlotRacesConfig();\n let hours = date.getHours();\n const minutes = date.getMinutes();\n if (features.enable24HrTimeFormat) {\n return ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2);\n }\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n const mnts = minutes < 10 ? '0' + minutes : minutes;\n const startTime = hours + ':' + mnts + ampm;\n return startTime;\n }\n\n private populateRacesObject(): void {\n if (this.slotRaces && this.slotRaces.length && this.isGameMetadataAvailable) {\n const tomorrow = new Date();\n tomorrow.setHours(24, 0, 0, 0);\n const dayAfter = new Date();\n dayAfter.setHours(48, 0, 0, 0);\n const now = Date.now();\n const liveSlots: SlotRacesLive = { liveNow: [] };\n const upcomingSlots: SlotRacesUpcoming = { upcomingToday: [], upcomingTomorrow: [] };\n this.slotRaces.every((race: Race) => {\n const ordandunordGames: any = {};\n let mappedObject: any;\n this.filterPromoGames(race);\n const raceMetaData = this.gameMetadata[race.gameVariantList[0]!];\n if (raceMetaData && race.gameVariantList && race.gameVariantList.length && race.endDate.getTime() > now) {\n if (race.gameVariantList.length > 1) {\n mappedObject = this.raceGamesMap && this.raceGamesMap.get(race.promoId?.toString());\n if (!mappedObject || (mappedObject && mappedObject?.unorderedGames !== race.gameVariantList)) {\n ordandunordGames.unorderedGames = race.gameVariantList;\n ordandunordGames.orderedGames = race.gameVariantList = this.getOrderedGames(race);\n this.raceGamesMap.set(race.promoId.toString(), ordandunordGames);\n } else {\n race.gameVariantList = mappedObject.orderedGames;\n }\n }\n race.gameId = raceMetaData.name;\n if (race.startDate.getTime() <= now) {\n race.isLive = true;\n liveSlots.liveNow.push(race);\n return true;\n } else if (race.startDate < tomorrow) {\n upcomingSlots.upcomingToday.push(race);\n return true;\n } else if (race.startDate < dayAfter) {\n upcomingSlots.upcomingTomorrow.push(race);\n return true;\n } else {\n return false;\n }\n } else {\n return true;\n }\n });\n if (liveSlots && liveSlots.liveNow && liveSlots.liveNow.length) {\n if (\n upcomingSlots &&\n ((upcomingSlots.upcomingToday && upcomingSlots.upcomingToday.length) ||\n (upcomingSlots.upcomingTomorrow && upcomingSlots.upcomingTomorrow.length))\n ) {\n this.publishRaces(liveSlots, upcomingSlots);\n } else {\n this.publishRaces(liveSlots, '');\n }\n } else {\n this.publishRaces('', upcomingSlots);\n }\n }\n }\n private filterPromoGames(promo: any) {\n if (promo) {\n if (!promo.gameVariantList || !promo.gameVariantList.length) {\n promo.gameVariantList = [promo.gameVariantName];\n }\n\n const tempGameList: any = [];\n for (let i = 0; i < promo.gameVariantList.length; i++) {\n if (this.gameMetadata[promo.gameVariantList[i]] && this.disabledGameNames.indexOf(promo.gameVariantList[i]) < 0) {\n tempGameList.push(promo.gameVariantList[i]);\n }\n }\n promo.gameVariantList = tempGameList;\n }\n }\n\n getLeaderboard(promoId: any, slotId: any, maxRank: number = 0, fromResultsHistory: boolean): Observable<any> {\n return this.getLeaderboardFromAPI(promoId, slotId, maxRank, fromResultsHistory);\n }\n\n updateRacesArrays(): void {\n const upcomingRaces = this.upcomingRacesPublisher.value;\n const liveRaces = this.liveRacesPublisher.value;\n const now = Date.now();\n const newLiveRaces: Race[] = upcomingRaces.upcomingToday.filter((r) => r.startDate.getTime() <= now);\n newLiveRaces.forEach((race: Race) => {\n race.isLive = true;\n upcomingRaces.upcomingToday.splice(upcomingRaces.upcomingToday.indexOf(race), 1);\n });\n const endedRaces: Race[] = liveRaces.liveNow.filter((r) => r.endDate.getTime() <= now);\n endedRaces.forEach((race: Race) => {\n liveRaces.liveNow.splice(liveRaces.liveNow.indexOf(race), 1);\n });\n liveRaces.liveNow = liveRaces.liveNow.concat(newLiveRaces);\n\n this.publishRaces(liveRaces, upcomingRaces);\n }\n\n private publishRaces(liveRaces: SlotRacesLive | '', upcomingRaces: SlotRacesUpcoming | ''): void {\n if (upcomingRaces) {\n if (upcomingRaces.upcomingToday && upcomingRaces.upcomingToday.length) {\n const timeoutInterval = upcomingRaces.upcomingToday[0]!.startDate.getTime() - Date.now();\n setTimeout(() => {\n this.updateRacesArrays();\n }, timeoutInterval);\n } else if (upcomingRaces.upcomingTomorrow && upcomingRaces.upcomingTomorrow.length) {\n const timeoutInterval = upcomingRaces.upcomingTomorrow[0]!.startDate.getTime() - Date.now();\n setTimeout(() => {\n this.updateRacesArrays();\n }, timeoutInterval);\n }\n }\n\n if (liveRaces && liveRaces.liveNow) {\n this.liveRacesPublisher.next(liveRaces);\n }\n if (upcomingRaces && (upcomingRaces.upcomingToday || upcomingRaces.upcomingTomorrow)) {\n this.upcomingRacesPublisher.next(upcomingRaces);\n }\n }\n //To Show Stickers on Game Tile\n slotRaceStickersData() {\n this.content.subscribe((content: SitecoreContent) => {\n this.contentData = content;\n this.messages = content && content.textTranslations ? content.textTranslations.versionedList : {};\n combineLatest(this.liveRacesData, this.upcomingRacesData).subscribe((races: any) => {\n const liveRaces = races[0] && races[0].liveNow && races[0].liveNow.slice(0, races[0].liveNow.length);\n const upcomingToday = races[1] && races[1].upcomingToday && races[1].upcomingToday.slice(0, races[1].upcomingToday.length);\n this.raceData(liveRaces, upcomingToday, this.contentData);\n });\n });\n }\n\n raceData(liveRaces: Race[], upcomingToday: Race[], contentData: any) {\n if (liveRaces.length > 0 || upcomingToday.length > 0) {\n for (let i = 0; i < upcomingToday.length; i++) {\n const corrLive = liveRaces.find((r) => r.promoId === upcomingToday[i]!.promoId);\n if (corrLive) {\n if (corrLive.optinExpiryDate.getTime() < Date.now()) {\n continue;\n } else {\n this.stickersDataMap(upcomingToday[i]!, contentData, 'upcomingRaces');\n }\n } else {\n this.stickersDataMap(upcomingToday[i]!, contentData, 'upcomingRaces');\n }\n }\n for (let i = 0; i < liveRaces.length; i++) {\n if (liveRaces[i]!.optinExpiryDate.getTime() < Date.now()) {\n continue;\n } else {\n this.stickersDataMap(liveRaces[i]!, contentData, 'liveRaces');\n }\n }\n if (this.stickerMap.size > 0) {\n this.stickerRacesPublisher.next(this.stickerMap);\n }\n }\n }\n stickersDataMap(raceItem: Race, contentData: any, races: string) {\n const configs = this.configProviderService.provideSlotRacesConfig();\n const milliseconds = raceItem.startDate.getTime() - Date.now();\n const seconds: number = Math.floor(milliseconds / 1000);\n const minutes: number = Math.floor(seconds / 60);\n if (races === 'upcomingRaces') {\n if (minutes > configs.upcomingSlotStickersDuration) {\n return;\n }\n if (minutes && minutes <= configs.upcomingSlotStickersDuration) {\n this.getUpdatedSlotStickerDuration(raceItem, contentData);\n }\n } else if (races === 'liveRaces') {\n if (minutes > 30) {\n return;\n }\n if (minutes && minutes <= 30) {\n this.getUpdatedSlotStickerDuration(raceItem, contentData);\n }\n }\n }\n getUpdatedSlotStickerDuration(raceItem: Race, contentData: any) {\n this.messages = contentData && contentData.textTranslations ? contentData.textTranslations.versionedList : {};\n const configs = this.configProviderService.provideSlotRacesConfig();\n let gameName: string;\n let stickerText: string = '';\n const awardType: string = raceItem.additionalParams.awardType!;\n const awardTypeSticker: string = 'sticker_' + (awardType == null ? '' : awardType?.toLowerCase());\n const subType: string = raceItem.subType;\n const milliseconds = raceItem.startDate.getTime() - Date.now();\n const seconds: number = Math.floor(milliseconds / 1000);\n const minutes: number = Math.floor(seconds / 60);\n for (let i = 0; i < raceItem.gameVariantList.length; i++) {\n gameName = raceItem.gameVariantList[i]!;\n\n if (subType == 'CASINO_LEADERBOARD' && awardType) {\n stickerText = this.messages[awardTypeSticker]!;\n } else if (configs.enableStickersFreeToPlay && subType == 'FREE_TO_PLAY') {\n stickerText = this.messages.sticker_free_to_play!;\n } else if (configs.enableStickersFreePlayTech && subType?.toLowerCase() == 'free_play_tech') {\n stickerText = this.messages.sticker_free_play_tech!;\n }\n const stickerItem = {\n minutes: minutes,\n optinExpiryDate: raceItem.optinExpiryDate,\n optinExpiryTime: raceItem.optinExpiryTime,\n endDate: raceItem.endDate,\n stickerText: [stickerText],\n };\n if (stickerText !== undefined) {\n this.stickerMap.set(gameName, { data: stickerItem });\n }\n }\n }\n\n getResultsHistory(to: string, from?: string): Observable<ResultsHistory[] | null> {\n return this.getResultsHistoryFromAPI(to, from).pipe(\n map((data: any) => {\n if (data && data.rankDetails && data.rankDetails.length > 0) {\n const resultHistory = this.formatResults(data.rankDetails);\n return resultHistory;\n }\n return null;\n }),\n catchError((error: any) => {\n return throwError(error);\n }),\n );\n }\n\n private formatResults(results: ResultsHistory[]) {\n let prizes: any;\n let beatBanker: any;\n results.forEach((result: ResultsHistory) => {\n this.filterPromoGames(result);\n result.startDate = new Date(result.slotStartDate);\n result.endDate = new Date(result.slotEndDate);\n result.dateStr = result.startDate.getDate() + '-' + (result.startDate.getMonth() + 1) + '-' + result.startDate.getFullYear();\n if ((result.content && result.content.promotion && result.content.promotion.prizes) || result?.content?.promotion?.beatBanker) {\n if (result.configMaps && result.configMaps[0]?.awardType) {\n result.isWin = true;\n } else {\n result.isWin = false;\n }\n prizes = this.getParsedData(result.content.promotion.prizes);\n if (result?.content?.promotion?.beatBanker) {\n result.isBeatBanker = true;\n beatBanker = this.getParsedData(result.content.promotion.beatBanker);\n }\n prizes?.forEach((prize: any) => {\n if (result.rank >= Number(prize.FromRank) && result.rank < Number(prize.ToRank)) {\n result.prizeIcon = prize.Icon;\n }\n });\n beatBanker?.forEach((banker: any) => {\n if (result.configMaps && result?.configMaps[0]?.awardType && result?.configMaps[0]?.value) {\n result.prizeIcon = banker.Icon;\n }\n });\n }\n });\n return results;\n }\n\n getParsedData(data: any) {\n try {\n return JSON.parse(data);\n } catch {\n return null;\n }\n }\n\n updateGameMetaData(data: any[]): void {\n this.gameMetadata = this.buildGameIdBasedMetadataIndex(data);\n this.populateRacesObject();\n }\n\n private buildGameIdBasedMetadataIndex(metadata: Array<any>): { [game: string]: object } {\n const indexedMetadata: { [game: string]: object } = {};\n if (metadata && metadata.length) {\n this.isGameMetadataAvailable = true;\n metadata\n .filter((item) => item)\n .forEach((metadataItem) => {\n if (!indexedMetadata[metadataItem.game.trim()]) {\n indexedMetadata[metadataItem.game.trim()] = metadataItem;\n }\n });\n return indexedMetadata;\n }\n return {};\n }\n\n private getRacesFromAPI(params: any): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces['racesList'], params, { withCredentials: true });\n }\n\n private getLeaderboardFromAPI(promoId: number, slotId: number, maxRank: number, fromResultsHistory: boolean): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(\n apiPathsConfig.slotRaces['racesLeaderboard'],\n { prmId: promoId, slotId: slotId, maxRank: maxRank, fromResultsHistory: fromResultsHistory },\n { withCredentials: true },\n );\n }\n\n private getResultsHistoryFromAPI(to: string, from?: string): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces['racesResults'], { fromDate: from, endDate: to }, { withCredentials: true });\n }\n\n private getPrizesFromAPI(): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces['racesPrizes'], {}, { withCredentials: true });\n }\n\n updateOptinStatus(promoId: number, slotId: number, coinsForOptin: number): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces['racesOptin'], { prmId: promoId, slotId, coinsForOptin }, { withCredentials: true });\n }\n\n GetCoinBalnce(): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces['racesCoinBalance'], {}, { withCredentials: true });\n }\n\n updateNotificationStatus(promoId: number, slotId: number, notificationStatus: boolean): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces['raceUpdateNotification'], { promoId, slotId, notificationStatus }, { withCredentials: true });\n }\n\n notificationPopupTimeout(): number {\n const config = this.configProviderService.provideSlotRacesConfig();\n return config.notificationPopupTimeout;\n }\n\n addErrorMessage(errCode: number): void {\n this.messageQueue.clear();\n const msg = this.getErrorMessage(errCode);\n if (msg) {\n this.messageQueue.addError(msg, MessageLifetime.Single, 'casinocorelobby');\n window.scrollTo(0, 0); //added so that the error message is visible to the user as vanilla scroll is not wokring properly here. Assumption agreed upon after discussion is that the error message panel would always be at the top of the lobby\n }\n }\n\n getErrorMessage(errCode: number): string {\n if (this.contentData && this.contentData.errorMessages && this.contentData.errorMessages.versionedList) {\n if (this.contentData.errorMessages.versionedList[errCode]) return this.contentData.errorMessages.versionedList[errCode]!;\n else return this.contentData.errorMessages.versionedList['defaultErrorCode']!;\n //add this to sitecore\n }\n return '';\n }\n\n globalTimerCountDown(): void {\n this.timer = setInterval(() => {\n this.globalTimerPublisher.next({ timerInterval: this.globalTimerInterval });\n }, this.globalTimerInterval);\n }\n\n forceOptin() {\n const forceOptinRace = sessionStorage.getItem('ForceOptin');\n if (forceOptinRace) {\n const parsedForceOptinRace = (forceOptinRace && JSON.parse(forceOptinRace)) || {};\n sessionStorage.removeItem('ForceOptin');\n const promoId = parsedForceOptinRace.promoId;\n const slotId = parsedForceOptinRace.slotUniqueId;\n const coinsForOptin = parsedForceOptinRace.coinsForOptin;\n this.updateOptinStatus(promoId, slotId, coinsForOptin).subscribe(\n () => {\n this.forcRacepublisher.next({ race: parsedForceOptinRace });\n },\n (error: SlotRacesResponseError) => {\n this.addErrorMessage(error.errorCode);\n },\n );\n }\n }\n forceCoinBalance() {\n const forceCoinBalance = sessionStorage.getItem('forceCoinBalance');\n if (forceCoinBalance) {\n const parsedForceCoinBalance = (forceCoinBalance && JSON.parse(forceCoinBalance)) || {};\n sessionStorage.removeItem('forceCoinBalance');\n this.GetCoinBalnce().subscribe(\n (coinBal: any) => {\n this.forceCoinBalancepublisher.next({ coinBal: coinBal, race: parsedForceCoinBalance });\n },\n (error: SlotRacesResponseError) => {\n this.addErrorMessage(error.errorCode);\n },\n );\n }\n }\n\n getCurrentRaces(): any {\n const liveRaces = this.liveRacesPublisher.value;\n const upcomingRaces = this.upcomingRacesPublisher.value;\n const data = {\n liveNow: liveRaces.liveNow || [],\n upcomingToday: upcomingRaces.upcomingToday || [],\n upcomingTomorrow: upcomingRaces.upcomingTomorrow || [],\n };\n return data;\n }\n\n private updateLobbyNavigation(): void {\n const configs = this.configProviderService.provideSlotRacesConfig();\n if (configs.disableWhenNoPromotions) {\n combineLatest(this.liveRacesData, this.upcomingRacesData).subscribe((races: any) => {\n let newNavCategoryVisibility: boolean;\n if (\n races &&\n ((races[0] && races[0].liveNow && races[0].liveNow.length) ||\n (races[1] &&\n ((races[1].upcomingToday && races[1].upcomingToday.length) ||\n (races[1].upcomingTomorrow && races[1].upcomingTomorrow.length))))\n ) {\n newNavCategoryVisibility = true;\n } else {\n newNavCategoryVisibility = false;\n }\n if (newNavCategoryVisibility !== this.isNavCategoryVisible) {\n this.isNavCategoryVisible = newNavCategoryVisibility;\n this.updateNavigationCategories.next(true);\n }\n });\n }\n }\n\n setSlotRacesParams(lobbyType: string): void {\n this.slotRacesCategoryId = this.casinoManager.getSlotRaceCategoryId(lobbyType);\n const configs = this.configProviderService.provideSlotRacesConfig();\n const features = this.configProviderService.provideFeaturesConfig();\n if (this.casinoManager.IsFeatureEnabledforLobbytype(lobbyType, features.enableSlotRacesForLobbyType)) {\n if (this.user.isAuthenticated || (!this.user.isAuthenticated && configs.enablePreLogin)) {\n this.isSlotRacesEnabled = true;\n }\n }\n }\n\n gameClose(category: string): void {\n if (this.isSlotRacesEnabled) {\n const slotRacesCategory = this.slotRacesCategoryId;\n const cardsCarousel = document.getElementById('casinotournamentscards');\n if (cardsCarousel) {\n this.startLiveSlotPolling();\n this.getRaces();\n } else if (category === slotRacesCategory) {\n this.getRaces();\n }\n }\n }\n\n getOrderedGames(race: any = []): string[] {\n const lmtGames = this.categoryMap?.length && this.categoryMap.filter((item: any) => item.categoryname == race.promoId)[0]?.gamelist;\n if (lmtGames?.length > 0) {\n const tempArray: any[] = [];\n const patGames = race.gameVariantList;\n for (let i = 0; i < lmtGames.length; i++) {\n if (patGames.includes(lmtGames[i].game)) {\n tempArray.push(lmtGames[i].game);\n }\n }\n return Array.from(new Set(tempArray.concat(patGames)));\n } else {\n return race.gameVariantList;\n }\n }\n updateCoinIcon(value: boolean) {\n if (value) {\n this.isCoin = value;\n }\n }\n getcoinValue() {\n return this.isCoin;\n }\n\n selectedEntryFilter(entryFilter: any) {\n if (entryFilter) {\n this.selectedFilteredtOption = entryFilter;\n }\n }\n getselectedEntryFilter() {\n return this.selectedFilteredtOption;\n }\n getlmtData(lmtData: LobbyItem) {\n this.categoryMap = lmtData.categoriesMap?.values()?.next()?.value?.subcategories;\n }\n\n bindCoinImg(race: any, coinImg: string) {\n const raceObj = {\n isDisplayCoin: false,\n coinSrc: '',\n };\n if (race) {\n if (race?.additionalParams?.awardType !== 'COINS' && race?.additionalParams?.isCoinAward === 'YES') {\n raceObj.isDisplayCoin = true;\n raceObj.coinSrc = coinImg;\n } else {\n raceObj.isDisplayCoin = false;\n raceObj.coinSrc = '';\n }\n }\n return raceObj;\n }\n getCoinDetails(): Observable<any> {\n return this.api.get('CoinAnimation/GetCoinDetails', {}, { responseType: 'json', withCredentials: true, showSpinner: false });\n }\n\n getAwardTypeDetails(race: any, messages: any) {\n if (race) {\n const awardType = 'AwardType_' + race?.additionalParams?.awardType?.toLowerCase();\n const awardTypeDescription = messages[awardType];\n return awardTypeDescription || null;\n }\n }\n}\n","<div id=\"casino-embed-game-view\" class=\"casino-embed-game-view\">\n <vn-message-panel [scope]=\"'embeddedGameError'\"></vn-message-panel>\n <span class=\"game-launch-fail-close\" *ngIf=\"!gameLaunchSuccess && !iconsNewPosition\">\n <a (click)=\"close(true)\">\n <span class=\"theme-close-i\"></span>\n </a>\n </span>\n <div class=\"embed-left-section\" *ngIf=\"gameLaunchSuccess\">\n <div class=\"embed-left-section-width\">\n <div class=\"embed-settings\" *ngIf=\"!iconsNewPosition\">\n <div class=\"client-time-full-screen\" *ngIf=\"isFullScreen\">\n {{ date | date: 'shortTime' }}\n </div>\n <ul class=\"embed-list\">\n <li>\n <button class=\"header-btn btn btn-primary ml-2\" mat-raised-button (click)=\"openDialog()\">{{ depositButtonString }}</button>\n </li>\n <li *ngIf=\"isFullScreen && useFavouriteGames\">\n <a (click)=\"addFavourate(Game, $event)\">\n <span *ngIf=\"Game\" [ngClass]=\"Game.isFavourite ? favouriteStyle : unFavouriteStyle\"></span>\n </a>\n </li>\n <li *ngIf=\"!isFullScreen\" [ngStyle]=\"summaryPopUpIsOpened && { 'color': 'grey', 'pointer-events': 'none' }\">\n <a src=\"\" href=\"javascript:void(0)\" (click)=\"openRequestedPopup()\">\n <span class=\"theme-pop-out\" [title]=\"titlePopout\"></span>\n </a>\n </li>\n <li [ngStyle]=\"summaryPopUpIsOpened && { 'color': 'grey', 'pointer-events': 'none' }\">\n <a (click)=\"toggleFullScreen($event)\">\n <span\n [ngClass]=\"isFullScreen ? 'theme-fullscreen-exit' : 'theme-fullscreen'\"\n [title]=\"isFullScreen ? titleExitFullScreen : titleFullScreen\"></span>\n </a>\n </li>\n <li *ngIf=\"!isFullScreen\" [ngStyle]=\"summaryPopUpIsOpened && { 'color': 'grey', 'pointer-events': 'none' }\">\n <a (click)=\"close(true)\">\n <span class=\"theme-close-i\"></span>\n </a>\n </li>\n <li style=\"position: relative; right: -50px\" *ngIf=\"extrasColumnFlag && !isFullScreen\">\n <a class=\"theme-left\" (click)=\"toggleExtrasColumn()\"></a>\n </li>\n </ul>\n </div>\n <div class=\"embed-iframe\">\n <ng-container *ngIf=\"iframeUrl\">\n <div class=\"gameOverlay\">\n <iframe\n id=\"embedGameIframe\"\n class=\"iframeClass\"\n allowfullscreen=\"true\"\n webkitallowfullscreen=\"true\"\n mozallowfullscreen=\"true\"\n [ngClass]=\"{ 'iframe-width': isIframeVisible == true, 'iframeClassNew': iconsNewPosition }\"\n [src]=\"iframeUrl | trustAsResourceUrl\"></iframe>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"embed-right-section\" *ngIf=\"!extrasColumnFlag && !isFullScreen\" [ngClass]=\"{ 'egv-disable-overlay': egvOverlayFlag }\">\n <div class=\"casino-embed-search\">\n <div class=\"search-right-icon\" *ngIf=\"!isFullScreen && !iconsNewPosition\" [ngClass]=\"iconsNewPosition ? 'search-right-icon-new' : ''\">\n <a [ngClass]=\"extrasColumnFlag ? 'theme-left' : 'theme-right'\" (click)=\"toggleExtrasColumn()\"></a>\n </div>\n <div class=\"embed-settings\" *ngIf=\"iconsNewPosition\">\n <div class=\"client-time-full-screen\" *ngIf=\"isFullScreen\">\n {{ date | date: 'shortTime' }}\n </div>\n <ul>\n <li *ngIf=\"isFullScreen && useFavouriteGames\">\n <a (click)=\"addFavourate(Game, $event)\">\n <span *ngIf=\"Game\" [ngClass]=\"Game.isFavourite ? favouriteStyle : unFavouriteStyle\"></span>\n </a>\n </li>\n <li *ngIf=\"!isFullScreen\" [ngStyle]=\"summaryPopUpIsOpened && { 'color': 'grey', 'pointer-events': 'none' }\">\n <a src=\"\" href=\"javascript:void(0)\" (click)=\"openRequestedPopup()\">\n <span class=\"theme-pop-out\" [title]=\"titlePopout\"></span>\n </a>\n </li>\n <li [ngStyle]=\"summaryPopUpIsOpened && { 'color': 'grey', 'pointer-events': 'none' }\">\n <a (click)=\"toggleFullScreen($event)\">\n <span\n [ngClass]=\"isFullScreen ? 'theme-fullscreen-exit' : 'theme-fullscreen'\"\n [title]=\"isFullScreen ? titleExitFullScreen : titleFullScreen\"></span>\n </a>\n </li>\n <li *ngIf=\"!isFullScreen\" [ngStyle]=\"summaryPopUpIsOpened && { 'color': 'grey', 'pointer-events': 'none' }\">\n <a (click)=\"close(true)\">\n <span class=\"theme-close-i\"></span>\n </a>\n </li>\n <li style=\"position: relative; right: -50px\" *ngIf=\"extrasColumnFlag && !isFullScreen\">\n <a class=\"theme-left\" (click)=\"toggleExtrasColumn()\"></a>\n </li>\n </ul>\n </div>\n <cc-lazy-search-desktop\n [ngClass]=\"iconsNewPosition ? 'search-field' : ''\"\n [placeholder]=\"'embedgame'\"\n [lobbyType]=\"lobbyType\"\n (embedGameClicked)=\"gameClickedOnSearch($event, 0, 'Search')\" />\n\n <div class=\"games-div\" [ngClass]=\"iconsNewPosition ? 'games-div-new' : ''\">\n <div class=\"embed-game-title\">\n <div class=\"game-title\" *ngIf=\"Game\" [innerHTML]=\"Game.title\"></div>\n </div>\n <div class=\"add-fav-btn\" *ngIf=\"useFavouriteGames\">\n <a class=\"favourite btn-s3\" [ngClass]=\"{ 'epcot-btn': enableEpcotSubNavigation }\" (click)=\"addFavourate(Game, $event)\">\n <span *ngIf=\"Game\" [ngClass]=\"Game.isFavourite ? favouriteStyle : unFavouriteStyle\"></span>\n <span class=\"favaddbutton\" *ngIf=\"!Game.isFavourite\">{{ this.Global.messages.AddToFavorites }}</span>\n <span class=\"favaddbutton\" *ngIf=\"Game.isFavourite\">{{ this.Global.messages.AddedToFavorites }}</span>\n </a>\n </div>\n <div\n id=\"categoryIdentifier_EmbedRecentlyPlayed\"\n class=\"embed-games-list sidepanel-recentlyplayed-games\"\n *ngIf=\"RecentlyPlayedGamesList && RecentlyPlayedGamesList.length > 0\">\n <div class=\"emb-header\">{{ Global.messages.RecentlyPlayedGames }}</div>\n <div class=\"games-container\">\n <div\n class=\"game embed-game\"\n *ngFor=\"let game of RecentlyPlayedGamesList; let i = index\"\n [ngClass]=\"{ 'live-dealer-closed': !isLiveDealerOpen }\">\n <cc-game-embed\n id=\"gameIdentifier_EmbedRecentlyPlayed_{{ game.gameId }}\"\n [game]=\"game\"\n [radius]=\"borderRadius\"\n [categorytype]=\"\"\n [lobbyType]=\"lobbyType\"\n (embedGameClicked)=\"gameClickedOnSearch($event, i, recentGames)\"></cc-game-embed>\n </div>\n </div>\n </div>\n <div\n id=\"categoryIdentifier_EmbedGamesyouMightLike\"\n class=\"embed-games-list sidepanel-suggested-games\"\n *ngIf=\"recommendationGamesList && recommendationGamesList.length > 0\">\n <div class=\"emb-header\">{{ GamesyouMightLikeMessage }}</div>\n <div class=\"games-container\">\n <div\n class=\"game embed-game\"\n *ngFor=\"let game of recommendationGamesList | slice: 0 : 6; let i = index\"\n [ngClass]=\"{ 'live-dealer-closed': !isLiveDealerOpen }\">\n <cc-game-embed\n id=\"gameIdentifier_EmbedGamesyouMightLike_{{ game.gameId }}\"\n [game]=\"game\"\n [radius]=\"borderRadius\"\n [categorytype]=\"\"\n [lobbyType]=\"lobbyType\"\n (embedGameClicked)=\"gameClickedOnSearch($event, i, EGV_GYML)\"></cc-game-embed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { DOCUMENT, DatePipe, Location, NgClass, NgFor, NgIf, NgStyle, SlicePipe } from '@angular/common';\nimport { AfterViewInit, Component, DoCheck, EventEmitter, HostListener, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute } from '@angular/router';\n\nimport {\n CommonMessages,\n CookieService,\n DeviceService,\n Logger,\n MessageLifetime,\n MessageQueueService,\n NavigationService,\n Page,\n ProductHomepagesConfig,\n TrackingService,\n UserService,\n WindowRef,\n} from '@frontend/vanilla/core';\nimport { BalancePropertiesService } from '@frontend/vanilla/features/balance-properties';\nimport { MessagePanelComponent } from '@frontend/vanilla/features/message-panel';\nimport { TrustAsResourceUrlPipe } from '@frontend/vanilla/shared/browser';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { CashierIframeComponent } from '../cashier-iframe/cashier-iframe.component';\nimport { GamePopoutComponent } from '../cashier-iframe/game-pop-out.component';\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { GameEmbedComponent } from '../game-embed/game-embed.component';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { LazySearchDesktopComponent } from '../search-desktop/lazy-search-desktop.component';\nimport { AdvanceGameDataService } from '../shared/advance-game-data.service';\nimport { ApiPathsHelperService } from '../shared/api-paths-helper-service';\nimport { CashierService } from '../shared/cashier.service';\nimport { CasinoManager } from '../shared/casino-manager.service';\nimport { CasinoWidgetService } from '../shared/casino-widget.service';\nimport { ConstService } from '../shared/const.service';\nimport { FavouriteService } from '../shared/favourite.service';\nimport { FreespinSummaryService } from '../shared/freespins-summary.service';\nimport { GameDataManager } from '../shared/game-data-manager.service';\nimport { GameLaunchTrackingService } from '../shared/game-launch-tracking.service';\nimport { InvokerProductService } from '../shared/invoker-product.service';\nimport { JackpotService } from '../shared/jackpot.service';\nimport { JackpotDataService } from '../shared/jackpotdata-service';\nimport { GameLobbyModel } from '../shared/models/game-lobby.model';\nimport { GameLaunch } from '../shared/models/gamelaunch.model';\nimport { OpenLoginDialog } from '../shared/open-login-dialog-v6';\nimport { RecentGamesService } from '../shared/recent-games.service';\nimport { UnfinishedGamesService } from '../shared/unfinished-games-service';\nimport { SlotRacesService } from '../slot-races/shared/slot-races.service';\nimport { CasinoCoreGameLaunchFactoryService } from './../shared/gamelaunchfactory.service';\n\n@Component({\n selector: 'cc-embedded-game-view',\n templateUrl: 'embedded-game-view.component.html',\n standalone: true,\n imports: [\n MessagePanelComponent,\n NgIf,\n NgClass,\n NgStyle,\n NgFor,\n GameEmbedComponent,\n SlicePipe,\n DatePipe,\n TrustAsResourceUrlPipe,\n LazySearchDesktopComponent,\n ],\n})\nexport class EmbeddedGameViewComponent implements OnInit, DoCheck, OnDestroy, AfterViewInit {\n @Input() borderRadius: any;\n @Input() gameEmbedPop: any;\n @Input() lobbyType: any;\n @Output() sendDataToEmbeddedGamePopUp = new EventEmitter<any>();\n @Output() sendDialogCloseEventToEmbeddedGamePopUp = new EventEmitter<any>();\n @Input() errorMessageQueue: any;\n value: string;\n Game: any;\n favouriteGames: any;\n useFavouriteGames: boolean;\n Favorites: boolean;\n isIframeVisible: boolean = false;\n gameIds: any = [];\n isGreaterthan: boolean = false;\n iframe: any;\n RecentlyPlayedNGamesUMightLike: any;\n RecentlyPlayed: any;\n getCategory: any;\n jackpotsFeed: any;\n isFullScreen: boolean = false;\n extrasColumnFlag: boolean = false;\n RecentlyPlayedGamesList: any = [];\n gamesUMightLikeList: any = [];\n gamesUMightLikeStringList: any = [];\n recentlyPlayedGamesStringList: any = [];\n mobHeight: any;\n mobWidth: any;\n isLiveDealerOpen: any;\n date: Date;\n gameWindowReference: any;\n iframeUrl: string;\n iconShrinkClickedFirst: boolean = false;\n depositButtonString: string;\n catgeoryDataClientConfig: any;\n globalsearchconfig: any;\n embededPopUpWidth: any;\n embededPopUpHeight: any;\n gameLaunchSuccess: boolean;\n unfinishedGamesResource: any;\n unfinishedgameMessgaes: any;\n teaserLaunchRealtiveUri: string;\n recentGames: any = ConstService.RECENT_GAMES_CATEGORY_ID;\n GYML: any = ConstService.GYML_GAMES_CATEGORY_ID;\n EGV_GYML: any = ConstService.EGV_GYML;\n commonMessages: any;\n isLoaderHide: boolean;\n favouriteStyle: string = 'theme-favorite-i';\n unFavouriteStyle: string = 'theme-favorite';\n isTouch: boolean;\n recommendationGames: any = [];\n recommendationGamesList: any = [];\n combineData: any = [];\n multipleGameLaunched: boolean = false;\n isQDAllowed: boolean;\n gameclickedfromsearch: boolean;\n Global: any;\n recentObs: Subscription;\n GamesyouMightLikeMessage: string;\n category: string;\n unsubscribe: Subject<any>;\n gameCloseAckEventReceived: boolean;\n gameConfig: any;\n game: any;\n index: number;\n section: string;\n popUpClicked: boolean;\n summaryPopUpIsOpened: boolean;\n casinoCoreGamelaunchService: any;\n allowAttributes: string;\n isMobileView: boolean;\n iconsNewPosition: boolean;\n isGameCloseTracked: boolean = false;\n enableEpcotSubNavigation: boolean;\n rpGameClickedEGV: boolean = false;\n titlePopout: string = '';\n titleFullScreen: string = '';\n titleExitFullScreen: string = '';\n egvOverlayFlag: boolean = false;\n cozyBingoIframe: any;\n\n constructor(\n private user: UserService,\n private recentGameService: RecentGamesService,\n private favouriteService: FavouriteService,\n private gameDataManager: GameDataManager,\n @Inject(DOCUMENT) private document: any,\n private api: PlatformApiService,\n private jackpotService: JackpotService,\n private messageQueue: MessageQueueService,\n private dialog: MatDialog,\n private balanceService: BalancePropertiesService,\n private cookie: CookieService,\n private navigationService: NavigationService,\n private tracking: TrackingService,\n private location: Location,\n private unfinishedGamesService: UnfinishedGamesService,\n private gameLaunchFactoryService: CasinoCoreGameLaunchFactoryService,\n private loginDialogService: OpenLoginDialog,\n private commonMessagesObject: CommonMessages,\n private casinoManager: CasinoManager,\n private jackpotDataService: JackpotDataService,\n private m2Page: Page,\n private route: ActivatedRoute,\n private casinoWidgetService: CasinoWidgetService,\n private productHomepagesConfig: ProductHomepagesConfig,\n private freespinSummaryService: FreespinSummaryService,\n private cashierService: CashierService,\n private readonly configProviderService: ConfigProviderService,\n private casinoLobbyService: CasinoLobbyService,\n private advanceGameDataService: AdvanceGameDataService,\n private slotRacesService: SlotRacesService,\n private apiPathsHelperService: ApiPathsHelperService,\n private deviceService: DeviceService,\n private readonly windowRef: WindowRef,\n private gameLaunchTrackingService: GameLaunchTrackingService,\n private invokerProductService: InvokerProductService,\n private logger: Logger,\n private gameManagerService: GameManagerService,\n ) {\n this.unsubscribe = new Subject();\n }\n\n ngOnInit() {\n this.casinoCoreGamelaunchService = this.gameLaunchFactoryService.getGameLaunchService();\n this.gameConfig = this.configProviderService.provideGameConfig();\n this.allowAttributes = this.gameConfig.iframeAllowattributes;\n this.Game = this.gameEmbedPop.game;\n this.iframeUrl = this.gameEmbedPop.iframeUrl;\n this.cozyBingoIframe = document.getElementsByClassName('cozy-bingo-iFrame').length\n ? (document.getElementsByClassName('cozy-bingo-iFrame')[0] as HTMLIFrameElement)\n : null;\n this.category = this.gameEmbedPop.categoryType;\n this.setGameTitle();\n const features = this.configProviderService.provideFeaturesConfig();\n this.Global = this.configProviderService.provideGlobalConfig();\n this.globalsearchconfig = this.configProviderService.provideGlobalSearchConfig();\n this.GamesyouMightLikeMessage = this.Global.messages['EmbeddedYouMightLike']\n ? this.Global.messages['EmbeddedYouMightLike']\n : this.Global.messages['GamesYouMightLike'];\n this.isTouch = this.casinoManager.isTouch();\n this.iconsNewPosition = features.enableNewEmbeddedViewIconsPosition;\n const product = this.casinoManager.getProductForLobbyType(this.lobbyType);\n const homeUrl = this.route.snapshot.queryParamMap.get('widgetHomeUrl');\n if (this.Global.messages['TooltipPopOut']) this.titlePopout = this.Global.messages['TooltipPopOut'];\n if (this.Global.messages['TooltipFullScreen']) this.titleFullScreen = this.Global.messages['TooltipFullScreen'];\n if (this.Global.messages['TooltipExitFullScreen']) this.titleExitFullScreen = this.Global.messages['TooltipExitFullScreen'];\n if (homeUrl && homeUrl.length > 0) {\n this.casinoManager.setGameHomeUrl(homeUrl);\n }\n\n if (features.checkQDAllowedForDepositURL) {\n this.cashierService.getQuickDepositAllowedStatus().subscribe((response) => {\n this.isQDAllowed = response.isQuickDepositAllowed;\n this.depositButtonString = this.isQDAllowed ? this.Global.messages['QuickDeposit'] : this.Global.messages['Deposit'];\n });\n }\n\n this.teaserLaunchRealtiveUri = '/' + product + '/launchng/';\n this.messageQueue.clear({ clearPersistent: true });\n this.commonMessages = this.commonMessagesObject;\n if (!this.lobbyType) {\n this.lobbyType = this.casinoManager.getLobbyType();\n }\n this.useFavouriteGames = this.casinoManager.IsFeatureEnabledforLobbytype(this.lobbyType, features.favouriteGamesLobbyType);\n this.recommendationFeed(this.Game.gameId);\n const nonCriticalConfig: any = this.configProviderService.provideNonCriticalConfig();\n if (this.user.isAuthenticated && !nonCriticalConfig.enableRecommendationGames) {\n this.getGamesYouMightLikeOnLMT();\n }\n\n const recentGamesString = this.recentGameService.getrecentGames();\n this.assignRecentlyPlayedGames(recentGamesString);\n this.recentObs = this.recentGameService.recentGamesFeedObservable.subscribe((response: any) => {\n if (response) {\n this.assignRecentlyPlayedGames(response);\n }\n });\n this.casinoLobbyService.lobbyLoadedObservable.subscribe((response: any) => {\n if (response) {\n this.setGameTitle();\n }\n });\n\n this.RecentlyPlayedNGamesUMightLike = this.casinoLobbyService.getCategoryInfo(this.lobbyType, ConstService.RECENT_GAMES_CATEGORY_ID);\n this.favouriteService.favouriteGamesFeedObservable.subscribe((favouriteGameIds) => {\n if (favouriteGameIds) {\n this.Game.isFavourite = favouriteGameIds.indexOf(this.Game.gameId) > -1;\n }\n });\n\n if (\n this.Global.lobbyConfigurations.FavouriteHeart === 'true' ||\n this.Global.lobbyConfigurations.FavouriteHeart === 'True' ||\n this.Global.lobbyConfigurations.FavouriteHeart === 'TRUE'\n ) {\n this.favouriteStyle = 'theme-heart-solid';\n this.unFavouriteStyle = 'theme-heart-outline';\n }\n this.isLoaderHide = false;\n this.depositButtonString = this.isQDAllowed ? this.Global.messages['QuickDeposit'] : this.Global.messages['Deposit'];\n this.maximizeFullScreen();\n this.gameLaunchSuccess = true;\n if (features.useSingleCookieForGameIndexCountInEGV) {\n this.multipleGameLaunched = this.getFromCookie('gameIndexCount');\n } else {\n this.multipleGameLaunched = this.getFromCookie('gameLaunchedCount');\n }\n if (this.multipleGameLaunched) {\n this.gameLaunchSuccess = false;\n if (!this.iconsNewPosition) {\n const message = this.Global.messages['OnlyOneGameAtTime'];\n if (message) {\n this.messageQueue.addError(message, MessageLifetime.Single, 'embeddedGameError');\n }\n } else {\n this.sendDialogCloseEventToEmbeddedGamePopUp.emit(this.Game);\n return;\n }\n } else {\n if (!this.iframeUrl && this.errorMessageQueue) {\n this.gameLaunchSuccess = false;\n this.messageQueue.add(this.errorMessageQueue);\n }\n const subnavConfig: any = this.configProviderService.provideSubNavigationConfig();\n this.enableEpcotSubNavigation = subnavConfig.enableEpcotSubNavigation;\n }\n\n this.date = new Date();\n this.Favorites = false;\n\n //emit event to stop schedule polling in bingo\n this.stopSchedulePollingInBingo(true, true);\n }\n\n ngAfterViewInit() {\n document.getElementById('embedGameIframe')?.setAttribute('allow', this.allowAttributes);\n const featuresConfig = this.configProviderService.provideFeaturesConfig();\n if (featuresConfig.enableOverlayMobileSearchTopPosition && this.deviceService.isTouch) {\n this.embeddedGameOverlayTopAllignment();\n }\n }\n recommendationFeed(gameid: string) {\n //when user logged into account,then hit recomendation feed\n const nonCriticalConfig: any = this.configProviderService.provideNonCriticalConfig();\n if (this.user.isAuthenticated && nonCriticalConfig.enableRecommendationGames) {\n //Url pattern creation\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n const recommendationUrl = this.apiPathsHelperService.transformApi(apiPathsConfig.gameData['gameRecommendations'], gameid);\n //api call\n this.api.get(`/games/api/${recommendationUrl}`).subscribe((response: any) => {\n if (response) {\n //response\n this.recommendationGames = response.recommendationgames;\n //calling function\n this.getGamesYouMightLikeOnLMT();\n }\n });\n }\n }\n setGameTitle() {\n const lmtGameMetaData: any = this.gameManagerService.getGameInfo(this.Game.gameId);\n if (this.Game && this.Game.name) {\n this.Game.title = this.Game.name;\n } else if (lmtGameMetaData) {\n this.Game.title = lmtGameMetaData.name;\n }\n }\n\n setToCookie(key: any, value: any) {\n this.cookie.put(key, value);\n }\n getFromCookie(key: any): boolean {\n if (this.cookie.get(key) === '1') {\n return true;\n }\n return false;\n }\n GetParam(name: any, url: any) {\n const results = new RegExp('[\\\\?&]' + name + '=([^&#]*)').exec(url);\n if (!results) {\n return 0;\n }\n return results[1] || 0;\n }\n\n /*\n Author : Naresh Tatikonda\n Purpose : preparing recommendation games array based on conditions\n */\n\n getGamesYouMightLikeOnLMT() {\n /*\n condution checks,when recommendationsgames length <6 ,then merging recommendation games and gamesyoumightlike games object\n */\n if (this.recommendationGames.length < 6 || this.recommendationGames.length == 0) {\n const disabledGames: any = this.casinoLobbyService.getDisabledGames();\n const gamesYouMightLikeDataSet = this.casinoLobbyService.getCategoryInfo(this.lobbyType, 'LMC_GYML');\n if (gamesYouMightLikeDataSet && gamesYouMightLikeDataSet.categoryInfo && gamesYouMightLikeDataSet.categoryInfo.gamelist.length > 0) {\n const gamesModellist = gamesYouMightLikeDataSet.categoryInfo.gamelist;\n for (let i = 0; i < gamesModellist.length; i++) {\n const gameModelItem: any = gamesModellist[i];\n const filteredGame: any = disabledGames.filter((disabledGame: any) => disabledGame === gameModelItem.game);\n if (!(filteredGame && filteredGame.length > 0)) {\n gameModelItem.icon = '1';\n const gamelobbyModel: GameLobbyModel = this.gameDataManager.setGameLobbyModel(gameModelItem, this.isTouch);\n gamelobbyModel.jackpotvalue = this.getJackpotValueForGame(gamelobbyModel);\n if (this.gamesUMightLikeList.length > 0) {\n if (!this.gamesUMightLikeList.find((game: any) => game.gameId === gamelobbyModel.gameId)) {\n this.gamesUMightLikeList.push(gamelobbyModel);\n }\n } else {\n this.gamesUMightLikeList.push(gamelobbyModel);\n }\n }\n }\n }\n this.assignRecommendationGamesList(this.recommendationGames);\n this.combineData = this.recommendationGamesList.concat(this.gamesUMightLikeList);\n //filter for remove duplicate objects from array object\n this.recommendationGamesList = Array.from(this.combineData.reduce((m: any, t: any) => m.set(t.gameId, t), new Map()).values());\n } else {\n //here recommendation games count >=6\n this.recommendationGamesList = this.assignRecommendationGamesList(this.recommendationGames);\n }\n }\n\n /*\n Author : Naresh Tatikonda\n Purpose : preparing recommendation games array from list of string\n */\n assignRecommendationGamesList(gameslist: string[]) {\n const recommendationGamesData = this.assignGames(gameslist);\n this.recommendationGamesList = [];\n recommendationGamesData.forEach((game: any) => {\n this.recommendationGamesList.push(this.getJackpotValueForGame(game));\n });\n if (this.recommendationGamesList && this.recommendationGamesList.length > 0) {\n this.recommendationGamesList = this.recommendationGamesList.filter((item: any) => {\n return !item.isDataNotAvailable;\n });\n\n return this.recommendationGamesList;\n }\n }\n\n assignRecentlyPlayedGames(gameslist: string[]) {\n const unfinishedGames = this.unfinishedGamesService.getUnfinishedGames();\n if (gameslist && gameslist.length > 0) {\n gameslist = gameslist.filter((a) => unfinishedGames.indexOf(a) === -1);\n }\n const recentandUnfinishedGames = unfinishedGames.concat(gameslist);\n const RecentlyPlayedGameData = this.assignGames(recentandUnfinishedGames);\n this.RecentlyPlayedGamesList = [];\n RecentlyPlayedGameData.forEach((game: any) => {\n this.RecentlyPlayedGamesList.push(this.getJackpotValueForGame(game));\n });\n if (this.RecentlyPlayedGamesList && this.RecentlyPlayedGamesList.length > 0) {\n this.RecentlyPlayedGamesList = this.RecentlyPlayedGamesList.filter((item: any) => {\n return !item.isDataNotAvailable;\n });\n }\n }\n\n assignGamesYouMightLike(gameslist: any[]) {\n const GYMLGameData = this.assignGames(gameslist);\n this.gamesUMightLikeList = [];\n if (GYMLGameData.length > 0) {\n GYMLGameData.forEach((games: any) => {\n if (!this.gamesUMightLikeList.find((game: any) => game.gameId === games.gameId)) {\n this.gamesUMightLikeList.push(this.getJackpotValueForGame(games));\n }\n });\n }\n }\n\n assignGames(gameslist: any): any {\n const gamesData: any = [];\n const defaultGamesModel: any = this.gameDataManager.setDefaultGameIcons(gameslist);\n for (let i = 0; i < defaultGamesModel.length; i++) {\n const gameInfo: any = this.gameManagerService.getGameInfo(defaultGamesModel[i].game);\n if (gameInfo) {\n const gamelobbyModel: GameLobbyModel = this.gameDataManager.setGameLobbyModel(gameInfo, this.isTouch);\n gamelobbyModel.isUnfinished = this.getUnfinishedStatus(gamelobbyModel.gameId);\n gamelobbyModel.jackpotvalue = this.jackpotDataService.getGameJackpotValue(gamelobbyModel.gameId);\n gamesData.push(gamelobbyModel);\n }\n }\n return gamesData;\n }\n\n getUnfinishedStatus(gameId: string): boolean {\n const unfinishedGamesArray: any = this.unfinishedGamesService.getUnfinishedGames();\n return unfinishedGamesArray.indexOf(gameId) != -1;\n }\n\n //Assign Jackpot Stickers to game\n getJackpotValueForGame(game: any) {\n this.jackpotsFeed = this.jackpotService.getJackpotData();\n if (this.jackpotsFeed) {\n for (const key in this.jackpotsFeed) {\n if (this.jackpotsFeed[key].gamesAvailable.indexOf(game.gameId) !== -1) {\n game.jackpotValue = this.jackpotsFeed[key].amount;\n return game;\n }\n }\n }\n return game;\n }\n\n refreshJackpots() {\n this.jackpotsFeed = this.jackpotService.getJackpotData();\n if (this.jackpotsFeed) {\n for (const key in this.jackpotsFeed) {\n this.RecentlyPlayedGamesList.forEach((g: any) => {\n if (this.jackpotsFeed[key].gamesAvailable.indexOf(g.gameId) !== -1) {\n g.jackpotValue = this.jackpotsFeed[key].amount;\n }\n });\n\n this.gamesUMightLikeList.forEach((g: any) => {\n if (this.jackpotsFeed[key].gamesAvailable.indexOf(g.gameId) !== -1) {\n g.jackpotValue = this.jackpotsFeed[key].amount;\n }\n });\n }\n }\n }\n\n handleScreenChange(event: any) {\n this.maximizeFullScreen();\n event.stopImmediatePropagation();\n }\n\n @HostListener('window:message', ['$event']) closeOnRCPUClose(event: any) {\n if (event?.data?.gamechange === 'GAME_CHANGED') {\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.updateGameInfo(event?.data?.gamevariantname);\n this.close(false, false, true, false, false);\n }\n if (event?.data?.type === 'GAME_CHANGED_MINIGAME') {\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.updateGameInfo(event?.data?.data);\n this.close(false, false, true, false, false);\n }\n if ((event.data === 'CASINO_GAME_CLOSED' || event.data === 'CASINO_GAME_EXIT') && !this.rpGameClickedEGV) {\n this.logger.info('[Casino Portal]', '[EGV]', '[Event Handler]', '[CASINO_GAME_CLOSED]', this.get_formatted_timestamp());\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.close(false);\n }\n if (this.gameConfig.enableArcPlayBreakEvent && event.data === 'ARC_CASINO_GAME_CLOSE') {\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.logger.info('Received by Casino_Portal' + 'ARC_CASINO_GAME_CLOSE');\n this.close(false);\n }\n if (event.data === 'PREVIOUS_CASINO_GAME_CLOSED_ACK' && !this.gameclickedfromsearch) {\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.logger.info('Received by Casino_Portal' + 'PREVIOUS_CASINO_GAME_CLOSED_ACK');\n this.close(true, false, false);\n }\n //Portugal game close changes\n if (event.data === 'PREVIOUS_CASINO_GAME_CLOSED_ACK' && this.gameConfig.isGameCloseAckEventEnabled) {\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.logger.info('Received by Casino_Portal' + 'PREVIOUS_CASINO_GAME_CLOSED_ACK');\n if (this.gameclickedfromsearch) {\n this.gameclickedfromsearch = false;\n this.gameClickedProcessing(this.game, this.index, this.section);\n } else if (this.popUpClicked) {\n this.popUpClicked = false;\n this.popUpClickedProcessing();\n }\n }\n if (event.data === 'CASINOGAME_IDLE_LOGGED_OUT') {\n this.logger.info('[Casino Portal]', '[EGV]', '[Event Handler]', '[CASINOGAME_IDLE_LOGGED_OUT]', this.get_formatted_timestamp());\n this.gameCloseAckEventReceived = true;\n this.summaryPopUpIsOpened = false;\n this.close(true, true);\n }\n if (event.data === 'CASINO_GAME_STARTED') {\n this.rpGameClickedEGV = false;\n this.logger.info('Received by Casino_Portal' + 'CASINO_GAME_STARTED');\n if (this.gameConfig.enableGamestartCookie) this.setToCookie('gameInProgress', 1);\n }\n if (this.gameConfig.egvOverlayFlag) {\n if (event.data === 'EGV_SHOW_OVERLAY') {\n this.egvOverlayFlag = true;\n } else if (event.data === 'EGV_REMOVE_OVERLAY') {\n this.egvOverlayFlag = false;\n }\n }\n }\n\n updateGameInfo(gameId: string) {\n const gameMetaData: any = this.casinoLobbyService.getGameMetaData()?.get(gameId);\n if (gameMetaData) {\n const returnUrl: string = this.Game.returnUrl;\n this.Game = this.gameDataManager.setGameLobbyModel(gameMetaData, false);\n this.setGameTitle();\n this.Game.returnUrl = returnUrl;\n this.Game.isFavourite = this.favouriteService.checkForFavouriteGame(this.Game);\n const gameModel: any = {};\n gameModel.game = this.Game;\n gameModel.game.lobbyType = gameModel?.game?.lobbyType ? gameModel.game.lobbyType : this.lobbyType;\n this.casinoCoreGamelaunchService.getDesktopGameLaunchUrl(gameModel, (callbackResponse: any) => {\n setTimeout(() => {\n this.iframeUrl = callbackResponse.iframeUrl;\n });\n });\n }\n }\n\n @HostListener('window:unload', [])\n unloadHandler() {\n this.cookie.remove('gameLaunchedCount');\n this.setToCookie('gameIndexCount', 0);\n this.cookie.remove('gameInProgress');\n }\n\n @HostListener('document:fullscreenchange', ['$event']) fullscreenchangeHandler(event: KeyboardEvent) {\n this.isFullScreen = this.document['webkitIsFullScreen'];\n this.handleScreenChange(event);\n }\n @HostListener('document:webkitfullscreenchange', ['$event']) webkitfullscreenchangeHandler(event: KeyboardEvent) {\n this.isFullScreen = this.document['webkitIsFullScreen'];\n this.handleScreenChange(event);\n }\n @HostListener('document:mozfullscreenchange', ['$event']) mozfullscreenchangeHandler(event: KeyboardEvent) {\n const doc: any = document;\n this.isFullScreen = doc.mozFullScreen;\n this.handleScreenChange(event);\n }\n @HostListener('document:MSFullscreenChange', ['$event']) MSFullscreenChangeHandler(event: KeyboardEvent) {\n this.isFullScreen = this.document['webkitIsFullScreen'];\n this.handleScreenChange(event);\n }\n\n ngDoCheck() {\n this.date = new Date();\n }\n close(\n fromEmbedded: boolean,\n skipRefresh: boolean = false,\n triggerRecentGameCall: boolean = true,\n closeGamePopUp: boolean = true,\n gameExited: boolean = true,\n ) {\n if (!this.summaryPopUpIsOpened) {\n dispatchEvent(new CustomEvent('portal_chat_reconnect'));\n this.windowRef.nativeWindow['gamification_initialized'] = false;\n this.slotRacesService.gameClose(this.category);\n this.emitVideoStatus();\n const freespinsConfig = this.configProviderService.providefreeSpinsClientConfig();\n const mcPage = this.configProviderService.provideMcPageConfig();\n const widgetPosition = this.casinoWidgetService.getWidgetPosition();\n const launchCategory = this.route.snapshot.queryParamMap.get('launchCategory');\n //let nav = this.Navigator;\n this.cookie.remove('PCGameData');\n this.messageQueue.clear({ clearPersistent: true });\n if (fromEmbedded && !this.getFromCookie('gamePopOutWindow')) {\n this.cookie.remove('gameLaunchedCount');\n this.setToCookie('gameIndexCount', 0);\n this.cookie.remove('gameInProgress');\n }\n if (fromEmbedded) {\n this.gameclickedfromsearch = false;\n }\n if (!skipRefresh) {\n this.balanceService.refresh();\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n this.api.get(apiPathsConfig.ping['pgKeepAlive'], null, { withCredentials: true }).subscribe(() => {});\n }\n // As per Zlatko, this should be removed Vanilla 8 onwards.\n if (gameExited) {\n const iframe = document.getElementById('embedGameIframe') as HTMLIFrameElement;\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage('PREVIOUS_CASINO_GAME_CLOSED', '*'); //ask Integration to set cookie to 0 on receipt of this message\n this.logger.info('Sent from Casino_Portal' + 'PREVIOUS_CASINO_GAME_CLOSED');\n this.setToCookie('gameIndexCount', 0);\n }\n }\n const isWidget = this.route.snapshot.queryParamMap.get('widgetGameLaunch');\n if (this.gameConfig.isGameCloseApiEnabled) {\n this.casinoCoreGamelaunchService\n .closeGame(this.Game.gameId)\n .pipe(takeUntil(this.unsubscribe))\n .subscribe(\n (response: any) => {\n if (response) {\n this.gameCloseAction(closeGamePopUp);\n }\n },\n () => {\n this.gameCloseAction(closeGamePopUp);\n },\n );\n } else if (this.gameConfig.isGameCloseAckEventEnabled && !this.gameCloseAckEventReceived && this.gameLaunchSuccess) {\n this.summaryPopUpIsOpened = true;\n return;\n } else {\n setTimeout(() => {\n this.gameCloseAction(closeGamePopUp);\n }, this.gameConfig.gameCloseDelay);\n }\n\n if (isWidget) {\n this.tracking.triggerEvent('Event.Clicks', {\n 'component.CategoryEvent': widgetPosition ? 'X-Sell Casino ' + widgetPosition : 'X-Sell - Sports Widget',\n 'component.LabelEvent': widgetPosition ? 'X-Sell Casino ' + widgetPosition + '|' + launchCategory : 'X-Sell - Sports Widget',\n 'component.ActionEvent': 'Game Exit',\n 'component.LocationEvent': widgetPosition ? 'X-Sell Casino ' + widgetPosition : 'X-Sell Widget',\n 'component.EventDetails': widgetPosition\n ? 'User closes the casino game and is taken back to sports lobby'\n : 'User exits the game and is returned back to sports page',\n 'component.URLClicked': mcPage.invokerProductHomePage.url,\n });\n }\n if (!this.isGameCloseTracked) {\n this.tracking.triggerEvent('gameClose', {\n 'component.gameName': this.Game.gameId,\n 'component.gameType': this.getGameLunchType(this.Game.gameId),\n 'component.gameDisplayName': this.gameManagerService.getGameDisplayName(this.Game.gameId),\n });\n this.isGameCloseTracked = true;\n }\n\n //To update unfinished game stickers.\n if (!skipRefresh) {\n this.unfinishedGamesService.setUnfinishedGames();\n if (triggerRecentGameCall) {\n this.recentGameService.setRecentGames();\n }\n }\n if (freespinsConfig.isFreeSpinSummaryEnabled) {\n this.freespinSummaryService.setFreespinsummary();\n }\n if (this.gameConfig.enableRefreshonGameClose) {\n this.casinoCoreGamelaunchService.playerPlayBreakStatus();\n }\n }\n }\n\n emitVideoStatus() {\n if (!this.getFromCookie('gamePopOutWindow')) this.casinoCoreGamelaunchService?.stopAudio();\n }\n\n gameCloseAction(closeGamePopUp: boolean) {\n const globalJackpotClientConfig = this.configProviderService.provideGlobalJackpotConfig();\n document.body.classList.remove('embed-hide-scroll');\n if (closeGamePopUp) this.sendDataToEmbeddedGamePopUp.emit(this.Game);\n if (this.location.path().indexOf('forcedEmbeddedLaunch') > -1) {\n if (this.casinoManager?.getProductForLobbyType(this.lobbyType)?.toLowerCase() == 'globaljackpot') {\n this.navigationService.goTo('/' + this.m2Page.lang + '/g/' + globalJackpotClientConfig?.globalJackpotPathSegments?.toLowerCase());\n } else {\n this.navigationService.goTo('/' + this.m2Page.lang + '/' + this.casinoManager?.getProductForLobbyType(this.lobbyType)?.toLowerCase());\n }\n }\n }\n\n isCasinoDomain(gameHomeUrl: string): boolean {\n if (!gameHomeUrl) {\n //gameHomeUrl is not set in casino domain\n return true;\n }\n if (gameHomeUrl && gameHomeUrl != '' && gameHomeUrl.indexOf(this.productHomepagesConfig.casino) === 0) {\n return true;\n }\n return false;\n }\n\n urlParser(href: any) {\n const l = document.createElement('a');\n l.href = href;\n return l;\n }\n\n addFavourate(game: any, $event: any) {\n if (this.user.isAuthenticated) {\n $event.stopImmediatePropagation();\n this.favouriteService.toggleGameFavourite(game, false, true);\n } else {\n this.loginDialogService.open({ loginMessageKey: 'Favourite' });\n }\n if (this.Game.isFavourite) {\n this.tracking.triggerEvent('GameInteraction', {\n 'component.Game.interaction': 'Remove_Game_Favorites_EGV',\n });\n } else {\n this.tracking.triggerEvent('GameInteraction', {\n 'component.Game.interaction': 'Add_Game_Favorites_EGV',\n });\n }\n }\n\n openNav() {\n this.isIframeVisible = true;\n this.isGreaterthan = true;\n document.getElementById('mySidenav')!.style.width = '100%';\n document.getElementById('mySidenav')!.style.position = 'fixed';\n }\n closeNav() {\n this.isIframeVisible = false;\n this.isGreaterthan = false;\n document.getElementById('mySidenav')!.style.width = '100%';\n document.getElementById('mySidenav')!.style.position = 'inherit';\n }\n fullScreen() {\n if (this.checkFullScreen()) {\n this.adjustGamesPanel();\n this.requestFullScreen();\n } else {\n this.minimizeFullScreen();\n }\n }\n\n minimizeFullScreen() {\n this.isIframeVisible = false;\n document.getElementById('mySidenav')!.style.width = '100%';\n document.getElementById('mySidenav')!.style.position = 'inherit';\n this.isFullScreen = false;\n if (this.document.cancelFullScreen) {\n this.document.cancelFullScreen();\n } else if (this.document.mozCancelFullScreen) {\n this.document.mozCancelFullScreen();\n } else if (this.document.webkitCancelFullScreen) {\n this.document.webkitCancelFullScreen();\n } else if (this.document.msExitFullscreen) {\n this.document.msExitFullscreen();\n }\n }\n\n adjustGamesPanel() {\n document.getElementById('mySidenav')!.style.width = '100%';\n document.getElementById('mySidenav')!.style.position = 'fixed';\n this.isIframeVisible = true;\n this.isFullScreen = true;\n if (this.isFullScreen) {\n this.isGreaterthan = false;\n }\n }\n\n checkFullScreen(): boolean {\n return (\n (this.document.fullScreenElement !== undefined && this.document.fullScreenElement === null) ||\n (this.document.msFullscreenElement !== undefined && this.document.msFullscreenElement === null) ||\n (this.document.mozFullScreen !== undefined && !this.document.mozFullScreen) ||\n (this.document.webkitIsFullScreen !== undefined && !this.document.webkitIsFullScreen)\n );\n }\n\n requestFullScreen() {\n if (this.document.body.requestFullScreen) {\n this.document.body.requestFullScreen();\n } else if (this.document.body.mozRequestFullScreen) {\n this.document.body.mozRequestFullScreen();\n } else if (this.document.body.webkitRequestFullScreen) {\n this.document.querySelector('body').webkitRequestFullScreen();\n } else if (this.document.body.msRequestFullscreen) {\n this.document.body.msRequestFullscreen();\n }\n }\n\n toggleFullWindowScreen() {\n if (!this.document['webkitIsFullScreen']) {\n this.allowFullScreen();\n } else {\n this.cancelFullScreen();\n }\n }\n\n allowFullScreen() {\n const doc: any = document;\n if (this.document.body.requestFullScreen) {\n this.document.body.requestFullScreen();\n } else if (doc.body.mozRequestFullScreen) {\n const docElm: any = document.documentElement;\n docElm.mozRequestFullScreen();\n } else if (this.document.body.webkitRequestFullScreen) {\n this.document.querySelector('body').webkitRequestFullScreen();\n } else if (this.document.body.msRequestFullscreen) {\n this.document.body.msRequestFullscreen();\n }\n }\n cancelFullScreen() {\n if (this.document.cancelFullScreen) {\n this.document.cancelFullScreen();\n } else if (this.document.mozCancelFullScreen) {\n this.document.mozCancelFullScreen();\n } else if (this.document.webkitCancelFullScreen) {\n this.document.webkitCancelFullScreen();\n } else if (this.document.msExitFullscreen) {\n this.document.msExitFullscreen();\n }\n }\n\n toggleFullScreen(event: any) {\n if (!this.summaryPopUpIsOpened) {\n this.tracking.triggerEvent('GameInteraction', {\n 'component.Game.interaction': 'EGV_PlayGame_FullScreen',\n });\n document.getElementsByClassName('embed-left-section')[0].setAttribute('style', 'width:100%');\n if (\n (this.document.fullScreenElement !== undefined && this.document.fullScreenElement === null) ||\n (this.document.msFullscreenElement !== undefined && this.document.msFullscreenElement === null) ||\n (this.document.mozFullScreen !== undefined && !this.document.mozFullScreen) ||\n (this.document.webkitIsFullScreen !== undefined && !this.document.webkitIsFullScreen)\n ) {\n this.iconShrinkClickedFirst = false;\n if (this.document.body.requestFullScreen) {\n this.document.body.requestFullScreen();\n } else if (this.document.body.mozRequestFullScreen) {\n this.document.body.mozRequestFullScreen();\n } else if (this.document.body.webkitRequestFullScreen) {\n this.document.querySelector('body').webkitRequestFullScreen();\n } else if (this.document.body.msRequestFullscreen) {\n this.document.body.msRequestFullscreen();\n }\n this.maximizeFullScreen();\n } else {\n if (event.target.className === 'icon-shrink') {\n this.iconShrinkClickedFirst = true;\n }\n\n if (this.document.cancelFullScreen) {\n this.document.cancelFullScreen();\n } else if (this.document.mozCancelFullScreen) {\n this.document.mozCancelFullScreen();\n } else if (this.document.webkitCancelFullScreen) {\n this.document.webkitCancelFullScreen();\n } else if (this.document.msExitFullscreen) {\n this.document.msExitFullscreen();\n }\n this.maximizeFullScreen();\n }\n }\n }\n\n maximizeFullScreen() {\n setTimeout(() => {\n if (document.getElementById('casinoEmbeddedModal')) {\n document.getElementById('casinoEmbeddedModal')!.style.height = window.screen.height + 'px';\n }\n }, 200);\n }\n\n toggleExtrasColumn() {\n this.extrasColumnFlag = !this.extrasColumnFlag;\n document.getElementsByClassName('embed-left-section')[0].setAttribute('style', 'width:100%');\n }\n\n getGameLunchType(gameId: any) {\n const gameInfo: any = this.gameManagerService.getGameInfo(gameId);\n if (gameInfo) {\n return gameInfo.provider;\n }\n return null;\n }\n\n gameClickedOnSearch(game: any, index: number, section: string) {\n if (section == 'recentgames' || section == 'Search' || section == 'GYML') {\n this.rpGameClickedEGV = true;\n }\n this.gameclickedfromsearch = true;\n const iframe = document.getElementById('embedGameIframe') as HTMLIFrameElement;\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage('PREVIOUS_CASINO_GAME_CLOSED', '*');\n this.logger.info('Sent from Casino_Portal on gameClickedOnSearch' + 'PREVIOUS_CASINO_GAME_CLOSED');\n }\n if (!this.gameConfig.isGameCloseAckEventEnabled || !this.gameLaunchSuccess) {\n this.gameClickedProcessing(game, index, section);\n } else {\n this.game = game;\n this.index = index;\n this.section = section;\n this.summaryPopUpIsOpened = true;\n }\n }\n\n gameClickedProcessing(game: any, index: number, section: string) {\n const Global = this.configProviderService.provideGlobalConfig();\n const features = this.configProviderService.provideFeaturesConfig();\n this.gameCloseAckEventReceived = false;\n this.recommendationFeed(game.gameId);\n if (this.getFromCookie('gamePopOutWindow')) {\n const returnUrl: string = this.Game.returnUrl;\n this.Game = game;\n this.Game.returnUrl = returnUrl;\n\n this.gameLaunchSuccess = false;\n if (!this.iconsNewPosition) {\n const message = Global.messages['OnlyOneGameAtTime'];\n if (message) {\n this.messageQueue.addError(message, MessageLifetime.Single, 'embeddedGameError');\n }\n }\n return;\n }\n\n this.messageQueue.clear();\n if (index || section) {\n let gridPos = 1;\n if (this.RecentlyPlayedGamesList && this.RecentlyPlayedGamesList.length > 0) {\n gridPos = 2;\n }\n if (game.GamePosition >= 0) {\n index = game.GamePosition;\n }\n const isSearch: boolean = section == 'Search';\n const lobbyData: any = this.casinoLobbyService.getLobbyBasedOnLobbyType(this.lobbyType);\n const gameTrackingObj: any = {\n name: game.gameId,\n type: game.provider || this.getGameLunchType(game.gameId),\n position: index + 1,\n section: 'egv_' + section,\n gridPosition: (isSearch ? gridPos : 1) + ':' + (index + 1),\n location: `${game?.gameContainer ? game?.gameContainer : 'Page Container'}`,\n displayName: !isSearch && game.name ? game.name : this.gameManagerService.getGameDisplayName(game.gameId),\n lobbyName: lobbyData?.lbyTempName ? lobbyData?.lbyTempName : null,\n lobbySource: lobbyData?.lbyTargetType ? lobbyData?.lbyTargetType : null,\n optimoveSegment: lobbyData?.optSegName ? lobbyData?.optSegName : null,\n };\n this.gameLaunchTrackingService.track(gameTrackingObj);\n const gridPosToBePass = section == this.recentGames ? 1 : gridPos;\n game.iconType = 1; // for advance game data model\n this.advanceGameDataService.gameClickedFromSearchAdvanceGameDataModel(game, section, gridPosToBePass, index);\n const gamemodel = new GameLaunch();\n game.lobbyType = game.lobbyType ? game.lobbyType : this.lobbyType;\n gamemodel.game = game;\n gamemodel.isTouch = this.isTouch;\n gamemodel.gamePosition = index;\n gamemodel.gameSection = section;\n gamemodel.clickTimeStamp = this.casinoCoreGamelaunchService.currentTimeStamp();\n //check whether game is present in gamedatamap\n this.messageQueue.clear();\n if (!this.casinoCoreGamelaunchService.checkGameInGameMetaData(gamemodel.game.gameId) && this.user.isAuthenticated) {\n this.casinoCoreGamelaunchService.gameNotFoundAction(gamemodel);\n }\n // check for disabled game\n const disabledGames: Array<string> = this.casinoLobbyService.getDisabledGames();\n if (disabledGames) {\n disabledGames.forEach((element) => {\n if (element?.toLowerCase() == gamemodel?.game?.gameId?.toLowerCase() && this.user.isAuthenticated) {\n this.casinoCoreGamelaunchService.gameNotFoundAction(gamemodel);\n }\n });\n }\n this.casinoCoreGamelaunchService.getDesktopGameLaunchUrl(gamemodel, (callbackResponse: any) => {\n setTimeout(() => {\n this.gameclickedfromsearch = true;\n this.iframeUrl = callbackResponse.iframeUrl;\n if (!features.useSingleCookieForGameIndexCountInEGV) {\n this.setToCookie('gameLaunchedCount', '1');\n }\n this.casinoCoreGamelaunchService.storeUserInfo(gameTrackingObj?.displayName);\n const returnUrl: string = this.Game.returnUrl;\n this.Game = game;\n this.Game.returnUrl = returnUrl;\n\n this.setGameTitle();\n this.gameLaunchSuccess = true;\n this.recentGameService.setRecentGames();\n }, 400);\n });\n }\n }\n\n openDialog(): void {\n const dialogRef = this.dialog.open(CashierIframeComponent, {\n width: '790px',\n data: { name: 'cashier' },\n panelClass: 'casino-lobby-container-main',\n });\n const instance = dialogRef.componentInstance;\n instance.isQDAllowed = this.isQDAllowed;\n\n dialogRef.afterClosed().subscribe(() => {});\n }\n\n public openRequestedPopup() {\n if (!this.summaryPopUpIsOpened) {\n const features = this.configProviderService.provideFeaturesConfig();\n this.tracking.triggerEvent('GameInteraction', {\n 'component.Game.interaction': 'EGV_PlayGame_NewWindow',\n });\n\n const dialogRef = this.dialog.open(GamePopoutComponent, {\n width: '386px',\n data: { name: 'popOut' },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result === 'continue') {\n //emit event to start schedule polling in bingo\n this.stopSchedulePollingInBingo(true, false);\n if (!features.useSingleCookieForGameIndexCountInEGV) {\n this.setToCookie('gameLaunchedCount', '1');\n } else {\n this.setToCookie('gameIndexCount', 0);\n const iframe = document.getElementById('embedGameIframe') as HTMLIFrameElement;\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage('PREVIOUS_CASINO_GAME_CLOSED', '*');\n this.logger.info('Sent from Casino_Portal on openRequestedPopup' + 'PREVIOUS_CASINO_GAME_CLOSED');\n }\n }\n if (this.gameConfig.isGameCloseAckEventEnabled) {\n this.popUpClicked = true;\n this.summaryPopUpIsOpened = true;\n } else {\n this.popUpClickedProcessing();\n }\n }\n });\n }\n }\n\n popUpClickedProcessing() {\n const windowOptions: any = 'resizable=no,toolbar=no,scrollbars=no,width=' + this.embededPopUpWidth + ',height=' + this.embededPopUpHeight;\n const gamePopOutWindow: any = window.open(this.iframeUrl, 'GameWindow', windowOptions);\n\n if (!gamePopOutWindow.closed) this.setToCookie('gamePopOutWindow', '1');\n\n this.close(true);\n const checkPopOutWindowOpenInterval = setInterval(() => {\n if (gamePopOutWindow.closed) {\n this.cookie.remove('gameLaunchedCount');\n this.cookie.remove('gamePopOutWindow');\n this.emitVideoStatus();\n this.setToCookie('gameIndexCount', 0);\n this.cookie.remove('gameInProgress');\n clearInterval(checkPopOutWindowOpenInterval);\n }\n }, this.gameConfig.gameCloseDelay);\n }\n\n ngOnDestroy() {\n if (this.recentObs) {\n this.recentObs.unsubscribe();\n }\n this.unsubscribe.next(true);\n this.unsubscribe.complete();\n }\n embeddedGameOverlayTopAllignment() {\n if (document.querySelector('.content-messages-header-top .content-message-container')) {\n const contentMessageElement: HTMLElement =\n document.querySelector('.content-messages-header-top .content-message-container') || new HTMLElement();\n const egv_overlay: HTMLElement = document.querySelector('.game-container') || new HTMLElement();\n egv_overlay.style.top = contentMessageElement.clientHeight + 'px';\n }\n }\n\n private get_formatted_timestamp() {\n const dateNow = new Date();\n let datetime = dateNow.toString();\n datetime = datetime.substring(0, datetime.indexOf(' GMT')) + '.' + dateNow.getMilliseconds();\n return datetime;\n }\n\n stopSchedulePollingInBingo(fromEmbedded: boolean, flag: boolean) {\n if (fromEmbedded && !this.gameCloseAckEventReceived) {\n //for Iframe\n if (this.cozyBingoIframe && this.cozyBingoIframe.contentWindow) {\n this.cozyBingoIframe.contentWindow.postMessage({ stopSchedulePolling: flag }, this.productHomepagesConfig.bingo);\n }\n if (this.invokerProductService?.getInvokerProduct()?.toLowerCase() == 'casino') {\n if (this.cozyBingoIframe) (window as any).Disable_SchedulePolling = flag;\n else (window as any).Disable_SchedulePolling = true;\n } else {\n (window as any).Disable_SchedulePolling = flag;\n }\n }\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nimport { Logger } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TeaserService {\n private readonly _headerTeasers = signal<any | undefined>(undefined);\n readonly headerTeasers = this._headerTeasers.asReadonly();\n public mercuryBgImage: any;\n\n teaserDataPublisher = new BehaviorSubject<any>(null);\n teaserDataObservable: Observable<any> = this.teaserDataPublisher.asObservable();\n optMiniTeasersMap: Map<string, any> = new Map<string, any>();\n private optMiniTeasersMapPublisher = new BehaviorSubject<boolean>(false);\n optMiniTeasersMapObservable: Observable<boolean> = this.optMiniTeasersMapPublisher.asObservable();\n teaserMutedSubject = new BehaviorSubject<any>(null);\n teaserMutedObservable: Observable<any> = this.teaserMutedSubject.asObservable();\n indexChangedSubject = new BehaviorSubject<any>(null);\n indexChangedObservable: Observable<any> = this.indexChangedSubject.asObservable();\n indexChangedDataSubject = new BehaviorSubject<any>(null);\n indexChangedDataObservable: Observable<any> = this.indexChangedDataSubject.asObservable();\n\n constructor(\n private api: PlatformApiService,\n private configProviderService: ConfigProviderService,\n private logger: Logger,\n ) {}\n\n setIndex(value: any) {\n this.indexChangedSubject.next(value);\n }\n\n muteVideo(identifier: string, index: number, value: boolean) {\n this.teaserMutedSubject.next({\n identifierClass: identifier,\n realIndex: index,\n isMuted: value,\n });\n }\n\n muteAllVideos() {\n this.teaserMutedSubject.next({ muteAllVideos: true });\n }\n\n setTeasers() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.teasers['teasersData'], {}, { withCredentials: true }).subscribe(\n (response) => {\n this._headerTeasers.set(response);\n this.teaserDataPublisher.next(response);\n },\n (error) => {\n this.logger.error('Unable to retrieve data from teasers API: ' + error);\n },\n );\n }\n\n getTeaserData() {\n return this.headerTeasers;\n }\n\n indexChangeTeaserData(teaserData: any) {\n this.indexChangedDataSubject.next(teaserData);\n }\n\n fetchOptMiniTeasers(optMiniTeaserPaths: Array<string>) {\n if (optMiniTeaserPaths && optMiniTeaserPaths.length) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.post(apiPathsConfig.teasers['optMiniTeasersData'], optMiniTeaserPaths, { withCredentials: true }).subscribe(\n (response: IOptMiniTeasersResponse) => {\n if (this.optMiniTeasersMap && this.optMiniTeasersMap.size > 0) {\n this.optMiniTeasersMap.clear();\n }\n response.teasers.forEach((item) => {\n this.optMiniTeasersMap.set(item.path, item.contents);\n });\n this.mercuryBgImage = response.mercuryBgImage;\n this.optMiniTeasersMapPublisher.next(true);\n },\n (error) => {\n this.logger.error('Unable to retrieve data from optMiniTeaser API: ' + error);\n },\n );\n }\n }\n\n getOptMiniTeasers(path: string) {\n return this.optMiniTeasersMap.get(path);\n }\n}\n\nclass OptMiniTeasersResponse {\n path: string;\n contents: any;\n}\n\ninterface IOptMiniTeasersResponse {\n teasers: Array<OptMiniTeasersResponse>;\n mercuryBgImage: any;\n}\n","<div class=\"casino-lobby-container-main\">\n <div class=\"casino-egv-modal-popup\">\n <div id=\"casinoEmbeddedModal\" class=\"casino-modal\">\n <div class=\"modal-content\">\n <div *ngIf=\"gameData\">\n <cc-embedded-game-view\n [gameEmbedPop]=\"gameData\"\n [errorMessageQueue]=\"gameData.errorMessageQueue\"\n [lobbyType]=\"gameData.game.lobbyType\"\n (sendDataToEmbeddedGamePopUp)=\"eventFromEmbeddedGameView($event)\"\n (sendDialogCloseEventToEmbeddedGamePopUp)=\"dialogCloseEventFromEmbeddedGameView($event)\" />\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { MessageLifetime, MessageQueueService, NavigationService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { EmbeddedGameViewComponent } from '../embedded-game-view/embedded-game-view.component';\nimport { CasinoCoreGamelaunchService } from '../shared/gamelaunch.service';\nimport { CasinoCoreGameLaunchFactoryService } from '../shared/gamelaunchfactory.service';\nimport { TeaserService } from '../shared/teaser.service';\n\n@Component({\n selector: 'cc-embedded-game-popup',\n templateUrl: './embedded-game-popup.component.html',\n standalone: true,\n imports: [NgIf, EmbeddedGameViewComponent],\n})\nexport class EmbeddedGamePopupComponent implements OnInit {\n constructor(\n private teaserService: TeaserService,\n private messageQueue: MessageQueueService,\n private navigationService: NavigationService,\n @Inject(MAT_DIALOG_DATA) public gameData: any,\n private gameLaunchService: CasinoCoreGamelaunchService,\n public dialogRef: MatDialogRef<EmbeddedGamePopupComponent>,\n private gameLaunchFactoryService: CasinoCoreGameLaunchFactoryService,\n private configProviderService: ConfigProviderService,\n ) {\n this.gameLaunchFactoryService.setGameLaunchService(this.gameLaunchService);\n this.dialogRef.disableClose = true;\n }\n\n ngOnInit(): void {\n this.teaserService.muteAllVideos();\n }\n dialogCloseEventFromEmbeddedGameView(data: any): void {\n const Global = this.configProviderService.provideGlobalConfig();\n const features = this.configProviderService.provideFeaturesConfig();\n const message = Global.messages['OnlyOneGameAtTime'];\n this.dialogRef.close();\n this.messageQueue.clear();\n setTimeout(() => {\n this.messageQueue.addError(message, MessageLifetime.Single, 'casinocorelobby');\n window.scrollTo(0, 0);\n setTimeout(() => {\n this.messageQueue.clear();\n if (\n window.location.href.includes('games/launchng') ||\n window.location.href.includes('slots/launchng') ||\n window.location.href.includes('livecasino/launchng')\n ) {\n this.navigationService.goTo(data.returnUrl);\n }\n this.gameLaunchService?.stopAudio();\n }, features.singleGameErrorTimeout);\n }, features.scrollTopTimeout);\n this.gameLaunchService.messageQueuePublisher.next({\n showMessageInBingo: true,\n message: Global.messages['OnlyOneGameAtTime'],\n });\n }\n eventFromEmbeddedGameView(data: any): void {\n const returnUrl =\n new URLSearchParams(window.location.search).get('returnUrl') || new URLSearchParams(window.location.search).get('returnurl');\n if (returnUrl) {\n this.dialogRef.close();\n this.navigationService.goTo(returnUrl);\n } else if (\n window.location.href.includes('games/launchng') ||\n window.location.href.includes('slots/launchng') ||\n window.location.href.includes('livecasino/launchng')\n ) {\n this.messageQueue.clear();\n this.dialogRef.close();\n this.navigationService.goTo(data.returnUrl);\n } else this.dialogRef.close();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\n\n// declare var angular: angular.IAngularStatic;\n\n@Component({\n selector: 'cc-global-translate',\n template: '{{value}}',\n standalone: true,\n})\nexport class GlobalTranslateComponent implements OnInit {\n @Input() key: string;\n value: string;\n global: any;\n\n constructor(private configProviderService: ConfigProviderService) {}\n\n ngOnInit() {\n this.configProviderService.casinoClientConfigObservable.subscribe((isClientConfigLoaded) => {\n if (isClientConfigLoaded) {\n this.global = this.configProviderService.provideGlobalConfig();\n if (this.global.messages[this.key]) {\n this.value = this.global.messages[this.key];\n }\n }\n });\n }\n}\n","<div *ngIf=\"isVisible\">\n <div class=\"casino-page-nav\" ms-feedback=\"after\" [ngStyle]=\"{ 'background-color': '#1a1a1a' }\">\n <div class=\"left-nav\">\n <a class=\"icon\" (click)=\"goBack()\">\n <i class=\"theme-left\"></i>\n </a>\n </div>\n <a ms-marquee [hidden]=\"error\" (click)=\"goBack()\">\n <cc-global-translate [key]=\"title\"></cc-global-translate>\n </a>\n <div class=\"clear\"></div>\n </div>\n</div>\n","import { NgIf, NgStyle } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { NativeAppService, NavigationService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { GlobalTranslateComponent } from '../directives/globaltranslate/globaltranslate.component';\n\n@Component({\n selector: 'cc-header-box',\n templateUrl: 'header-box.component.html',\n standalone: true,\n imports: [NgIf, NgStyle, GlobalTranslateComponent],\n})\nexport class HeaderBoxComponent implements OnInit {\n @Input() showInNative?: boolean;\n @Input() title: string;\n @Output() navigateTo: EventEmitter<any> = new EventEmitter();\n isVisible: boolean;\n isNavigation: boolean;\n feature: boolean;\n error: boolean;\n goBackURL: string | null;\n constructor(\n private nativeApplication: NativeAppService,\n private navigation: NavigationService,\n private configProviderService: ConfigProviderService,\n ) {}\n\n ngOnInit() {\n const mcPage = this.configProviderService.provideMcPageConfig();\n this.isVisible = this.showInNative === true || !this.nativeApplication.isNative;\n\n this.isNavigation = false;\n if (this.navigateTo && this.navigateTo.observers && this.navigateTo.observers.length > 0) {\n this.isNavigation = true;\n }\n this.goBackURL = this.navigation.location.search.get('gobackUrl');\n if (!this.goBackURL || this.goBackURL === '') {\n this.goBackURL = mcPage.prefix;\n }\n }\n\n goBack() {\n this.navigateTo.emit();\n return;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameLaunchPlaces {\n gameIconOnLobby: string;\n gameTitleOnLobby: string;\n gameInfoIconOnLobby: string;\n demoPlayPage: string;\n playNowOnDetailPage: number;\n playNowOnDetailPageAfterScreenshots: number;\n playRedirectCtrl: string;\n unfinGamePage: string;\n searchOnLobby: string;\n teaser: string;\n activeFreeSpin: string;\n constructor() {\n this.gameIconOnLobby = 'p';\n this.gameTitleOnLobby = 'l';\n this.gameInfoIconOnLobby = 'i';\n this.demoPlayPage = 'demoPlay';\n this.playNowOnDetailPage = 1;\n this.playNowOnDetailPageAfterScreenshots = 3;\n this.playRedirectCtrl = 'playRedirectCtrl';\n this.unfinGamePage = 'unfinGamePage';\n this.searchOnLobby = 'searchOnLobby';\n this.teaser = 'Teaser';\n this.activeFreeSpin = 'activeFreeSpin';\n }\n\n isLobby(place: string) {\n return (\n !place ||\n place === this.gameIconOnLobby ||\n place === this.gameTitleOnLobby ||\n place === this.gameInfoIconOnLobby ||\n place === this.searchOnLobby ||\n place === this.teaser\n );\n }\n}\n","<button *ngIf=\"!isInhouseGame && twoButtons\" class=\"btn {{ cssClass }}\" (click)=\"goToPlayGame(false)\">\n <cc-global-translate [key]=\"'ButtonPlayForReal'\"></cc-global-translate>\n</button>\n<button *ngIf=\"!isInhouseGame && twoButtons\" class=\"btn {{ cssClass }} playforfun\" (click)=\"goToPlayGame(true)\">\n <cc-global-translate [key]=\"'ButtonPlayForFun'\"></cc-global-translate>\n</button>\n<button *ngIf=\"isInhouseGame && twoButtons\" class=\"btn {{ cssClass }}\" (click)=\"goToPlayGame(false)\">\n <cc-global-translate [key]=\"'ButtonPlayNow'\"></cc-global-translate>\n</button>\n<button *ngIf=\"!twoButtons\" class=\"btn {{ cssClass }}\" (click)=\"goToPlayGame(false)\">\n <cc-global-translate [key]=\"'ButtonPlayNow'\"></cc-global-translate>\n</button>\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { GlobalTranslateComponent } from '../../directives/globaltranslate/globaltranslate.component';\nimport { CasinoManager } from '../../shared/casino-manager.service';\nimport { GameLaunchPlaces } from '../../shared/game-launch-places.service';\nimport { CasinoCoreGameLaunchFactoryService } from '../../shared/gamelaunchfactory.service';\nimport { GameLaunch } from '../../shared/models/gamelaunch.model';\n\n@Component({\n selector: 'cc-game-detail-buttons',\n templateUrl: 'game-detail-buttons.component.html',\n standalone: true,\n imports: [NgIf, GlobalTranslateComponent],\n})\nexport class GameDetailButtonsComponent implements OnInit {\n @Input() game: any;\n @Input() launchType: string;\n @Input() place: any;\n @Input() cssClass: any;\n twoButtons: any;\n isInhouseGame: any;\n constructor(\n private gameLaunchService: CasinoCoreGameLaunchFactoryService,\n private configProviderService: ConfigProviderService,\n private casinoManager: CasinoManager,\n private gameLaunchPlaces: GameLaunchPlaces,\n ) {}\n ngOnInit() {\n const clientSideConfig = this.configProviderService.provideClientSideConfig();\n this.twoButtons = clientSideConfig.playForFunAndRealButtons;\n this.isInhouseGame = this.launchType === 'inhouse';\n }\n goToPlayGame(mode: boolean) {\n const gameModel = new GameLaunch();\n gameModel.game = this.game;\n gameModel.isTouch = this.casinoManager.isTouch();\n gameModel.lobbyType = this.game.lobbyType;\n gameModel.gamePosition = 0;\n gameModel.categoryType = this.game.categoryType;\n gameModel.from = this.gameLaunchPlaces.playNowOnDetailPage.toLocaleString();\n gameModel.replaceRouteInHistory = false;\n gameModel.isDemoLaunch = mode;\n gameModel.skipUnfinGame = false;\n gameModel.gameLaunchedFrom = '';\n gameModel.gameSection = this.game.gameSection;\n gameModel.gameContainer = 'PageContainer';\n gameModel.returnUrl = window.location.href;\n const gameLaunchService: any = this.gameLaunchService.getGameLaunchService();\n gameModel.clickTimeStamp = gameLaunchService.currentTimeStamp();\n gameLaunchService.launchGame(gameModel);\n }\n}\n","<span id=\"gameDetailPage\" class=\"gameDetailPage\">\n <cc-header-box [title]=\"'DetailPageHeader'\" [showInNative]=\"true\" (navigateTo)=\"closeGameDetailDialog()\"></cc-header-box>\n <vn-message-panel></vn-message-panel>\n <div class=\"casino-game-detail casino-lobby-games\" [hidden]=\"!model\">\n <div class=\"casino-game-detail-header\">\n <div class=\"game casino-game-detail-header1\">\n <a href=\"javascript:void(0)\" class=\"game-image-link\">\n <img class=\"game-icon\" [src]=\"model.icon.src\" [alt]=\"model.icon.alt\" [width]=\"model.icon.width\" [height]=\"model.icon.height\" />\n </a>\n <div class=\"game-badge\" *ngIf=\"useFavouriteGames\" [ngClass]=\"isFavouriteGame(model) ? favouriteStyle : unFavouriteStyle\">\n <span (click)=\"toggleFavourite(model, $event)\"></span>\n </div>\n </div>\n <div class=\"casino-game-detail-header2\" *ngIf=\"gameInfo\">\n <h1>{{ gameInfo.game.game.name }}</h1>\n </div>\n </div>\n <cc-game-detail-buttons\n *ngIf=\"model\"\n [game]=\"model\"\n [cssClass]=\"'small-device'\"\n [place]=\"1\"\n [launchType]=\"model.provider\"></cc-game-detail-buttons>\n <a *ngIf=\"model && model.responsibleGamingLink\" [href]=\"model.responsibleGamingLink.url\">{{ model.responsibleGamingLink.linkText }}</a>\n\n <div class=\"game-detail-info\" *ngIf=\"model && model.info && model.info !== ''\" [innerHTML]=\"model.info | trustAsHtml\"></div>\n\n <div class=\"game-detail-disclaimer\" *ngIf=\"model && model.disclaimer && model.disclaimer !== ''\">\n <p>{{ model.disclaimer }}</p>\n </div>\n <div class=\"game-preview\" *ngIf=\"model && model.screenshots && model.screenshots.length > 0\">\n <h3>\n <cc-global-translate [key]=\"'PreviewTitle'\"></cc-global-translate>\n </h3>\n </div>\n <button class=\"btn\" *ngIf=\"!twoButtons\">\n <cc-global-translate [key]=\"'ButtonPlayNow'\"></cc-global-translate>\n </button>\n </div>\n</span>\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { DeviceService, NavigationService, UserService } from '@frontend/vanilla/core';\nimport { MessagePanelComponent } from '@frontend/vanilla/features/message-panel';\nimport { TrustAsHtmlPipe } from '@frontend/vanilla/shared/browser';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { GlobalTranslateComponent } from '../directives/globaltranslate/globaltranslate.component';\nimport { HeaderBoxComponent } from '../header-box/header-box.component';\nimport { FavouriteService } from '../shared/favourite.service';\nimport { GameDataManager } from '../shared/game-data-manager.service';\nimport { CasinoCoreGamelaunchService } from '../shared/gamelaunch.service';\nimport { CasinoCoreGameLaunchFactoryService } from '../shared/gamelaunchfactory.service';\nimport { GameDetailButtonsComponent } from './game-detail-buttons/game-detail-buttons.component';\n\n@Component({\n selector: 'cc-game-detail',\n templateUrl: 'game-detail.component.html',\n standalone: true,\n imports: [HeaderBoxComponent, MessagePanelComponent, NgIf, NgClass, GameDetailButtonsComponent, GlobalTranslateComponent, TrustAsHtmlPipe],\n})\nexport class GameDetailComponent implements OnInit {\n data: any;\n twoButtons: any;\n model: any;\n gameData: any;\n useFavouriteGames: boolean;\n favouriteStyle: string = 'theme-favorite-i';\n unFavouriteStyle: string = 'theme-favorite';\n constructor(\n private user: UserService,\n private gameDataManager: GameDataManager,\n private deviceService: DeviceService,\n private navigation: NavigationService,\n private favouritesService: FavouriteService,\n private configProviderService: ConfigProviderService,\n private gameLaunchService: CasinoCoreGamelaunchService,\n private gameLaunchFactoryService: CasinoCoreGameLaunchFactoryService,\n @Inject(MAT_DIALOG_DATA) public gameInfo: any,\n public dialogRef: MatDialogRef<GameDetailComponent>,\n ) {\n this.gameLaunchFactoryService.setGameLaunchService(this.gameLaunchService);\n }\n ngOnInit() {\n if (this.gameInfo) {\n this.assignGameModel();\n }\n const global = this.configProviderService.provideGlobalConfig();\n if (\n global.lobbyConfigurations.FavouriteHeart === 'true' ||\n global.lobbyConfigurations.FavouriteHeart === 'True' ||\n global.lobbyConfigurations.FavouriteHeart === 'TRUE'\n ) {\n this.favouriteStyle = 'theme-heart-solid';\n this.unFavouriteStyle = 'theme-heart-outline';\n }\n }\n\n assignGameModel() {\n const mcPage = this.configProviderService.provideMcPageConfig();\n const global = this.configProviderService.provideGlobalConfig();\n const clientSideConfig = this.configProviderService.provideClientSideConfig();\n const features = this.configProviderService.provideFeaturesConfig();\n const gamedetailObj: any = {\n game: this.gameInfo.game.game.gameId,\n gameId: this.gameInfo.game.game.gameId,\n name: this.gameInfo.game.game.name,\n ownerId: this.gameInfo.game.game.ownerId,\n provider: this.gameInfo.game.game.provider,\n icon: this.gameInfo.game.game.iconType,\n };\n this.data = this.gameDataManager.setGameLobbyModel(gamedetailObj, this.deviceService.isTouch);\n this.twoButtons = clientSideConfig.playForFunAndRealButtons;\n this.useFavouriteGames = features.useFavouriteGames;\n if (!this.data) {\n this.navigation.goTo(mcPage?.prefix);\n return;\n }\n this.model = this.data;\n this.model.categoryType = this.gameInfo.game.categoryType;\n this.model.lobbyType = this.gameInfo.game.game.lobbyType;\n this.model.gameSection = this.gameInfo.game.gameSection;\n this.model = this.model && this.model[0] ? this.model[0] : this.model;\n this.model.disclaimer = global.messages['Disclaimer'];\n this.model.isFavourite = this.favouritesService.checkForFavouriteGame(this.model);\n }\n\n playButtonMode(game: any) {\n switch (game.launchType) {\n case 'inhouse':\n return 1;\n default:\n return 2;\n }\n }\n\n toggleFavourite(game: any, $event: any) {\n if (this.user.isAuthenticated) {\n $event.stopImmediatePropagation();\n this.favouritesService.toggleGameFavourite(game);\n }\n }\n isFavouriteGame(model: any) {\n return this.favouritesService.checkForFavouriteGame(model);\n }\n closeGameDetailDialog() {\n this.dialogRef.close();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocationActivatorService {\n constructor(\n private configProviderService: ConfigProviderService,\n private readonly activatedRoute: ActivatedRoute,\n ) {}\n get isActive(): boolean {\n const geolocationConfiguration = this.configProviderService.provideGeoLocationConfig();\n let isDisabledViaRoute: any = false;\n const disableFeaureQueryParameter = this.activatedRoute.snapshot.queryParamMap.get('_disableFeature');\n isDisabledViaRoute =\n disableFeaureQueryParameter &&\n disableFeaureQueryParameter\n .trim()\n .split(',')\n .some((queryParameterValue) => queryParameterValue?.toLowerCase() === 'geolocation');\n return !isDisabledViaRoute && geolocationConfiguration.isEnabled;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { DeviceService } from '@frontend/vanilla/core';\n\n@Component({\n selector: 'cs-geo-permissions-manager',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n 'class': 'geo-coordinator permissions-manager',\n '[class]': 'managerClasses()',\n '[class.android]': 'deviceService.isAndroid ? true : null',\n '[class.iOS]': 'deviceService.isiOS ? true : null',\n '[class.chrome]': 'deviceService.isChrome ? true : null',\n '[class.nexus]': 'deviceService.isNexus ? true : null',\n '[class.touch]': 'deviceService.isTouch ? true : null',\n '[class.mobile]': 'deviceService.isMobile ? true : null',\n '[class.mobile-phone]': 'deviceService.isMobilePhone ? true : null',\n '[class.robot]': 'deviceService.isRobot ? true : null',\n },\n templateUrl: './permissions-manager.component.html',\n})\nexport class PermissionsManagerComponent implements AfterViewInit {\n @ViewChild('templateLoaderHost')\n templateLoaderHost: ElementRef<HTMLDivElement> | null = null;\n\n private readonly matContext = inject(MAT_DIALOG_DATA);\n private readonly dialogRef = inject(MatDialogRef<PermissionsManagerComponent>);\n readonly deviceService = inject(DeviceService);\n\n permissionsInfo = input<{ [key: string]: string }>(this.matContext?.permissionsInfo ?? {});\n permissionsConfig = input<{ [key: string]: string }>(this.matContext?.permissionsConfig ?? {});\n private geoCoordinatorService = this.matContext?.geoCoordinatorService;\n\n parsedConfig = computed(() => this.prepareConfig(this.permissionsConfig()));\n templateContent = signal<string>('');\n\n managerClasses = computed(() => {\n const permissionInfoClasses = `permissions-info-status-${this.permissionsInfo()['status'] || ''} permissions-info-reason-${this.permissionsInfo()['reason'] || ''}`;\n const devicePropertyClasses = `orientation-${this.deviceService.currentOrientation} ${this.deviceService.deviceType} os-${this.deviceService.osName} os-version-${this.deviceService.osVersion} vendor-${this.deviceService.vendor}`;\n const browserClasses = `browser-name-${this.deviceService.getCapability('browserName')} browser-version-${this.deviceService.getCapability('browserVersion')}`;\n\n return `${permissionInfoClasses} ${devicePropertyClasses} ${browserClasses}`;\n });\n\n async ngAfterViewInit(): Promise<void> {\n if (this.geoCoordinatorService) {\n if (this.geoCoordinatorService?.permissionsManager?.loadAssets) {\n await this.geoCoordinatorService.permissionsManager.loadAssets({\n configStore: this.permissionsConfig(),\n hostElement: this.templateLoaderHost?.nativeElement,\n activateTemplate: true,\n });\n }\n }\n }\n\n @HostListener('document:closeGeoPermissionsManagerDialog', ['$event'])\n @HostListener('closeGeoPermissionsManagerDialog', ['$event'])\n handleCloseDialog() {\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n private prepareConfig(permissionsConfig: { [key: string]: string }) {\n const parsedConfig: { [key: string]: string } = {};\n const permissionDictionaryConfig = permissionsConfig['GeoComply_Hints_Permissions_Dictionary'] ?? '';\n if (permissionDictionaryConfig) {\n const dictionaryEntries = permissionDictionaryConfig.split(';');\n if (dictionaryEntries && dictionaryEntries.length > 0) {\n dictionaryEntries\n .filter((x) => (x || '').trim())\n .forEach((dictEntry) => {\n const [key, value] = dictEntry.split('=');\n parsedConfig[key] = value || '';\n });\n }\n }\n\n return parsedConfig;\n }\n}\n\nexport enum PermissionsTypes {\n geoPermissions = 'geo-permissions',\n geoCurrentState = 'geo-current-state',\n}\n","<div\n #templateLoaderHost\n id=\"geo-permissions-manager-template-loader-host\"\n class=\"geocoordinator-permissions-info template-content-host\"\n [attr.data-template-url]=\"parsedConfig()['template_url']\"\n [attr.data-event-delay]=\"parsedConfig()['event_delay']\"\n [attr.data-permissionsInfo-status]=\"permissionsInfo()['status']\"\n [attr.data-permissionsInfo-reason]=\"permissionsInfo()['reason']\"\n [attr.data-device-type]=\"deviceService.deviceType\"></div>\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { IIntegrationApp } from '@frontend/geo-coordinator/client-stub';\n\nimport { PermissionsManagerComponent } from './permissions-manager.component';\n\n@Injectable({ providedIn: 'root' })\nexport class GeoCoordinatorPermissionsManagerService {\n private readonly dialog = inject(MatDialog);\n private readonly documentRef = inject(DOCUMENT);\n\n private dialogRef: MatDialogRef<PermissionsManagerComponent> | null = null;\n private _permissionsInfoOptions: PermissionsInfoOptions | null = null;\n\n handlePermissionsInfo(options: PermissionsInfoOptions): void {\n console.log('[GeoCoordinatorPermissionsManagerService]', '[handlePermissionsInfo]', options);\n if (this.canReopenDialog(this._permissionsInfoOptions, options)) {\n this.closePermissionsInfo();\n this._permissionsInfoOptions = options;\n this.dialogRef = this.dialog.open(PermissionsManagerComponent, {\n width: '100%',\n disableClose: true,\n data: {\n permissionsInfo: options.permissionsInfo,\n permissionsConfig: options.textDictionary,\n geoCoordinatorService: options.geoCoordinatorService,\n },\n panelClass: 'geo-permission-manager-popup',\n });\n }\n this.handleDialogClassesDecoration(['geo-location-permission-overlay', 'cdk-global-scrollblock'], this.dialogRef, this.documentRef);\n }\n\n closePermissionsInfo() {\n if (this.dialogRef) {\n this.dialogRef.close();\n this._permissionsInfoOptions = null;\n }\n }\n\n private handleDialogClassesDecoration(\n whichClasses: string[],\n dialogRef: MatDialogRef<PermissionsManagerComponent> | null,\n documentRef: Document,\n ) {\n if (dialogRef) {\n dialogRef.afterOpened().subscribe(() => {\n if (documentRef) {\n whichClasses.forEach((cls) => {\n documentRef.documentElement.classList.add(cls);\n });\n }\n });\n dialogRef.afterClosed().subscribe(() => {\n if (documentRef) {\n whichClasses.forEach((cls) => {\n documentRef.documentElement.classList.remove(cls);\n });\n }\n // this._permissionsInfoOptions = null;\n });\n }\n }\n\n private canReopenDialog(existing: PermissionsInfoOptions | null, incoming: PermissionsInfoOptions | null) {\n if (!existing && !incoming) {\n return true;\n }\n\n if (existing || incoming) {\n if (existing !== incoming) {\n return !(\n existing?.permissionsInfo?.status === incoming?.permissionsInfo?.status &&\n existing?.permissionsInfo?.reason === incoming?.permissionsInfo?.reason\n );\n }\n }\n return false;\n }\n}\n\nexport interface PermissionsInfoOptions {\n readonly permissionsInfo: { readonly status: string; readonly reason: string };\n readonly textDictionary: { [key: string]: string };\n readonly geoCoordinatorService: IIntegrationApp;\n}\n","import { EventEmitter, Injectable } from '@angular/core';\n\nimport {\n CoordinatorStates,\n ICoordinatorProbeResult,\n IErrorData,\n IInitializationInput,\n IIntegrationApp,\n OnCoordinatorProbed,\n OnError,\n OnInitialized,\n OnUninitialized,\n Optional,\n PLCIdentifier,\n} from '@frontend/geo-coordinator/client-stub';\nimport { PermissionsManager, PermissionsManagerable } from '@frontend/geo-coordinator/permissions-manager';\nimport { DeviceService, UserService, WindowRef } from '@frontend/vanilla/core';\n\nimport { GeolocationClientConfig } from '../../client-config/geo-location.config';\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { CasinoManager } from '../../shared/casino-manager.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocationCoordinatorService implements IIntegrationApp, PermissionsManagerable {\n private _onInitialized: OnInitialized<CoordinatorStates>;\n private _onUninitialized: OnUninitialized;\n private _onError: OnError;\n private _onProbed: OnCoordinatorProbed;\n private geolocationCoordinator: Optional<IIntegrationApp> & PermissionsManagerable;\n private geolocationConfig: GeolocationClientConfig;\n private _initializePending: boolean = false;\n private _uninitializePending: boolean = false;\n private _initializationInput: IInitializationInput | null | undefined;\n isSynchronizedUninit: boolean = false;\n constructor(\n private windowRef: WindowRef,\n private casinoManager: CasinoManager,\n private deviceservice: DeviceService,\n private readonly userService: UserService,\n private readonly configProviderService: ConfigProviderService,\n ) {\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n this.hookupCoordinator();\n addEventListener(\n 'geolocationcoordinator:bootstrapped',\n () => {\n this.hookupCoordinator();\n },\n {\n once: true,\n },\n );\n }\n triggerFetchLocation(input?: IInitializationInput): void {\n this.geolocationCoordinator?.triggerFetchLocation(input);\n }\n\n onAvailable: EventEmitter<GeolocationCoordinatorService>;\n\n get permissionsManager(): Optional<PermissionsManager> {\n return this.geolocationCoordinator?.permissionsManager;\n }\n\n get appDownloadUrl(): string {\n return this.geolocationCoordinator?.appDownloadUrl || '';\n }\n\n probe(): void {\n this.geolocationCoordinator!.probe();\n }\n\n initialize(input?: IInitializationInput): void {\n this.isSynchronizedUninit = false;\n if (this.geolocationCoordinator) {\n this.geolocationCoordinator.initialize({\n session: (input && input.session) || (this.userService && this.userService.ssoToken) || 'NotAvailable',\n channelId: input && input.channelId,\n plcIdentifier: input && input?.plcIdentifier,\n showPLCPopup: input && input.showPLCPopup,\n });\n } else {\n this._initializePending = true;\n this._initializationInput = input;\n }\n }\n\n uninitialize(): void {\n if (this.geolocationCoordinator) {\n this.geolocationCoordinator.uninitialize();\n } else {\n this._uninitializePending = true;\n }\n }\n\n set onInitialized(callback_funvction: OnInitialized<CoordinatorStates>) {\n this._onInitialized = callback_funvction;\n if (this.geolocationCoordinator) {\n this.geolocationCoordinator.onInitialized = this._onInitialized;\n }\n }\n\n set onUninitialized(value: OnUninitialized) {\n this._onUninitialized = value;\n if (this.geolocationCoordinator) {\n this.geolocationCoordinator.onUninitialized = value!;\n }\n }\n\n set onError(value: OnError) {\n this._onError = value;\n if (this.geolocationCoordinator) {\n this.geolocationCoordinator.onError = value!;\n }\n }\n\n set onProbed(value: OnCoordinatorProbed) {\n this._onProbed = value;\n if (this.geolocationCoordinator) {\n this.geolocationCoordinator.onProbed = value!;\n }\n }\n\n registerUnload() {\n this.windowRef.nativeWindow.onunload = () => {\n //console.info('Window onunload::');\n this.uninitialize();\n };\n this.windowRef.nativeWindow.removeEventListener('message', this.coordinationSynchronizer);\n }\n\n registerSynchronization() {\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (this.geolocationConfig.isEnabled && this.geolocationConfig.synchronizeCoordination) {\n this.windowRef.nativeWindow.addEventListener('message', this.coordinationSynchronizer);\n }\n }\n\n getPLCIdentifier(): PLCIdentifier {\n if (this.casinoManager.isTouch()) {\n if (this.deviceservice.isiOS) {\n return 'oobeeiOS';\n }\n return 'oobeeAndroid';\n }\n return 'geocomply';\n }\n\n private onGeolocationError(errorData: IErrorData): void {\n if (this.onError) {\n this.onError(errorData);\n } else {\n if (this._onError) {\n this._onError(errorData);\n }\n }\n }\n\n private onGeolocationInitialized(initializationData: CoordinatorStates): void {\n if (this.onInitialized) {\n this.onInitialized(initializationData);\n } else {\n if (this._onInitialized) {\n this._onInitialized(initializationData);\n }\n }\n }\n\n private onGeolocationUninitialized(): void {\n if (this.onUninitialized) {\n this.onUninitialized();\n } else {\n if (this._onUninitialized) {\n this._onUninitialized();\n }\n }\n }\n\n private onGeolocationProbed(probeResult: ICoordinatorProbeResult): void {\n if (this.onProbed) {\n this.onProbed(probeResult);\n } else {\n if (this._onProbed) {\n this._onProbed(probeResult);\n }\n }\n }\n\n private hookupCoordinator(): void {\n const geolocationCoordinator = (window as any).geolocationCoordinator as IIntegrationApp & PermissionsManagerable;\n if (geolocationCoordinator) {\n this.geolocationCoordinator = geolocationCoordinator;\n this.geolocationCoordinator.onError = this.onGeolocationError.bind(this);\n this.geolocationCoordinator.onInitialized = this.onGeolocationInitialized.bind(this);\n this.geolocationCoordinator.onUninitialized = this.onGeolocationUninitialized.bind(this);\n this.geolocationCoordinator.onProbed = this.onGeolocationProbed.bind(this);\n this.onAvailable && this.onAvailable.emit(this);\n\n if (this._initializePending) {\n this._initializePending = false;\n this.initialize(this._initializationInput || undefined);\n this._initializationInput = null;\n return;\n }\n if (this._uninitializePending) {\n this._uninitializePending = false;\n this.uninitialize();\n }\n }\n }\n\n private readonly coordinationSynchronizer = (messageEvent: MessageEvent): void => {\n if (this.geolocationConfig.isEnabled && this.geolocationConfig.synchronizeCoordination) {\n if (\n messageEvent &&\n messageEvent.data &&\n messageEvent.data.trim &&\n messageEvent.data.trim() === this.geolocationConfig.synchronizationEvent.trim()\n ) {\n this.isSynchronizedUninit = true;\n this.geolocationCoordinator?.uninitialize();\n }\n }\n };\n}\n","// import type { PermissionsManager } from '@frontend/geo-coordinator/permissions-manager';\n\nexport type Optional<Type> = Type | undefined | null;\n\nexport type OnInitialized<K> = Optional<(initializationStatus?: Optional<K>) => void>;\nexport type OnUninitialized = Optional<() => void>;\n\nexport const enum CoordinatorStates {\n NOTINITIALIZED = 'NOTINITIALIZED',\n INITIALIZING = 'INITIALIZING',\n INITIALIZED = 'INITIALIZED',\n ERROR = 'ERROR',\n LOCATIONAVAILABLE = 'LOCATIONAVAILABLE',\n PROBING = 'PROBING',\n}\n\nexport type PLCIdentifier = 'geocomply' | 'oobeeAndroid' | 'oobeeiOS' | 'gchtml5';\n\nexport interface IPLCProbeResult {\n readonly status: boolean;\n readonly additionalInfo?: Object;\n}\n\nexport type OnCoordinatorProbed = (probeResult: ICoordinatorProbeResult) => void;\nexport interface ICoordinatorProbeResult extends IPLCProbeResult {\n readonly coordinatorState: CoordinatorStates;\n}\n\nexport type OnProbed = (probeResult: ICoordinatorProbeResult) => void;\n\nexport interface IOnError {\n onError: OnError;\n}\nexport interface IErrorData {\n errorCode: number;\n errorMessage: string;\n errorType?: ErrorTypes;\n additionalInfo?: any;\n}\nexport enum ErrorTypes {\n APP_ERROR = 'APPLICATION_ERROR',\n COMM_ERROR = 'COMMUNICATION_ERROR',\n NETWORK_ERROR = 'NETWORK_ERROR',\n DATA_ERROR = 'DATA_ERROR',\n CONFIG_ERROR = 'CONFIGURATION_ERROR',\n FATAL = 'FATAL',\n}\nexport type OnError = Optional<(errorData: IErrorData) => void>;\n\nexport interface IIntegrationApp {\n readonly appDownloadUrl: string;\n onInitialized: OnInitialized<CoordinatorStates>;\n onError: OnError;\n onProbed: OnProbed;\n onUninitialized: OnUninitialized;\n initialize(input?: IInitializationInput): void;\n probe(input?: IInitializationInput): void;\n uninitialize(): void;\n // readonly permissionsManager: Optional<PermissionsManager>;\n triggerFetchLocation(input?: IInitializationInput): void;\n}\n\nexport interface IInitializationInput {\n readonly session?: string;\n readonly channelId?: string;\n readonly plcIdentifier?: PLCIdentifier | string;\n readonly showPLCPopup?: boolean;\n readonly productId?: string;\n}\n\nexport enum RetryType {\n NonRetry = 0,\n Retry = 1,\n}\n\nexport interface GDSResponse {\n locationStatus: string;\n isLocationAvailable: boolean;\n errorCode: number;\n errorMsg: string;\n troubleShooterMessages?: { tsMsgs?: GDSTroubleshooterMessage[] };\n}\n\nexport interface GDSTroubleshooterMessage {\n rule: string;\n retry: number;\n message: string;\n}\n","<div class=\"geo-comply-error-validation-container\">\n <div class=\"main-header\">\n <div class=\"main-header-text\">{{ geoComplyErrorHeader }}</div>\n <div class=\"btn-close\" (click)=\"close()\"><i class=\"theme-ex\"></i></div>\n </div>\n <div class=\"geo-comply-error-validation-body\">\n <div class=\"header-description\">{{ turnOnWiFiDescription }}</div>\n <div class=\"description-text\">\n <ul class=\"geo-error-list\">\n <li *ngFor=\"let errorMessage of geoLocationErrorMessages\" [innerHTML]=\"errorMessage.message | trustAsHtml\"></li>\n </ul>\n </div>\n <div class=\"address-error-info\">{{ addressAboveItemsDescription }}</div>\n <div>\n <button class=\"btn btn-primary\" *ngIf=\"shouldRetryLocation\" (click)=\"reCheckLocation()\">\n {{ recheckLocation }}\n </button>\n <button class=\"btn btn-primary\" *ngIf=\"!shouldRetryLocation\" (click)=\"close()\">\n {{ ok }}\n </button>\n </div>\n </div>\n</div>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { GDSTroubleshooterMessage, RetryType } from '@frontend/geo-coordinator/client-stub';\nimport { NavigationService, Page, WindowRef } from '@frontend/vanilla/core';\nimport { TrustAsHtmlPipe } from '@frontend/vanilla/shared/browser';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { CasinoManager } from '../../shared/casino-manager.service';\nimport { GeoLocationValidationService } from '../services/geolocation-validation.service';\n\nexport enum TriggerGeoLocationOption {\n EventName = 'TRIGGER_GEO_LOCATION',\n Action = 'fetchLocation',\n}\n\nexport enum GeoLocationOptionFetchType {\n NativeCcb = 'NATIVE_CCB',\n Gds = 'GDS',\n}\n\n@Component({\n selector: 'cc-geo-location-error',\n templateUrl: 'geo-location-error.html',\n standalone: true,\n imports: [NgFor, NgIf, TrustAsHtmlPipe],\n})\nexport class GeoLocationErrorComponent implements OnInit {\n geoLocationErrorMessages: GDSTroubleshooterMessage[] = [];\n shouldRetryLocation = false;\n geolocationConfig: any;\n errorMessages: GDSTroubleshooterMessage[] = [];\n\n constructor(\n public readonly dialogRef: MatDialogRef<GeoLocationErrorComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private geoLocationValidationService: GeoLocationValidationService,\n private configProviderService: ConfigProviderService,\n private navigator: NavigationService,\n private casinoManager: CasinoManager,\n private m2Page: Page,\n private route: ActivatedRoute,\n private windowRef: WindowRef,\n ) {}\n\n ngOnInit(): void {\n this.errorMessages = this.data.errorMessages;\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n this.checkGeoLocationError();\n }\n\n getGlobalConfig(): any {\n return this.configProviderService.provideGlobalConfig();\n }\n\n get geoComplyErrorHeader(): string {\n return this.getGlobalConfig().messages['GeoComplyErrorHeader'] || 'We Cannot Place Your Bet';\n }\n\n get turnOnWiFiDescription(): string {\n return this.getGlobalConfig().messages['TurnOnWiFiDescription'];\n }\n\n get addressAboveItemsDescription(): string {\n return this.getGlobalConfig().messages['AddressAboveItemsDescription'] || 'Please address the items above, then try again';\n }\n\n get recheckLocation(): string {\n return this.getGlobalConfig().messages['RecheckLocation'] || 'RECHECK LOCATION';\n }\n\n get ok(): string {\n return this.getGlobalConfig().messages['Ok'] || 'OK';\n }\n\n get invalidLocation(): string {\n return this.getGlobalConfig().messages['InvalidLocation'] || 'Ensure you are well within a permitted area to place your bet successfully';\n }\n\n close(): void {\n this.dialogRef && this.dialogRef.close();\n if (this.windowRef.nativeWindow.location?.pathname?.toLowerCase()?.indexOf('launchng') >= 0) {\n const returnUrl = this.route?.snapshot?.queryParamMap?.get('returnUrl') || this.route?.snapshot?.queryParamMap?.get('returnurl');\n if (returnUrl) {\n this.navigator?.goTo(returnUrl);\n } else {\n const lobbyType = this.casinoManager?.getLobbyType() || '';\n this.navigator?.goTo('/' + this.m2Page.lang + '/' + this.casinoManager?.getProductForLobbyType(lobbyType)?.toLowerCase());\n }\n }\n }\n\n reCheckLocation(): void {\n if (this.geolocationConfig.shouldCheckNativeGeoLocation) {\n this.geoLocationValidationService.fetchLocationDetailsfromNativeEvent();\n } else {\n this.geoLocationValidationService.reCheckLocationClicked.next(true);\n }\n this.close();\n }\n private formattingMessage(geoLocationErrorMessages: GDSTroubleshooterMessage[]) {\n geoLocationErrorMessages.forEach((err) => {\n err.message = err.message.replace(/(\\r\\n|\\n|\\r|\\n\\n)/g, '<br/>');\n });\n }\n private checkGeoLocationError(): void {\n if (!this.errorMessages?.length) {\n this.geoLocationErrorMessages.push({ rule: '', retry: RetryType.NonRetry, message: this.invalidLocation });\n this.formattingMessage(this.geoLocationErrorMessages);\n return;\n }\n this.geoLocationErrorMessages = [...this.errorMessages];\n this.formattingMessage(this.geoLocationErrorMessages);\n this.shouldRetryLocation =\n this.geolocationConfig.isRetryButtonEnabled && this.errorMessages.some((errMsg) => errMsg.retry === RetryType.Retry);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { GDSResponse, RetryType } from '@frontend/geo-coordinator/client-stub';\nimport { NativeAppService, RemoteLogger, TimerService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { UrlUtilityService } from '../../utilities/url-utility.service';\nimport { GeoLocationErrorComponent, TriggerGeoLocationOption } from '../geo-location-error/geo-location-error.component';\nimport { GeolocationCoordinatorService } from './coordinator.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeoLocationValidationService {\n dialogRef: MatDialogRef<GeoLocationErrorComponent>;\n isLocationFetchTimeOut: boolean;\n isLocationFetched: boolean;\n resetTimerAndRefetchLocation: boolean;\n errorResponse: GDSResponse;\n gdsApiInterval: any;\n resetTimer: any;\n geolocationConfig: any;\n private retryCount: number = 0;\n reCheckLocationClicked = new BehaviorSubject<any>(null);\n reCheckLocationClickedObservable: Observable<any> = this.reCheckLocationClicked.asObservable();\n\n constructor(\n private apiService: HttpClient,\n private timerService: TimerService,\n private readonly dialog: MatDialog,\n private configProviderService: ConfigProviderService,\n private geolocationCoordinatorService: GeolocationCoordinatorService,\n private user: UserService,\n private nativeAppService: NativeAppService,\n private logger: RemoteLogger,\n private urlUtilityService: UrlUtilityService,\n ) {}\n\n public validateLocation(callback: (isLocationFailed: boolean) => void): void {\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n this.isLocationFetchTimeOut = false;\n this.isLocationFetched = false;\n this.resetTimerAndRefetchLocation = false;\n this.errorResponse = {} as GDSResponse;\n this.gdsApiInterval = this.geolocationConfig.initialRetryInterval;\n this.getLocationDetailsfromGDS(callback);\n this.startTimer(callback);\n }\n\n private startTimer(callback: (isLocationFailed: boolean) => void): void {\n this.clearTimer();\n this.resetTimer = this.timerService.setTimeout(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.isLocationFetchTimeOut = true;\n if (!this.isLocationFetched) {\n this.showGeoLocationError();\n callback(true);\n return;\n }\n }, this.gdsApiInterval);\n }\n\n private getLocationDetailsfromGDS(callback: (isLocationFailed: boolean) => void): void {\n if (!this.isLocationFetchTimeOut) {\n this.apiService.post(this.geolocationConfig.gdsUrl, 'ssoKey=' + this.user.ssoToken).subscribe((result) => {\n const results: any = result;\n if (results?.isLocationAvailable) {\n if (results?.locationStatus === 'VALID_LOCATION' && results?.errorCode === 0) {\n this.isLocationFetched = true;\n this.retryCount = 0;\n callback(false);\n return;\n }\n const isRetryableErrCode =\n this.geolocationConfig.isRetryButtonEnabled &&\n results?.troubleShooterMessages?.tsMsgs?.find((errMsg: any) => errMsg.retry === RetryType.Retry);\n\n this.errorResponse = results;\n if (isRetryableErrCode) {\n this.isLocationFetched = false;\n this.refetchLocationOnRetryableErrorCodes(callback);\n this.refetchGdsApi(callback);\n } else {\n this.clearTimer();\n this.showGeoLocationError();\n this.retryCount = 0;\n callback(true);\n return;\n }\n } else {\n this.errorResponse = results;\n this.refetchGdsApi(callback);\n }\n });\n }\n }\n\n private refetchLocationOnRetryableErrorCodes(callback: (isLocationFailed: boolean) => void): void {\n if (!this.resetTimerAndRefetchLocation) {\n this.isLocationFetchTimeOut = false;\n this.gdsApiInterval = this.geolocationConfig.retryInterval;\n this.resetTimerAndRefetchLocation = true;\n this.startTimer(callback);\n }\n }\n\n private clearTimer(): void {\n if (this.resetTimer) {\n this.timerService.clearTimeout(this.resetTimer);\n }\n }\n\n private refetchGdsApi(callback: (isLocationFailed: boolean) => void): void {\n let geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (geolocationConfig.enableRetryCountToCallNative) {\n if (this.retryCount === geolocationConfig.gdsFailureCount) {\n this.fetchLocationDetailsfromNativeEvent();\n }\n this.retryCount++;\n }\n this.timerService.setTimeout(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.getLocationDetailsfromGDS(callback);\n }, 1000);\n }\n\n private showGeoLocationError(): void {\n this.retryCount = 0;\n const tsMsgs = this.errorResponse?.troubleShooterMessages?.tsMsgs;\n this.dialogRef = this.dialog.open(GeoLocationErrorComponent, {\n data: {\n errorMessages: tsMsgs,\n },\n disableClose: true,\n panelClass: 'geo-comply-error-dialog',\n });\n //this.doTracking();\n }\n assignToCoordinatorService() {\n this.geolocationCoordinatorService.onError = undefined;\n this.geolocationCoordinatorService.onInitialized = undefined;\n }\n fetchLocationDetailsfromNativeEvent(): void {\n this.nativeAppService.sendToNative({\n eventName: TriggerGeoLocationOption.EventName,\n parameters: { action: TriggerGeoLocationOption.Action },\n });\n this.logger.log('casinofetchLocation ', TriggerGeoLocationOption.EventName);\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\n\nimport { LottieAnimationStatus } from '../shared/models/common.model';\n\n@Directive({\n selector: '[ccBrowserState]',\n standalone: true,\n})\nexport class BroswerStateDirective implements OnInit {\n @Input() idleTimeoutIn: number;\n @Output() setLottieAnimationStatus: EventEmitter<LottieAnimationStatus>;\n\n private idleTimeout: any;\n\n constructor() {\n this.setLottieAnimationStatus = new EventEmitter();\n }\n\n @HostListener('window:blur')\n onBlur(): void {\n this.setLottieAnimationStatus.emit(LottieAnimationStatus.Pause);\n }\n\n @HostListener('window:focus')\n onFocus(): void {\n this.setLottieAnimationStatus.emit(LottieAnimationStatus.Play);\n }\n\n @HostListener('pointerdown')\n onPointerDown(): void {\n this.setLottieAnimationStatus.emit(LottieAnimationStatus.Play);\n this.checkIfIdle();\n }\n\n @HostListener('keydown')\n onKeyDown(): void {\n this.setLottieAnimationStatus.emit(LottieAnimationStatus.Play);\n this.checkIfIdle();\n }\n\n ngOnInit(): void {\n this.checkIfIdle();\n }\n\n private checkIfIdle(): void {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = setTimeout(() => this.setLottieAnimationStatus.emit(LottieAnimationStatus.Pause), this.idleTimeoutIn);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TrackingService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocationTrackingService {\n constructor(private trackingService: TrackingService) {}\n trackPosition(labelEvent: string, actionEvent: string, positionEvent: string) {\n this.trackingService.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': 'US_NJ_GEOAPP',\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': 'not_applicable',\n 'component.EventDetails': 'not_applicable',\n 'component.URLClicked': 'not_applicable',\n });\n }\n track(labelEvent: string, actionEvent: string, locationEvent?: string) {\n if (locationEvent) {\n this.trackingService.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': 'US_NJ_GEOAPP',\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': 'not_applicable',\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': 'not_applicable',\n 'component.URLClicked': 'not_applicable',\n });\n } else {\n this.trackingService.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': 'US_NJ_GEOAPP',\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': 'not_applicable',\n 'component.LocationEvent': 'not_applicable',\n 'component.EventDetails': 'not_applicable',\n 'component.URLClicked': 'not_applicable',\n });\n }\n }\n}\n","<div id=\"casino-geolocation-installer-container\" class=\"casino-geolocation-installer-container\">\n <div id=\"geolocation-desktop-installer\" class=\"geolocation-desktop-installer geo-location-popup-container\" *ngIf=\"!isMobileInstaller\">\n <div class=\"geo-title-heading\">\n <h1 mat-dialog-title class=\"geo-title\" [textContent]=\"geocomplyTitle\"></h1>\n <span class=\"theme-ex dialogclosebutton\" id=\"dialogclosebutton\" (click)=\"close()\"></span>\n </div>\n <div mat-dialog-content class=\"geo-content\" [vnDynamicHtml]=\"geoComplyMessage\"></div>\n <div mat-dialog-actions class=\"geo-buttons\">\n <button class=\"geo-left-button\" mat-button [textContent]=\"downloadButtonText\" (click)=\"download()\"></button>\n <button class=\"geo-right-button\" mat-button cdkFocusInitial [textContent]=\"continueButtonText\" (click)=\"continue()\"></button>\n </div>\n </div>\n <div id=\"geolocation-mobile-installer\" class=\"geolocation-mobile-installer casino-modal\" *ngIf=\"isMobileInstaller\">\n <div class=\"geolocation-mobile-installer-title-heading\">\n <h1 mat-dialog-title class=\"geolocation-mobile-installer-title\" [textContent]=\"geolocationMobileInstallerTitle\"></h1>\n <span class=\"theme-ex dialogclosebutton\" id=\"dialogclosebutton\" (click)=\"close()\"></span>\n </div>\n <div class=\"container-overlay\">\n <div class=\"theme-location-pin\"></div>\n <div class=\"container-overlay-header\">\n <h2 [textContent]=\"oobeeInstallerHeadingText\"></h2>\n <p [textContent]=\"oobeeInstallerHeadingInstruction\"></p>\n </div>\n <p class=\"header-text\" [textContent]=\"continuePlayOnAppInstructionText\"></p>\n <div class=\"clearfix\">\n <a\n id=\"appDownloaderLink\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n [href]=\"appDownloadLink\"\n [textContent]=\"continuePlayOnAppUserActionText\"\n (click)=\"appDownloaderClicked()\"></a>\n </div>\n <br />\n <div class=\"container-overlay-break\">\n <hr />\n <div class=\"or-container\" [textContent]=\"playOnAppOrWebPlayerOptionsSeparatorText\"></div>\n </div>\n <p class=\"p-text-middle\" [textContent]=\"continuePlayOnWebInstructionText\"></p>\n <div class=\"oobeeInstallerUserActionsContainer\">\n <div id=\"oobeeInstallerDownloadContainer\" class=\"oobeeInstallerDownloadContainer\">\n <p id=\"oobeeInstallerDownloadStepText\" class=\"oobeeInstallerDownloadStepText\" [textContent]=\"oobeeInstallerDownloadStepText\"></p>\n <a\n id=\"btn-download\"\n class=\"oobeeInstallerDownloadUserActionButton btn btn-secondary\"\n [textContent]=\"oobeeInstallerDownloadUserActionText\"\n (click)=\"download()\"></a>\n </div>\n <div id=\"oobeeInstallerContinueContainer\" class=\"oobeeInstallerContinueContainer\">\n <p id=\"oobeeInstallerContinueStepText\" class=\"oobeeInstallerContinueStepText\" [textContent]=\"oobeeInstallerContinueStepText\"></p>\n <a\n id=\"btn-continue\"\n class=\"oobeeInstallerContinueUserActionButton btn btn-primary\"\n [textContent]=\"oobeeInstallerContinueUserActionText\"\n (click)=\"continue()\"></a>\n </div>\n </div>\n <div class=\"container-overlay-footer\">\n <div class=\"geoGuardEnquiryUserActionContainer\">\n <i class=\"ui-icon theme-info-i\" [floatUi]=\"popper.content\" (click)=\"info()\"></i>\n <span\n class=\"geoGuardEnquiryUserActionText\"\n [floatUi]=\"popper.content\"\n [textContent]=\"geoguardEnquiryUserActionText\"\n (click)=\"info()\"></span>\n </div>\n </div>\n <div>\n <vn-popper-content #popper cssClass=\"tooltip-info\">\n <ng-container content>\n {{ geoGuardDescriptionText }}\n </ng-container>\n </vn-popper-content>\n </div>\n </div>\n </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport { AfterViewInit, Component, Inject, Input } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { DynamicHtmlDirective, LoadingIndicatorHandler, LoadingIndicatorService, NavigationService, Page, WindowRef } from '@frontend/vanilla/core';\nimport { PopperContentComponent } from '@frontend/vanilla/features/popper';\nimport { NgxFloatUiDirective, NgxFloatUiModule } from 'ngx-float-ui';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { BroswerStateDirective } from '../../directives/browser-state.directive';\nimport { CasinoManager } from '../../shared/casino-manager.service';\nimport { GeolocationTrackingService } from '../../shared/geolocation-tracking.service';\nimport { GeolocationCoordinatorService } from '../services/coordinator.service';\nimport { GeolocationCheckService } from '../services/geolocation-check.service';\n\n@Component({\n selector: 'cc-geolocation-installer',\n templateUrl: 'installer.component.html',\n standalone: true,\n imports: [\n NgIf,\n MatDialogTitle,\n MatDialogContent,\n DynamicHtmlDirective,\n MatDialogActions,\n NgxFloatUiDirective,\n PopperContentComponent,\n BroswerStateDirective,\n PopperContentComponent,\n NgxFloatUiModule,\n ],\n})\nexport class GeolocationInstallerComponent implements AfterViewInit {\n showLoader = false;\n @Input() data: any;\n loadingIndicatorHandler: LoadingIndicatorHandler;\n constructor(\n public readonly dialogRef: MatDialogRef<GeolocationInstallerComponent>,\n private readonly geolocationCoordinatorService: GeolocationCoordinatorService,\n private readonly geoLocationCheckService: GeolocationCheckService,\n private readonly _domSanitizer: DomSanitizer,\n @Inject(MAT_DIALOG_DATA) private readonly additionalInfo: any,\n private readonly _geolocationTrackingService: GeolocationTrackingService,\n private configProviderService: ConfigProviderService,\n private navigationService: NavigationService,\n private casinoManager: CasinoManager,\n private m2Page: Page,\n private route: ActivatedRoute,\n private windowRef: WindowRef,\n private loadingIndicatorService: LoadingIndicatorService,\n ) {}\n\n get geoComplyMessage(): string {\n return this.configProviderService.provideDownloadAppFromDeviceConfig().geoComplyMessage;\n }\n\n get appDownloadLink(): SafeResourceUrl {\n return this._domSanitizer.bypassSecurityTrustUrl(\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent)\n ? 'javascript:void(0)'\n : /(Android)/g.test(navigator.userAgent)\n ? this.getGlobalConfig().messages.AndroidAppDownloadLink\n : '',\n );\n }\n\n get continueButtonText(): string {\n return this.getGlobalConfig().messages['GeoComplyContinueButtonText'];\n }\n\n get continuePlayOnAppInstructionText(): string {\n return this.getGlobalConfig().messages['ContinuePlayOnAppInstructionText'] || 'Continue play on our app, with automatic geolocation';\n }\n\n get continuePlayOnAppUserActionText(): string {\n return this.getGlobalConfig().messages['ContinuePlayOnAppUserActionText'] || 'CONTINUE PLAY ON PLAYMGM APP';\n }\n\n get continuePlayOnWebInstructionText(): string {\n return (\n this.getGlobalConfig().messages['ContinuePlayOnWebInstructionText'] ||\n 'To play on web, Geoguard needs to be installed and running on your device'\n );\n }\n\n get oobeeInstallerDownloadUserActionText(): string {\n return this.getGlobalConfig().messages['OobeeInstallerDownloadUserActionText'] || 'INSTALL OR OPEN GEOGUARD';\n }\n\n get oobeeInstallerContinueUserActionText(): string {\n return this.getGlobalConfig().messages['OobeeInstallerContinueUserActionText'] || 'GEOGUARD IS INSTALLED AND RUNNING';\n }\n\n get downloadButtonText(): string {\n return this.getGlobalConfig().messages['GeoComplyDownloadButtonText'];\n }\n\n get geocomplyText(): string {\n return this.getGlobalConfig().messages['GeoComplyText'];\n }\n get geocomplyTitle(): string {\n return this.getGlobalConfig().messages['GeoComplyTitle'];\n }\n\n get geoguardEnquiryUserActionText(): string {\n return this.getGlobalConfig().messages['GeoguardEnquiryUserActionText'] || 'WHAT IS GEOGUARD?';\n }\n\n get oobeeInstallerDownloadStepText(): string {\n return this.getGlobalConfig().messages['OobeeInstallerDownloadStepText'] || 'Step 1';\n }\n\n get oobeeInstallerContinueStepText(): string {\n return this.getGlobalConfig().messages['OobeeInstallerContinueStepText'] || 'Step 2';\n }\n\n get geolocationMobileInstallerTitle(): string {\n return this.getGlobalConfig().messages['GeolocationMobileInstallerTitle'] || 'LOCATION';\n }\n\n get isMobileInstaller(): boolean {\n if (this.data && this.data.isMobileInstaller) {\n return this.data && this.data.isMobileInstaller;\n } else {\n return this.additionalInfo && this.additionalInfo.isMobileInstaller;\n }\n }\n\n get oobeeInstallerHeadingText(): string {\n return this.getGlobalConfig().messages['OobeeInstallerHeadingText'] || 'Want to continue playing?';\n }\n\n get oobeeInstallerHeadingInstruction(): string {\n return (\n this.getGlobalConfig().messages['OobeeInstallerHeadingInstruction'] ||\n 'Before you launch a game we are required by law to confirm your location.'\n );\n }\n\n get playOnAppOrWebPlayerOptionsSeparatorText(): string {\n return this.getGlobalConfig().messages['PlayOnAppOrWebPlayerOptionsSeparatorText'] || 'OR';\n }\n\n get geoGuardDescriptionText(): string {\n return (\n this.getGlobalConfig().messages['GeoGuardDescriptionText'] ||\n `GeoGuard, a trusted 3rd party partner, allows you to obtain location data from your Android device. One time only install, launch every time you want to place a bet on web`\n );\n }\n continue(): void {\n this.showLoader = true;\n this.loadingIndicatorHandler = this.loadingIndicatorService.start();\n if (this.isMobileInstaller) {\n this._geolocationTrackingService.track('GeoLoc_Pop-up how to', 'Step 2 - Geoguard is Intalled and running - CTA Clicked');\n }\n this.geolocationCoordinatorService.initialize({\n showPLCPopup: true,\n });\n const callback = () => {\n this.showLoader = false;\n this.loadingIndicatorHandler.done();\n };\n this.geoLocationCheckService.checkGeolocation(callback, callback);\n }\n\n download(): void {\n if (this.isMobileInstaller) {\n this._geolocationTrackingService.track('GeoLoc_Pop-up how to', 'Step 1 - install or Open GeoGuard - CTA Clicked');\n if (this.data && this.data.downloadUrl) {\n window.open((this.data && this.data.downloadUrl) || '', '_blank');\n return;\n } else {\n window.open((this.additionalInfo && this.additionalInfo.downloadUrl) || '', '_blank');\n return;\n }\n }\n if (this.data && this.data.downloadUrl) {\n window.open((this.data && this.data.downloadUrl) || '', '_self');\n } else {\n window.open((this.additionalInfo && this.additionalInfo.downloadUrl) || '', '_self');\n }\n }\n\n close(): void {\n if (this.isMobileInstaller) {\n this._geolocationTrackingService.track('GeoLoc_Pop-up how to', 'Pop-up_Close');\n }\n this.dialogRef && this.dialogRef.close();\n if (\n this.navigationService.location.search.has('specialproduct') &&\n this.navigationService.location.search.get('specialproduct') === 'globalsearch'\n ) {\n const returnUrl = this.navigationService.location.search.has('returnurl')\n ? this.navigationService.location.search.get('returnurl')\n : this.navigationService.goToLastKnownProduct();\n if (returnUrl) {\n this.navigationService.goTo(returnUrl);\n }\n } else if (this.windowRef.nativeWindow.location?.pathname?.toLowerCase()?.indexOf('launchng') >= 0) {\n const returnUrl = this.route?.snapshot?.queryParamMap?.get('returnUrl') || this.route?.snapshot?.queryParamMap?.get('returnurl');\n if (returnUrl) {\n this.navigationService?.goTo(returnUrl);\n } else {\n const lobbyType = this.casinoManager?.getLobbyType() || '';\n this.navigationService?.goTo('/' + this.m2Page.lang + '/' + this.casinoManager?.getProductForLobbyType(lobbyType)?.toLowerCase());\n }\n } else if (this.windowRef.nativeWindow.location?.pathname?.toLowerCase()?.indexOf('forcedgamelaunch') >= 0) {\n const returnUrl =\n this.route?.snapshot?.queryParamMap?.get('originUrl') ||\n this.route?.snapshot?.queryParamMap?.get('originurl') ||\n this.route?.snapshot?.queryParamMap?.get('returnUrl') ||\n this.route?.snapshot?.queryParamMap?.get('returnurl');\n if (returnUrl) {\n this.navigationService?.goTo(returnUrl);\n } else {\n const lobbyType = this.casinoManager?.getLobbyType() || '';\n this.navigationService?.goTo('/' + this.m2Page.lang + '/' + this.casinoManager?.getProductForLobbyType(lobbyType)?.toLowerCase());\n }\n }\n }\n\n appDownloaderClicked(): void {\n let appDownloadLink = '';\n let appId = this.getGlobalConfig().messages.AndroidAppID ? this.getGlobalConfig().messages.AndroidAppID : '';\n if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent)) {\n appDownloadLink = this.getGlobalConfig().messages.iOSAppDownloadLink;\n appId = this.getGlobalConfig().messages.iOSAppID ? this.getGlobalConfig().messages.iOSAppID : '';\n }\n this._geolocationTrackingService.trackPosition('GeoLoc_Pop-up how to', 'Continue to play on an APP_ CTA Clicked', appId);\n if (!appDownloadLink) {\n return;\n }\n window.open(appDownloadLink, '_blank');\n }\n\n hideLoader(): void {\n this.showLoader = false;\n }\n\n info() {\n if (this.isMobileInstaller) {\n this._geolocationTrackingService.track('GeoLoc_Pop-up how to', 'InfoTool - What is Geoguard - CTA Clicked');\n }\n }\n\n ngAfterViewInit() {\n this._geolocationTrackingService.track('GeoLoc_Pop-up how to', 'Pop-up_Loaded');\n }\n\n getGlobalConfig(): any {\n return this.configProviderService.provideGlobalConfig();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { GeolocationInstallerComponent } from '../installer/installer.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocationInstallerDialogService {\n onDialogClosed: () => void;\n\n private dialogRef: MatDialogRef<GeolocationInstallerComponent>;\n private _isDialogOpen: boolean = false;\n\n constructor(private readonly dialog: MatDialog) {}\n\n openDialog(downloadUrl: string, isMobileInstaller: boolean) {\n this.dialogRef = this.dialog.open(GeolocationInstallerComponent, {\n width: '250px',\n data: {\n downloadUrl: downloadUrl,\n isMobileInstaller: isMobileInstaller,\n },\n panelClass: 'geo-location-installer',\n });\n this._isDialogOpen = true;\n\n this.dialogRef.afterClosed().subscribe(() => {\n //console.info('The dialog was closed:', result);\n this._isDialogOpen = false;\n if (this.onDialogClosed) {\n this.onDialogClosed();\n }\n });\n }\n\n closeDialog(): void {\n this.dialogRef && this.dialogRef.close();\n }\n\n get isDialogOpen(): boolean {\n return this._isDialogOpen;\n }\n\n hideLoader(): void {\n this.dialogRef && this.dialogRef.componentInstance && this.dialogRef.componentInstance.hideLoader();\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { CoordinatorStates, IErrorData } from '@frontend/geo-coordinator/client-stub';\nimport { GeoCoordinatorPermissionsManagerService, PermissionInfo } from '@frontend/geo-coordinator/permissions-manager';\nimport { Logger } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { CasinoManager } from '../../shared/casino-manager.service';\nimport { GeolocationCoordinatorService } from './coordinator.service';\nimport { GeoLocationValidationService } from './geolocation-validation.service';\nimport { GeolocationInstallerDialogService } from './installer-dialog.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocationCheckService {\n onCheckClosed: () => void;\n isOnErrorInvoked: boolean = false;\n errorData: IErrorData;\n geolocationConfig: any;\n\n private readonly geoCoordinatorPermissionsManagerService = inject(GeoCoordinatorPermissionsManagerService);\n\n constructor(\n private geolocationCoordinatorService: GeolocationCoordinatorService,\n private geolocationInstallerService: GeolocationInstallerDialogService,\n private geoLocationValidation: GeoLocationValidationService,\n private readonly casinoManager: CasinoManager,\n private configProviderService: ConfigProviderService,\n private logger: Logger,\n ) {\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n this.geolocationInstallerService.onDialogClosed = this.onInstallerServiceDialogClosed.bind(this);\n }\n\n checkGeolocation(callback: any, errorCallback: any): void {\n this.isOnErrorInvoked = false;\n this.geolocationCoordinatorService.isSynchronizedUninit = false;\n const geoConfig = this.configProviderService.provideGeoLocationConfig();\n this.geolocationCoordinatorService.onInitialized = (initializationStatus: CoordinatorStates) => {\n this.isOnErrorInvoked = false;\n this.logger.info('[GeolocationCheckService]', 'GeolocationCoordinatorService::', 'onInitialized::', initializationStatus);\n if (initializationStatus === CoordinatorStates.INITIALIZED) this.closeDialogAndLaunchGame(callback);\n };\n\n this.geolocationCoordinatorService.onError = (errorData: IErrorData) => {\n this.isOnErrorInvoked = true;\n this.errorData = errorData;\n this.logger.error('[GeolocationCheckService]', 'GeolocationCoordinatorService::', 'onError::', errorData);\n if (errorData && errorData.errorCode == -1111) {\n const geoConfig = this.configProviderService.provideGeoLocationConfig();\n if (!geoConfig?.enableNDBS) {\n this.showGeolocationInstallerPopup(this.extractAppDownloadUrlFromErrorData(errorData), this.isMobileInstaller());\n errorCallback();\n } else {\n callback();\n }\n return;\n } else {\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (this.geolocationConfig?.desktopLocationValidation) {\n this.geoLocationValidation?.validateLocation((response: boolean) => {\n if (response != null && !response) {\n callback();\n } else {\n errorCallback();\n }\n });\n } else this.closeDialogAndLaunchGame(callback);\n return;\n }\n };\n\n this.geolocationCoordinatorService.onUninitialized = () => {\n if (this.isOnErrorInvoked) this.isOnErrorInvoked = false;\n else if (!this.geolocationCoordinatorService.isSynchronizedUninit) {\n this.geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (this.geolocationConfig?.desktopLocationValidation) {\n this.geoLocationValidation.validateLocation((response: boolean) => {\n if (response != null && !response) callback();\n else errorCallback();\n });\n } else this.closeDialogAndLaunchGame(callback);\n }\n this.logger.info('[GeolocationCheckService]', 'GeolocationCoordinatorService::', 'onUninitialized::');\n };\n\n if (!geoConfig.enableNDBS) {\n this.geolocationCoordinatorService.initialize({\n showPLCPopup: false,\n });\n } else {\n if (this.geolocationCoordinatorService?.permissionsManager) {\n this.geolocationCoordinatorService.permissionsManager.onPermissionInfo = (permissionsInfo: PermissionInfo) => {\n if (permissionsInfo.status === 'available') {\n this.geoCoordinatorPermissionsManagerService.closePermissionsInfo();\n this.geolocationCoordinatorService.initialize({\n showPLCPopup: false,\n });\n return;\n }\n if (permissionsInfo.status === 'notavailable') {\n this.geoCoordinatorPermissionsManagerService.handlePermissionsInfo({\n permissionsInfo,\n textDictionary: this.configProviderService.provideGlobalConfig().messages,\n geoCoordinatorService: this.geolocationCoordinatorService,\n });\n }\n };\n this.geolocationCoordinatorService?.permissionsManager?.seekPermission();\n }\n }\n }\n\n closeDialogAndLaunchGame(callback: any): void {\n this.geolocationInstallerService.closeDialog();\n callback();\n }\n\n private showGeolocationInstallerPopup(downloadUrl: string, isMobileInstaller: boolean): void {\n this.geolocationInstallerService.hideLoader();\n if (!this.geolocationInstallerService.isDialogOpen) this.geolocationInstallerService.openDialog(downloadUrl, isMobileInstaller);\n }\n\n private isMobileInstaller(): boolean {\n return this.casinoManager.isTouch();\n }\n\n private onInstallerServiceDialogClosed(): void {\n if (this.onCheckClosed) {\n this.onCheckClosed();\n }\n }\n\n private extractAppDownloadUrlFromErrorData(errorData: IErrorData): string {\n const appDownloadUrl = 'appDownloadUrl';\n return (\n (errorData && errorData.additionalInfo && errorData.additionalInfo[appDownloadUrl]) || this.geolocationCoordinatorService.appDownloadUrl\n );\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilityService {\n private readonly configProviderService = inject(ConfigProviderService);\n constructor() {}\n\n getPositionXY(e: any) {\n const res = { x: 0, y: 0 };\n if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {\n const touch = e.touches[0] || e.changedTouches[0];\n res.x = touch.pageX;\n res.y = touch.pageY;\n } else if (\n e.type === 'mousedown' ||\n e.type === 'mouseup' ||\n e.type === 'mousemove' ||\n e.type === 'mouseover' ||\n e.type === 'mouseout' ||\n e.type === 'mouseenter' ||\n e.type === 'mouseleave'\n ) {\n res.x = e.pageX;\n res.y = e.pageY;\n }\n return res;\n }\n\n deepMergeObjects(mergeAccumulator: any, ...mergees: any[]) {\n if (mergeAccumulator == null) {\n mergeAccumulator = {};\n }\n\n const accumulatedMerge = Object(mergeAccumulator);\n\n //iterative vs recursive\n for (let argumentIndex = 0; argumentIndex < mergees.length; argumentIndex++) {\n const nextMergee = mergees[argumentIndex];\n\n if (nextMergee) {\n // Skip over if undefined or null\n for (const nextKeyToBeMerged in nextMergee) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextMergee, nextKeyToBeMerged)) {\n if (\n typeof accumulatedMerge[nextKeyToBeMerged] === 'object' &&\n accumulatedMerge[nextKeyToBeMerged] &&\n typeof nextMergee[nextKeyToBeMerged] === 'object' &&\n nextMergee[nextKeyToBeMerged]\n ) {\n this.deepMergeObjects(accumulatedMerge[nextKeyToBeMerged]);\n } else {\n accumulatedMerge[nextKeyToBeMerged] = nextMergee[nextKeyToBeMerged];\n }\n }\n }\n }\n }\n return accumulatedMerge;\n }\n\n getDaysInMonth(year: number, month: number): number {\n return new Date(year, month, 0).getDate();\n }\n\n getLastMonthArcadeExpiry(): string {\n const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n const coinExpiryDay = this.configProviderService.providePromoCoinEconomyConfig()?.coinExpiryDay - 1;\n const currentDay = new Date().getDate();\n if (currentDay <= coinExpiryDay) {\n return monthNames[new Date().getMonth() - 1];\n } else {\n return monthNames[new Date().getMonth()];\n }\n }\n\n /**Duplicate function present in casino manager file as well */\n getProductForGivenLobbyType(lobbyType: string): string {\n const lmtDataClientConfig: any = this.configProviderService.provideLmtConfig();\n const lobbyTypeMap: any = lmtDataClientConfig.lobbyTypeMap;\n for (let i = 0; i < lobbyTypeMap.length; i++) {\n if (lobbyTypeMap[i].lobbyType == lobbyType) {\n if (lobbyTypeMap[i].product) return lobbyTypeMap[i]?.product?.toLowerCase();\n }\n }\n return '';\n }\n\n getLanguageContentMap(languageArray: any): Map<string, string> {\n const languageMap: Map<string, string> = new Map<string, string>();\n if (languageArray && languageArray.length > 0) {\n for (let i = 0; i < languageArray.length; i++) {\n const langItem: string = languageArray[i];\n if (langItem.indexOf(':') > -1) {\n const langResolve: any = langItem.split(':');\n languageMap.set(langResolve[0], langResolve[1]);\n }\n }\n }\n return languageMap;\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { NativeAppService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CookieService {\n isConsented = false;\n private readonly nativeAppService = inject(NativeAppService);\n\n getCookie(name: string) {\n const ca: Array<string> = decodeURIComponent(document.cookie).split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n setCookie(name: string, value: string, expireDays: number, path: string = '') {\n const d: Date = new Date();\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\n const expires = `expires=${d.toUTCString()}`;\n const cpath = path ? `; path=${path}` : '';\n document.cookie = `${name}=${value}; ${expires}${cpath}; SameSite=Lax`;\n }\n\n // NFR - Services optimization - Remove\n consent(isConsent: boolean, e: any, COOKIE: string, EXPIRE_DAYS: number) {\n if (!isConsent) {\n return this.isConsented;\n } else if (isConsent) {\n this.setCookie(COOKIE, '1', EXPIRE_DAYS);\n this.isConsented = true;\n e.preventDefault();\n }\n return false;\n }\n\n isODR(odrName: string) {\n const nativeAppCookie = this.getCookie('NativeApp');\n const isODR: boolean = this.nativeAppService?.applicationName?.toLowerCase() === odrName || nativeAppCookie?.toLowerCase() === odrName;\n return isODR;\n }\n\n isPokerApp() {\n const nativeAppCookie = this.getCookie('NativeApp');\n return nativeAppCookie?.toLowerCase() == 'poker';\n }\n\n getFromCookie(key: any): boolean {\n if (this.getCookie(key) > '0') {\n return true;\n }\n return false;\n }\n}\n\nexport enum ODR_NAME {\n CASINO_WODR = 'casinowodr',\n SPORTS_WODR = 'sportswodr',\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, ClaimsService, CookieService, DeviceService, NativeAppService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { AdvanceGameDataService } from './advance-game-data.service';\nimport { ApiPathsHelperService } from './api-paths-helper-service';\nimport { CasinoManager } from './casino-manager.service';\nimport { CookieService as CasinoCookieService, ODR_NAME } from './cookie.service';\nimport { FavouriteService } from './favourite.service';\nimport { GameLaunch } from './models/gamelaunch.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameLaunchUrlFormationService {\n currentProduct: string;\n isPokerOROdr: boolean;\n constructor(\n private configProviderService: ConfigProviderService,\n private claimsConfig: ClaimsService,\n private advanceGameDataService: AdvanceGameDataService,\n private urlUtilityService: UrlUtilityService,\n private favouriteService: FavouriteService,\n private casinoManager: CasinoManager,\n private apiPathsHelperService: ApiPathsHelperService,\n private readonly nativeAppService: NativeAppService,\n private cookieService: CookieService,\n private deviceService: DeviceService,\n private appInfoConfig: AppInfoConfig,\n private casinoCookieService: CasinoCookieService,\n ) {}\n\n launchMGSGame(response: any, gameLaunchParam: GameLaunch) {\n let url: string;\n let defaultUrlPattern: any;\n const gameLaunchParams = response.casinoCoreGameLaunchResponseParams;\n const gameLaunchQueryParams = response.casinoCoreGameLaunchQueryResponseParams; //parameters from api response\n const gameConfig = this.configProviderService.provideGameConfig();\n const featureConfig = this.configProviderService.provideFeaturesConfig();\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const advanceGameDataConfig = this.configProviderService.provideAdvanceGameDataConfig();\n const product = this.getInvokerProduct(gameLaunchParams.product);\n const channelId = gameLaunchParams.channelId;\n const currencyCode = this.claimsConfig.get('currency');\n const ssoToken = this.claimsConfig.get('ssoToken');\n const enableMultigameView = featureConfig.enableMultiGameVIew;\n const egvFavourites = featureConfig.egvFavourites;\n const brandId = casinoConfig.brandId;\n const frontendId = casinoConfig.frontendId;\n const pingUrl = this.getPingUrlWithToken() ? this.getPingUrlWithToken() : '';\n const accountUrl = this.getAccountUrl();\n const historyUrl = this.getHistoryUrl();\n const indexFilePath = this.getIndexFilePath();\n const isFavGame = this.favouriteService.checkForFavouriteGame(gameLaunchParam.game);\n const isGeoGuardEnabled = this.nativeAppService.isNativeApp || this.nativeAppService.isNativeWrapper ? false : true;\n const geoPollingUrl = gameLaunchParams.geoPollingUrl;\n const launchType = this.casinoManager.isTouch() ? 'EL' : 'IL';\n const casinoAsIFrameConfig = this.configProviderService.provideCasinoAsIFrameConfig();\n const vnChannel = this.appInfoConfig?.channel;\n let depositRedirectUrl = gameLaunchParams.depositRedirectUrl;\n if (gameLaunchParam.gameLaunchedFrom != 'playRedirect') {\n depositRedirectUrl = this.updateDepositRedirectUrl(gameLaunchParams.depositRedirectUrl);\n }\n gameLaunchParams.gameHomeUrl = decodeURIComponent(gameLaunchParams.gameHomeUrl);\n gameLaunchParams.gameHomeUrl = gameLaunchParams.gameHomeUrl.replace('/?', '?');\n\n if (gameLaunchParam.gameContainer === 'Overlay' && casinoAsIFrameConfig.appendOpenCasinoCoreOverlayQueryParam) {\n if (!(gameLaunchParams.gameHomeUrl.indexOf('openCasinoCoreOverlay=true') > -1)) {\n gameLaunchParams.gameHomeUrl = this.appendQueryString(gameLaunchParams.gameHomeUrl, 'openCasinoCoreOverlay', 'true');\n }\n }\n if (gameLaunchParam.returnUrl && gameLaunchParam.returnUrl != '') {\n gameLaunchParams.gameHomeUrl = gameLaunchParam.returnUrl;\n }\n gameLaunchParams.gameHomeUrl = encodeURIComponent(gameLaunchParams.gameHomeUrl);\n this.advanceGameDataService.setGameLaunchProductsIndex();\n const windowObj = window as any;\n let pageNumber = 0;\n if (windowObj.clientConfig.vnHeader !== undefined) {\n windowObj.clientConfig.vnHeader.products.forEach((headerPrduct: any) => {\n if (headerPrduct?.name?.toLowerCase() === this.currentProduct?.toLowerCase()) {\n pageNumber = headerPrduct.ProductIndex;\n }\n });\n }\n if ((this.deviceService.isMobile || this.deviceService.isTouch) && windowObj.clientConfig.vnBottomNav !== undefined) {\n windowObj.clientConfig.vnBottomNav.items.forEach((bottmNavItems: any) => {\n if (bottmNavItems?.name?.toLowerCase() === this.currentProduct?.toLowerCase()) {\n pageNumber = bottmNavItems.ProductIndex;\n }\n });\n }\n let sglProduct = this.currentProduct ? this.currentProduct : gameLaunchParam?.currentProduct;\n sglProduct = sglProduct ? sglProduct : 'games'; // if current product is not available by default consider games as product\n const isLiveConfig = gameLaunchParam?.isLive && gameConfig.desktopChannelIds.indexOf(channelId) > -1;\n let enableSGLForPokerOrOdr = this.configProviderService.provideGameConfig()?.enableSGLForPokerOrOdr; // to enable SGL for poker/casinowodr apps\n this.isPokerOROdr =\n (enableSGLForPokerOrOdr?.isPokerApp && this.casinoCookieService.isPokerApp()) ||\n (enableSGLForPokerOrOdr?.isOdr && this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR));\n if ((this.casinoManager.isSingleHostLobbyType(gameLaunchParam?.game?.lobbyType, sglProduct) || this.isPokerOROdr) && !isLiveConfig) {\n url = this.singleGameLaunchUrlFormation(\n gameConfig,\n gameLaunchParams,\n gameLaunchParam,\n channelId,\n product,\n pageNumber,\n brandId,\n ssoToken,\n frontendId,\n currencyCode,\n vnChannel,\n geoPollingUrl,\n isGeoGuardEnabled,\n );\n } else {\n const mobileUrlParamArray: Array<string> = [\n ssoToken,\n gameLaunchParams.internalGameName,\n gameLaunchParams.languageCode,\n channelId,\n product,\n gameLaunchParams.gameHomeUrl,\n encodeURIComponent(pingUrl),\n encodeURIComponent(accountUrl),\n encodeURIComponent(depositRedirectUrl),\n encodeURIComponent(gameLaunchParams.responsibleGamingUrl),\n brandId,\n gameLaunchParam.game.lobbyType,\n gameConfig.win.casinoEnvironment,\n gameLaunchParams.userHostAddress,\n gameConfig.win.keepAliveInterval,\n historyUrl,\n encodeURIComponent(gameLaunchParams.generalTermsAndConditionsUrl),\n encodeURIComponent(gameLaunchParams.casinoHomeUrl),\n gameLaunchParam.mode,\n gameLaunchParam.isDemoLaunch,\n encodeURIComponent(indexFilePath),\n gameLaunchParams.portalLanguage.routeValue,\n encodeURIComponent(geoPollingUrl),\n isGeoGuardEnabled,\n frontendId,\n pageNumber,\n gameLaunchParam.gamePosition + 1,\n vnChannel,\n ];\n\n const desktopUrlParamArray: Array<string> = [\n gameLaunchParams.languageCode,\n gameLaunchParams.internalGameName,\n product,\n channelId,\n gameLaunchParams.languageCode,\n currencyCode,\n ssoToken,\n 'lobby',\n pageNumber,\n gameLaunchParam.gamePosition + 1,\n '1024',\n '770',\n encodeURIComponent(gameLaunchParams.casinoNoLanguageBaseUrl),\n enableMultigameView,\n egvFavourites.toString(),\n brandId,\n frontendId,\n isFavGame.toString(),\n gameLaunchParams.portalLanguage.routeValue,\n gameConfig.win.keepAliveInterval,\n encodeURIComponent(pingUrl),\n launchType,\n gameLaunchParams.gameHomeUrl,\n gameLaunchParam.game.lobbyType,\n vnChannel,\n ];\n if (gameConfig.desktopChannelIds.indexOf(channelId) > -1) {\n // todo ---- check for live games\n if (gameLaunchParam.fetchLiveGameIFrame) {\n defaultUrlPattern = gameConfig.desktopMGSLiveGameLaunchURL;\n url = this.format(defaultUrlPattern, desktopUrlParamArray);\n } else if (!response.isLiveGame) {\n defaultUrlPattern = gameConfig.desktopMGSGameLaunchUrl.defaultUrlPattern;\n url = this.format(defaultUrlPattern, desktopUrlParamArray);\n } else {\n defaultUrlPattern = gameConfig.desktopMGSLiveGameLaunchURL;\n url = this.format(defaultUrlPattern, desktopUrlParamArray);\n }\n } else {\n if (gameLaunchParam.gameLaunchedFrom == 'LotteryGameIframe') {\n defaultUrlPattern = gameConfig.lottoMGSGameLaunchUrl.defaultUrlPattern;\n } else {\n defaultUrlPattern = gameConfig.mgsGameLaunchUrl.defaultUrlPattern;\n }\n url = this.format(defaultUrlPattern, mobileUrlParamArray);\n }\n }\n if (gameLaunchQueryParams) {\n if (gameConfig?.enableSlotRaceParams && (gameLaunchParam?.promoId || gameLaunchParam?.slotUniqueId)) {\n gameLaunchQueryParams.promoId = gameLaunchParam.promoId;\n gameLaunchQueryParams.slotUniqueId = gameLaunchParam.slotUniqueId;\n }\n\n if (gameLaunchQueryParams.clickTimeStamp) {\n gameLaunchQueryParams.clickTimeStamp = gameLaunchParam.clickTimeStamp;\n }\n if (gameLaunchQueryParams.launchSource) {\n if (gameLaunchParam.launchSource) {\n gameLaunchQueryParams.launchSource = gameLaunchParam.launchSource;\n } else {\n gameLaunchQueryParams.launchSource = this.launchSource();\n }\n }\n Object.keys(gameLaunchQueryParams).forEach((key: string) => {\n url = this.appendQueryString(url, key, gameLaunchQueryParams[key]);\n });\n }\n if (advanceGameDataConfig.enableAdvanceGameData) {\n url = this.advanceGameDataService.appendAdvanceGameDataUrl(url, channelId);\n }\n url = url.split('//').join('/');\n url = this.encodeQueryParam(url, 'bgColor');\n url = this.addHost(url);\n if (this.configProviderService?.gameConfig?.passNativeAppCookieToGameLaunch) {\n const nativeApp: string = '_nativeApp';\n const nativeAppCookie = this.cookieService.get('NativeApp');\n if (nativeAppCookie != null) url = this.appendQueryString(url, nativeApp, nativeAppCookie);\n }\n //console.log('gamelaunchurl:' + url);\n return url;\n }\n\n singleGameLaunchUrlFormation(\n gameConfig: any,\n gameLaunchParams: any,\n gameLaunchParam: GameLaunch,\n channelId: string,\n product: string,\n pageNumber: number,\n brandId: string,\n ssoToken: string | null,\n frontendId: string,\n currencyCode: string | null,\n vnChannel: string | null,\n geoPollingUrl: string,\n isGeoGuardEnabled: boolean,\n ) {\n let url: string;\n let defaultUrlPattern: any;\n let isDesktopContainer: boolean = gameConfig.desktopChannelIds.indexOf(channelId) > -1;\n let coinGame: boolean = gameLaunchParam?.game?.lobbyType?.toLowerCase() == gameConfig?.arcadeLobbyType?.toLowerCase();\n gameLaunchParams.gameHomeUrl = this.isPokerOROdr\n ? gameConfig?.backToPortalLobby\n ? encodeURIComponent(gameConfig?.backToPortalLobby)\n : gameLaunchParams.gameHomeUrl\n : gameLaunchParams.gameHomeUrl;\n\n let singleGameUrlParamArray: Array<any> = [\n gameLaunchParams.internalGameName,\n gameLaunchParams.languageCode,\n channelId,\n product,\n pageNumber,\n gameLaunchParam.gamePosition + 1,\n brandId,\n gameLaunchParam.game.lobbyType,\n gameLaunchParams.userHostAddress,\n gameLaunchParam.mode,\n ssoToken,\n gameLaunchParams.gameHomeUrl,\n gameLaunchParams.portalLanguage.routeValue,\n frontendId,\n currencyCode,\n 'lobby',\n isDesktopContainer,\n coinGame,\n vnChannel,\n encodeURIComponent(geoPollingUrl),\n isGeoGuardEnabled,\n ];\n defaultUrlPattern = gameConfig?.singleGameLaunchUrl?.defaultUrlPattern;\n url = this.format(defaultUrlPattern, singleGameUrlParamArray);\n return url;\n }\n\n format(content: string, array: Array<string>) {\n let theString = content;\n for (let i = 0; i < content.length; i++) {\n const regEx = new RegExp('\\\\{' + i + '\\\\}', 'gm');\n if (array[i] != undefined) {\n theString = theString.replace(regEx, array[i]);\n } else {\n theString = theString.replace(regEx, '');\n }\n }\n return theString;\n }\n getPingUrlWithToken() {\n const userToken = this.claimsConfig.get('userToken');\n const sessionToken = this.claimsConfig.get('sessionToken');\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.apiPathsHelperService.transformApi(\n apiPathsConfig.ping['pgUrlWithToken'],\n this.urlUtilityService.getApiBaseUrl(),\n userToken,\n sessionToken,\n );\n }\n getAccountUrl() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.urlUtilityService.getApiBaseUrl() + apiPathsConfig.gameData['myCasino'];\n }\n getHistoryUrl() {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const gameLogUrl = casinoConfig.gameLogUrl;\n if (gameLogUrl == null) {\n return null;\n } else {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return encodeURIComponent(this.urlUtilityService.getApiBaseUrl() + apiPathsConfig.gameData['gameLogs']);\n }\n }\n getIndexFilePath() {\n const gameConfig = this.configProviderService.provideGameConfig();\n const indexFilePath: string = gameConfig.win.winGameLaunchFile;\n return indexFilePath.substring(0, indexFilePath.lastIndexOf('/'));\n }\n addHost(url: string) {\n const gameConfig = this.configProviderService.provideGameConfig();\n if (url.indexOf('http') != -1) {\n url = gameConfig.host + '/' + url;\n }\n return url;\n }\n appendQueryString(url: string, key: string, value: string): string {\n if (url.indexOf('?') > -1) {\n url += '&' + key + '=' + value;\n } else {\n url += '?' + key + '=' + value;\n }\n return url;\n }\n\n launchSource() {\n const nativeAppCookie = this.cookieService.get('NativeApp');\n if (nativeAppCookie && (nativeAppCookie?.toLowerCase() === 'pokervc' || nativeAppCookie?.toLowerCase() === 'pokermc')) {\n return 'poker_portal';\n } else if (nativeAppCookie?.toLowerCase() === 'poker') {\n return 'pk_pc_native';\n }\n return 'casino_portal';\n }\n\n setCurrentProduct(routeCurrentProduct: string) {\n this.currentProduct = routeCurrentProduct;\n }\n\n getCurrentProduct() {\n return this.currentProduct;\n }\n\n encodeQueryParam(url: string, key: string): string {\n const queryParamValue = this.getQueryParameter(url, key);\n if (queryParamValue) {\n let updatedUrl = this.removeParam(url, key);\n updatedUrl = this.appendQueryString(updatedUrl, key, encodeURIComponent(queryParamValue));\n return updatedUrl;\n }\n return url;\n }\n\n getQueryParameter(url: string, key: string): string {\n const parameters = new URLSearchParams(url);\n return parameters.get(key) || '';\n }\n\n removeParam(url: string, key: string) {\n let splittedURL = url.split('?')[0];\n let params_arr: string[] = [];\n const queryString = url.indexOf('?') !== -1 ? url.split('?')[1] : '';\n if (queryString !== '') {\n params_arr = queryString.split('&');\n for (let i = params_arr.length - 1; i >= 0; i -= 1) {\n const param = params_arr[i].split('=')[0];\n if (param === key) {\n params_arr.splice(i, 1);\n }\n }\n if (params_arr?.length > 0) {\n splittedURL = splittedURL + '?' + params_arr.join('&');\n }\n }\n return splittedURL;\n }\n\n getInvokerProduct(product: string) {\n const modularSettingsConfig = this.configProviderService.provideModularSettingsConfig();\n const productMap = modularSettingsConfig.productMap;\n const invokerProduct = productMap.filter((af: any) => af?.product?.toLowerCase() === product?.toLowerCase());\n return invokerProduct[0].invokerProduct.toUpperCase();\n }\n\n updateDepositRedirectUrl(depositRedirectUrl: string): string {\n let depositUrl: string = decodeURIComponent(depositRedirectUrl);\n if (depositUrl) {\n let parentUrl = depositUrl.slice(depositUrl.indexOf('parentUrl=') + 'parentUrl='.length);\n parentUrl = this.appendQueryString(parentUrl, 'returnUrl', window.location.href);\n parentUrl = parentUrl.replace('/?', '?');\n depositUrl = this.removeParam(depositUrl, 'parentUrl');\n depositUrl = this.appendQueryString(depositUrl, 'parentUrl', parentUrl);\n }\n return depositUrl;\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalSearchHelperService {\n presentationBootstraped: EventEmitter<any> = new EventEmitter<any>();\n contextAvailable: EventEmitter<any> = new EventEmitter<any>();\n\n launchGlobalSearch() {\n dispatchEvent(new CustomEvent('gs:presentation:launchsearch', { detail: { launchChannel: 'desktop', launchedFrom: 'sub-nav' } }));\n }\n\n closeGlobaSearch() {\n dispatchEvent(new CustomEvent('gs:presentation:closesearch', { detail: { closedFrom: 'close', launchedFrom: 'sub-nav' } }));\n }\n\n registerEventHandlers() {\n addEventListener('gs:search:service:context:result', this.contextResultEventHandler);\n addEventListener('gs:presentation:bootstrapped', this.presentationBootstrappedEventHandler);\n }\n\n deregisterEvents() {\n removeEventListener('gs:search:service:context:result', this.contextResultEventHandler);\n removeEventListener('gs:presentation:bootstrapped', this.presentationBootstrappedEventHandler);\n }\n\n fetchContext() {\n dispatchEvent(new CustomEvent('gs:search:service:context:fetch'));\n }\n\n private readonly contextResultEventHandler = (messageEvent: CustomEventInit) => {\n this.contextAvailable.emit(messageEvent.detail);\n dispatchEvent(new CustomEvent('gs:productstub:entrypoint:active', { detail: { activeFrom: 'sub-nav' } }));\n };\n\n private readonly presentationBootstrappedEventHandler = (messageEvent: CustomEventInit) => {\n this.presentationBootstraped.emit(messageEvent.detail);\n dispatchEvent(new CustomEvent('gs:productstub:entrypoint:active', { detail: { activeFrom: 'sub-nav' } }));\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MonitorService {\n active: boolean = false;\n portalInfoAvailable: boolean = false;\n portalInfo: any = null;\n MONITOR_INACTIVE: string = 'monitor:inactive';\n\n private monitorActiveStatus = new BehaviorSubject<string>('');\n monitorActiveObservable: Observable<string> = this.monitorActiveStatus.asObservable();\n\n setMonitorActiveStatus(status: string) {\n this.monitorActiveStatus.next(status);\n }\n\n activate() {\n this.active = true;\n return true;\n }\n deactivate() {\n this.active = false;\n this.setMonitorActiveStatus(this.MONITOR_INACTIVE);\n return true;\n }\n\n isActive() {\n return this.active;\n }\n // NFR - Services optimization - Remove\n isPortalInfoAvailable() {\n return this.portalInfoAvailable;\n }\n // NFR - Services optimization - Remove\n getPortalInfo() {\n return this.portalInfo;\n }\n\n managePortalInfo(response: any, success: any) {\n if (!this.active) {\n return;\n }\n\n let info;\n\n if (response) {\n if (success && response.portalInfo) {\n info = response.portalInfo;\n } else if (response.data && response.data.data && response.data.data.portalInfo) {\n info = response.data.data.portalInfo;\n }\n }\n\n if (!info) {\n info = {};\n }\n if (info.statusCode == null) {\n info.statusCode = -1;\n }\n if (!info.statusMessage) {\n info.statusMessage = 'Result unknown. Unable to receive Portal Info from server';\n info.isProtected = false;\n }\n\n this.portalInfo = info;\n this.portalInfoAvailable = true;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { MessageQueueService, NativeAppService, NativeEvent, UserService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoApiService } from './casino-api.service';\nimport { GameLaunchUrlFormationService } from './gamelaunch-url-formation.service';\nimport { OpenLoginDialog } from './open-login-dialog-v6';\n\nclass NativeAppFeatures {\n topBar: string;\n footer: string;\n navigationBar: string;\n fixednav: string;\n nativeStyle: string;\n constructor() {\n this.topBar = 'topBar';\n this.footer = 'footer';\n this.navigationBar = 'navigationBar';\n this.fixednav = 'fixednav';\n this.nativeStyle = 'nativeStyle';\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NativeAppHelperService {\n nativeAppFeatures: NativeAppFeatures = new NativeAppFeatures();\n\n constructor(\n private nativeApplication: NativeAppService,\n private configProviderService: ConfigProviderService,\n private messageQueue: MessageQueueService,\n private casinoapi: CasinoApiService,\n private user: UserService,\n private loginDialog: OpenLoginDialog,\n private gameLaunchUrlFormationService: GameLaunchUrlFormationService,\n ) {}\n\n isNativeFeatureEnabled(featureName: string) {\n switch (featureName) {\n case this.nativeAppFeatures.topBar:\n case this.nativeAppFeatures.footer:\n case this.nativeAppFeatures.navigationBar:\n if (!this.nativeApplication.isNativeApp || this.nativeApplication.isNativeWrapper) {\n return true;\n }\n break;\n case this.nativeAppFeatures.fixednav:\n if (!this.nativeApplication.isNativeApp && !this.nativeApplication.isNativeWrapper) {\n return true;\n }\n break;\n case this.nativeAppFeatures.nativeStyle:\n if (this.nativeApplication.isNativeApp) {\n return true;\n }\n break;\n }\n return false;\n }\n\n handleNativeGameLaunch(params: any, gameLaunchModel: any, callback?: any): void {\n if (this.user.isAuthenticated) {\n this.launchGameForNativeApp(params, gameLaunchModel, callback);\n } else {\n this.loginDialog.open();\n }\n }\n\n launchGameForNativeApp(params: any, gameLaunchModel: any, callback?: any): void {\n const globalConfig = this.configProviderService.provideGlobalConfig();\n this.getLaunchData(params).subscribe(\n (response) => {\n if (response) {\n if (response.redirect && response.redirect.indexOf('/unfinished') > -1) {\n const message = globalConfig.messages['UnfinishedGames'];\n if (message) {\n this.messageQueue.addError(message);\n }\n } else {\n const redirectUrl = this.gameLaunchUrlFormationService.launchMGSGame(response, gameLaunchModel);\n response.redirect = redirectUrl;\n if (callback) {\n const callbackResponse = {\n isError: false,\n errorMessage: '',\n gameLaunchUrl: redirectUrl,\n };\n callback(callbackResponse);\n } else {\n this.raiseNativeGameLaunchEvent(response.redirect);\n }\n }\n }\n },\n (error) => {\n if (error && error.data && error.data.common && error.data.common.messages && error.data.common.messages[0]) {\n if (callback) {\n const callbackResponse = {\n isError: true,\n errorMessage: error.data.common.messages[0],\n gameLaunchUrl: '',\n };\n callback(callbackResponse);\n } else {\n this.messageQueue.addError(error.data.common.messages[0]);\n }\n }\n },\n );\n }\n\n getLaunchData(params: any): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.casinoapi.get(apiPathsConfig.gameData['gameLaunchData'], params);\n }\n\n raiseNativeGameLaunchEvent(gameLaunchUrl: string): void {\n const event: NativeEvent = {\n eventName: 'Native_Game_Launch',\n parameters: {\n gameLaunchUrl: gameLaunchUrl,\n },\n };\n this.nativeApplication.sendToNative(event);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { GoToOptions, NavigationService, Page, WindowRef } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoIFrameOverlayService } from './casino-iframe-overlay.service';\nimport { CasinoWidgetService } from './casino-widget.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavigatorService {\n firstLoadFlag: number = 2;\n goingBack: boolean = false;\n prevUrl: string;\n returnUrl: string;\n historySupport: boolean;\n lastClicked: any;\n showSpinnerForExternalNavigation: boolean | undefined = true;\n loadingIndicator: any;\n defaultNavigateOptions: GoToOptions = {\n forceReload: false,\n appendReferrer: false,\n replace: false,\n showSpinnerForExternalNavigation: true,\n };\n\n constructor(\n private navigation: NavigationService,\n private configProviderService: ConfigProviderService,\n private windowRef: WindowRef,\n private m2Page: Page,\n private casinoWidgetService: CasinoWidgetService,\n private casinoIFrameOverlayService: CasinoIFrameOverlayService,\n ) {}\n\n detailPage(gameId: string) {\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n const window = this.windowRef.nativeWindow;\n return window.location.protocol + '://' + window.location.host + mcPageConfig.prefix + '/gamedetail/' + gameId + window.location.search;\n }\n demoPlayPage(gameId: string) {\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n const window = this.windowRef.nativeWindow;\n return window.location.protocol + '://' + window.location.host + mcPageConfig.prefix + '/demoplay/' + gameId + window.location.search;\n }\n\n publicPage(publicPageName: string, options: GoToOptions, portalPage: boolean) {\n let appendUrlPrefix: any = 'lang';\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n options = Object.assign({}, this.defaultNavigateOptions, options);\n let url: string;\n if (portalPage) {\n url = mcPageConfig.portalUrl + '/p/' + publicPageName;\n appendUrlPrefix = false;\n } else {\n url = 'p/' + publicPageName;\n }\n this.navigate(url, options, appendUrlPrefix);\n }\n\n navigate(url: string, options?: GoToOptions, appendUrlPrefix?: any, statusCode?: number, errorMessages?: any[]) {\n options = Object.assign({}, this.defaultNavigateOptions, options);\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n this.showSpinnerForExternalNavigation = this.defaultNavigateOptions.showSpinnerForExternalNavigation;\n if (url.indexOf('http') === -1) {\n if (url.charAt(0) !== '/') {\n url = '/' + url;\n }\n if (appendUrlPrefix === true) {\n url = mcPageConfig.prefix + url;\n } else if (appendUrlPrefix === 'lang') {\n url = '/' + this.m2Page.lang + url;\n }\n }\n if (this.casinoWidgetService.isCasinoWidget() || this.casinoIFrameOverlayService.isOverLayOnAProduct()) {\n if (statusCode === 0) {\n this.casinoWidgetService.postMessageToParent('GameLaunch', { promptLogin: false, redirectUrl: url });\n } else if (statusCode === -1) {\n this.casinoWidgetService.postMessageToParent('Error', { promptLogin: false, redirectUrl: url, errorMessages: errorMessages });\n }\n } else {\n this.navigation.goTo(url, options);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SearchSectionService {\n private isMobileSearchVisible = new BehaviorSubject<boolean>(false);\n private isDesktopSearchGYMLVisible = new BehaviorSubject<boolean>(false);\n searchVisibilityStatus: Observable<boolean> = this.isMobileSearchVisible.asObservable();\n searchGYMLVisibilityStatus: Observable<boolean> = this.isDesktopSearchGYMLVisible.asObservable();\n\n setSearchVisibility(isVisible: boolean) {\n this.isMobileSearchVisible.next(isVisible);\n }\n // NFR - Services optimization - Remove\n setDesktopSearchGYMLVisibility(isDesktopSearchGYMLVisible: boolean) {\n this.isDesktopSearchGYMLVisible.next(isDesktopSearchGYMLVisible);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CookieService,\n Message,\n MessageLifetime,\n MessageQueueService,\n MessageType,\n NativeAppService,\n NavigationService,\n ProductHomepagesConfig,\n UserService,\n WindowRef,\n} from '@frontend/vanilla/core';\n\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoApiService } from './casino-api.service';\nimport { CasinoManager } from './casino-manager.service';\nimport { GameLaunchUrlFormationService } from './gamelaunch-url-formation.service';\n\nclass VCConstService {\n public static readonly CASINO_OPEN_GAME_URL: string = 'CASINO_OPEN_GAME_URL';\n public static readonly CASINO_OPEN_GAME: string = 'CASINO_OPEN_GAME';\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VCClientService {\n constructor(\n private windowRef: WindowRef,\n private api: CasinoApiService,\n private configProviderService: ConfigProviderService,\n private messageQueue: MessageQueueService,\n private user: UserService,\n private cookieService: CookieService,\n private navigationService: NavigationService,\n private casinoManager: CasinoManager,\n private gameLaunchUrlFormationService: GameLaunchUrlFormationService,\n private lhProductHomepagesConfig: ProductHomepagesConfig,\n private nativeAppService: NativeAppService,\n private gameManagerService: GameManagerService,\n ) {}\n\n handleVCGameLaunch(gameLaunchParam: any, isNotLobby: boolean, callback?: any) {\n if (this.user.isAuthenticated) {\n this.launchGameForVC(gameLaunchParam, isNotLobby, callback);\n } else {\n this.raiseNativeVCEvent(gameLaunchParam.game.gameId, gameLaunchParam.returnUrl, '');\n }\n }\n\n launchGameForVC(gameLaunchParam: any, isNotLobby: boolean, callback?: any) {\n const globalConfig = this.configProviderService.provideGlobalConfig();\n //todo: controller side\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.gameData['gameLaunchData'], { gameId: gameLaunchParam.game.gameId, skipUnfinGame: true }).subscribe(\n (response: any) => {\n if (response) {\n if (response.redirect && response.redirect.indexOf('/unfinished') > -1) {\n const message = globalConfig.messages['UnfinishedGames'];\n if (message) {\n this.messageQueue.addError(message);\n }\n } else {\n const redirectUrl = this.gameLaunchUrlFormationService.launchMGSGame(response, gameLaunchParam);\n response.redirect = redirectUrl;\n if (callback) {\n const callbackResponse = {\n isError: false,\n errorMessage: '',\n gameLaunchUrl: redirectUrl,\n };\n callback(callbackResponse);\n } else {\n this.raiseNativeVCEvent(gameLaunchParam.game.gameId, gameLaunchParam.returnUrl, response.redirect, isNotLobby);\n }\n }\n }\n },\n (error) => {\n if (\n error.data &&\n error.data.common &&\n error.data.common.messages &&\n error.data.common.messages.length > 0 &&\n error.data.common.messages[0]\n ) {\n if (callback) {\n const callbackResponse = {\n isError: true,\n errorMessage: error.data.common.messages[0].html,\n gameLaunchUrl: '',\n };\n callback(callbackResponse);\n } else {\n this.showErrorMessageQueue(error.data.common.messages[0].html, error?.data?.redirect);\n }\n } else if (error && error.common && error.common.messages && error.common.messages.length > 0 && error.common.messages[0]) {\n if (callback) {\n const callbackResponse = {\n isError: true,\n errorMessage: error.common.messages[0].html,\n gameLaunchUrl: '',\n };\n callback(callbackResponse);\n } else {\n this.showErrorMessageQueue(error.common.messages[0].html, error?.redirect);\n }\n }\n },\n );\n }\n showErrorMessageQueue(errorText: string, redirectUrl: any) {\n this.messageQueue.clear();\n const message: Message = {\n html: errorText,\n type: MessageType.Information,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n const homePageUrl = this.casinoManager.getGameHomeUrl();\n setTimeout(() => {\n this.messageQueue.clear();\n if (redirectUrl) this.navigationService.goTo(redirectUrl);\n else this.navigationService.goTo(homePageUrl);\n }, 5000);\n }\n raiseNativeVCEvent(gameId: string, returnUrl: string, launchUrl: string, isNotLobby: boolean = false, gameTitle: string = ''): void {\n const nativeGameLaunchConfig = this.configProviderService.provideNativeGameLaunchConfig();\n const nativeAppCookie = this.cookieService.get('NativeApp');\n const nativeDis: any = this.windowRef.nativeWindow.external['NativeDispatch' as keyof typeof this.windowRef.nativeWindow.external];\n if (nativeGameLaunchConfig.isOnlyGameidLaunchEvent) {\n const request: any = {\n CASINO_OPEN_GAME: gameId,\n gameName: gameId,\n clickTimeStamp: this.getQueryParameter(launchUrl, 'clickTimeStamp'),\n launchSource: this.getQueryParameter(launchUrl, 'launchSource'),\n lobbyType: this.casinoManager.getCurrentLobby(),\n };\n isNotLobby = !isNotLobby ? this.checkPokerVCOutsideCasinoLobby(returnUrl) : true;\n if (isNotLobby && nativeAppCookie?.toLowerCase() === 'pokervc') {\n const eventName: string = 'app:GAME_NAME=' + gameId + '#' + gameTitle;\n nativeDis(eventName, JSON.stringify(request));\n //console.log('app:GAME_NAME= event rised from GameidLaunchEvent');\n } else {\n const gameDetails: any = this.gameManagerService.getGameInfo(gameId);\n const vendorsList = nativeGameLaunchConfig.vendorsforShouldOverrideUserAgent;\n if (gameDetails && vendorsList && vendorsList.indexOf(gameDetails.provider) > -1) {\n request.shouldOverrideUserAgent = '1';\n }\n if (nativeGameLaunchConfig.isNewMacEvent) {\n this.nativeAppService.sendToNative({\n eventName: VCConstService.CASINO_OPEN_GAME,\n parameters: request,\n });\n } else {\n nativeDis(VCConstService.CASINO_OPEN_GAME, JSON.stringify(request));\n }\n //console.log('CASINO_OPEN_GAME event rised from GameidLaunchEvent');\n }\n } else {\n const request: any = {\n CASINO_OPEN_GAME_URL: launchUrl,\n casinoEvents: {\n CASINO_OPEN_GAME: launchUrl,\n },\n gameName: gameId,\n height: '680',\n width: '960',\n };\n isNotLobby = !isNotLobby ? this.checkPokerVCOutsideCasinoLobby(returnUrl) : true;\n if (isNotLobby && nativeAppCookie?.toLowerCase() === 'pokervc') {\n const eventName: string = 'app:GAME_NAME=' + gameId + '#' + gameTitle;\n nativeDis(eventName, JSON.stringify(request));\n //console.log('app:GAME_NAME= event rised with GameDetails');\n } else {\n const gameDetails: any = this.gameManagerService.getGameInfo(gameId);\n const vendorsList = nativeGameLaunchConfig.vendorsforShouldOverrideUserAgent;\n if (gameDetails && vendorsList && vendorsList.indexOf(gameDetails.provider) > -1) {\n request.shouldOverrideUserAgent = '1';\n }\n if (nativeGameLaunchConfig.isNewMacEvent) {\n this.nativeAppService.sendToNative({\n eventName: VCConstService.CASINO_OPEN_GAME_URL,\n parameters: request,\n });\n } else {\n nativeDis(VCConstService.CASINO_OPEN_GAME_URL, JSON.stringify(request));\n }\n //console.log('CASINO_OPEN_GAME event rised with GameDetails');\n }\n }\n if (returnUrl) {\n this.navigationService.goTo(returnUrl);\n }\n return;\n }\n\n private getQueryParameter(gameLaunchUrl: string, key: string): string | null {\n const parameters = new URLSearchParams(gameLaunchUrl);\n return parameters.get(key);\n }\n\n isPokerVC() {\n const nativeAppCookie = this.cookieService.get('NativeApp');\n return nativeAppCookie && (nativeAppCookie?.toLowerCase() === 'pokervc' || nativeAppCookie?.toLowerCase() === 'pokermc');\n }\n\n checkPokerVCOutsideCasinoLobby(returnUrl: string): boolean {\n if (returnUrl != '') {\n const casinoURL = this.lhProductHomepagesConfig.casino;\n const indexOfCasinoURL = returnUrl.indexOf(casinoURL);\n if (indexOfCasinoURL == -1) {\n return true;\n }\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport {\n AppInfoConfig,\n ClaimsService,\n CookieService,\n GoToOptions,\n LoadingIndicatorService,\n Logger,\n Message,\n MessageLifetime,\n MessageQueueClearOptions,\n MessageQueueService,\n MessageType,\n NativeAppService,\n NavigationService,\n Page,\n ProductHomepagesConfig,\n ProductService,\n UserService,\n} from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { EmbeddedGamePopupComponent } from '../embedded-game-popup/embedded-game-popup.component';\nimport { GameDetailComponent } from '../game-detail/game-detail.component';\nimport { GeolocationActivatorService } from '../geolocation/services/activator.service';\nimport { GeolocationCheckService } from '../geolocation/services/geolocation-check.service';\nimport { GeoLocationValidationService } from '../geolocation/services/geolocation-validation.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { TrackGame } from '../public-api';\nimport { UtilityService } from '../shared/utility.service';\nimport { SlotRacesService } from '../slot-races/shared/slot-races.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { AdvanceGameDataService } from './advance-game-data.service';\nimport { ApiPathsHelperService } from './api-paths-helper-service';\nimport { CacheManagerService } from './cache-manager.service';\nimport { CasinoCoreNpmParamsService } from './casino-core-npm-params.service';\nimport { CasinoIFrameOverlayService } from './casino-iframe-overlay.service';\nimport { CasinoManager } from './casino-manager.service';\nimport { CasinoWidgetService } from './casino-widget.service';\nimport { ConstService } from './const.service';\nimport { CookieService as CasinoCookieService, ODR_NAME } from './cookie.service';\nimport { FavouriteService } from './favourite.service';\nimport { GameLaunchPlaces } from './game-launch-places.service';\nimport { GameLaunchTrackingService } from './game-launch-tracking.service';\nimport { GameLaunchUrlFormationService } from './gamelaunch-url-formation.service';\nimport { GlobalSearchHelperService } from './globalsearch-helper.service';\nimport { InvokerProductService } from './invoker-product.service';\nimport { GameLaunch } from './models/gamelaunch.model';\nimport { MonitorService } from './monitor.service';\nimport { NativeApiService } from './nativeapi.service';\nimport { NativeAppHelperService } from './nativeapphelper.service';\nimport { NavigatorService } from './navigator.service';\nimport { OpenLoginDialog } from './open-login-dialog-v6';\nimport { SearchSectionService } from './search-section.service';\nimport { UnfinishedGamesService } from './unfinished-games-service';\nimport { VCClientService } from './vc-client.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoCoreGamelaunchService {\n OPEN_URL: string = 'OPEN_URL';\n navItems: any;\n isTouch: boolean;\n gameObj: any;\n gameModel: GameLaunch;\n\n customRecommendationType: string | undefined;\n private _gameLaunchInProgress: boolean;\n private updateFreespinsSubject = new BehaviorSubject<boolean>(false);\n updateFreespinsObs: Observable<boolean> = this.updateFreespinsSubject.asObservable();\n private gameDetailPageSubject = new BehaviorSubject<any>(null);\n gameDetailPageObservable: Observable<any> = this.gameDetailPageSubject.asObservable();\n private stopAudioSubject = new BehaviorSubject<boolean | null>(null);\n stopAudioObservable: Observable<boolean | null> = this.stopAudioSubject.asObservable();\n messageQueuePublisher = new BehaviorSubject<any>(null);\n messageQueueObservable: Observable<boolean> = this.messageQueuePublisher.asObservable();\n validationService: any;\n gameNotAvailableTimeOutData: any;\n delayAfterRefreshInterval: any;\n millisecondsToDisplayInterval: any;\n showDesktopSearch: boolean = true;\n showGSInDesktopSearch: boolean = true;\n loadingIndicatorHandler: any = null;\n navItemIndex: number = 0;\n isSingleMessage: boolean = true;\n\n generateGuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n\n constructor(\n private configProviderService: ConfigProviderService,\n private claimsConfig: ClaimsService,\n private m2NativeApp: NativeAppService,\n private user: UserService,\n private messageQueue: MessageQueueService,\n private casinoLobbyService: CasinoLobbyService,\n private api: PlatformApiService,\n private navigation: NavigationService,\n private casinoWidgetService: CasinoWidgetService,\n private route: ActivatedRoute,\n private gameLaunchPlaces: GameLaunchPlaces,\n private productHomepagesConfig: ProductHomepagesConfig,\n private navigator: NavigatorService,\n private cookies: CookieService,\n private nativeApiService: NativeApiService,\n private vCClientService: VCClientService,\n private nativeAppHelperService: NativeAppHelperService,\n private monitorService: MonitorService,\n private casinoIFrameOverlayService: CasinoIFrameOverlayService,\n private geolocationCheckService: GeolocationCheckService,\n private loginDialog: OpenLoginDialog,\n private casinoManager: CasinoManager,\n private dialog: MatDialog,\n private cacheManagerService: CacheManagerService,\n private advanceGameDataService: AdvanceGameDataService,\n private gameLaunchUrlFormationService: GameLaunchUrlFormationService,\n private urlUtility: UrlUtilityService,\n private unfinishedGamesService: UnfinishedGamesService,\n private favouriteService: FavouriteService,\n private invokerProductService: InvokerProductService,\n private readonly geolocationActivator: GeolocationActivatorService,\n private slotRacesService: SlotRacesService,\n private router: Router,\n private apiPathsHelperService: ApiPathsHelperService,\n private loadingIndicatorService: LoadingIndicatorService,\n private casinoNpmParamsService: CasinoCoreNpmParamsService,\n private geoLocationValidation: GeoLocationValidationService,\n private appInfoConfig: AppInfoConfig,\n private page: Page,\n private searchSection: SearchSectionService,\n private gshService: GlobalSearchHelperService,\n private gameLaunchTrackingService: GameLaunchTrackingService,\n private logger: Logger,\n private casinoCookieService: CasinoCookieService,\n private utilityService: UtilityService,\n private productService: ProductService,\n private gameManagerService: GameManagerService,\n ) {}\n\n launchGame(gameLaunchParam: GameLaunch, callback?: any) {\n this.stopAudioSubject.next(true);\n const gameConfig = this.configProviderService.provideGameConfig();\n this.gameNotAvailableTimeOutData = gameConfig.gameNotAvailableTimeOut;\n if (this.gameNotAvailableTimeOutData && this.gameNotAvailableTimeOutData[0]) {\n this.delayAfterRefreshInterval = this.gameNotAvailableTimeOutData[0].delayAfterRefresh;\n this.millisecondsToDisplayInterval = this.gameNotAvailableTimeOutData[0].millisecondsToDisplay;\n }\n if (gameConfig.enableSpinnerOnGameLaunch && this.user.isAuthenticated) {\n if (this._gameLaunchInProgress) {\n return;\n }\n this._gameLaunchInProgress = true;\n gameLaunchParam.loadingIndicatorHandler = this.loadingIndicatorService.start();\n }\n this.messageQueue.clear();\n this.isTouch = gameLaunchParam.isTouch;\n this.gameObj = gameLaunchParam.game;\n this.gameObj.returnUrl = gameLaunchParam.returnUrl;\n this.customRecommendationType = gameLaunchParam.recommendationType;\n const featureConfig = this.configProviderService.provideFeaturesConfig();\n this.showDesktopSearch = featureConfig.showDesktopSearch;\n this.showGSInDesktopSearch = featureConfig.enableGSInRegularSearch;\n const advanceGameDataConfig = this.configProviderService.provideAdvanceGameDataConfig();\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n gameLaunchParam.mode = gameLaunchParam.isDemoLaunch ? 'play' : gameConfig.gameMode;\n if (!gameLaunchParam.gameSection) {\n gameLaunchParam.gameSection =\n gameLaunchParam.gameLaunchedFrom !== undefined ? gameLaunchParam.gameLaunchedFrom : gameLaunchParam.categoryType;\n }\n gameLaunchParam.game.isDemo = gameLaunchParam.isDemoLaunch;\n const forceGameLaunchParam = gameLaunchParam;\n gameLaunchParam.gridPosition = this.calculateGridPosition(gameLaunchParam);\n if (this.casinoIFrameOverlayService.isOverLayOnAProduct(gameLaunchParam.game.lobbyType)) {\n const customLobbyType: any = this.casinoIFrameOverlayService.fetchOverlayLobby();\n if (customLobbyType) gameLaunchParam.customLobbyTypeMap = Array(customLobbyType);\n } else {\n const casinoCoreNpmParams: any = this.casinoNpmParamsService.getcasinoCoreNpmParams();\n gameLaunchParam.customLobbyTypeMap = casinoCoreNpmParams.customLobbyTypeMaps\n ? [...new Set(casinoCoreNpmParams.customLobbyTypeMaps.map((cl: any) => cl.lobbyType))]\n : null;\n }\n\n //Advance Game Data Model\n this.setActiveCategory();\n if (advanceGameDataConfig.enableAdvanceGameData) {\n const iconType = gameLaunchParam.game.iconType;\n const iconTypeForTracking = gameLaunchParam.game.iconTypeForTracking;\n const advanceCatInfoObj = this.advanceGameDataService.getAdvanceCategoryInfo(gameLaunchParam);\n const rowNumber = advanceCatInfoObj.rowNumber == undefined ? gameLaunchParam.gridPosition : advanceCatInfoObj.rowNumber;\n this.advanceGameDataService.createAdvanceGameModel(\n advanceCatInfoObj.parentCategoryId,\n advanceCatInfoObj.subCategoryId,\n this.navItemIndex,\n iconType,\n iconTypeForTracking,\n rowNumber,\n );\n }\n\n this.gameLaunchTracking(gameLaunchParam);\n if (!this.user.claims.get('screenname') || this.user.claims.get('screenname') == '') {\n const guid = this.generateGuid();\n gameLaunchParam.screennameGameLaunchTracking = guid;\n if (!this.loadingIndicatorHandler) {\n this.loadingIndicatorHandler = gameLaunchParam.loadingIndicatorHandler;\n gameLaunchParam.loadingIndicatorHandler = null;\n }\n const gamelaunchlocal = JSON.stringify(gameLaunchParam);\n if (this.loadingIndicatorHandler) {\n gameLaunchParam.loadingIndicatorHandler = this.loadingIndicatorHandler;\n this.loadingIndicatorHandler = null;\n }\n localStorage.setItem(guid, gamelaunchlocal);\n }\n if (this.user.isAuthenticated) {\n if (this.claimsConfig.get('accBusinessPhase') == 'in-shop') {\n if (featureConfig.enableAccountUpgrade) {\n this.navigation.goTo(mcPageConfig?.accountUpgrade);\n return;\n }\n }\n }\n if (this.vCClientService.isPokerVC()) {\n this.vCClientService.handleVCGameLaunch(gameLaunchParam, true, callback);\n this.onGameLaunchDone(gameLaunchParam);\n return;\n } else if (gameConfig.nativeGameLaunchEnabled) {\n const params: any = this.getParams(gameLaunchParam);\n this.nativeAppHelperService.handleNativeGameLaunch(params, gameLaunchParam, callback);\n return;\n }\n\n //check whether game is present in gamedatamap\n if (!this.checkGameInGameMetaData(gameLaunchParam.game.gameId) && this.user.isAuthenticated && !gameLaunchParam.skipMetaDataCheck) {\n this.gameNotFoundAction(gameLaunchParam, callback);\n return;\n }\n // check for disabled game\n const disabledGames: Array<string> = this.casinoLobbyService.getDisabledGames();\n if (disabledGames) {\n disabledGames.forEach((element) => {\n if (element?.toLowerCase() == gameLaunchParam?.game?.gameId?.toLowerCase() && this.user.isAuthenticated) {\n this.gameNotFoundAction(gameLaunchParam, callback);\n return;\n }\n });\n }\n //todo: check for unfinished game\n\n // if (advanceGameDataConfig.enableAdvanceGameData) {\n // let advanceCatInfoObj = this.advanceGameDataService.getAdvanceCategoryInfo(gameLaunchParam.gameSection);\n // let rowNumber = (advanceCatInfoObj.rowNumber == undefined) ? gameLaunchParam.gridPosition : advanceCatInfoObj.rowNumber;\n // playUrl = this.appendQueryString(playUrl, 'adv_parentcat', advanceCatInfoObj.parentCategoryId);\n // playUrl = this.appendQueryString(playUrl, 'adv_subcat', advanceCatInfoObj.subCategoryId);\n // playUrl = this.appendQueryString(playUrl, 'adv_pos', String(gameLaunchParam.gamePosition));\n // playUrl = this.appendQueryString(playUrl, 'adv_icon', gameLaunchParam.game.iconType);\n // playUrl = this.appendQueryString(playUrl, 'adv_grid', String(rowNumber));\n\n // gameLaunchParam.game.advanceDataModel = {\n // adv_parentcat : advanceCatInfoObj.parentCategoryId,\n // adv_subcat : advanceCatInfoObj.subCategoryId,\n // adv_pos : String(gameLaunchParam.gamePosition),\n // adv_icon : gameLaunchParam.game.iconType,\n // adv_grid : String(rowNumber)\n // };\n // }\n let playUrl = this.getPlayUrl(gameLaunchParam);\n\n if (this.user.isAuthenticated) {\n if (\n this.slotRacesService.liveSlotPollingStarted &&\n !(this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR) || this.casinoCookieService.isPokerApp())\n ) {\n this.slotRacesService.stopLiveSlotPolling();\n }\n if (gameLaunchParam.isTouch) {\n this.searchSection.setSearchVisibility(false);\n if (this.casinoWidgetService.isCasinoWidget()) {\n const params = {\n promptLogin: false,\n redirectUrl: (playUrl += '&returnUrl=' + document.referrer),\n categoryid: 'rcp-widget',\n };\n this.casinoWidgetService.postMessageToParent('GameLaunch', params);\n } else {\n const downloadAppFromDeviceConfig = this.configProviderService.provideDownloadAppFromDeviceConfig();\n if (downloadAppFromDeviceConfig && downloadAppFromDeviceConfig.downloadAppFromDevice) {\n this.goToPlayGame(gameLaunchParam, callback);\n } else {\n this.checkGeolocationAndLaunchMobileGame(\n () => {\n this.goToPlayGame(gameLaunchParam, callback);\n },\n () => {\n if (gameLaunchParam.loadingIndicatorHandler) {\n gameLaunchParam.loadingIndicatorHandler.done();\n this._gameLaunchInProgress = false;\n }\n },\n );\n }\n }\n } else {\n if (this.casinoWidgetService.isCasinoWidget()) {\n playUrl += '&returnUrl=' + document.referrer;\n }\n this.checkGeolocationAndLaunchDesktopGame(gameLaunchParam, playUrl, callback);\n setTimeout(() => {\n if (this.showDesktopSearch && this.showGSInDesktopSearch) {\n this.gshService.closeGlobaSearch();\n }\n }, 1000);\n }\n } else {\n if (this.casinoWidgetService.isCasinoWidget() || this.casinoIFrameOverlayService.isOverLayOnAProduct()) {\n playUrl += '&returnUrl=' + document.referrer;\n this.casinoWidgetService.postMessageToParent('UserAction', {\n promptLogin: true,\n redirectUrl: playUrl,\n loginMessageKey: 'GameLaunch',\n });\n } else {\n const loginOpenUrl = this.getPlayUrl(gameLaunchParam);\n const product: string = this.casinoWidgetService.getWidgetProduct();\n if (!product || product?.toLowerCase() == 'casino') {\n this.appendQueryString(loginOpenUrl, 'skipreferrer', 'true');\n }\n\n const loginResponseObj: any = {\n loginMessageKey: 'GameLaunch',\n };\n const forceGameLaunchObj: any = {\n lobbyType: gameLaunchParam.game.lobbyType,\n gameLaunchParam: forceGameLaunchParam,\n timeStamp: new Date().getTime(),\n };\n\n if (!(gameLaunchParam.gameLaunchedFrom == 'playRedirect')) {\n this.cacheManagerService.writeForceGameLaunchObjInSessionStorage('CasinoCoreForceGameObj', forceGameLaunchObj);\n }\n\n if (gameLaunchParam.appendRUrlToLoginDialogWindow) {\n loginResponseObj.returnUrl = gameLaunchParam.returnUrl;\n }\n if (gameLaunchParam.gameLaunchedFrom == 'playRedirect') {\n loginResponseObj.loginCloseUrl = gameLaunchParam.returnUrl;\n if (document.getElementsByTagName('lh-login-standalone').length == 0) this.loginDialog.open(loginResponseObj);\n }\n if (!(gameLaunchParam.gameLaunchedFrom == 'globalsearch') && !(gameLaunchParam.gameLaunchedFrom == 'playRedirect')) {\n this.loginDialog.open(loginResponseObj);\n }\n if (gameLaunchParam.gameLaunchedFrom == 'globalsearch') {\n loginResponseObj.loginCloseUrl = gameLaunchParam.returnUrl;\n this.loginDialog.open(loginResponseObj);\n }\n }\n }\n }\n\n setGameLaunchNavItems(navItems: any) {\n this.navItems = navItems;\n }\n\n setActiveCategory() {\n if (this.navItems !== undefined) {\n this.navItemIndex = this.navItems.findIndex((m: any) => m.pathname === location.pathname);\n this.navItemIndex = this.navItemIndex + 1;\n }\n }\n\n getLaunchData(params: any): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.gameData['gameLaunchDataOfProduct'],\n this.invokerProductService.getInvokerProduct(),\n );\n /*\n for e.g. endPoint = gamedata/casinocoregetlaunchdata?invokerProduct=casino\n */\n return this.api.get(endPoint, params, { withCredentials: true });\n }\n\n getParams(gameLaunchParam: GameLaunch) {\n let gameHomeUrl: string = this.casinoManager.getGameHomeUrl(); // need to change it to casinomanager\n if (!gameHomeUrl) {\n gameHomeUrl = gameLaunchParam.returnUrl;\n }\n if (!gameHomeUrl) {\n gameHomeUrl = window.location.href;\n }\n const gameConfig = this.configProviderService.provideGameConfig();\n if (!gameLaunchParam.skipUnfinGame) gameLaunchParam.skipUnfinGame = true;\n if (!gameLaunchParam.mode) gameLaunchParam.mode = gameConfig.gameMode;\n\n return {\n gameId: gameLaunchParam.game.gameId,\n mode: gameLaunchParam.mode,\n demo: gameLaunchParam.isDemoLaunch,\n launchProductId: this.navigation.location.search.get('launchProductId'),\n launchOrigin: this.navigation.location.search.get('launchOrigin'),\n skipUnfinGame: gameLaunchParam.skipUnfinGame,\n gameHomeUrl: encodeURIComponent(gameHomeUrl),\n isLiveGames: gameLaunchParam.isLive,\n skipMetaDataCheck: gameLaunchParam.skipMetaDataCheck,\n fetchLiveGameIFrame: gameLaunchParam.fetchLiveGameIFrame,\n customLobbyTypeMap: gameLaunchParam.customLobbyTypeMap,\n gamelaunchparams: gameLaunchParam.game.gamelaunchparams,\n screennameGameLaunchTracking: gameLaunchParam.screennameGameLaunchTracking,\n };\n }\n\n checkGameInGameMetaData(gameId: string): boolean {\n const gameMetaDataMap = this.gameManagerService.getGameInfo(gameId);\n if (gameMetaDataMap) {\n return true;\n }\n return false;\n }\n\n getPlayUrl(gameLaunchParam: GameLaunch) {\n const gameConfig = this.configProviderService.provideGameConfig();\n const globalJackpotClientConfig = this.configProviderService.provideGlobalJackpotConfig();\n if (!gameLaunchParam.mode) gameLaunchParam.mode = gameConfig.gameMode;\n let product: string = this.casinoManager.getProductForLobbyType(gameLaunchParam.game.lobbyType);\n if (gameLaunchParam.specialProduct) {\n product = gameLaunchParam.specialProduct;\n }\n if (!product) {\n product = 'games';\n }\n let result = this.urlUtility.getApiBaseUrl() + '/' + product?.toLowerCase();\n if (product?.toLowerCase() == 'globaljackpot') {\n result = this.productHomepagesConfig.casino + '/g/' + globalJackpotClientConfig?.globalJackpotPathSegments?.toLowerCase();\n }\n\n result += '/launchng/' + gameLaunchParam.game.gameId;\n\n if (this.casinoWidgetService.isCasinoWidget() || this.route.snapshot.queryParamMap.get('widgetGameLaunch')) {\n const queryStringMap: Map<string, string> = new Map<string, string>();\n queryStringMap.set('widgetGameLaunch', 'true');\n queryStringMap.set('invokerProduct', this.casinoWidgetService.getWidgetProduct());\n queryStringMap.set('widgetPostion', this.casinoWidgetService.getWidgetPosition());\n queryStringMap.set('launchCategory', gameLaunchParam.categoryType);\n result = this.appendQueryStringMap(result, queryStringMap);\n }\n // Sending the entire game launch url as rurl so that it works fine even if the user is not fully verified after login during force game launch\n if (gameLaunchParam.isDemoLaunch) {\n result = this.appendQueryString(result, 'demo', 'true');\n } else if (gameLaunchParam.mode) {\n result = this.appendQueryString(result, 'mode', gameLaunchParam.mode);\n }\n if (gameLaunchParam.from) {\n result = this.appendQueryString(result, 'place', gameLaunchParam.from);\n\n if (\n gameLaunchParam.from === this.gameLaunchPlaces.gameIconOnLobby ||\n gameLaunchParam.from === this.gameLaunchPlaces.gameTitleOnLobby ||\n gameLaunchParam.from === this.gameLaunchPlaces.gameInfoIconOnLobby\n ) {\n result = this.appendQueryString(result, 'gameLaunchCategory', gameLaunchParam.categoryType);\n }\n\n if (gameLaunchParam.gamePosition) {\n result = this.appendQueryString(result, 'gamePosition', gameLaunchParam.gamePosition.toString());\n }\n }\n return result;\n }\n\n goToPlayGame(gameLaunchParam: GameLaunch, callback?: any) {\n const featureConfig = this.configProviderService.provideFeaturesConfig();\n const downloadAppFromDeviceConfig = this.configProviderService.provideDownloadAppFromDeviceConfig();\n const gamesConfig = this.configProviderService.provideGameConfig();\n // If download app on game launch is enabled in mobile web, then show the info message for downloading the app (post login game launch scenario)\n if (\n downloadAppFromDeviceConfig &&\n downloadAppFromDeviceConfig.downloadAppFromDevice &&\n this.user.isAuthenticated &&\n this.user.isAuthenticated\n ) {\n const errormessage: string = downloadAppFromDeviceConfig.downloadAppErrorMsgs;\n this.messageQueue.clear();\n const message: Message = {\n html: errormessage,\n type: MessageType.Information,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n this.onGameLaunchDone(gameLaunchParam);\n } else {\n gameLaunchParam.isNewSportsNative =\n this.m2NativeApp.isNativeApp &&\n (this.m2NativeApp.product === 'SPORTSBOOK' || this.m2NativeApp.product === 'BETTING') &&\n (this.cookies.get('useNewOpenGames') === 'true' || this.navigation.location.search.get('useNewOpenGames') === 'true');\n //ASK RAM\n if (gameLaunchParam.isNewSportsNative && featureConfig.isAnonymousLobbyEnabled && !this.user.isAuthenticated) {\n this.casinoManager.gameEventId = this.nativeApiService.raiseOpenGameEvent(\n this.casinoManager.gameEventId,\n '',\n gameLaunchParam.game.gameId,\n false,\n );\n return;\n }\n\n const placeCheckForGameDetail: boolean =\n gameLaunchParam.from === this.gameLaunchPlaces.gameIconOnLobby ||\n gameLaunchParam.from === this.gameLaunchPlaces.searchOnLobby ||\n gameLaunchParam.from === this.gameLaunchPlaces.gameTitleOnLobby ||\n gameLaunchParam.from === 'q' ||\n gameLaunchParam.from === 's' ||\n gameLaunchParam.from === this.gameLaunchPlaces.teaser;\n\n if (placeCheckForGameDetail && gameLaunchParam.game.lobbyType) {\n gameLaunchParam.game = this.checkforGameDetailVisible(gameLaunchParam.game);\n }\n\n if (\n (placeCheckForGameDetail && gameLaunchParam.game.ForceDetailPage) ||\n (placeCheckForGameDetail && gameLaunchParam.game.EnableDetailPage)\n ) {\n if (gameLaunchParam.isNewSportsNative) {\n this.casinoManager.gameEventId = this.nativeApiService.raiseOpenGameEvent(\n this.casinoManager.gameEventId,\n encodeURIComponent(this.navigator.detailPage(gameLaunchParam.game.gameId)),\n gameLaunchParam.game.gameId,\n this.user.isAuthenticated,\n );\n }\n if (gameLaunchParam.isNewSportsNative) {\n this.casinoManager.gameEventId = this.nativeApiService.raiseOpenGameEvent(\n this.casinoManager.gameEventId,\n encodeURIComponent(this.navigator.detailPage(gameLaunchParam.game.gameId)),\n gameLaunchParam.game.gameId,\n this.user.isAuthenticated,\n );\n } else {\n const gamedetailPopUpData: any = {\n game: gameLaunchParam,\n };\n this.dialog.open(GameDetailComponent, { data: gamedetailPopUpData });\n this.gameDetailPageSubject.next(gamedetailPopUpData);\n }\n return;\n }\n const options: MessageQueueClearOptions = {\n clearPersistent: true,\n };\n if (options) this.messageQueue.clear(options);\n const params: any = this.getParams(gameLaunchParam);\n this.handleGamelaunch(params, gameLaunchParam, gamesConfig, callback);\n }\n }\n\n handleGamelaunch(params: any, gameLaunchParam: GameLaunch, gamesConfig: any, callback?: any) {\n this.getLaunchData(params).subscribe(\n (response: any) => {\n // response is coming here instead of going to error so added this condition\n if (response && response.portalInfo && response.redirect) {\n this.onGameLaunchDone(gameLaunchParam);\n this.handleGameLaunchError(response, gameLaunchParam, callback);\n return;\n }\n this.onGameLaunchDone(gameLaunchParam);\n if (response.data && response.data.aams) {\n } else {\n let enableNativeOdrEvent = this.configProviderService.provideGameConfig()?.enableNativeOdrEvent;\n const redirectUrl = this.gameLaunchUrlFormationService.launchMGSGame(response, gameLaunchParam);\n response.redirect = redirectUrl;\n if (\n (enableNativeOdrEvent?.isPokerApp && this.casinoCookieService.isPokerApp()) ||\n (enableNativeOdrEvent?.isOdr && this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR))\n ) {\n this.sendCCBEventToPokerAndOdr(redirectUrl);\n return;\n }\n\n this.launchGameFromResponse(response, gameLaunchParam, callback);\n }\n if (gamesConfig.storeSsotokenInCookies)\n this.cookies.put('ssoToken', this.user.ssoToken || '', {\n domain: this.page.domain,\n });\n const gameName = gameLaunchParam?.game?.name\n ? gameLaunchParam?.game?.name\n : this.gameManagerService.getGameDisplayName(gameLaunchParam?.game.gameId);\n this.storeUserInfo(gameName);\n },\n (error: any) => {\n this.onGameLaunchDone(gameLaunchParam);\n this.handleGameLaunchError(error, gameLaunchParam, callback);\n },\n );\n }\n\n onGameLaunchDone(gameLaunchParam: any) {\n this.messageQueue.clear(); //clearing any error messages from message queue\n const gameConfig = this.configProviderService.provideGameConfig();\n if (gameConfig.enableSpinnerOnGameLaunch && gameLaunchParam.loadingIndicatorHandler && this._gameLaunchInProgress) {\n gameLaunchParam.loadingIndicatorHandler.done();\n this._gameLaunchInProgress = false;\n }\n }\n\n sendCCBEventToPokerAndOdr(gameLaunchUrl: string) {\n const urlParameters = new URLSearchParams(gameLaunchUrl);\n const request: any = {};\n request.url = gameLaunchUrl;\n request.type = 'GAMELAUNCHURL';\n if (!urlParameters.get('ssoKey')) {\n request.sessionKey = 'ssoKey';\n }\n this.m2NativeApp.sendToNative({\n eventName: this.OPEN_URL,\n parameters: request,\n });\n }\n\n getDesktopGameLaunchUrl(gameLaunchParam: any, callback: (data: any) => void) {\n const params: any = this.getParams(gameLaunchParam);\n this.getLaunchData(params).subscribe(\n (response: any) => {\n if (response.data && response.data.aams) {\n } else {\n const redirectUrl = this.gameLaunchUrlFormationService.launchMGSGame(response, gameLaunchParam);\n const callbackResponse: any = {\n iframeUrl: redirectUrl,\n };\n callback(callbackResponse);\n }\n },\n (error: any) => {\n this.handleGameLaunchError(error, gameLaunchParam);\n },\n );\n }\n\n appendQueryString(url: string, key: string, value: string): string {\n if (url.indexOf('?') > -1) {\n url += '&' + key + '=' + value;\n } else {\n url += '?' + key + '=' + value;\n }\n return url;\n }\n\n appendQueryStringMap(url: string, queryMap: Map<string, string>): string {\n if (queryMap && queryMap.size > 0) {\n queryMap.forEach((value, key) => {\n if (url.indexOf('?') > -1) {\n url += '&' + key + '=' + value;\n } else {\n url += '?' + key + '=' + value;\n }\n });\n }\n return url;\n }\n validateUser(playUrl: string, replaceRouteInHistory: boolean) {\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n if (!this.user.isAuthenticated) {\n const loginResponseObj: any = {\n returnUrl: playUrl,\n loginMessageKey: 'GameLaunch',\n };\n this.loginDialog.open(loginResponseObj);\n return false;\n }\n const birthDate: Date = new Date(this.user.dateOfBirth || '');\n const minAge: number = mcPageConfig.minAgeValidationCasinoPlay;\n if (minAge > 0) {\n const minDate: Date = new Date(),\n portalPage = true;\n minDate.setFullYear(minDate.getFullYear() - minAge);\n const options: GoToOptions = {\n replace: replaceRouteInHistory,\n };\n if (minDate < birthDate) {\n if (minAge === 18) {\n this.navigator.publicPage('18plus', options, portalPage);\n }\n if (minAge === 21) {\n this.navigator.publicPage('18_21plus', options, portalPage);\n }\n return false;\n }\n }\n return true;\n }\n\n checkforGameDetailVisible(game: any): boolean {\n const gameConfig = this.configProviderService.provideGameConfig();\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const lobbyType = game.lobbyType;\n if (game && (!game.provider || game.provider === '')) {\n const gameDetails: any = this.gameManagerService.getGameInfo(game.gameId);\n if (gameDetails) {\n game.provider = gameDetails.provider;\n }\n }\n\n const detailPageMode: string = this.casinoManager.IsFeatureEnabledforLobbytype(lobbyType, casinoConfig.detailPageModeLobbyType);\n const vendorsWithOnlyRealMode: any = this.casinoManager.IsFeatureEnabledforLobbytype(lobbyType, gameConfig.vendorsWithOnlyRealModeLobbyType);\n const enableDemoPlay: any = gameConfig.enableDemoMode;\n const rglinkOnDetailPage: any = this.casinoManager.IsFeatureEnabledforLobbytype(lobbyType, gameConfig.showRGLinkOnDetailPageLobbyType);\n\n if (detailPageMode == ConstService.DETAIL_PAGE_MODE_PICKER || detailPageMode == ConstService.DETAIL_PAGE_MODE_FORCEPICKER) {\n if (\n (!gameConfig.enablePlaytechLiveGameDetailsPage &&\n vendorsWithOnlyRealMode.indexOf(game.provider) > -1 &&\n !game.gameId.startsWith('ivy')) ||\n (game.provider == 'Playtech' && game.gameId.startsWith('playtechlive'))\n ) {\n game.EnableDetailPage = false;\n game.ForceDetailPage = false;\n } else {\n game.EnableDetailPage = true;\n game.ForceDetailPage = true;\n }\n } else {\n const force = detailPageMode == ConstService.DETAIL_PAGE_MODE_FORCE;\n const enabled = detailPageMode == ConstService.DETAIL_PAGE_MODE_ALL || force;\n if (\n (!gameConfig.enablePlaytechLiveGameDetailsPage &&\n vendorsWithOnlyRealMode.indexOf(game.provider) > -1 &&\n !game.gameId.startsWith('ivy')) ||\n (game.provider == 'Playtech' && game.gameId.startsWith('playtechlive'))\n ) {\n game.EnableDetailPage = false;\n game.ForceDetailPage = false;\n } else {\n game.EnableDetailPage = enabled;\n game.ForceDetailPage = force;\n }\n }\n if (enableDemoPlay && !(vendorsWithOnlyRealMode.indexOf(game.provider) > -1 && !game.gameId.startsWith('ivy'))) {\n game.DemoEnabled = true;\n game.DemoAvailable = true;\n if (rglinkOnDetailPage && rglinkOnDetailPage.length > 0) {\n const matchedProviderFound = rglinkOnDetailPage.filter((c: any) => c === game.provider);\n if (matchedProviderFound && matchedProviderFound[0]) {\n game.ResponsibleGamingLink = gameConfig.responsibleGamingLink;\n }\n }\n }\n return game;\n }\n\n launchGameFromResponse(response: any, gameLaunchParam: GameLaunch, callback?: any) {\n this.monitorService.managePortalInfo(response, true);\n\n if (this.monitorService.isActive() === false) {\n this.proceed(response, gameLaunchParam, callback);\n } else {\n this.monitorService.monitorActiveObservable.subscribe((monitorStatus: any) => {\n if (monitorStatus && monitorStatus === this.monitorService.MONITOR_INACTIVE) {\n this.proceed(response, gameLaunchParam, callback);\n }\n });\n }\n }\n\n proceed(response: any, gameLaunchParam: GameLaunch, callback?: any) {\n if (gameLaunchParam.isNewSportsNative && this.gameLaunchPlaces.isLobby(gameLaunchParam.from)) {\n this.casinoManager.gameEventId = this.nativeApiService.raiseOpenGameEvent(\n this.casinoManager.gameEventId,\n encodeURIComponent(response.redirect),\n gameLaunchParam.game.gameId,\n this.user.isAuthenticated,\n );\n } else {\n const options: GoToOptions = {\n replace: gameLaunchParam.replaceRouteInHistory,\n forceReload: true,\n };\n\n if (gameLaunchParam.from == 'thumbnail' && gameLaunchParam.lobbyType) {\n this.cacheManagerService.setThumbnailLocalStorageCacheMap(gameLaunchParam.lobbyType, gameLaunchParam.game.gameId);\n }\n\n if (callback) {\n const callbackResponse = {\n isError: false,\n errorMessage: '',\n gameLaunchUrl: response.redirect,\n };\n callback(callbackResponse);\n } else {\n if (this.isTouch) {\n this.storeUserInfo(gameLaunchParam?.game?.name);\n this.navigator.navigate(response.redirect, options, true, 0);\n } else {\n // designed for launching game as SingleHost\n let sglProduct = this.gameLaunchUrlFormationService?.getCurrentProduct()\n ? this.gameLaunchUrlFormationService?.getCurrentProduct()\n : gameLaunchParam?.currentProduct;\n // if current product is not available by default consider games as product\n sglProduct = sglProduct || 'games';\n if (this.casinoManager.isSingleHostLobbyType(gameLaunchParam?.game?.lobbyType, sglProduct)) {\n this.storeUserInfo(gameLaunchParam?.game?.name);\n this.navigator.navigate(response.redirect, options, true, 0);\n return;\n }\n // end - designed for launching game as SingleHost\n const features = this.configProviderService.provideFeaturesConfig();\n if (features.enableNewEmbeddedViewIconsPosition) {\n const multipleGameLaunched = this.getFromCookie('gamePopOutWindow');\n if (multipleGameLaunched) {\n const Global = this.configProviderService.provideGlobalConfig();\n const errormessage = Global.messages['OnlyOneGameAtTime'];\n this.messageQueue.clear();\n setTimeout(() => {\n if (errormessage && this.isSingleMessage)\n this.messageQueue.addError(errormessage, MessageLifetime.Single, 'casinocorelobby');\n this.isSingleMessage = false;\n window.scrollTo({ top: 0 });\n setTimeout(() => {\n this.messageQueue.clear();\n this.isSingleMessage = true;\n if (this.navigation.location.url().indexOf('launchng') >= 0) {\n this.casinoManager.goToLobby();\n }\n this.stopAudio();\n }, features.singleGameErrorTimeout);\n }, 0);\n } else {\n const embedGamePopUpData: any = {\n iframeUrl: response.redirect,\n game: this.gameObj,\n categoryType: gameLaunchParam.categoryType,\n };\n //open the mat dialog\n this.openEmbeddedGameDailog(embedGamePopUpData);\n }\n } else {\n const embedGamePopUpData: any = {\n iframeUrl: response.redirect,\n game: this.gameObj,\n categoryType: gameLaunchParam.categoryType,\n };\n //open the mat dialog\n this.openEmbeddedGameDailog(embedGamePopUpData);\n }\n }\n }\n }\n }\n\n getFromCookie(key: any): boolean {\n if (this.cookies.get(key) === '1') {\n return true;\n }\n return false;\n }\n\n openEmbeddedGameDailog(data: any = null): void {\n const dialogRef = this.dialog.open(EmbeddedGamePopupComponent, {\n width: '790px',\n height: '779px',\n data: data,\n });\n dialogRef.afterClosed().subscribe(() => {\n this.updateFreespinsSubject.next(true);\n this.stopSchedulePollingInBingo(false);\n });\n }\n\n stopSchedulePollingInBingo(flag: boolean) {\n //for Iframe\n const cozyBingoIframe = document.getElementsByClassName('cozy-bingo-iFrame').length\n ? (document.getElementsByClassName('cozy-bingo-iFrame')[0] as HTMLIFrameElement)\n : null;\n if (cozyBingoIframe && cozyBingoIframe.contentWindow) {\n cozyBingoIframe.contentWindow.postMessage({ stopSchedulePolling: flag }, this.productHomepagesConfig.bingo);\n }\n if (this.invokerProductService?.getInvokerProduct()?.toLowerCase() == 'casino') {\n if (cozyBingoIframe) (window as any).Disable_SchedulePolling = flag;\n else (window as any).Disable_SchedulePolling = true;\n } else {\n (window as any).Disable_SchedulePolling = flag;\n }\n }\n\n checkGeolocationAndLaunchDesktopGame(gameLaunchParam: any, playUrl: string, callback?: any): void {\n const geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (geolocationConfig.isEnabled) {\n this.geolocationCheckService.checkGeolocation(\n () => {\n this.launchDesktopGame(gameLaunchParam, playUrl, callback);\n },\n () => {\n if (gameLaunchParam.loadingIndicatorHandler) {\n gameLaunchParam.loadingIndicatorHandler.done();\n this._gameLaunchInProgress = false;\n }\n },\n );\n return;\n }\n this.launchDesktopGame(gameLaunchParam, playUrl, callback);\n }\n\n handleGameLaunchError(error: any, gameLaunchParam: GameLaunch, callback?: any) {\n if (error) {\n let errormessages: any[] = [];\n if (error?.common && error?.common?.messages) {\n errormessages = error.common.messages;\n }\n if (error.redirect) {\n const isNewSportsNative = this.m2NativeApp.isNativeApp;\n if (isNewSportsNative && this.gameLaunchPlaces.isLobby(gameLaunchParam.from)) {\n this.casinoManager.gameEventId = this.nativeApiService.raiseOpenGameEvent(\n this.casinoManager.gameEventId,\n encodeURIComponent(error.redirect),\n gameLaunchParam.game.gameId,\n this.user.isAuthenticated,\n );\n if (this.casinoIFrameOverlayService.isOverLayOnAProduct()) {\n window.parent.postMessage(\n {\n eventName: 'UserAction',\n params: { redirectUrl: error.redirect },\n },\n window.location.origin,\n );\n }\n } else {\n const options: GoToOptions = {\n replace: gameLaunchParam.replaceRouteInHistory,\n };\n if (this.casinoIFrameOverlayService.isOverLayOnAProduct()) {\n window.parent.postMessage(\n {\n eventName: 'UserAction',\n params: { redirectUrl: error.redirect },\n },\n window.location.origin,\n );\n } else {\n //case when return error is same as current url\n //check mobile/desktop\n //if mobile then add to msg queue and navigate(msg queue will be displayed if screen name is coming with error)\n //if desktop then open pop-up with error otherwise redirect(maybe compare url)\n if (error.portalInfo && error.portalInfo.statusCode == 101) {\n const forceGameLaunchObj: any = {\n lobbyType: gameLaunchParam.game.lobbyType,\n gameLaunchParam: gameLaunchParam,\n timeStamp: new Date().getTime(),\n };\n if (!gameLaunchParam.fetchLiveGameIFrame) {\n // check for thunderbite game\n this.cacheManagerService.writeForceGameLaunchObjInSessionStorage('CasinoCoreScreenNameGameObj', forceGameLaunchObj);\n }\n const redirect = this.addClickTimeStamp(decodeURIComponent(error.redirect), gameLaunchParam);\n this.navigator.navigate(redirect, options, true, -1, errormessages);\n } else {\n this.gameLaunchRedirectErrorAction(errormessages, callback);\n this.navigator.navigate(decodeURIComponent(error.redirect), options, true, -1, errormessages);\n }\n }\n }\n } else {\n this.gameLaunchRedirectErrorAction(errormessages, callback);\n }\n }\n }\n\n launchDesktopGame(gameLaunchParam: any, playUrl: string, callback?: any): void {\n if (this.casinoWidgetService.isCasinoWidget()) {\n const params = {\n promptLogin: false,\n redirectUrl: playUrl,\n categoryid: 'rcp-widget',\n };\n this.casinoWidgetService.postMessageToParent('GameLaunch', params);\n } else {\n this.goToPlayGame(gameLaunchParam, callback);\n }\n }\n\n getGameLunchType(gameId: any) {\n const gameMetaData = this.casinoLobbyService.getGameMetaData();\n let launchType: string;\n if (gameMetaData && gameMetaData.size > 0) {\n const gameObj = gameMetaData.get(gameId);\n if (gameObj) {\n launchType = gameObj.provider;\n\n return launchType;\n }\n }\n return null;\n }\n\n getProductForLobbyType(lobbyType: string) {\n // Note: Single domain app condition is temporary, until we move all products to single domain\n let product: string = this.productService.isSingleDomainApp ? this.productService.current.name : this.appInfoConfig?.product;\n if (lobbyType && product?.toLowerCase() == 'casino') {\n product = this.utilityService.getProductForGivenLobbyType(lobbyType);\n if (product?.toLowerCase() == 'games') {\n product = 'casino';\n }\n }\n return product?.toUpperCase();\n }\n\n getGameSection(gameLaunchParam: any, trackingContainer: string) {\n const { gameLaunchedFrom, game, moreInfoOverlay, gameSection } = gameLaunchParam;\n\n if (gameLaunchedFrom === 'Top10Games') {\n return game.gameSection;\n }\n if (game?.widgetName == 'RecentWinners' || game?.widgetName == 'PlayerStats' || moreInfoOverlay) {\n return gameSection;\n }\n return trackingContainer || gameSection;\n }\n\n gameLaunchTracking(gameLaunchParam: any) {\n const catInfo = this.casinoLobbyService.getCategoryInfo(gameLaunchParam.game.lobbyType, gameLaunchParam.categoryType);\n let gameContainerDescription!: string;\n let parentCategoryId!: string;\n let trackingContainer!: string;\n let childChildcategoryId!: string;\n let categoryEngName!: string;\n const categoryType = this.getProductForLobbyType(gameLaunchParam.game.lobbyType);\n if (catInfo && catInfo.categoryInfo) {\n parentCategoryId = catInfo.categoryInfo.parentCategoryId;\n childChildcategoryId = catInfo.categoryInfo.categoryid;\n trackingContainer = this.casinoLobbyService.getCategoryName(gameLaunchParam.game.lobbyType, childChildcategoryId);\n if (!parentCategoryId) {\n parentCategoryId = childChildcategoryId;\n trackingContainer = gameLaunchParam?.gameLaunchedFrom;\n }\n if (\n gameLaunchParam?.gameLaunchedFrom?.startsWith('MustGoJackpot_') ||\n gameLaunchParam?.gameLaunchedFrom?.startsWith('JackpotWidget_') ||\n gameLaunchParam?.gameLaunchedFrom?.startsWith('Netflix_Video_') ||\n gameLaunchParam?.gameLaunchedFrom?.startsWith('Teaser')\n ) {\n trackingContainer = gameLaunchParam.gameLaunchedFrom;\n }\n categoryEngName = this.casinoLobbyService.getCategoryName(gameLaunchParam.game.lobbyType, parentCategoryId);\n gameContainerDescription =\n gameLaunchParam?.game?.gameContainerDescription ||\n (catInfo.categoryInfo.sitecoreData &&\n (catInfo.categoryInfo.sitecoreData.backgroundImageLayer1 ||\n catInfo.categoryInfo.sitecoreData.backgroundImageLayer2 ||\n catInfo.categoryInfo.sitecoreData.backgroundImageLayer3)\n ? 'Highlighted | image'\n : 'Non Highlighted | nocolor');\n }\n const gameName = gameLaunchParam.game.name\n ? gameLaunchParam?.game?.name\n : this.gameManagerService.getGameDisplayName(gameLaunchParam?.game.gameId);\n const gameSection = parentCategoryId || gameLaunchParam.gameSection;\n let trackingGridPosition: string = gameLaunchParam.gridPosition;\n if (gameLaunchParam?.gameLaunchedFrom?.startsWith('RecentlyPlayed_widget_')) {\n trackingContainer = gameLaunchParam.gameLaunchedFrom;\n categoryEngName = this.casinoLobbyService.getCategoryName(gameLaunchParam.game.lobbyType, childChildcategoryId);\n }\n if (gameLaunchParam?.gameSection == 'Module_Discover_Promo' || gameLaunchParam?.gameSection?.toLowerCase() == 'globalsearch') {\n trackingGridPosition = 'Not Applicable';\n } else if (gameLaunchParam?.gridPosition) {\n trackingGridPosition = gameLaunchParam?.gamePosition\n ? `${gameLaunchParam?.gridPosition}:${gameLaunchParam?.gamePosition + 1}`\n : `${gameLaunchParam?.gridPosition}:1`;\n } else {\n trackingGridPosition = gameLaunchParam?.gamePosition ? `1:${gameLaunchParam?.gamePosition + 1}` : '1:1';\n }\n if (gameLaunchParam.Globalsearchgameposition) {\n gameLaunchParam.gamePosition = gameLaunchParam.Globalsearchgameposition;\n }\n const lobbyData: any = this.casinoLobbyService.getLobbyBasedOnLobbyType(gameLaunchParam.game.lobbyType);\n const gameTrackingObj: TrackGame = {\n name: gameLaunchParam?.game?.gameId,\n type: gameLaunchParam?.game?.provider ? gameLaunchParam?.game?.provider : this.getGameLunchType(gameLaunchParam.game.gameId),\n position: gameLaunchParam?.gamePosition + 1,\n section: this.getGameSection(gameLaunchParam, trackingContainer),\n gridPosition: trackingGridPosition,\n location:\n gameLaunchParam?.game?.widgetName == 'RecentWinners' || gameLaunchParam?.game?.widgetName == 'PlayerStats'\n ? gameLaunchParam.gameSection + '-' + gameLaunchParam?.game?.currentTab\n : gameLaunchParam.isMoreInfoOverlay\n ? 'moreinfo overlay' + ' | ' + gameSection\n : gameLaunchParam?.gameLaunchedLocation || (gameLaunchParam?.gameContainer || 'Page Container') + ' | ' + gameSection,\n status: gameLaunchParam?.game?.isSignPostedGame ? 'New' : 'Existing',\n description: gameContainerDescription || 'Not Applicable',\n favourite: this.favouriteService.checkForFavouriteGame(gameLaunchParam?.game) ? 'Favourite' : 'Non_favourite',\n playingStatus: this.unfinishedGamesService.checkForUnfinishedGame(gameLaunchParam?.game) ? 'Unfinished' : 'Start',\n displayName: gameName || gameLaunchParam?.game?.gameVariantName,\n categoryType: categoryType,\n categorySubType: gameLaunchParam?.Globalsearchsection || categoryEngName || gameLaunchParam?.gameSection,\n recommendationType: this.customRecommendationType || (catInfo?.categoryInfo?.havingCasiaGames ? 'Casia' : 'Default'),\n lobbyName: lobbyData?.lbyTempName,\n lobbySource: lobbyData?.lbyTargetType,\n optimoveSegment: lobbyData?.optSegName,\n params: gameLaunchParam,\n };\n this.gameLaunchTrackingService.track(gameTrackingObj);\n }\n\n checkGeolocationAndLaunchMobileGame(callback: any, errorCallback: any) {\n const geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (this.geolocationActivator.isActive) {\n this.geolocationCheckService.onCheckClosed = () => {\n if (this.route.snapshot.queryParamMap.has('returnUrl')) {\n const returnUrlInQueryParameter = this.route.snapshot.queryParamMap.get('returnUrl');\n if (returnUrlInQueryParameter && returnUrlInQueryParameter.trim()) {\n this.navigator.navigate(returnUrlInQueryParameter.trim());\n return;\n }\n }\n if (this.router.routerState.snapshot.url.split('/').some((segment) => segment?.trim()?.toLowerCase() === 'launchng')) {\n const gameHomeUrl = this.casinoManager.getGameHomeUrl();\n if (gameHomeUrl) {\n this.navigator.navigate(gameHomeUrl);\n return;\n }\n }\n };\n this.geolocationCheckService.checkGeolocation(\n () => {\n callback();\n },\n () => {\n errorCallback();\n },\n );\n return;\n }\n if (geolocationConfig.shouldCheckNativeGeoLocation && (this.m2NativeApp.isNativeApp || this.m2NativeApp.isNativeWrapper)) {\n this.geoLocationValidation.validateLocation((response: boolean) => {\n if (response != null && !response) {\n callback();\n } else {\n errorCallback();\n }\n });\n return;\n }\n callback();\n }\n\n calculateGridPosition(gameLaunchParam: any) {\n const trackedClassList: any = document.getElementsByClassName('gametracking');\n const gridPosition: any = gameLaunchParam.gridPosition;\n if (gameLaunchParam.game.trackCategory && gameLaunchParam.game.trackCategory != '') {\n gameLaunchParam.categoryType = gameLaunchParam.game.trackCategory;\n }\n if (trackedClassList.length > 0) {\n for (let i = 0; i < trackedClassList.length; i++) {\n const value: any = trackedClassList[i];\n if (value.classList.contains('track_' + gameLaunchParam.categoryType)) {\n return (i + 1).toString();\n }\n }\n }\n return gridPosition ? gridPosition.toString() : '';\n }\n\n gameNotFoundAction(gameLaunchParam: any, callback?: any) {\n this.onGameLaunchDone(gameLaunchParam);\n this.messageQueue.clear();\n const globalConfig = this.configProviderService.provideGlobalConfig();\n let errormessage: string = globalConfig.messages['GameNotAvailable'];\n errormessage = errormessage.replace('{0}', gameLaunchParam.game.gameId);\n const message: Message = {\n html: errormessage,\n type: MessageType.Information,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (callback) {\n const callbackResponse = {\n isError: true,\n errorMessage: errormessage,\n gameLaunchUrl: '',\n };\n callback(callbackResponse);\n } else {\n if (gameLaunchParam.isTouch) {\n //this.messageQueue.add(message);\n if (gameLaunchParam.returnUrl) {\n const casinoNpmParams = this.casinoNpmParamsService.getcasinoCoreNpmParams();\n let returnurl: string = gameLaunchParam?.returnUrl;\n if (this.navigation.location.search.get('gamenotfound') === 'true') {\n returnurl = gameLaunchParam?.returnUrl;\n } else if (!casinoNpmParams.isDll) {\n returnurl = this.appendQueryString(gameLaunchParam.returnUrl, 'gamenotfound', 'true');\n }\n sessionStorage.setItem('gameNotAvailable', JSON.stringify(message));\n if (returnurl) {\n this.navigation.goTo(returnurl);\n }\n setTimeout(() => {\n this.getGameNotAvailable();\n }, this.delayAfterRefreshInterval);\n } else {\n sessionStorage.setItem('gameNotAvailable', JSON.stringify(message));\n this.getGameNotAvailable();\n }\n } else {\n const features = this.configProviderService.provideFeaturesConfig();\n if (features.enableNewEmbeddedViewIconsPosition) {\n const returnurl = gameLaunchParam?.returnUrl;\n const homePageUrl = this.casinoManager.getGameHomeUrl();\n if (errormessage) {\n this.messageQueue.addError(errormessage, MessageLifetime.Single, 'casinocorelobby');\n }\n setTimeout(() => {\n this.messageQueue.clear();\n if (returnurl) this.navigation.goTo(returnurl);\n else this.navigation.goTo(homePageUrl);\n }, features.singleGameErrorTimeout);\n } else {\n message.scope = 'embeddedGameError';\n const embedGamePopUpData: any = {\n game: this.gameObj,\n errorMessageQueue: message,\n };\n this.openEmbeddedGameDailog(embedGamePopUpData);\n }\n }\n }\n return;\n }\n\n getGameNotAvailable() {\n this.messageQueue.clear();\n const message = JSON.parse(sessionStorage.getItem('gameNotAvailable') || '');\n if (message) {\n this.messageQueue.add(message);\n }\n setTimeout(() => {\n this.messageQueue.clear();\n sessionStorage.removeItem('gameNotAvailable');\n }, this.millisecondsToDisplayInterval);\n }\n\n gameLaunchRedirectErrorAction(errormessages: any, callback?: any) {\n if (callback) {\n const callbackResponse = {\n isError: true,\n errorMessage: errormessages[0].html?.value ? errormessages[0].html.value : errormessages[0].html,\n gameLaunchUrl: '',\n };\n callback(callbackResponse);\n } else if (errormessages && errormessages.length > 0) {\n this.messageQueue.clear();\n errormessages.forEach((msg: any) => {\n msg.html = msg.html?.value ? msg.html?.value : msg.html;\n msg.lifetime = 'Single';\n msg.scope = 'casinocorelobby';\n });\n if (errormessages) {\n this.messageQueue.addMultiple(errormessages);\n }\n }\n }\n\n handleDirectDesktopGameLaunch(gameId: string): void {\n if (this.user.isAuthenticated) {\n if (this.vCClientService.isPokerVC()) {\n let isNotLobby: boolean = false;\n if (this.cookies.get('fromLobby')) {\n isNotLobby = true;\n }\n this.vCClientService.handleVCGameLaunch(gameId, isNotLobby);\n return;\n }\n\n const gameObject: any = {\n gameId: gameId,\n };\n this.checkGeolocationAndLaunchDesktopGame(gameObject, '');\n } else {\n this.loginDialog.open();\n }\n }\n\n currentTimeStamp() {\n return new Date().getTime();\n }\n\n addClickTimeStamp(redirectUrl: string, gameLaunchParams: any): string {\n if (gameLaunchParams && gameLaunchParams.clickTimeStamp) {\n const url = new URL(redirectUrl);\n const rurl = url.searchParams.get('rurl');\n if (url && rurl && rurl != '') {\n let appendString: string = '';\n if (gameLaunchParams.clickTimeStamp) {\n appendString += '&clickTimeStamp=' + gameLaunchParams.clickTimeStamp;\n }\n if (gameLaunchParams.launchSource) {\n appendString += '&launchSource=' + gameLaunchParams.launchSource;\n }\n url.searchParams.set('rurl', rurl + appendString);\n return url.toString();\n }\n }\n return redirectUrl;\n }\n\n validateGames(gameId: string): Observable<any> {\n return this.api.get('gamedata/validategame', { gameId: gameId }, { withCredentials: true });\n }\n\n closeGame(gameId: string): Observable<any> {\n return this.api.get('gamedata/closegame', { gameId: gameId }, { withCredentials: true });\n }\n\n playerPlayBreakStatus() {\n this.api\n .get('gamedata/GetUserPlayBreakStatus', null, { withCredentials: true })\n .toPromise()\n .then(\n (statusObj: any) => {\n if (statusObj && (statusObj.playBreak || statusObj.gracePeriod)) {\n window.location.reload();\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Unable to retrieve user play break status' + error);\n },\n );\n }\n\n stopAudio() {\n this.stopAudioSubject.next(false);\n }\n storeUserInfo(data: string) {\n this.logger.info(data);\n const gamesConfig = this.configProviderService.provideGameConfig();\n if (gamesConfig.storeUserDetails) {\n const cookieObj: any = {\n userToken: this.user.claims.get('usertoken') || '',\n sessionToken: this.user.claims.get('sessiontoken') || '',\n // gameDisplayname: data || '',\n };\n\n this.cookies.putObject('PCGameData', cookieObj, {\n domain: this.page.domain,\n });\n }\n }\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nimport { Dimension, IContentLink, ISchedule, ImageType, ImmersiveLobbyConfig, LobbyGameInfo } from './common.model';\nimport { GameLobbyModel } from './game-lobby.model';\n\nexport const IMMERSIVELOBBY_ONBOARDING_COOKIE_NAME = 'hideImmersiveLobbyOnboarding';\nexport const IMMERSIVELOBBY_STATS_CTA_TYPE_GAME = 'Game';\nexport const IMMERSIVELOBBY_STATS_CTA_TYPE_STATIC_GAME = 'StaticGame';\nexport const IMMERSIVELOBBY_STATS_CTA_TYPE_SECTOR = 'Sector';\nexport const IMMERSIVELOBBY_ITEM_TYPE_GAME_LOGO = 'GameLogo';\nexport const IMMERSIVELOBBY_ITEM_TYPE_GAME = 'Game';\nexport const IMMERSIVELOBBY_ITEM_TYPE_CUSTOM_LINK = 'CustomLink';\nexport const IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER = 'JackpotDrawer';\nexport const IMMERSIVELOBBY_GSHUB_ONBOARDING_COOKIE_NAME = 'hideGSHubOnboarding';\n\nexport interface ImmersiveLobbyIContentParameters {\n CustomLinkDrawerBgClr: string;\n CustomLinkDrawerHeaderClr: string;\n GlowingIconColor: string;\n}\nexport interface IImmersiveLobbyMap {\n width: number;\n height: number;\n backgroundImage: IContentImage;\n layeredImageType: string;\n layeredImage: string;\n lottieImage?: string;\n audioFile?: string;\n sectors: Array<IImmersiveLobbySector>;\n condition: string;\n}\n\nexport interface IImmersiveLobbySector {\n lmtCategoryId: string;\n categoryId: string;\n categoryName: string;\n top: number;\n left: number;\n width: number;\n height: number;\n imageType: string;\n sectorImage: string;\n sectorIcon: IContentImage;\n lottieImage: string;\n zoomedOutClipPath: string;\n zoomedInClipPath: string;\n zoomForDesktop: number;\n zoomForMobile: number;\n sectorType: string;\n hiddenSectorCTALink: IContentLink;\n displayJackpotTicker: boolean;\n jackpotTickerText?: string;\n jackpotTickerImage?: IContentImage;\n customLinks: Array<IImmersiveLobbySectorItem>;\n customLinksGridColumns: number;\n customLinksPosition: string;\n gameLogos: Array<IImmersiveLobbySectorItem>;\n games: Array<IImmersiveLobbySectorItem>;\n gamesGridColumns: number;\n gamesDisplayType: string;\n gamesDisplayTypeMobile: string;\n gamesDisplayTypeDesktop: string;\n schedules: Array<ISchedule>;\n isDirectGameLaunch: boolean;\n customLinksGridWidth: number;\n\n // Custom Props\n categoryIndex: number;\n sectorContainerId: string;\n isLoaded: boolean;\n type: ImageType;\n isDisabled: boolean;\n lobbyGames: Array<GameLobbyModel>;\n //live Lounge\n gameItems: Array<ImmersiveLobbySectorItemContent>;\n customLinkItems: Array<ImmersiveLobbySectorItemContent>;\n condition: string;\n}\nexport interface IImmersiveLobbySectorItem extends LobbyGameInfo {\n width: number;\n height: number;\n top: number;\n left: number;\n itemType: string;\n glowingIconType: string;\n gameIconType: string;\n configurationsContent: any;\n constantMessages: any;\n condition: string;\n customLinkType?: string;\n customLinkIcon?: IContentImage;\n iconType: string;\n customLink?: IContentLink;\n customLinkDrawerTitle?: string;\n customLinkDrawerBackgroundImage: IContentImage;\n customLinkDrawerContent?: Array<string>;\n messages: any;\n // Custom Props\n isLoaded: boolean;\n dimension: Dimension;\n isSquareIcon: boolean;\n showTimer: boolean;\n isOffline: boolean;\n schedule: string | undefined;\n timerPosition: string | undefined;\n cmsTimer: any;\n}\n\nexport class ImmersiveLobbySectorItemContent {\n isGame: boolean;\n rowSpan: number;\n colSpan: number;\n iconType: string;\n game: GameLobbyModel;\n isDisabled: boolean;\n customLink: IImmersiveLobbySectorItem;\n}\nexport interface IImmersiveLobbyJackpotDrawerContent {\n jackpotGroupName: string;\n jackpotImage?: IContentImage;\n jackpotContent: string;\n displayJackpotTicker: boolean;\n howItWorks: string;\n howCanIParticipate: string;\n terms: string;\n condition: string;\n // Custom Props\n path: string;\n}\n\nexport interface IImmersiveLobbyStatCategory {\n categoryId: string;\n categoryName: string;\n categoryIcon: IContentImage;\n showHighlights: boolean;\n}\n\nexport interface IImmersiveLobbyStatItem {\n itemId: string;\n itemName: string;\n itemIcon: IContentImage;\n showCTA: boolean;\n ctaText: string;\n ctaType: string;\n sectorId: string;\n staticGameId: string;\n showTimeFrame: boolean;\n timeFrame: string;\n dataType: string;\n\n // Custom Props\n value: string;\n gameId: string;\n gameName: string;\n betTS: string;\n isStaticGame: boolean;\n isDynamicGame: boolean;\n}\n\nexport interface IGameTableNameMapping {\n physicalName: string;\n gameTableName: string;\n commercialGameTableName: string;\n}\n\nexport interface IImmersiveLobbyStats {\n welcomeTitle: string;\n welcomeDescription: string;\n welcomeBackgroundImage: IContentImage;\n statsDrawerTitle: string;\n statsDrawerBackgroundColor: string;\n statsDrawerHeaderColor: string;\n statsDrawerBackgroundImage: IContentImage;\n statsEmptyMessage: string;\n statsLoginMessage: string;\n statsLoginCategoryName: string;\n statsFooterContent: string;\n statsErrorMessage: string;\n statsUpdateErrorMessage: string;\n categories: Array<IImmersiveLobbyStatCategory>;\n stats: Array<IImmersiveLobbyStatItem>;\n gameTableNames: Array<IGameTableNameMapping>;\n condition: string;\n}\n\nexport class ImmersiveLobbyStat {\n category: IImmersiveLobbyStatCategory;\n stats: Array<IImmersiveLobbyStatItem>;\n impStats: Array<IImmersiveLobbyStatItem>;\n isAvailable: boolean;\n\n constructor() {\n this.stats = [];\n this.impStats = [];\n this.isAvailable = false;\n }\n}\n\nexport class ImmersiveLobbyConfiguration extends ImmersiveLobbyConfig {\n enabled: boolean;\n defaultCategoryId: string;\n statCategoriesDataPath: string;\n statItemsDataPath: string;\n statsDataPath: string;\n enableAudioButton: boolean;\n enableGameNameMapping: boolean;\n enableStats: boolean;\n triviaGameType: string;\n noOfHours: number;\n tiltingPhoneMessageImageUrl: string;\n scheduleGames: Array<string>;\n jackpotGroupName: string;\n //enableSupportForLandscape: boolean;\n}\n\nexport interface IImmersiveLobbyGlobalConfig {\n StatsPreloginBtnText: string;\n noOfDays: string;\n offlineTableContent: string;\n tiltingMessage: string;\n}\n\nexport interface IImmersiveLobbyGlobalClrConfig {\n mapBgClr: string;\n statsIconBgColor: string;\n statsThemeIcon: string;\n offlineTableTextClr: string;\n glowingIconClr: string;\n jackpotTickeringBgClr: string;\n jackpotTickeringTextClr: string;\n}\n\nexport interface IDrawerContent {\n content: Array<IImmersiveLobbyJackpotDrawerContent>;\n}\n","import { Injectable } from '@angular/core';\n\nimport { addClass, getAmount, onlyUnique, removeClass, textToNumber, toDate, toTimeStamp } from '@casinocore/platform/utils';\nimport { IOnboarding } from '@casinocore/type-utils';\nimport { DeviceService, Message, MessageLifetime, MessageQueueService, MessageType, Page, TrackingService, WindowRef } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { CasinoCoreGamelaunchService } from '../shared/gamelaunch.service';\nimport { GameLaunch } from '../shared/models/gamelaunch.model';\nimport { CUSTOM_LINK_TYPE_DRAWER, ICustomLinkDrawer, ICustomLinkDrawerContent, LottieAnimationStatus } from './models/common.model';\nimport {\n IDrawerContent,\n IGameTableNameMapping,\n IImmersiveLobbyGlobalClrConfig,\n IImmersiveLobbyGlobalConfig,\n IImmersiveLobbyJackpotDrawerContent,\n IImmersiveLobbyMap,\n IImmersiveLobbySector,\n IImmersiveLobbySectorItem,\n IImmersiveLobbyStatCategory,\n IImmersiveLobbyStatItem,\n IImmersiveLobbyStats,\n IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER,\n IMMERSIVELOBBY_ITEM_TYPE_CUSTOM_LINK,\n IMMERSIVELOBBY_STATS_CTA_TYPE_GAME,\n IMMERSIVELOBBY_STATS_CTA_TYPE_SECTOR,\n IMMERSIVELOBBY_STATS_CTA_TYPE_STATIC_GAME,\n ImmersiveLobbyConfiguration,\n ImmersiveLobbyStat,\n} from './models/immersive-lobby.model';\n\ninterface IGetMapResponse {\n map: IImmersiveLobbyMap;\n globalConfigMsg: IImmersiveLobbyGlobalConfig;\n globalConfigColor: IImmersiveLobbyGlobalClrConfig;\n}\ninterface IImmersiveLobbyJackpotSectorItem {\n sectorItem: IImmersiveLobbySectorItem;\n index: number;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class ImmersiveLobbyService {\n document: Document;\n categoryRoutePrefix = '/c/';\n sectorIdPrefix = 'lclCat';\n statsRoute = 'liveloungestats';\n loadingObservable: Observable<boolean | null>;\n mapObservable: Observable<boolean | null>;\n backgroundObservable: Observable<boolean | null>;\n animatedLayerObservable: Observable<boolean | null>;\n sectorsObservable: Observable<boolean | null>;\n sectorOpenedObservable: Observable<IImmersiveLobbySector | null>;\n gotoSectorObservable: Observable<string | null>;\n lottieAnimationStatusObservable: Observable<LottieAnimationStatus | null>;\n drawerContentMapAvailable: Observable<boolean | null>;\n onboardingDataAvailable: Observable<boolean | null>;\n statsContentAvailable: Observable<boolean | null>;\n statsDataAvailable: Observable<boolean | null>;\n statsOpenedObservable: Observable<boolean | null>;\n chatWindowOpenedObservable: Observable<boolean | null>;\n private jackpotSectorItem: IImmersiveLobbyJackpotSectorItem;\n\n private currentLobbyType: string;\n private lobbyGames: Array<string>;\n private sectorIds: Array<string>;\n private openedSector: IImmersiveLobbySector | undefined;\n private immersiveLobbyConfig: ImmersiveLobbyConfiguration;\n private loadingPublisher = new BehaviorSubject<boolean>(true);\n private mapPublisher = new BehaviorSubject<boolean>(false);\n private backgroundPublisher = new BehaviorSubject<boolean>(false);\n private animatedLayerPublisher = new BehaviorSubject<boolean>(false);\n private sectorsMap: Map<string, IImmersiveLobbySector> = new Map<string, IImmersiveLobbySector>();\n private sectorsPublisher = new BehaviorSubject<boolean>(false);\n private sectorOpenedPublisher = new BehaviorSubject<IImmersiveLobbySector | null>(null);\n private gotoSectorPublisher = new BehaviorSubject<string | null>(null);\n private lottieAnimationStatusPublisher = new BehaviorSubject<LottieAnimationStatus | null>(null);\n private globalConfigData: IImmersiveLobbyGlobalConfig;\n private mapData: IImmersiveLobbyMap;\n private globalConfigClr: IImmersiveLobbyGlobalClrConfig;\n private drawerContentMap: Map<string, ICustomLinkDrawerContent> = new Map<string, ICustomLinkDrawerContent>();\n private drawerContentMapPublisher = new BehaviorSubject<boolean | null>(null);\n private onboardingData: IOnboarding;\n private onboardingDataPublisher = new BehaviorSubject<boolean | null>(null);\n private statsContent: IImmersiveLobbyStats;\n private statsContentPublisher = new BehaviorSubject<boolean | null>(null);\n private statsData: any;\n private statsDataPublisher = new BehaviorSubject<boolean | null>(null);\n private stats: Array<ImmersiveLobbyStat>;\n private statsOpened: boolean;\n private statsOpendPublisher = new BehaviorSubject<boolean | null>(null);\n private statsError: boolean;\n private statsNotUpdated: boolean;\n private chatWindowOpenedPublisher = new BehaviorSubject<boolean | null>(null);\n jackpotDrawerContentMapAvailable: Observable<boolean | null>;\n statsFetched: boolean = false;\n\n private jackpotDrawerContentMap: Map<string, IImmersiveLobbyJackpotDrawerContent> = new Map<string, IImmersiveLobbyJackpotDrawerContent>();\n private jackpotDrawerContentMapPublisher = new BehaviorSubject<boolean | null>(null);\n constructor(\n private page: Page,\n private windowRef: WindowRef,\n private api: PlatformApiService,\n private tracking: TrackingService,\n private deviceService: DeviceService,\n private messageQueue: MessageQueueService,\n private casinoLobbyService: CasinoLobbyService,\n private configProviderService: ConfigProviderService,\n private casinoCoreGameLaunchService: CasinoCoreGamelaunchService,\n private gameManagerService: GameManagerService,\n ) {\n const nativeWindow = <any>this.windowRef.nativeWindow;\n this.document = nativeWindow.document;\n\n this.lobbyGames = [];\n this.sectorIds = [];\n this.immersiveLobbyConfig = this.configProviderService.provideImmersiveLobbyConfig();\n this.loadingObservable = this.loadingPublisher.asObservable();\n this.mapObservable = this.mapPublisher.asObservable();\n this.backgroundObservable = this.backgroundPublisher.asObservable();\n this.animatedLayerObservable = this.animatedLayerPublisher.asObservable();\n this.sectorsObservable = this.sectorsPublisher.asObservable();\n this.sectorOpenedObservable = this.sectorOpenedPublisher.asObservable();\n this.gotoSectorObservable = this.gotoSectorPublisher.asObservable();\n this.lottieAnimationStatusObservable = this.lottieAnimationStatusPublisher.asObservable();\n this.drawerContentMapAvailable = this.drawerContentMapPublisher.asObservable();\n this.onboardingDataAvailable = this.onboardingDataPublisher.asObservable();\n this.statsContentAvailable = this.statsContentPublisher.asObservable();\n this.statsDataAvailable = this.statsDataPublisher.asObservable();\n this.statsOpenedObservable = this.statsOpendPublisher.asObservable();\n this.chatWindowOpenedObservable = this.chatWindowOpenedPublisher.asObservable();\n this.statsOpened = false;\n this.statsError = false;\n this.statsNotUpdated = false;\n this.jackpotDrawerContentMapAvailable = this.jackpotDrawerContentMapPublisher.asObservable();\n }\n\n get map(): IImmersiveLobbyMap {\n return this.mapData;\n }\n\n getLobbyGames(): Array<string> {\n return this.lobbyGames;\n }\n\n setLobbyGame(game: string): void {\n this.lobbyGames.push(game);\n }\n\n getSectorIds(): Array<string> {\n return this.sectorIds;\n }\n\n setSectorId(sectorId: string): void {\n this.sectorIds.push(sectorId);\n }\n\n get config(): ImmersiveLobbyConfiguration {\n return this.immersiveLobbyConfig;\n }\n\n get globalConfig(): IImmersiveLobbyGlobalConfig {\n return this.globalConfigData;\n }\n\n get globalClrConfig(): IImmersiveLobbyGlobalClrConfig {\n return this.globalConfigClr;\n }\n\n get isMobile(): boolean {\n return this.currentWidth <= 1024;\n }\n\n get lobbyType(): string {\n return this.currentLobbyType;\n }\n\n get mainElement(): HTMLDivElement {\n return this.document.getElementById('main-content')?.parentElement as HTMLDivElement;\n }\n\n get currentWidth(): number {\n const element = this.document.getElementById('casino-viewport');\n return this.deviceService.isiOS ? element?.offsetWidth || window.innerWidth : window.innerWidth;\n }\n\n get currentHeight(): number {\n const element = this.document.getElementById('casino-viewport');\n return this.deviceService.isiOS ? element?.offsetHeight || window.innerHeight : window.innerHeight;\n }\n\n get isMobileLandscape(): boolean {\n return (\n this.deviceService.isMobilePhone &&\n this.currentWidth >= this.immersiveLobbyConfig.mobileLandscapeConfig.minWidth &&\n this.currentWidth <= this.immersiveLobbyConfig.mobileLandscapeConfig.maxWidth\n );\n }\n\n getScreenName(title: string): string {\n const content = document.createElement('span');\n content.className = 'removeHtmlTags';\n content.innerHTML = title;\n content.style.visibility = 'hidden';\n content.style.opacity = '0';\n content.style.height = '0';\n return content.innerHTML.split('<br>').join(' ');\n }\n\n getLoadingStatus() {\n return combineLatest([this.mapObservable, this.backgroundObservable, this.animatedLayerObservable, this.sectorsObservable]);\n }\n\n getMap(mapPath: string): void {\n this.api.post('ImmersiveLobby/GetMap', { mapPath: mapPath }, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: IGetMapResponse) => {\n if (response) {\n this.globalConfigData = response?.globalConfigMsg;\n this.globalConfigClr = response?.globalConfigColor;\n this.mapData = response?.map;\n this.lobbyGames = [];\n this.sectorIds = [];\n this.mapPublisher.next(true);\n this.setCustomLinkDrawerContent();\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n\n initSectors(): void {\n if (this.sectorsMap.size) {\n const lottieSectors = Array.from(this.sectorsMap.values()).filter((sector: IImmersiveLobbySector) => sector.imageType === 'LOTTIE');\n lottieSectors.forEach((m: IImmersiveLobbySector) => {\n m.isLoaded = false;\n });\n this.sectorsPublisher.next(true);\n }\n }\n\n initMap(): void {\n this.mainElement.classList.remove('casino-lobby-height');\n this.loadingPublisher.next(true);\n this.backgroundPublisher.next(false);\n this.animatedLayerPublisher.next(false);\n this.sectorsMap = new Map<string, IImmersiveLobbySector>();\n this.sectorsPublisher.next(false);\n this.gotoSectorPublisher.next(null);\n this.openedSector = undefined;\n this.statsOpened = false;\n this.sectorOpenedPublisher.next(null);\n }\n\n setLobbyType(lobbyType: string): void {\n this.currentLobbyType = lobbyType;\n }\n\n setBackgroundStatus(loaded: boolean): void {\n this.backgroundPublisher.next(loaded);\n }\n\n setAnimatedLayerStatus(loaded: boolean): void {\n this.animatedLayerPublisher.next(loaded);\n }\n\n setSectorLoaded(sectorId: string): void {\n if (this.sectorsMap.size && this.sectorsMap.has(sectorId)) {\n this.sectorsMap.set(sectorId, { ...this.sectorsMap.get(sectorId), isLoaded: true } as IImmersiveLobbySector);\n } else {\n this.sectorsMap.set(sectorId, { isLoaded: true } as IImmersiveLobbySector);\n }\n\n this.sectorsPublisher.next(true);\n }\n\n getSectorsLoadedCount(): number {\n return this.sectorsMap.size ? Array.from(this.sectorsMap.values()).filter((sector: IImmersiveLobbySector) => sector.isLoaded).length : 0;\n }\n\n getOpenedSector(): IImmersiveLobbySector | undefined {\n return this.openedSector;\n }\n\n setSectorOpened(selectedMapItem: IImmersiveLobbySector | null): void {\n if (selectedMapItem) addClass('live-casino-lounge-sector-opened');\n else removeClass('live-casino-lounge-sector-opened');\n\n this.openedSector = selectedMapItem!;\n this.sectorOpenedPublisher.next(selectedMapItem);\n }\n\n gotoSector(categortId: string): void {\n this.gotoSectorPublisher.next(categortId);\n }\n\n setLottieAnimationStatus(status: LottieAnimationStatus): void {\n this.lottieAnimationStatusPublisher.next(status);\n }\n setChatWindowOpened(isOpened: boolean): void {\n this.chatWindowOpenedPublisher.next(isOpened);\n }\n\n setOnboardingData(): void {\n this.api.post('ImmersiveLobby/GetOnboardingContent', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: IOnboarding) => {\n if (response) {\n this.onboardingData = response;\n this.onboardingDataPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n\n getOnboardingData(): IOnboarding {\n return this.onboardingData;\n }\n\n fetchDrawerContent(paths: Array<string>): void {\n this.api\n .post('ImmersiveLobby/FetchContent', { contentPaths: paths }, { responseType: 'json', withCredentials: true, showSpinner: false })\n .subscribe({\n next: (response: ICustomLinkDrawer) => {\n if (response) {\n this.emptyDrawerMap();\n response?.content?.forEach((drawerContent: ICustomLinkDrawerContent) => {\n this.drawerContentMap.set(drawerContent.path, drawerContent);\n });\n this.drawerContentMapPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n\n getDrawerContentMap(): Map<string, ICustomLinkDrawerContent> {\n return this.drawerContentMap;\n }\n\n getDrawerContent(paths: Array<string>): ICustomLinkDrawerContent[] {\n const content = new Array<ICustomLinkDrawerContent>();\n paths.forEach((path: string) => content.push(this.drawerContentMap.get(path) as ICustomLinkDrawerContent));\n return content;\n }\n\n fetchStatsContent(): void {\n if (this.immersiveLobbyConfig.enableStats) {\n this.api.post('ImmersiveLobby/FetchStatsContent', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: IImmersiveLobbyStats) => {\n if (response) {\n this.statsContent = response;\n this.statsContentPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n }\n\n get isStatsOpened(): boolean {\n return this.statsOpened;\n }\n\n getStatsContent(): IImmersiveLobbyStats {\n return this.statsContent;\n }\n\n fetchStatsData(): void {\n if (this.immersiveLobbyConfig.enableStats) {\n this.api.post('ImmersiveLobby/FetchStats', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: JSON) => {\n if (response) {\n this.emptyStats();\n this.statsData = response;\n this.statsDataPublisher.next(true);\n }\n },\n error: () => {\n this.statsError = true;\n },\n });\n }\n }\n\n getStatsData(): JSON {\n return this.statsData;\n }\n\n get isStatsError(): boolean {\n return this.statsError;\n }\n\n get isStatsNotUpdated(): boolean {\n return this.statsNotUpdated;\n }\n\n emptyStats(): void {\n this.stats = [];\n }\n\n setStatsOpened(isOpened: boolean): void {\n this.statsOpened = isOpened;\n this.statsOpendPublisher.next(isOpened);\n }\n\n getStats(): Array<ImmersiveLobbyStat> {\n if (this.stats?.length) return this.stats;\n\n if (this.statsContent && this.statsData) {\n const loadFlag = this.statsData['dataFlag']?.['loadFlag'];\n if (loadFlag) this.statsNotUpdated = loadFlag === 'N';\n\n const disabledGames = this.casinoLobbyService.getDisabledGames();\n this.statsContent.categories.forEach((category: IImmersiveLobbyStatCategory) => {\n const stat = new ImmersiveLobbyStat();\n const apiCategory = this.statsData[category.categoryId];\n if (category) {\n stat.category = category;\n const currency = this.statsData['ccy'];\n let statIndex = 0;\n this.statsContent?.stats\n ?.filter(\n (m: IImmersiveLobbyStatItem) => m.itemId && m.itemId.indexOf('.') > -1 && m.itemId.split('.')[0] === category.categoryId,\n )\n .forEach((statItem: IImmersiveLobbyStatItem) => {\n const itemKey = statItem.itemId.split('.')[1];\n const statAPIItem = apiCategory[itemKey];\n if (!statAPIItem || !statItem) return;\n\n let isValid = true;\n const locale = this.page.locale;\n if (typeof statAPIItem === 'object') {\n if (statItem.dataType === 'Currency') {\n const convertedCurrency = getAmount(statAPIItem['winAMT'], currency, locale);\n statItem.value = convertedCurrency.value;\n isValid = convertedCurrency.isValid;\n } else statItem.value = statAPIItem['winAMT'];\n\n const gameId = statAPIItem['vendorGmName'];\n if (gameId) {\n const gameInfo = this.gameManagerService.getGameInfo(gameId);\n if (gameInfo) {\n statItem.gameId = gameId;\n statItem.gameName = gameInfo.name;\n statItem.isDynamicGame = true;\n }\n\n if (disabledGames.includes(gameId)) statItem.isDynamicGame = false;\n }\n\n if (statItem.showCTA && statItem.ctaType === IMMERSIVELOBBY_STATS_CTA_TYPE_GAME)\n statItem.showCTA = statItem.isDynamicGame;\n\n const betTS = statAPIItem['betTS'];\n if (betTS) {\n const date = toDate(betTS);\n statItem.betTS = date;\n }\n } else {\n let statValue = statAPIItem ? statAPIItem.toString() : '';\n if (statValue) {\n statValue = statValue.indexOf('_') > -1 ? statValue : statValue?.toLowerCase();\n switch (statItem.dataType) {\n case 'Number':\n {\n if (isNaN(statValue)) {\n const number = textToNumber(statValue);\n statItem.value = number !== -1 ? number : statValue;\n } else statItem.value = statValue.indexOf('.') > -1 ? parseFloat(statValue).toFixed(2) : statValue;\n }\n break;\n case 'Time':\n statItem.value = toTimeStamp(statValue);\n break;\n case 'Date':\n statItem.value = toDate(statValue);\n break;\n case 'Currency':\n {\n const convertedCurrency = getAmount(statValue, currency, locale);\n statItem.value = convertedCurrency.value;\n isValid = convertedCurrency.isValid;\n }\n break;\n case 'Game':\n if (this.immersiveLobbyConfig.enableGameNameMapping) {\n const gameTableNames = this.statsContent?.gameTableNames;\n let gameTableName = statValue;\n if (gameTableNames?.length) {\n const statAPIValue = statAPIItem ? statAPIItem.toString() : '';\n const fiteredGameTableName = gameTableNames.find(\n (m: IGameTableNameMapping) =>\n m.physicalName === statAPIValue || m.gameTableName === statAPIValue,\n );\n gameTableName = fiteredGameTableName?.commercialGameTableName\n ? fiteredGameTableName.commercialGameTableName\n : gameTableName;\n }\n statItem.value = gameTableName;\n } else statItem.value = statValue;\n break;\n default:\n statItem.value = statValue;\n break;\n }\n }\n\n const hideCTAForGameDataType =\n this.immersiveLobbyConfig.enableGameNameMapping &&\n statItem.dataType === 'Game' &&\n statItem.showCTA &&\n statItem.ctaType === IMMERSIVELOBBY_STATS_CTA_TYPE_STATIC_GAME;\n if (statItem.ctaType === IMMERSIVELOBBY_STATS_CTA_TYPE_GAME || hideCTAForGameDataType) statItem.showCTA = false;\n }\n\n if (statItem.showCTA && statItem.staticGameId && statItem.ctaType === IMMERSIVELOBBY_STATS_CTA_TYPE_STATIC_GAME) {\n const gameInfo = this.gameManagerService.getGameInfo(statItem.staticGameId);\n if (gameInfo) {\n statItem.gameId = statItem.staticGameId;\n statItem.gameName = gameInfo.name;\n statItem.isStaticGame = true;\n }\n\n if (disabledGames.includes(statItem.staticGameId)) statItem.isStaticGame = false;\n\n statItem.showCTA = statItem.isStaticGame;\n }\n\n if (statItem.showCTA && statItem.ctaType === IMMERSIVELOBBY_STATS_CTA_TYPE_SECTOR)\n statItem.showCTA = this.sectorIds.includes(statItem.sectorId);\n\n if (statItem.value && statItem.value != '0' && isValid) {\n if (category.showHighlights && statIndex <= 2) stat.impStats.push(statItem);\n else stat.stats.push(statItem);\n statIndex++;\n }\n });\n\n stat.isAvailable = stat.impStats?.length > 0 || stat.stats?.length > 0;\n this.stats.push(stat);\n }\n });\n }\n\n if (this.stats?.length) this.stats = this.stats.sort((a, b) => (a.isAvailable ? 0 : 1) - (b.isAvailable ? 0 : 1));\n\n return this.stats;\n }\n\n showLoading(): void {\n if (!this.document.querySelector('.height-cls-skeleton')) this.loadingPublisher.next(true);\n }\n\n hideLoading(): void {\n if (this.document.querySelector('.height-cls-skeleton')) this.loadingPublisher.next(false);\n }\n\n getRowSpan(icon: string): number {\n switch (icon) {\n case '2':\n case '-2':\n return 1;\n case '3':\n case '-3':\n return 2;\n case '4':\n case '-4':\n return 2;\n case '5':\n case '-5':\n return 2;\n case '6':\n case '-6':\n return 1;\n case '7':\n case '-7':\n return 1;\n default:\n return 1;\n }\n }\n\n getColSpan(icon: string, isTouch: boolean): number {\n switch (icon) {\n case '2':\n case '-2':\n return 2;\n case '3':\n case '-3':\n return 1;\n case '4':\n case '-4':\n return 2;\n case '5':\n case '-5':\n if (isTouch) {\n return 2;\n } else {\n return 3;\n }\n case '6':\n case '-6':\n return 1;\n case '7':\n case '-7':\n return 2;\n default:\n return 1;\n }\n }\n\n getCategoryInfo(): { categoryId: string; categoryName: string } {\n const link = window.location.href;\n const subCategoryUrl = this.categoryRoutePrefix;\n let categoryId = link.substr(link.indexOf(subCategoryUrl) + (subCategoryUrl?.length || 0));\n if (categoryId.indexOf('?') !== -1) categoryId = categoryId.substr(0, categoryId.indexOf('?'));\n const lobbyInfo = this.casinoLobbyService.getLobbyInfo(this.lobbyType);\n const categoryInfo = lobbyInfo?.categoriesMap.get(categoryId);\n return { categoryId, categoryName: categoryInfo?.engCategoryName || '' };\n }\n\n trackEvent(\n trackingType: string,\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ): void {\n this.tracking.triggerEvent(trackingType, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n getJackpotSectorItem(): IImmersiveLobbyJackpotSectorItem {\n return this.jackpotSectorItem;\n }\n\n setJackpotSectorItem(jackpotSectorItem: IImmersiveLobbySectorItem, index: number): void {\n this.jackpotSectorItem = { sectorItem: jackpotSectorItem, index: index } as IImmersiveLobbyJackpotSectorItem;\n }\n\n launchGame(gameId: string, categoryId: string, index: number): void {\n const gameModel = new GameLaunch();\n gameModel.isTouch = this.deviceService.isTouch;\n gameModel.replaceRouteInHistory = false;\n gameModel.isDemoLaunch = false;\n gameModel.skipUnfinGame = false;\n gameModel.categoryType = categoryId;\n gameModel.game = this.gameManagerService.getGameInfo(gameId) || gameId;\n gameModel.game.gameId = gameId;\n gameModel.game.lobbyType = this.lobbyType;\n gameModel.gameLaunchedFrom = categoryId;\n gameModel.gridPosition = Number(index + 1);\n gameModel.gamePosition = index;\n gameModel.from = 'q';\n gameModel.gameContainer = '';\n gameModel.audioFrom = true;\n gameModel.clickTimeStamp = this.casinoCoreGameLaunchService.currentTimeStamp();\n this.casinoCoreGameLaunchService.launchGame(gameModel);\n }\n\n private emptyDrawerMap(): void {\n if (this.drawerContentMap && this.drawerContentMap.size > 0) this.drawerContentMap.clear();\n }\n\n private emptyJackpotDrawerMap(): void {\n if (this.jackpotDrawerContentMap && this.jackpotDrawerContentMap.size > 0) this.jackpotDrawerContentMap.clear();\n }\n\n // private setCustomLinkDrawerContentLiveLounge(): void {\n // if (this.mapData) {\n // let paths = new Map<string, Array<string>>();\n // this.mapData?.sectors.forEach((sector: IImmersiveLobbySector) => {\n // const customLinkDrawers = sector?.customLinks?.filter(m => m?.customLinkType === CUSTOM_LINK_TYPE_DRAWER && m?.customLinkDrawerContent).map(m => m.customLinkDrawerContent);\n // const customLinkDrawerContents = new Array<string>().concat(...customLinkDrawers);\n // if (customLinkDrawerContents.length) {\n // if (paths.has(CUSTOM_LINK_TYPE_DRAWER)) {\n // const content = paths.get(CUSTOM_LINK_TYPE_DRAWER);\n // paths.set(CUSTOM_LINK_TYPE_DRAWER, (content && content.length) ? content.concat(customLinkDrawerContents) : customLinkDrawerContents);\n // }\n // else\n // paths.set(CUSTOM_LINK_TYPE_DRAWER, customLinkDrawerContents);\n // }\n // });\n\n // if (paths && paths.size) {\n // paths.forEach((value: string[], key: string) => {\n // if (!value?.length) return;\n // if (key === CUSTOM_LINK_TYPE_DRAWER)\n // this.fetchDrawerContent(value.filter(onlyUnique));\n // });\n // }\n // }\n // }\n fetchJackpotDrawerContent(paths: Array<string>): void {\n this.api\n .post(\n 'ImmersiveLobby/FetchJackpotDrawerContent',\n { contentPaths: paths },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n )\n .subscribe(\n (response: IDrawerContent) => {\n if (response) {\n this.emptyJackpotDrawerMap();\n response?.content?.forEach((drawerContent: IImmersiveLobbyJackpotDrawerContent) => {\n this.jackpotDrawerContentMap.set(drawerContent.path, drawerContent);\n });\n this.jackpotDrawerContentMapPublisher.next(true);\n }\n },\n (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n );\n }\n\n private setCustomLinkDrawerContent(): void {\n if (this.mapData) {\n const paths = new Map<string, Array<string>>();\n this.mapData?.sectors?.forEach((sector: IImmersiveLobbySector) => {\n if (sector.sectorType == 'Default') {\n const customLinkDrawers: any = sector?.customLinkItems\n ?.filter((m) => m?.customLink.customLinkType === CUSTOM_LINK_TYPE_DRAWER && m?.customLink.customLinkDrawerContent)\n .map((m) => m.customLink.customLinkDrawerContent);\n const customLinkDrawerContents = customLinkDrawers ? new Array<string>().concat(...customLinkDrawers) : [];\n this.customLink(customLinkDrawerContents, paths);\n this.customUniquePath(paths);\n } else {\n const customLinks = sector?.customLinks?.filter((m) => m?.itemType === IMMERSIVELOBBY_ITEM_TYPE_CUSTOM_LINK) || [];\n const customLinkDrawers: any = customLinks\n .filter((m) => m?.customLinkType === CUSTOM_LINK_TYPE_DRAWER && m?.customLinkDrawerContent)\n .map((m) => m.customLinkDrawerContent);\n const customLinkDrawerContents = new Array<string>().concat(...customLinkDrawers);\n this.customLink(customLinkDrawerContents, paths);\n const customLinkJackpotDrawers: any = customLinks\n .filter((m) => m?.customLinkType === IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER && m?.customLinkDrawerContent)\n .map((m) => m.customLinkDrawerContent);\n const customLinkJackpotDrawerContents = new Array<string>().concat(...customLinkJackpotDrawers);\n this.customLinkJackpot(customLinkJackpotDrawerContents, paths);\n }\n });\n this.customPathSize(paths);\n }\n }\n customLink(customLinkDrawerContents: any, paths: any) {\n if (customLinkDrawerContents?.length) {\n if (paths.has(CUSTOM_LINK_TYPE_DRAWER)) {\n const content = paths.get(CUSTOM_LINK_TYPE_DRAWER);\n paths.set(CUSTOM_LINK_TYPE_DRAWER, content && content.length ? content.concat(customLinkDrawerContents) : customLinkDrawerContents);\n } else paths.set(CUSTOM_LINK_TYPE_DRAWER, customLinkDrawerContents);\n }\n }\n customLinkJackpot(customLinkJackpotDrawerContents: any, paths: any) {\n if (customLinkJackpotDrawerContents?.length) {\n if (paths.has(IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER)) {\n const content = paths.get(IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER);\n paths.set(\n IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER,\n content && content.length ? content.concat(customLinkJackpotDrawerContents) : customLinkJackpotDrawerContents,\n );\n } else paths.set(IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER, customLinkJackpotDrawerContents);\n }\n }\n customPathSize(paths: any) {\n if (paths && paths.size) {\n paths.forEach((value: string[], key: string) => {\n if (!value?.length) return;\n if (key === CUSTOM_LINK_TYPE_DRAWER) this.fetchDrawerContent(value.filter(onlyUnique));\n if (key === IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER) this.fetchJackpotDrawerContent(value.filter(onlyUnique));\n });\n }\n }\n customUniquePath(paths: any) {\n if (paths && paths.size) {\n paths.forEach((value: string[], key: string) => {\n if (!value?.length) return;\n if (key === CUSTOM_LINK_TYPE_DRAWER) this.fetchDrawerContent(value.filter(onlyUnique));\n });\n }\n }\n // NFR - Services optimization - Remove\n getJackpotDrawerContentMap(): Map<string, IImmersiveLobbyJackpotDrawerContent> {\n return this.jackpotDrawerContentMap;\n }\n\n getJackpotDrawerContent(paths: Array<string>): IImmersiveLobbyJackpotDrawerContent[] {\n const content = new Array<IImmersiveLobbyJackpotDrawerContent>();\n paths.forEach((path: string) => {\n content.push(this.jackpotDrawerContentMap.get(path) as IImmersiveLobbyJackpotDrawerContent);\n });\n\n return content;\n }\n getJackpotAmount(jackpotAmount: string, jpTickerIncrement: number, formatCurrency: Function): { jpAmount: string; jpTickerIncrement: number } {\n const globalClientConfig = this.configProviderService.provideGlobalConfig();\n const jackpotConfig = this.configProviderService.provideJackpotConfig();\n let currency: string = '';\n\n jackpotAmount = jackpotAmount.replace(/\\ /g, '');\n const initialcurrency = jackpotAmount.match(/[^\\d\\.\\,\\s]/g);\n if (initialcurrency && initialcurrency.length > 0) {\n for (let i = 0; i < initialcurrency.length; i++) {\n currency = currency + initialcurrency[i];\n }\n currency = currency.replace(/\\,/g, '');\n currency = currency.replace(/\\./g, '');\n }\n\n jackpotAmount = jackpotAmount.replace(/\\ /g, '');\n jackpotAmount = jackpotAmount.replace(/\\�/g, '');\n jackpotAmount = jackpotAmount.replace(/\\,/g, '');\n jackpotAmount = jackpotAmount.replace(/\\./g, '');\n jackpotAmount = jackpotAmount.replace(currency, '');\n jackpotAmount = jackpotAmount.replace(/\\s/g, '');\n jackpotAmount = jackpotAmount.match(/\\b[\\d, ]+\\b/g)![0];\n\n if (jackpotAmount.length > 2) {\n const realpart = jackpotAmount.slice(0, jackpotAmount.length - 2);\n const decimalpart = jackpotAmount.slice(-2);\n jackpotAmount = realpart + '.' + decimalpart;\n }\n\n let jackpotTickValue: number | string = parseFloat(jackpotAmount.replace(/,/g, ''));\n if (globalClientConfig.lobbyConfigurations.IncrementTickingForJackpotOnGameTiles)\n jpTickerIncrement = +globalClientConfig.lobbyConfigurations.IncrementTickingForJackpotOnGameTiles;\n\n jackpotTickValue = jackpotTickValue + jpTickerIncrement * 0.01;\n jackpotTickValue = formatCurrency(jackpotTickValue.toFixed(2));\n if (jackpotConfig?.showJackpotCurrencyOnRight) {\n jackpotTickValue = (jackpotTickValue as string).replace(/[,.]/g, (m: any) => (m === ',' ? '.' : ','));\n return { jpAmount: jackpotTickValue + ' ' + currency + '.', jpTickerIncrement: jpTickerIncrement };\n } else return { jpAmount: currency + ' ' + jackpotTickValue, jpTickerIncrement: jpTickerIncrement };\n }\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nimport { IContentLink, ImmersiveLobbyConfig } from './common.model';\nimport { GameLobbyModel } from './game-lobby.model';\n\nexport const LIVELOUNGE_ONBOARDING_COOKIE_NAME = 'hideLCLoungeOnboarding';\nexport const LIVELOUNGE_STATS_CTA_TYPE_GAME = 'Game';\nexport const LIVELOUNGE_STATS_CTA_TYPE_STATIC_GAME = 'StaticGame';\nexport const LIVELOUNGE_STATS_CTA_TYPE_SECTOR = 'Sector';\n\nexport interface LiveLoungeIContentParameters {\n CustomLinkDrawerBgClr: string;\n CustomLinkDrawerHeaderClr: string;\n}\n\nexport interface ILiveCasinoLoungeCustomLink {\n customLinkType?: string;\n customLinkIcon?: IContentImage;\n iconType: string;\n customLink?: IContentLink;\n customLinkDrawerTitle?: string;\n customLinkDrawerBackgroundImage: IContentImage;\n customLinkDrawerContent?: Array<string>;\n messages: any;\n configurationsContent: any;\n constantMessages: any;\n condition: string;\n\n // Custom Props\n isLoaded: boolean;\n}\n\nexport class LiveCasinoLoungeSectorItem {\n isGame: boolean;\n rowSpan: number;\n colSpan: number;\n iconType: string;\n game: GameLobbyModel;\n customLink: ILiveCasinoLoungeCustomLink;\n}\n\nexport interface ILiveCasinoLoungeSector {\n isDisabled: boolean;\n categoryId: string;\n categoryName: string;\n width: number;\n height: number;\n top: number;\n left: number;\n imageType: string;\n sectorImage: string;\n sectorIcon: IContentImage;\n isDirectGameLaunch: boolean;\n gamesGridColumns: number;\n customLinksGridWidth: number;\n customLinkItems: Array<ILiveCasinoLoungeCustomLink>;\n customLinksGridColumns: number;\n customLinksPosition: string;\n condition: string;\n gamesDisplayType: string;\n\n // Custom Props\n categoryIndex: number;\n sectorContainerId: string;\n isLoaded: boolean;\n lobbyGames: Array<GameLobbyModel>;\n games: Array<LiveCasinoLoungeSectorItem>;\n customLinks: Array<LiveCasinoLoungeSectorItem>;\n}\n\nexport interface ILiveCasinoLoungeMap {\n width: number;\n height: number;\n backgroundImage: IContentImage;\n layeredImageType: string;\n layeredImage: string;\n sectors: Array<ILiveCasinoLoungeSector>;\n condition: string;\n audioFile?: string;\n}\n\nexport interface ILiveCasinoLoungeStatCategory {\n categoryId: string;\n categoryName: string;\n categoryIcon: IContentImage;\n showHighlights: boolean;\n}\n\nexport interface ILiveCasinoLoungeStatItem {\n itemId: string;\n itemName: string;\n itemIcon: IContentImage;\n showCTA: boolean;\n ctaText: string;\n ctaType: string;\n sectorId: string;\n staticGameId: string;\n showTimeFrame: boolean;\n timeFrame: string;\n dataType: string;\n\n // Custom Props\n value: string;\n gameId: string;\n gameName: string;\n betTS: string;\n isStaticGame: boolean;\n isDynamicGame: boolean;\n}\n\nexport interface IGameTableName {\n physicalName: string;\n gameTableName: string;\n commercialGameTableName: string;\n}\n\nexport interface ILiveCasinoLoungeStats {\n welcomeTitle: string;\n welcomeDescription: string;\n welcomeBackgroundImage: IContentImage;\n statsDrawerTitle: string;\n statsDrawerBackgroundColor: string;\n statsDrawerHeaderColor: string;\n statsDrawerBackgroundImage: IContentImage;\n statsEmptyMessage: string;\n statsLoginMessage: string;\n statsLoginCategoryName: string;\n statsFooterContent: string;\n statsErrorMessage: string;\n statsUpdateErrorMessage: string;\n categories: Array<ILiveCasinoLoungeStatCategory>;\n stats: Array<ILiveCasinoLoungeStatItem>;\n gameTableNames: Array<IGameTableName>;\n condition: string;\n}\n\nexport class LiveCasinoLoungeConfiguration extends ImmersiveLobbyConfig {\n enabled: boolean;\n defaultCategoryId: string;\n statCategoriesDataPath: string;\n statItemsDataPath: string;\n statsDataPath: string;\n enableAudioButton: boolean;\n enableGameNameMapping: boolean;\n enableStats: boolean;\n}\n\nexport class LiveCasinoLoungeStat {\n category: ILiveCasinoLoungeStatCategory;\n stats: Array<ILiveCasinoLoungeStatItem>;\n impStats: Array<ILiveCasinoLoungeStatItem>;\n isAvailable: boolean;\n\n constructor() {\n this.stats = [];\n this.impStats = [];\n this.isAvailable = false;\n }\n}\n\nexport interface ILiveCasinoLoungeGlobalConfig {\n StatsPreloginBtnText: string;\n}\n\nexport interface ILiveCasinoLoungeGlobalClrConfig {\n mapBgClr: string;\n statsIconBgColor: string;\n statsThemeIcon: string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { addClass, getAmount, onlyUnique, removeClass, textToNumber, toDate, toTimeStamp } from '@casinocore/platform/utils';\nimport { IOnboarding } from '@casinocore/type-utils';\nimport { DeviceService, Message, MessageLifetime, MessageQueueService, MessageType, Page, TrackingService, WindowRef } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { CasinoCoreGamelaunchService } from './gamelaunch.service';\nimport { CUSTOM_LINK_TYPE_DRAWER, ICustomLinkDrawerContent, LottieAnimationStatus } from './models/common.model';\nimport { GameLaunch } from './models/gamelaunch.model';\nimport {\n IGameTableName,\n ILiveCasinoLoungeGlobalClrConfig,\n ILiveCasinoLoungeGlobalConfig,\n ILiveCasinoLoungeMap,\n ILiveCasinoLoungeSector,\n ILiveCasinoLoungeStatCategory,\n ILiveCasinoLoungeStatItem,\n ILiveCasinoLoungeStats,\n LIVELOUNGE_STATS_CTA_TYPE_GAME,\n LIVELOUNGE_STATS_CTA_TYPE_SECTOR,\n LIVELOUNGE_STATS_CTA_TYPE_STATIC_GAME,\n LiveCasinoLoungeConfiguration,\n LiveCasinoLoungeStat,\n} from './models/live-casino-lounge.model';\n\ninterface IGetMapResponse {\n map: ILiveCasinoLoungeMap;\n globalConfig: ILiveCasinoLoungeGlobalConfig;\n globalClrConfig: ILiveCasinoLoungeGlobalClrConfig;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LiveCasinoLoungeService {\n document: Document;\n categoryRoutePrefix = '/c/';\n sectorIdPrefix = 'lclCat';\n statsRoute = 'liveloungestats';\n loadingObservable: Observable<boolean | null>;\n mapObservable: Observable<boolean | null>;\n backgroundObservable: Observable<boolean | null>;\n animatedLayerObservable: Observable<boolean | null>;\n sectorsObservable: Observable<boolean | null>;\n sectorOpenedObservable: Observable<ILiveCasinoLoungeSector | null>;\n gotoSectorObservable: Observable<string | null>;\n lottieAnimationStatusObservable: Observable<LottieAnimationStatus | null>;\n drawerContentMapAvailable: Observable<boolean | null>;\n onboardingDataAvailable: Observable<boolean | null>;\n statsContentAvailable: Observable<boolean | null>;\n statsDataAvailable: Observable<boolean | null>;\n statsOpenedObservable: Observable<boolean | null>;\n statsFetched: boolean = false;\n\n private currentLobbyType: string;\n private lobbyGames: Array<string>;\n private sectorIds: Array<string>;\n private openedSector: ILiveCasinoLoungeSector | undefined;\n private liveCasinoLoungeConfig: LiveCasinoLoungeConfiguration;\n private loadingPublisher = new BehaviorSubject<boolean>(true);\n private mapPublisher = new BehaviorSubject<boolean>(false);\n private backgroundPublisher = new BehaviorSubject<boolean>(false);\n private animatedLayerPublisher = new BehaviorSubject<boolean>(false);\n private sectorsMap: Map<string, ILiveCasinoLoungeSector> = new Map<string, ILiveCasinoLoungeSector>();\n private sectorsPublisher = new BehaviorSubject<boolean>(false);\n private sectorOpenedPublisher = new BehaviorSubject<ILiveCasinoLoungeSector | null>(null);\n private gotoSectorPublisher = new BehaviorSubject<string | null>(null);\n private lottieAnimationStatusPublisher = new BehaviorSubject<LottieAnimationStatus | null>(null);\n private globalConfigData: ILiveCasinoLoungeGlobalConfig;\n private mapData: ILiveCasinoLoungeMap;\n private globalConfigClr: ILiveCasinoLoungeGlobalClrConfig;\n private drawerContentMap: Map<string, ICustomLinkDrawerContent> = new Map<string, ICustomLinkDrawerContent>();\n private drawerContentMapPublisher = new BehaviorSubject<boolean | null>(null);\n private onboardingData: IOnboarding;\n private onboardingDataPublisher = new BehaviorSubject<boolean | null>(null);\n private statsContent: ILiveCasinoLoungeStats;\n private statsContentPublisher = new BehaviorSubject<boolean | null>(null);\n private statsData: any;\n private statsDataPublisher = new BehaviorSubject<boolean | null>(null);\n private stats: Array<LiveCasinoLoungeStat>;\n private statsOpened: boolean;\n private statsOpendPublisher = new BehaviorSubject<boolean | null>(null);\n private statsError: boolean;\n private statsNotUpdated: boolean;\n\n constructor(\n private page: Page,\n private windowRef: WindowRef,\n private api: PlatformApiService,\n private tracking: TrackingService,\n private deviceService: DeviceService,\n private messageQueue: MessageQueueService,\n private casinoLobbyService: CasinoLobbyService,\n private configProviderService: ConfigProviderService,\n private casinoCoreGameLaunchService: CasinoCoreGamelaunchService,\n private gameManagerService: GameManagerService,\n ) {\n const nativeWindow = <any>this.windowRef.nativeWindow;\n this.document = nativeWindow.document;\n\n this.lobbyGames = [];\n this.sectorIds = [];\n this.liveCasinoLoungeConfig = this.configProviderService.provideLiveCasinoLoungeConfig();\n this.loadingObservable = this.loadingPublisher.asObservable();\n this.mapObservable = this.mapPublisher.asObservable();\n this.backgroundObservable = this.backgroundPublisher.asObservable();\n this.animatedLayerObservable = this.animatedLayerPublisher.asObservable();\n this.sectorsObservable = this.sectorsPublisher.asObservable();\n this.sectorOpenedObservable = this.sectorOpenedPublisher.asObservable();\n this.gotoSectorObservable = this.gotoSectorPublisher.asObservable();\n this.lottieAnimationStatusObservable = this.lottieAnimationStatusPublisher.asObservable();\n this.drawerContentMapAvailable = this.drawerContentMapPublisher.asObservable();\n this.onboardingDataAvailable = this.onboardingDataPublisher.asObservable();\n this.statsContentAvailable = this.statsContentPublisher.asObservable();\n this.statsDataAvailable = this.statsDataPublisher.asObservable();\n this.statsOpenedObservable = this.statsOpendPublisher.asObservable();\n this.statsOpened = false;\n this.statsError = false;\n this.statsNotUpdated = false;\n }\n\n get map(): ILiveCasinoLoungeMap {\n return this.mapData;\n }\n\n getLobbyGames(): Array<string> {\n return this.lobbyGames;\n }\n\n setLobbyGame(game: string): void {\n this.lobbyGames.push(game);\n }\n\n getSectorIds(): Array<string> {\n return this.sectorIds;\n }\n\n setSectorId(sectorId: string): void {\n this.sectorIds.push(sectorId);\n }\n\n get config(): LiveCasinoLoungeConfiguration {\n return this.liveCasinoLoungeConfig;\n }\n\n get globalConfig(): ILiveCasinoLoungeGlobalConfig {\n return this.globalConfigData;\n }\n\n get globalClrConfig(): ILiveCasinoLoungeGlobalClrConfig {\n return this.globalConfigClr;\n }\n\n get isMobile(): boolean {\n return this.currentWidth <= 1024;\n }\n\n get lobbyType(): string {\n return this.currentLobbyType;\n }\n\n get mainElement(): HTMLDivElement {\n return this.document.getElementById('main-content')?.parentElement as HTMLDivElement;\n }\n\n get currentWidth(): number {\n const element = this.document.getElementById('casino-viewport');\n return this.deviceService.isiOS ? element?.offsetWidth || this.deviceService.windowWidth() : this.deviceService.windowWidth();\n }\n\n get currentHeight(): number {\n const element = this.document.getElementById('casino-viewport');\n return this.deviceService.isiOS ? element?.offsetHeight || window.innerHeight : window.innerHeight;\n }\n\n get isMobileLandscape(): boolean {\n return (\n this.deviceService.isMobilePhone &&\n this.currentWidth >= this.liveCasinoLoungeConfig.mobileLandscapeConfig.minWidth &&\n this.currentWidth <= this.liveCasinoLoungeConfig.mobileLandscapeConfig.maxWidth\n );\n }\n\n getScreenName(title: string): string {\n const content = document.createElement('span');\n content.className = 'removeHtmlTags';\n content.innerHTML = title;\n content.style.visibility = 'hidden';\n content.style.opacity = '0';\n content.style.height = '0';\n return content.innerHTML.split('<br>').join(' ');\n }\n\n getLoadingStatus() {\n return combineLatest([this.mapObservable, this.backgroundObservable, this.animatedLayerObservable, this.sectorsObservable]);\n }\n\n getMap(mapPath: string): void {\n this.api\n .post('LiveCasinoLounge/GetMap', { mapPath: mapPath }, { responseType: 'json', withCredentials: true, showSpinner: false })\n .subscribe({\n next: (response: IGetMapResponse) => {\n if (response) {\n this.globalConfigData = response?.globalConfig;\n this.globalConfigClr = response?.globalClrConfig;\n this.mapData = response.map;\n this.lobbyGames = [];\n this.sectorIds = [];\n this.mapPublisher.next(true);\n this.setCustomLinkDrawerContent();\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n\n initSectors(): void {\n if (this.sectorsMap.size) {\n const lottieSectors = Array.from(this.sectorsMap.values()).filter((sector: ILiveCasinoLoungeSector) => sector.imageType === 'LOTTIE');\n lottieSectors.forEach((m: ILiveCasinoLoungeSector) => {\n m.isLoaded = false;\n });\n this.sectorsPublisher.next(true);\n }\n }\n\n initMap(): void {\n this.mainElement.classList.remove('casino-lobby-height');\n this.loadingPublisher.next(true);\n this.backgroundPublisher.next(false);\n this.animatedLayerPublisher.next(false);\n this.sectorsMap = new Map<string, ILiveCasinoLoungeSector>();\n this.sectorsPublisher.next(false);\n this.gotoSectorPublisher.next(null);\n this.openedSector = undefined;\n this.statsOpened = false;\n this.sectorOpenedPublisher.next(null);\n }\n\n setLobbyType(lobbyType: string): void {\n this.currentLobbyType = lobbyType;\n }\n\n setBackgroundStatus(loaded: boolean): void {\n this.backgroundPublisher.next(loaded);\n }\n\n setAnimatedLayerStatus(loaded: boolean): void {\n this.animatedLayerPublisher.next(loaded);\n }\n\n setSectorLoaded(sectorId: string): void {\n if (this.sectorsMap.size && this.sectorsMap.has(sectorId)) {\n this.sectorsMap.set(sectorId, { ...this.sectorsMap.get(sectorId), isLoaded: true } as ILiveCasinoLoungeSector);\n } else {\n this.sectorsMap.set(sectorId, { isLoaded: true } as ILiveCasinoLoungeSector);\n }\n\n this.sectorsPublisher.next(true);\n }\n\n getSectorsLoadedCount(): number {\n return this.sectorsMap.size ? Array.from(this.sectorsMap.values()).filter((sector: ILiveCasinoLoungeSector) => sector.isLoaded).length : 0;\n }\n\n getOpenedSector(): ILiveCasinoLoungeSector | undefined {\n return this.openedSector;\n }\n\n setSectorOpened(selectedMapItem: ILiveCasinoLoungeSector | null): void {\n if (selectedMapItem) addClass('live-casino-lounge-sector-opened');\n else removeClass('live-casino-lounge-sector-opened');\n\n this.openedSector = selectedMapItem!;\n this.sectorOpenedPublisher.next(selectedMapItem);\n }\n\n gotoSector(categortId: string): void {\n this.gotoSectorPublisher.next(categortId);\n }\n\n setLottieAnimationStatus(status: LottieAnimationStatus): void {\n this.lottieAnimationStatusPublisher.next(status);\n }\n\n setOnboardingData(): void {\n this.api.post('LiveCasinoLounge/GetOnboardingContent', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: IOnboarding) => {\n if (response) {\n this.onboardingData = response;\n this.onboardingDataPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n\n getOnboardingData(): IOnboarding {\n return this.onboardingData;\n }\n\n fetchDrawerContent(paths: Array<string>): void {\n this.api\n .post('LiveCasinoLounge/FetchContent', { contentPaths: paths }, { responseType: 'json', withCredentials: true, showSpinner: false })\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.emptyDrawerMap();\n response.forEach((drawerContent: ICustomLinkDrawerContent) => {\n this.drawerContentMap.set(drawerContent.path, drawerContent);\n });\n this.drawerContentMapPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n\n getDrawerContentMap(): Map<string, ICustomLinkDrawerContent> {\n return this.drawerContentMap;\n }\n\n getDrawerContent(paths: Array<string>): ICustomLinkDrawerContent[] {\n const content = new Array<ICustomLinkDrawerContent>();\n paths.forEach((path: string) => content.push(this.drawerContentMap.get(path) as ICustomLinkDrawerContent));\n return content;\n }\n\n fetchStatsContent(): void {\n if (this.liveCasinoLoungeConfig.enableStats) {\n this.api.post('LiveCasinoLounge/FetchStatsContent', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: ILiveCasinoLoungeStats) => {\n if (response) {\n this.statsContent = response;\n this.statsContentPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n }\n\n get isStatsOpened(): boolean {\n return this.statsOpened;\n }\n\n getStatsContent(): ILiveCasinoLoungeStats {\n return this.statsContent;\n }\n\n fetchStatsData(): void {\n if (this.liveCasinoLoungeConfig.enableStats) {\n this.api.post('LiveCasinoLounge/FetchStats', {}, { responseType: 'json', withCredentials: true, showSpinner: false }).subscribe({\n next: (response: JSON) => {\n if (response) {\n this.emptyStats();\n this.statsData = response;\n this.statsDataPublisher.next(true);\n }\n },\n error: () => {\n this.statsError = true;\n },\n });\n }\n }\n\n getStatsData(): JSON {\n return this.statsData;\n }\n\n get isStatsError(): boolean {\n return this.statsError;\n }\n\n get isStatsNotUpdated(): boolean {\n return this.statsNotUpdated;\n }\n\n emptyStats(): void {\n this.stats = [];\n }\n\n setStatsOpened(isOpened: boolean): void {\n this.statsOpened = isOpened;\n this.statsOpendPublisher.next(isOpened);\n }\n\n getStats(): Array<LiveCasinoLoungeStat> {\n if (this.stats?.length) return this.stats;\n\n if (this.statsContent && this.statsData) {\n const loadFlag = this.statsData['dataFlag']?.['loadFlag'];\n if (loadFlag) this.statsNotUpdated = loadFlag === 'N';\n\n const disabledGames = this.casinoLobbyService.getDisabledGames();\n this.statsContent.categories.forEach((category: ILiveCasinoLoungeStatCategory) => {\n const stat = new LiveCasinoLoungeStat();\n const apiCategory = this.statsData[category.categoryId];\n if (category) {\n stat.category = category;\n const currency = this.statsData['ccy'];\n let statIndex = 0;\n this.statsContent.stats\n .filter(\n (m: ILiveCasinoLoungeStatItem) =>\n m.itemId && m.itemId.indexOf('.') > -1 && m.itemId.split('.')[0] === category.categoryId,\n )\n .forEach((statItem: ILiveCasinoLoungeStatItem) => {\n const itemKey = statItem.itemId.split('.')[1];\n const statAPIItem = apiCategory[itemKey];\n if (!statAPIItem || !statItem) return;\n\n let isValid = true;\n const locale = this.page.locale;\n if (typeof statAPIItem === 'object') {\n if (statItem.dataType === 'Currency') {\n const convertedCurrency = getAmount(statAPIItem['winAMT'], currency, locale);\n statItem.value = convertedCurrency.value;\n isValid = convertedCurrency.isValid;\n } else statItem.value = statAPIItem['winAMT'];\n\n const gameId = statAPIItem['vendorGmName'];\n if (gameId) {\n const gameInfo = this.gameManagerService.getGameInfo(gameId);\n if (gameInfo) {\n statItem.gameId = gameId;\n statItem.gameName = gameInfo.name;\n statItem.isDynamicGame = true;\n }\n\n if (disabledGames.includes(gameId)) statItem.isDynamicGame = false;\n }\n\n if (statItem.showCTA && statItem.ctaType === LIVELOUNGE_STATS_CTA_TYPE_GAME)\n statItem.showCTA = statItem.isDynamicGame;\n\n const betTS = statAPIItem['betTS'];\n if (betTS) {\n const date = toDate(betTS);\n statItem.betTS = date;\n }\n } else {\n let statValue = statAPIItem ? statAPIItem.toString() : '';\n if (statValue) {\n statValue = statValue.indexOf('_') > -1 ? statValue : statValue?.toLowerCase();\n switch (statItem.dataType) {\n case 'Number':\n {\n if (isNaN(statValue)) {\n const number = textToNumber(statValue);\n statItem.value = number !== -1 ? number : statValue;\n } else statItem.value = statValue.indexOf('.') > -1 ? parseFloat(statValue).toFixed(2) : statValue;\n }\n break;\n case 'Time':\n statItem.value = toTimeStamp(statValue);\n break;\n case 'Date':\n statItem.value = toDate(statValue);\n break;\n case 'Currency':\n {\n const convertedCurrency = getAmount(statValue, currency, locale);\n statItem.value = convertedCurrency.value;\n isValid = convertedCurrency.isValid;\n }\n break;\n case 'Game':\n if (this.liveCasinoLoungeConfig.enableGameNameMapping) {\n const gameTableNames = this.statsContent?.gameTableNames;\n let gameTableName = statValue;\n if (gameTableNames?.length) {\n const statAPIValue = statAPIItem ? statAPIItem.toString() : '';\n const fiteredGameTableName = gameTableNames.find(\n (m: IGameTableName) => m.physicalName === statAPIValue || m.gameTableName === statAPIValue,\n );\n gameTableName = fiteredGameTableName?.commercialGameTableName\n ? fiteredGameTableName.commercialGameTableName\n : gameTableName;\n }\n statItem.value = gameTableName;\n } else statItem.value = statValue;\n break;\n default:\n statItem.value = statValue;\n break;\n }\n }\n\n const hideCTAForGameDataType =\n this.liveCasinoLoungeConfig.enableGameNameMapping &&\n statItem.dataType === 'Game' &&\n statItem.showCTA &&\n statItem.ctaType === LIVELOUNGE_STATS_CTA_TYPE_STATIC_GAME;\n if (statItem.ctaType === LIVELOUNGE_STATS_CTA_TYPE_GAME || hideCTAForGameDataType) statItem.showCTA = false;\n }\n\n if (statItem.showCTA && statItem.staticGameId && statItem.ctaType === LIVELOUNGE_STATS_CTA_TYPE_STATIC_GAME) {\n const gameInfo = this.gameManagerService.getGameInfo(statItem.staticGameId);\n if (gameInfo) {\n statItem.gameId = statItem.staticGameId;\n statItem.gameName = gameInfo.name;\n statItem.isStaticGame = true;\n }\n\n if (disabledGames.includes(statItem.staticGameId)) statItem.isStaticGame = false;\n\n statItem.showCTA = statItem.isStaticGame;\n }\n\n if (statItem.showCTA && statItem.ctaType === LIVELOUNGE_STATS_CTA_TYPE_SECTOR)\n statItem.showCTA = this.sectorIds.includes(statItem.sectorId);\n\n if (statItem.value && statItem.value != '0' && isValid) {\n if (category.showHighlights && statIndex <= 2) stat.impStats.push(statItem);\n else stat.stats.push(statItem);\n statIndex++;\n }\n });\n\n stat.isAvailable = stat.impStats?.length > 0 || stat.stats?.length > 0;\n this.stats.push(stat);\n }\n });\n }\n\n if (this.stats?.length) this.stats = this.stats.sort((a, b) => (a.isAvailable ? 0 : 1) - (b.isAvailable ? 0 : 1));\n\n return this.stats;\n }\n\n showLoading(): void {\n if (!this.document.querySelector('.height-cls-skeleton')) this.loadingPublisher.next(true);\n }\n\n hideLoading(): void {\n if (this.document.querySelector('.height-cls-skeleton')) this.loadingPublisher.next(false);\n }\n\n getRowSpan(icon: string): number {\n switch (icon) {\n case '2':\n case '-2':\n return 1;\n case '3':\n case '-3':\n return 2;\n case '4':\n case '-4':\n return 2;\n case '5':\n case '-5':\n return 2;\n case '6':\n case '-6':\n return 1;\n case '7':\n case '-7':\n return 1;\n default:\n return 1;\n }\n }\n\n getColSpan(icon: string, isTouch: boolean): number {\n switch (icon) {\n case '2':\n case '-2':\n return 2;\n case '3':\n case '-3':\n return 1;\n case '4':\n case '-4':\n return 2;\n case '5':\n case '-5':\n if (isTouch) {\n return 2;\n } else {\n return 3;\n }\n case '6':\n case '-6':\n return 1;\n case '7':\n case '-7':\n return 2;\n default:\n return 1;\n }\n }\n\n getCategoryInfo(): { categoryId: string; categoryName: string } {\n const link = window.location.href;\n const subCategoryUrl = this.categoryRoutePrefix;\n let categoryId = link.substr(link.indexOf(subCategoryUrl) + (subCategoryUrl?.length || 0));\n if (categoryId.indexOf('?') !== -1) categoryId = categoryId.substr(0, categoryId.indexOf('?'));\n const lobbyInfo = this.casinoLobbyService.getLobbyInfo(this.lobbyType);\n const categoryInfo = lobbyInfo?.categoriesMap.get(categoryId);\n return { categoryId, categoryName: categoryInfo?.engCategoryName || '' };\n }\n\n trackEvent(\n trackingType: string,\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ): void {\n this.tracking.triggerEvent(trackingType, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n\n launchGame(gameId: string, categoryId: string, index: number): void {\n const gameModel = new GameLaunch();\n gameModel.isTouch = this.deviceService.isTouch;\n gameModel.replaceRouteInHistory = false;\n gameModel.isDemoLaunch = false;\n gameModel.skipUnfinGame = false;\n gameModel.categoryType = categoryId;\n gameModel.game = this.gameManagerService.getGameInfo(gameId) || gameId;\n gameModel.game.gameId = gameId;\n gameModel.game.lobbyType = this.lobbyType;\n gameModel.gameLaunchedFrom = categoryId;\n gameModel.gridPosition = Number(index + 1);\n gameModel.gamePosition = index;\n gameModel.from = 'q';\n gameModel.gameContainer = '';\n gameModel.audioFrom = true;\n gameModel.clickTimeStamp = this.casinoCoreGameLaunchService.currentTimeStamp();\n this.casinoCoreGameLaunchService.launchGame(gameModel);\n }\n\n private emptyDrawerMap(): void {\n if (this.drawerContentMap && this.drawerContentMap.size > 0) this.drawerContentMap.clear();\n }\n\n private setCustomLinkDrawerContent(): void {\n if (this.mapData) {\n const paths = new Map<string, Array<string>>();\n this.mapData?.sectors.forEach((sector: ILiveCasinoLoungeSector) => {\n const customLinkDrawers: any = sector.customLinkItems\n .filter((m) => m?.customLinkType === CUSTOM_LINK_TYPE_DRAWER && m?.customLinkDrawerContent)\n .map((m) => m.customLinkDrawerContent);\n const customLinkDrawerContents = new Array<string>().concat(...customLinkDrawers);\n if (customLinkDrawerContents.length) {\n if (paths.has(CUSTOM_LINK_TYPE_DRAWER)) {\n const content = paths.get(CUSTOM_LINK_TYPE_DRAWER);\n paths.set(\n CUSTOM_LINK_TYPE_DRAWER,\n content && content.length ? content.concat(customLinkDrawerContents) : customLinkDrawerContents,\n );\n } else paths.set(CUSTOM_LINK_TYPE_DRAWER, customLinkDrawerContents);\n }\n });\n\n if (paths && paths.size) {\n paths.forEach((value: string[], key: string) => {\n if (!value?.length) return;\n if (key === CUSTOM_LINK_TYPE_DRAWER) this.fetchDrawerContent(value.filter(onlyUnique));\n });\n }\n }\n }\n}\n","import { Component, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { addClass, getClientPosition, removeClass } from '@casinocore/platform/utils';\nimport { Subject, combineLatest } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { GameShowHubService } from '../../shared/game-show-hub.service';\nimport { CasinoCoreGamelaunchService } from '../../shared/gamelaunch.service';\nimport { ImmersiveLobbyService } from '../../shared/immersive-lobby.service';\nimport { LiveCasinoLoungeService } from '../../shared/live-casino-lounge.service';\nimport { LottieAnimationStatus } from '../../shared/models/common.model';\n\n@Component({\n selector: 'cc-audio-button',\n templateUrl: 'casino-audio-button.component.html',\n standalone: true,\n})\nexport class CasinoAudioButtonComponent implements OnInit, OnDestroy {\n @ViewChild('casinoAudio', { static: false }) casinoAudio: ElementRef<HTMLAudioElement>;\n @ViewChild('casinoAudioButton', { static: false }) casinoAudioButton: ElementRef<HTMLDivElement>;\n\n @Input() audioUrl: string;\n @Input() audioFrom: string;\n\n muted: boolean = true;\n audioStatus = 'mute';\n unsubscribe: Subject<CasinoAudioButtonComponent>;\n\n private audioOffsetTop: number = 0;\n\n constructor(\n private ngZone: NgZone,\n private gameShowHubService: GameShowHubService,\n private liveCasinoLoungeService: LiveCasinoLoungeService,\n private immersiveLobbyService: ImmersiveLobbyService,\n private casinoCoreGamelaunchService: CasinoCoreGamelaunchService,\n ) {\n this.unsubscribe = new Subject();\n }\n\n ngOnInit(): void {\n this.handleAudio();\n }\n\n @HostListener('window:scroll')\n onScroll(): void {\n if (this.casinoAudioButton?.nativeElement) {\n const footer = document.getElementsByTagName('vn-footer');\n const responsiveFooter = document.getElementsByTagName('vn-responsive-footer');\n if (footer?.length || responsiveFooter?.length) {\n const footerPosition = getClientPosition((footer?.length ? footer[0] : responsiveFooter[0]) as HTMLElement);\n const audioButtonPosition = getClientPosition(this.casinoAudioButton.nativeElement);\n this.audioOffsetTop = this.audioOffsetTop || Math.floor(audioButtonPosition.top + this.casinoAudioButton.nativeElement.clientHeight);\n footerPosition.top = Math.floor(footerPosition.top);\n if (footerPosition.top <= this.audioOffsetTop) addClass('item-hidden', this.casinoAudioButton.nativeElement);\n else removeClass('item-hidden', this.casinoAudioButton.nativeElement);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribe.next(this);\n this.unsubscribe.complete();\n this.stopAudio();\n }\n\n onPlay(): void {\n if (this.muted) {\n this.muted = false;\n this.audioStatus = 'unmute';\n this.casinoAudio?.nativeElement?.play();\n } else {\n this.muted = true;\n this.audioStatus = 'mute';\n this.casinoAudio?.nativeElement?.pause();\n }\n this.audioFrom === 'game show'\n ? this.gameShowHubService.trackEvent(\n 'Event.Tracking',\n 'lobby',\n 'game show',\n 'click',\n 'not applicable',\n 'immersive lobby',\n this.muted ? 'mute' : 'unmute',\n 'not applicable',\n )\n : this.audioFrom === 'live lounge'\n ? this.liveCasinoLoungeService.trackEvent(\n 'Event.Tracking',\n 'lobby',\n 'live lounge',\n 'click',\n 'not applicable',\n 'live casino lounge',\n this.muted ? 'mute' : 'unmute',\n 'not applicable',\n )\n : this.immersiveLobbyService.trackEvent(\n 'Event.Tracking',\n 'lobby',\n 'immersive lobby',\n 'click',\n 'not applicable',\n 'immersive lobby',\n this.muted ? 'mute' : 'unmute',\n 'not applicable',\n );\n }\n\n private stopAudio(): void {\n this.casinoAudio?.nativeElement?.pause();\n this.muted = true;\n }\n\n private handleAudio(): void {\n combineLatest([\n this.liveCasinoLoungeService.lottieAnimationStatusObservable,\n this.casinoCoreGamelaunchService.stopAudioObservable,\n this.gameShowHubService.lottieAnimationStatusObservable,\n this.immersiveLobbyService.lottieAnimationStatusObservable,\n ])\n .pipe(takeUntil(this.unsubscribe))\n .subscribe((results: any) => {\n const isStopped = results[1] as boolean | null;\n if (isStopped) this.stopAudio();\n else if (isStopped === false && this.audioStatus === 'unmute') {\n this.casinoAudio?.nativeElement?.play();\n this.muted = false;\n } else {\n }\n const liveLoungeLottieStatus = results[0] as LottieAnimationStatus;\n const gameShowLottieStatus = results[2] as LottieAnimationStatus;\n const immersiveLobbyLottieStatus = results[2] as LottieAnimationStatus;\n this.ngZone.runOutsideAngular(() => {\n if (\n liveLoungeLottieStatus === LottieAnimationStatus.Pause ||\n gameShowLottieStatus === LottieAnimationStatus.Pause ||\n immersiveLobbyLottieStatus === LottieAnimationStatus.Pause\n ) {\n this.casinoAudio?.nativeElement?.pause();\n return;\n } else if (\n liveLoungeLottieStatus === LottieAnimationStatus.Play ||\n gameShowLottieStatus === LottieAnimationStatus.Play ||\n immersiveLobbyLottieStatus === LottieAnimationStatus.Play\n ) {\n this.casinoAudio?.nativeElement?.play();\n return;\n }\n });\n });\n }\n}\n","<div #casinoAudioButton class=\"casino-immersive-lobby-audio-button\">\n <audio #casinoAudio loop=\"true\" [src]=\"audioUrl\" [muted]=\"muted\"></audio>\n <button\n class=\"casino-immersive-lobby-audio\"\n aria-hidden=\"true\"\n [class.theme-sound-loud]=\"!muted\"\n [class.theme-sound-mute]=\"muted\"\n (click)=\"onPlay()\"></button>\n</div>\n","<div class=\"casino-bg-confirm-message\" tabindex=\"-1\" role=\"dialog\" style=\"display: block !important; z-index: 9999\" *ngIf=\"messagesInfo\">\n <div class=\"message-body\">\n <div class=\"row\">\n <div class=\"col-md-12 message-header\">\n <div class=\"text-header\">{{ messagesInfo.header }}</div>\n <div class=\"mes-close\" *ngIf=\"messagesInfo.closeBtn\" (click)=\"cancelBtn()\"><i class=\"theme-ex\"></i></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12 message-text\">\n <p class=\"text-message\">{{ messagesInfo.message }}</p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12 footer\">\n <p class=\"btn-div\">\n <a (click)=\"cancelBtn()\">\n <button class=\"cancel btn btn-outline-secondary btn-block\">Cancel</button>\n </a>\n <a (click)=\"depositBtn()\">\n <button class=\"purchase btn btn-primary btn-block\">{{ messagesInfo.purchaseButtonText }}</button>\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { NavigationService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Component({\n selector: 'cc-confirm-message',\n templateUrl: './confirm-message.component.html',\n standalone: true,\n imports: [NgIf],\n})\nexport class ConfirmMessageComponent implements OnInit {\n message: any;\n messagesInfo: any;\n constructor(\n private navigator: NavigationService,\n public dialogRef: MatDialogRef<ConfirmMessageComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private configProviderService: ConfigProviderService,\n ) {}\n\n ngOnInit() {\n this.messagesInfo = this.data;\n }\n\n cancelBtn(): void {\n this.dialogRef.close();\n }\n\n depositBtn() {\n const mcPage: any = this.configProviderService.provideMcPageConfig();\n this.navigator.goTo(mcPage.depositUrl.url);\n }\n}\n","import { NgForOf } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { SwiperComponent } from '@frontend/vanilla/shared/swiper';\n\n@Component({\n selector: 'cc-custom-carousel-pagination',\n template: `\n <div class=\"swiper-custom-pagination\">\n <div\n class=\"swiper-pagination swiper-pagination-bullets\"\n [class.swiper-pagination-clickable]=\"!disableClick\"\n [style.background-color]=\"backgroundColor || ''\">\n <ng-container *ngFor=\"let item of [].constructor(noOfItems); let i = index\">\n <span\n class=\"swiper-pagination-bullet\"\n role=\"button\"\n [class.swiper-pagination-bullet-active]=\"i === currentIndex\"\n (click)=\"paginationClick(i, $event)\"></span>\n </ng-container>\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgForOf],\n})\nexport class CustomCarouselPaginationComponent {\n @Input() loop: boolean = true;\n @Input() backgroundColor: boolean = false;\n @Input() disableClick: boolean = false;\n @Input() noOfItems: number;\n @Input() currentIndex: number;\n @Input() carousel: SwiperComponent;\n\n paginationClick(index: number, event: Event) {\n if (this.disableClick || this.currentIndex === index) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n } else {\n const i = index;\n const slideIndex = this.carousel.swiper?.slides.length > i ? i : 0;\n if (this.carousel.swiper?.params.loop) {\n if (this.carousel.swiper?.realIndex === slideIndex) return;\n this.carousel.swiper?.slideToLoop(slideIndex);\n } else {\n this.carousel.swiper?.slideTo(slideIndex);\n }\n }\n }\n}\n","import { Directive, ElementRef, Input, NgZone, OnChanges, OnDestroy, OnInit } from '@angular/core';\n\nimport { getHiddenValues, getTranslateValues } from '@casinocore/platform/utils';\nimport { Subject, fromEvent } from 'rxjs';\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[ccDraggable]',\n standalone: true,\n})\nexport class DraggableDirective implements OnDestroy, OnChanges, OnInit {\n @Input() dragContainer: HTMLElement;\n @Input() dragTarget: HTMLElement;\n @Input() dragLockAxis: string;\n @Input() createDrag: boolean;\n @Input() disableDrag: boolean;\n\n private dragHandle: HTMLElement;\n private moveOffset: number = window.devicePixelRatio;\n private isDragging: boolean;\n private delta = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private hidden = { x: 0, y: 0 };\n private destroy$: Subject<void> = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private zone: NgZone,\n ) {}\n\n ngOnChanges(): void {\n if (this.createDrag) {\n this.offset = getTranslateValues(this.dragTarget);\n this.hidden = getHiddenValues(this.dragTarget, this.dragContainer);\n switch (this.dragLockAxis) {\n case 'x':\n this.offset.x = 0;\n this.hidden.x = 0;\n break;\n case 'y':\n this.offset.y = 0;\n this.hidden.y = 0;\n break;\n }\n }\n }\n\n ngOnInit(): void {\n this.dragHandle = this.elementRef.nativeElement;\n this.setupEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyEvents();\n }\n\n private destroyEvents(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupEvents(): void {\n this.zone.runOutsideAngular(() => {\n const manager: any = new Hammer.Manager(this.dragHandle, {\n recognizers: [[Hammer.Pan, { direction: Hammer.DIRECTION_ALL, threshold: 0 }]],\n });\n\n const panStart$ = fromEvent(manager, 'panstart');\n const panMove$ = fromEvent(manager, 'panmove');\n const panEnd$ = fromEvent(manager, 'panend');\n\n const drag$ = panStart$.pipe(\n takeUntil(this.destroy$),\n switchMap((event: any) => {\n event.preventDefault();\n let startX: number, startY: number;\n if (!this.disableDrag) {\n this.isDragging = true;\n startX = event.deltaX;\n startY = event.deltaY;\n }\n\n return panMove$.pipe(\n map((event: any) => {\n event.preventDefault();\n if (!this.disableDrag) {\n this.delta = {\n x: event.deltaX - startX,\n y: event.deltaY - startY,\n };\n }\n }),\n takeUntil(panEnd$),\n );\n }),\n );\n\n drag$.subscribe(() => {\n this.drag();\n });\n\n panEnd$.pipe(takeUntil(this.destroy$)).subscribe((event: any) => {\n event.preventDefault();\n this.dragEnd();\n });\n });\n }\n\n private get hasMovedFarEnough(): boolean {\n return Math.abs(this.delta.x) >= this.moveOffset || Math.abs(this.delta.y) >= this.moveOffset;\n }\n\n private drag(): void {\n if ((this.delta.x === 0 && this.delta.y === 0) || this.disableDrag) {\n return;\n }\n\n switch (this.dragLockAxis) {\n case 'x':\n this.offset.x = 0;\n this.delta.x = 0;\n this.hidden.x = 0;\n break;\n case 'y':\n this.offset.y = 0;\n this.delta.y = 0;\n this.hidden.y = 0;\n break;\n }\n\n if (this.isDragging && this.hasMovedFarEnough) {\n this.translate();\n }\n }\n\n private dragEnd(): void {\n if (!this.isDragging || this.disableDrag) {\n return;\n }\n\n this.offset.x += this.delta.x;\n this.offset.y += this.delta.y;\n this.delta = { x: 0, y: 0 };\n\n const outOfBoundary = { x: false, y: false };\n if (this.offset.x > 0) {\n outOfBoundary.x = true;\n this.offset.x = 0;\n } else if (this.hidden.x < Math.abs(this.offset.x)) {\n outOfBoundary.x = true;\n this.offset.x = -(this.hidden.x + 0);\n }\n\n let scrollToFooter: boolean = false;\n if (this.offset.y > 0) {\n outOfBoundary.y = true;\n this.offset.y = 0;\n } else if (this.hidden.y < Math.abs(this.offset.y)) {\n outOfBoundary.y = true;\n scrollToFooter = true;\n this.offset.y = -(this.hidden.y + 0);\n }\n\n this.isDragging = false;\n this.dragHandle.classList.remove('is-dragging');\n this.translate();\n\n if (scrollToFooter && !this.dragLockAxis) {\n window.scroll(0, 60);\n }\n }\n\n private translate(): void {\n requestAnimationFrame(() => {\n this.isDragging ? this.dragHandle.classList.add('is-dragging') : this.dragHandle.classList.remove('is-dragging');\n this.dragTarget.style.transform = `translate3d(${this.offset.x + this.delta.x}px, ${this.offset.y + this.delta.y}px, 0px)`;\n });\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\nexport enum IntersectionStatus {\n Visible = 'Visible',\n Pending = 'Pending',\n NotVisible = 'NotVisible',\n}\n\nexport const fromIntersectionObserver = (element: HTMLElement, config: IntersectionObserverInit, debounce = 0) =>\n new Observable<any>((subscriber) => {\n const subject$ = new Subject<{\n entry: IntersectionObserverEntry;\n observer: IntersectionObserver;\n }>();\n\n const intersectionObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (isIntersecting(entry)) {\n subject$.next({ entry, observer });\n } else {\n const videoElementStatus = {\n status: IntersectionStatus.NotVisible,\n };\n subscriber.next(videoElementStatus);\n }\n });\n }, config);\n\n subject$.pipe(debounceTime(debounce), filter(Boolean)).subscribe(async (result: any) => {\n const isEntryVisible = await isVisible(result.entry.target as HTMLElement);\n\n if (isEntryVisible) {\n const videoElementStatus = {\n status: IntersectionStatus.Visible,\n src: getSrc(result.entry.target),\n };\n subscriber.next(videoElementStatus);\n }\n });\n\n intersectionObserver.observe(element);\n\n return {\n unsubscribe() {\n intersectionObserver.disconnect();\n subject$.unsubscribe();\n },\n };\n });\n\nfunction getSrc(target: any) {\n return target.currentSrc ?? target.childNodes[0]?.attributes?.src?.nodeValue;\n}\n\nasync function isVisible(element: HTMLElement) {\n return new Promise((resolve) => {\n const observer = new IntersectionObserver(([entry]) => {\n resolve(entry.isIntersecting);\n });\n\n observer.observe(element);\n });\n}\n\nfunction isIntersecting(entry: IntersectionObserverEntry) {\n return entry.isIntersecting && entry.intersectionRatio > 0;\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IntersectionStatus, fromIntersectionObserver } from './from-intersection-observer';\n\n@Directive({\n selector: '[ccIntersectionObserver]',\n standalone: true,\n})\nexport class IntersectionObserverDirective implements OnInit, OnDestroy {\n @Input() intersectionDebounce = 0;\n @Input() intersectionRootMargin = '0px';\n @Input() intersectionRoot: HTMLElement;\n @Input() intersectionThreshold: number | number[] = 0.1;\n\n @Output() visibilityChange = new EventEmitter<IntersectionStatus>();\n\n private destroy$ = new Subject();\n\n constructor(private element: ElementRef) {}\n\n ngOnInit() {\n const element = this.element.nativeElement;\n const config = {\n root: this.intersectionRoot,\n rootMargin: this.intersectionRootMargin,\n threshold: this.intersectionThreshold,\n };\n\n fromIntersectionObserver(element, config, this.intersectionDebounce)\n .pipe(takeUntil(this.destroy$))\n .subscribe((status) => {\n this.visibilityChange.emit(status);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n }\n}\n","import { Directive, ElementRef, EventEmitter, OnDestroy, Output } from '@angular/core';\n\nimport { Subscription, fromEvent, merge } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Directive({\n selector: '[ccLongPress]',\n standalone: true,\n})\nexport class LongPressDirective implements OnDestroy {\n private eventSubscribe: Subscription;\n threshold = 500;\n\n @Output()\n onMouseLongPress = new EventEmitter<boolean>();\n\n constructor(private elementRef: ElementRef) {\n const touchstart = fromEvent(this.elementRef.nativeElement, 'touchstart').pipe(map(() => true));\n\n const touchEnd = fromEvent(this.elementRef.nativeElement, 'touchend').pipe(map(() => false));\n\n const mousedown = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n filter((event) => event.button == 0),\n map(() => true),\n );\n\n const mouseup = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseup').pipe(\n filter((event) => event.button == 0),\n map(() => false),\n );\n\n this.eventSubscribe = merge(mousedown, mouseup, touchstart, touchEnd).subscribe((value) => this.onMouseLongPress.emit(value));\n }\n\n ngOnDestroy(): void {\n if (this.eventSubscribe) {\n this.eventSubscribe.unsubscribe();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'highlightsearch',\n standalone: true,\n})\nexport class HighlightSearch implements PipeTransform {\n transform(value: string, args: any): string {\n let pattern = args.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n pattern = pattern\n .split(' ')\n .filter((t: any) => {\n return t.length > 0;\n })\n .join('|');\n const regex = new RegExp(pattern, 'gi');\n return args ? value.replace(regex, (match) => '<pre>' + match + '</pre>') : value;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ToastrQueueService, UserService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { GeolocationTrackingService } from '../../shared/geolocation-tracking.service';\nimport { GeolocationActivatorService } from './activator.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OobeeIntimationToasterService {\n constructor(\n private readonly _toasterService: ToastrQueueService,\n private readonly geolocationActivator: GeolocationActivatorService,\n private readonly _userService: UserService,\n private readonly _geolocationTrackingService: GeolocationTrackingService,\n private configProviderService: ConfigProviderService,\n ) {}\n\n display(): void {\n const _geolocationConfig = this.configProviderService.provideGeoLocationConfig();\n if (\n this._userService.isAuthenticated &&\n this.geolocationActivator.isActive &&\n _geolocationConfig.oobeeIntimation.isEnabled &&\n _geolocationConfig.oobeeIntimation.toasterId\n ) {\n this._toasterService.add(_geolocationConfig.oobeeIntimation.toasterId);\n this._geolocationTrackingService.track('GeoGaurdApp_Toaster', 'Toaster_Loaded', 'After Login');\n }\n }\n}\n","<div class=\"gif\" *ngIf=\"type == 'gif'\" (click)=\"launchGame()\">\n <img [src]=\"imageThumbnailSrc\" [lazyLoad]=\"url\" />\n</div>\n<div class=\"svg\" *ngIf=\"type == 'svg'\" (click)=\"launchUrl ? launchGame() : false\">\n <img [src]=\"imageThumbnailSrc\" [lazyLoad]=\"url\" />\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\nimport { NavigationService } from '@frontend/vanilla/core';\nimport { LazyLoadImageModule } from 'ng-lazyload-image';\n\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoManager } from '../shared/casino-manager.service';\nimport { CasinoCoreGamelaunchService } from '../shared/gamelaunch.service';\nimport { GameLaunch } from '../shared/models/gamelaunch.model';\n\n@Component({\n selector: 'cc-gif-tag',\n templateUrl: 'gif-tag.component.html',\n standalone: true,\n imports: [NgIf, LazyLoadImageModule],\n})\nexport class GifTagComponent implements OnInit {\n @Input() url: string;\n @Input() imageThumbnail: any;\n @Input() type: string;\n @Input() launchUrl: any;\n @Input() subcategory: any;\n @Input() lobbyType: string;\n @Input() gameContainer: string;\n @Input() videoBoxContent: any;\n\n isTouch: boolean;\n gameObj: any = {};\n imageThumbnailSrc: string;\n videoLaunchRealtiveUri: string;\n\n constructor(\n private casinoManager: CasinoManager,\n private navigation: NavigationService,\n private casinoCoreGamelaunchService: CasinoCoreGamelaunchService,\n private configProviderService: ConfigProviderService,\n private gameManagerService: GameManagerService,\n ) {\n this.isTouch = this.casinoManager.isTouch();\n const mcPageConfig = this.configProviderService.provideMcPageConfig();\n this.videoLaunchRealtiveUri = '/' + mcPageConfig.labelPrefix + '/launchng/';\n }\n ngOnInit() {\n if (this.imageThumbnail && this.imageThumbnail.src) {\n this.imageThumbnailSrc = this.imageThumbnail.src;\n } else {\n this.imageThumbnailSrc = '';\n }\n }\n launchGame() {\n let gameSection: string;\n if (this.type == 'gif') {\n gameSection = 'Netflix_gif';\n } else {\n gameSection = 'Netflix_svg';\n }\n const gameModel = new GameLaunch();\n const gameId: string = this.getGameIdFromLaunchUrl(this.launchUrl.url);\n gameModel.game = this.gameManagerService.getGameInfo(gameId);\n gameModel.game.gameId = gameId;\n gameModel.game.lobbyType = this.lobbyType;\n gameModel.isTouch = this.isTouch;\n gameModel.gamePosition = 1;\n gameModel.categoryType = this.subcategory;\n gameModel.from = 'q';\n gameModel.replaceRouteInHistory = false;\n gameModel.isDemoLaunch = false;\n gameModel.skipUnfinGame = false;\n gameModel.gameLaunchedFrom = 'Netflix_Video';\n gameModel.gridPosition = 1;\n gameModel.gameSection = gameSection;\n gameModel.gameContainer = this.gameContainer;\n gameModel.returnUrl = window.location.href;\n gameModel.clickTimeStamp = this.casinoCoreGamelaunchService.currentTimeStamp();\n if (this.launchUrl) {\n if (this.isGameUrl(this.launchUrl.url)) {\n this.casinoCoreGamelaunchService.launchGame(gameModel);\n } else {\n this.navigation.goTo(this.launchUrl?.url);\n }\n }\n }\n getGameIdFromLaunchUrl(link: string) {\n return link.substr(link.indexOf(this.videoLaunchRealtiveUri) + this.videoLaunchRealtiveUri.length);\n }\n\n isGameUrl(link: string) {\n return link.indexOf(this.videoLaunchRealtiveUri) > 0;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeZoneService {\n convertToClientTimeZone(timeString: string, timeZone: string) {\n const clientTimeZoneSeconds: number = this.getClientTimeZoneSeconds(timeString, timeZone);\n return this.formatTimeFromSeconds(clientTimeZoneSeconds);\n }\n\n getClientTimeZoneSeconds(timeString: string, timeZone: string): number {\n const totalSeconds: number = this.getSecondsFromTimeString(timeString);\n const UTCSeconds: number = this.getUTCSeconds(totalSeconds, timeZone);\n const clientDate: Date = new Date();\n const clientTimeZoneSeconds: number = UTCSeconds - clientDate.getTimezoneOffset() * 60;\n return clientTimeZoneSeconds;\n }\n\n getUTCSeconds(totalSeconds: number, timezone: string): number {\n const offSetSeconds: number = this.getOffsetFromTimeZoneSeconds(timezone);\n return totalSeconds - offSetSeconds;\n }\n\n getOffsetFromTimeZoneSeconds(timezone: string): number {\n if (timezone === 'UTC') {\n return 0;\n }\n //TODO: Maintain a map in configuration\n return -14400 * 60;\n }\n\n formatTimeNumber(value: number): string {\n if (value === 0 || !value) {\n return '00';\n } else if (value < 10) {\n return '0' + value;\n }\n return value.toString();\n }\n\n getSecondsFromTimeString(timeString: string): number {\n if (timeString) {\n const timeArray: any = timeString.split(':');\n\n const hours: number = timeArray[0] ? Number(timeArray[0]) : 0;\n const minutes: number = timeArray[1] ? Number(timeArray[1]) : 0;\n const seconds: number = timeArray[2] ? Number(timeArray[2]) : 0;\n const totalSeconds: number = hours * 60 * 60 + minutes * 60 + seconds;\n return totalSeconds;\n }\n return 0;\n }\n\n formatTimeFromSeconds(totalSeconds: number): string {\n const hours = Math.floor(totalSeconds / (60 * 60));\n const minutes = Math.floor((totalSeconds - hours * 60 * 60) / 60);\n const seconds = totalSeconds - (hours * 60 * 60 + minutes * 60);\n return this.formatTimeNumber(hours) + ':' + this.formatTimeNumber(minutes) + ':' + this.formatTimeNumber(seconds);\n }\n\n getTimerStartInstance(timeString: string, timeZone: string) {\n const startTime: string = this.convertToClientTimeZone(timeString, timeZone);\n const startTimeSeconds: number = this.getSecondsFromTimeString(startTime);\n const currentDate: Date = new Date();\n const currentDateSeconds: number = currentDate.getHours() * 60 * 60 + currentDate.getMinutes() * 60 + currentDate.getSeconds();\n const durationSeconds: number = startTimeSeconds - currentDateSeconds;\n if (durationSeconds < 0) {\n return null;\n }\n return this.formatTimeFromSeconds(durationSeconds);\n }\n\n getDateFormat(dateFormat: any) {\n const mm = dateFormat.getMonth() + 1;\n const dd = dateFormat.getDate();\n const yyyy = dateFormat.getFullYear();\n const format = dd + '/' + mm + '/' + yyyy;\n const hour = dateFormat.getHours();\n const minutes = dateFormat.getMinutes();\n const newformat = hour >= 12 ? 'PM' : 'AM';\n return format + ' | ' + hour + ':' + minutes + ' ' + newformat;\n }\n}\n","<ng-container *ngIf=\"showTimer\">\n {{ time }}\n</ng-container>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnDestroy, Output } from '@angular/core';\n\nimport { TimerService } from '@frontend/vanilla/core';\n\nimport { TimeZoneService } from '../shared/time-zone.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\n\n@Component({\n selector: 'cc-lc-timer',\n templateUrl: 'lc-timer.component.html',\n standalone: true,\n imports: [NgIf],\n})\nexport class LCTimerComponent implements OnChanges, OnDestroy {\n @Input() showDays: boolean = false;\n @Input() daysDisplayText: string = '';\n @Input() showTimer: boolean = true;\n @Input() startTime: string;\n @Output() onTimerEnd: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n timerInstance: any;\n displayTime: string;\n\n constructor(\n private timerService: TimerService,\n private timeZoneService: TimeZoneService,\n private urlUtilityService: UrlUtilityService,\n ) {}\n\n ngOnChanges() {\n this.displayTime = this.startTime;\n if (!this.timerInstance) {\n this.timerInstance = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n const seconds: number = this.timeZoneService.getSecondsFromTimeString(this.displayTime);\n if (seconds === 0) {\n this.timerService.clearInterval(this.timerInstance);\n this.onTimerEnd.emit(true);\n }\n this.displayTime = this.timeZoneService.formatTimeFromSeconds(seconds - 1);\n }, 1000);\n }\n }\n\n get time() {\n if (!this.showDays) {\n return this.displayTime;\n }\n\n const seconds: number = this.timeZoneService.getSecondsFromTimeString(this.displayTime);\n const days = Math.ceil(seconds / (3600 * 24));\n return days > 1 ? days - 1 + (this.daysDisplayText ? ' ' + this.daysDisplayText : '') : this.displayTime;\n }\n\n ngOnDestroy() {\n this.timerService.clearInterval(this.timerInstance);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TrackingService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ArcadeLobbyTrackingService {\n constructor(private trackingService: TrackingService) {}\n\n trackEvent(\n trackingType: string,\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ): void {\n this.trackingService.triggerEvent(trackingType, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { isDateValid } from '@casinocore/platform/utils';\nimport { Logger, Message, MessageLifetime, MessageType, TrackingService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { betmgmOriginalsSitecoreData } from '../client-config/betmgmoriginals-config';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { BetMGMOriginalsRequestModel } from './models/betmgm-originals.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BetmgmOriginalsService {\n observable: Observable<any | null>;\n private optInPublisher = new BehaviorSubject<boolean>(false);\n optInObservable: Observable<boolean | null>;\n private getOptInPublisher = new BehaviorSubject<boolean>(false);\n getOptInObservable: Observable<boolean | null>;\n private publisher = new BehaviorSubject<boolean>(false);\n private betMgmOriginalsTimerPublisher = new BehaviorSubject<boolean>(true);\n betMgmOriginalsTimerObservable: Observable<boolean | null>;\n betmgmOriginalConfig: boolean;\n betmgmOriginalsSitecoreData: betmgmOriginalsSitecoreData;\n overLaySitecoreData: any;\n BetmgmOriginalOptInData: any;\n bottomSheetRef: any;\n dialogRef: any;\n\n constructor(\n private configProviderService: ConfigProviderService,\n private api: PlatformApiService,\n private logger: Logger,\n private trackingService: TrackingService,\n ) {\n this.betmgmOriginalConfig = this.configProviderService?.providerBetMGMOriginalsConfig()?.enabledBetMGMOriginals;\n this.betmgmOriginalsSitecoreData = this.configProviderService?.providerBetMGMOriginalsConfig()?.betmgmOriginalsConfigurations;\n this.observable = this.publisher.asObservable();\n this.optInObservable = this.optInPublisher.asObservable();\n this.getOptInObservable = this.getOptInPublisher.asObservable();\n this.betMgmOriginalsTimerObservable = this.betMgmOriginalsTimerPublisher.asObservable();\n }\n\n get betmgmoriginalOptIn(): any {\n return this.BetmgmOriginalOptInData;\n }\n\n getBetmgmOriginalsUserStatus(type: string, id: string): void {\n this.api\n .get(\n 'betmgmoriginals/GetBetMGMOriginalsStatus',\n { type: type, id: id },\n {\n responseType: 'json',\n withCredentials: true,\n },\n )\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.getOptInPublisher.next(response);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n };\n this.logger.error(message);\n },\n });\n }\n postBetmgmOptIn(postRequestModel: BetMGMOriginalsRequestModel): void {\n this.api\n .post('betmgmoriginals/PostBetMGMOriginalsStatus', postRequestModel, {\n responseType: 'json',\n withCredentials: true,\n })\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.optInPublisher.next(response);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n };\n this.logger.error(message);\n },\n });\n }\n trackEvent(\n trackingType: string,\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ): void {\n this.trackingService.triggerEvent(trackingType, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n setOriginalsTimerStatus(isTimerRunning: boolean): void {\n this.betMgmOriginalsTimerPublisher.next(isTimerRunning);\n }\n\n isTimerValidForOriginals(timerExpiryDate: string): boolean {\n if (isDateValid(timerExpiryDate)) {\n const targetDate = new Date(timerExpiryDate);\n const milliseconds = targetDate.getTime() - new Date().getTime();\n if (milliseconds <= 0) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n validateBetMgmOriginalsConfigs(displayBetMGMOriginals: boolean, betMGMOriginalsConfig: any, isUserAuthenticated: boolean): boolean {\n return (\n betMGMOriginalsConfig?.enabledBetMGMOriginals &&\n isUserAuthenticated &&\n displayBetMGMOriginals &&\n betMGMOriginalsConfig?.betmgmOriginalsConfigurations?.SourceType &&\n betMGMOriginalsConfig?.betmgmOriginalsConfigurations?.SourceId &&\n this.isTimerValidForOriginals(betMGMOriginalsConfig?.betmgmOriginalsConfigurations?.TimerExpiryDate)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute } from '@angular/router';\n\nimport {\n ClaimsService,\n DeviceService,\n LoginDialogService,\n MessageQueueService,\n NavigationService,\n SessionStoreService,\n UserService,\n} from '@frontend/vanilla/core';\nimport { CurrentSessionConfig } from '@frontend/vanilla/shared/current-session';\nimport { toNumber } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { ConfirmMessageComponent } from '../../confirm-message/confirm-message.component';\nimport { PlatformApiService } from '../../platform-api/platform-api.service';\nimport { PlatformBingoApiService } from '../../platform-api/platform-bingo-api.service';\nimport { UrlUtilityService } from '../../utilities/url-utility.service';\nimport { ApiPathsHelperService } from '../api-paths-helper-service';\nimport { CacheManagerService } from '../cache-manager.service';\nimport { CasinoWidgetService } from '../casino-widget.service';\nimport { CozyBingoDataService } from '../cozybingodata.service';\nimport { GameLaunchTrackingService } from '../game-launch-tracking.service';\nimport { RecentGamesService } from '../recent-games.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BingoGameLaunchService {\n isInGameClient: boolean;\n isRealPlayer: any;\n activeroom: string;\n openedRooms: string[];\n private destroy$ = new Subject<void>();\n constructor(\n private activatedRoute: ActivatedRoute,\n private user: UserService,\n private loginDialog: LoginDialogService,\n private messageQueue: MessageQueueService,\n private claimsConfig: ClaimsService,\n private navigator: NavigationService,\n private session: SessionStoreService,\n private recentGamesService: RecentGamesService,\n private deviceService: DeviceService,\n private casinoWidgetService: CasinoWidgetService,\n private dialog: MatDialog,\n private apiBingoService: PlatformBingoApiService,\n private api: PlatformApiService,\n private urlUtilityService: UrlUtilityService,\n private configProviderService: ConfigProviderService,\n private cacheManagerService: CacheManagerService,\n private cozyBingoDataService: CozyBingoDataService,\n private apiPathsHelperService: ApiPathsHelperService,\n private currentSessionConfig: CurrentSessionConfig,\n private gameLaunchTrackingService: GameLaunchTrackingService,\n ) {\n if (this.activatedRoute.snapshot.queryParamMap.get('hideHeader') == 'true' || this.activatedRoute.snapshot.queryParamMap.get('.box')) {\n this.isInGameClient = true;\n }\n }\n\n checkUserStatus(): boolean {\n if (this.isRealPlayer === undefined || this.isRealPlayer == null) {\n this.isRealPlayer = this.claimsConfig.get('realplayer');\n }\n if (this.isRealPlayer == 'True') {\n return true;\n }\n\n return false;\n }\n\n bingoGameLaunchTracking(gameObj: any) {\n let data: any;\n data = this.cozyBingoDataService.getRoomdatabyId(gameObj.id);\n if (data?.sitecoreInfo) {\n data.isNew = data.sitecoreInfo.isNew;\n }\n data = data || {};\n const gameTrackingObj: any = {\n name: gameObj.gameName,\n type: gameObj.gameType,\n position: Number.isInteger(gameObj.position) ? gameObj.position + 1 : undefined,\n section: gameObj.section,\n gridPosition: Number.isInteger(gameObj.position) ? gameObj.position + 1 + ':1' : undefined,\n location: gameObj.gameContainerLocation,\n status: data.isNew ? 'New' : 'Existing',\n description: gameObj.widgetFrameClr ? 'Highlighted|' + gameObj.widgetFrameClr : 'Non-Highlighted|No Color Code',\n favourite: data.isFavourite ? 'Favourite' : 'Non-Favourite',\n playingStatus: 'Not Applicable',\n displayName: gameObj.gameName,\n categoryType: 'Bingo',\n categorySubType: 'Bingo',\n };\n this.gameLaunchTrackingService.track(gameTrackingObj);\n }\n\n initiateGameLaunch(\n gameName: string,\n gameType: string,\n ballType: string,\n launchType: string,\n gameIcon: string,\n gameId: string,\n favstatus: boolean,\n originUrl: string | undefined,\n gameObj: any = {},\n ): void {\n let origin: string;\n const globalMessages: any = this.configProviderService.provideGlobalConfig();\n\n if (originUrl) {\n origin = originUrl;\n } else {\n origin = window.location.href;\n }\n\n gameObj.id = gameId;\n gameObj.gameType = gameType;\n gameObj.gameName = gameName;\n\n if (!this.validateUser(gameName, gameType, ballType, launchType, gameIcon, gameId, favstatus, origin, gameObj)) {\n return;\n }\n if (!this.checkUserStatus()) {\n const isPlayUser: boolean = this.claimsConfig?.get('realplayer')?.toLowerCase() === 'false';\n if (isPlayUser) {\n this.openBingoPlayUserDialog(origin);\n }\n\n return;\n }\n this.bingoGameLaunchTracking(gameObj);\n this.messageQueue.clear();\n if (this.deviceService.isTouch) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const bingoGameUrl = this.apiPathsHelperService.transformApi(\n apiPathsConfig.bingo['bgMenuLaunchRoom'],\n this.urlUtilityService.getBingoApiBaseUrl(),\n gameName,\n );\n const params = {\n promptLogin: false,\n redirectUrl: bingoGameUrl,\n categoryid: 'rcp-widget',\n };\n this.casinoWidgetService.postMessageToParent('GameLaunch', params);\n }\n if (this.deviceService.isMobilePhone && gameType?.toLowerCase() === 'casino') {\n this.getCasinoGameLaunchUrl(gameId).subscribe(\n (response) => {\n if (response.redirect) {\n this.launchGame(response.redirect);\n } else {\n if (globalMessages?.messages['gameLaunchErrorMessage']) {\n this.messageQueue.addError(globalMessages.messages['gameLaunchErrorMessage']);\n }\n }\n },\n (error) => {\n if (error && globalMessages?.messages['gameLaunchErrorMessage'])\n this.messageQueue.addError(globalMessages.messages['gameLaunchErrorMessage']);\n },\n );\n } else {\n this.getGameLaunchUrl(gameName, gameType, ballType, launchType, gameIcon, gameId, favstatus, origin).subscribe(\n (response) => {\n if (response.redirectUrl) {\n this.launchBingoGames(response.redirectUrl, gameName, gameType, origin);\n } else if (response.responseCode && response.responseCode != '0') {\n let errorMessage = globalMessages.messages[response.responseCode];\n errorMessage = globalMessages.messages['gl_' + response.responseCode];\n if (!errorMessage) {\n errorMessage = globalMessages.messages['gameLaunchErrorMessage'];\n }\n if (errorMessage) {\n this.messageQueue.addError(errorMessage);\n }\n if (this.isForcedGameLaunch()) {\n this.session.set('GameLaunchErrorCode', 'gl_' + response.responseCode);\n this.navigator.goTo(origin);\n }\n } else {\n if (globalMessages?.messages['gameLaunchErrorMessage']) {\n this.messageQueue.addError(globalMessages.messages['gameLaunchErrorMessage']);\n }\n }\n setTimeout(() => this.messageQueue.clear(), 3000);\n },\n (error) => {\n if (error && globalMessages?.messages['gameLaunchErrorMessage'])\n this.messageQueue.addError(globalMessages.messages['gameLaunchErrorMessage']);\n },\n );\n }\n }\n\n isForcedGameLaunch() {\n if (window.location.href.indexOf('bingoForcedGameLaunch') > -1) return true;\n else return false;\n }\n openBingoPlayUserDialog(origin: string): void {\n if (this.user.isAuthenticated && this.claimsConfig?.get('realplayer')?.toLowerCase() == 'false') {\n let requiredMessages;\n const cozyBingoConfig: any = this.configProviderService.provideCozyBingoConfig();\n if (cozyBingoConfig.cozyBingoFavouritesInRpwidget) {\n const bingoGlobalMessages = this.cozyBingoDataService.getGlobalMessages();\n requiredMessages = {\n message: bingoGlobalMessages.preBuyUserDepositMessage,\n header: bingoGlobalMessages.preBuyUserDepositHeader,\n closeBtn: bingoGlobalMessages.confirmCloseButton,\n purchaseButtonText: bingoGlobalMessages.preBuyUserDepositBtn,\n };\n } else {\n const globalMessages: any = this.configProviderService.provideGlobalConfig();\n requiredMessages = {\n message: globalMessages.messages.preBuyUserDepositMessage,\n header: globalMessages.messages.preBuyUserDepositHeader,\n closeBtn: globalMessages.messages.confirmCloseButton,\n purchaseButtonText: globalMessages.messages.preBuyUserDepositBtn,\n };\n }\n const dialogRef = this.dialog.open(ConfirmMessageComponent, {\n width: '378px',\n data: requiredMessages,\n });\n\n dialogRef.afterClosed().subscribe(() => {\n this.navigator.goTo(origin);\n });\n }\n }\n\n getPlayUrl(\n gameName: string,\n gameType: string,\n ballType: string,\n launchType: string,\n gameIcon: string,\n gameId: string,\n favstatus: boolean,\n origin: string,\n ): string {\n let result: string = '';\n if (origin.indexOf('?') === -1) {\n result =\n origin +\n '?bingoForcedGameLaunch=true&gameName=' +\n gameName +\n '&gameType=' +\n gameType +\n '&ballType=' +\n ballType +\n '&launchType=' +\n launchType +\n '&gameIcon=' +\n gameIcon +\n '&gameId=' +\n gameId +\n '&favstatus=' +\n favstatus +\n '&originUrl=' +\n origin;\n } else {\n result =\n origin +\n '&bingoForcedGameLaunch=true&gameName=' +\n gameName +\n '&gameType=' +\n gameType +\n '&ballType=' +\n ballType +\n '&launchType=' +\n launchType +\n '&gameIcon=' +\n gameIcon +\n '&gameId=' +\n gameId +\n '&favstatus=' +\n favstatus +\n '&originUrl=' +\n origin;\n }\n return result;\n }\n\n validateUser(\n gameName: string,\n gameType: any,\n ballType: any,\n launchType: any,\n gameIcon: any,\n gameId: any,\n favstatus: any,\n origin: any,\n gameObj: any,\n ): boolean {\n let forceGameLaunchObj: any;\n const playUrlObj: any = {};\n playUrlObj.gameName = gameName;\n playUrlObj.gameType = gameType;\n playUrlObj.ballType = ballType;\n playUrlObj.launchType = launchType;\n playUrlObj.gameIcon = gameIcon;\n playUrlObj.gameId = gameId;\n playUrlObj.favstatus = favstatus;\n playUrlObj.origin = origin;\n playUrlObj.vfBingo = true;\n playUrlObj.gameObj = gameObj;\n\n forceGameLaunchObj = {\n gameLaunchParam: playUrlObj,\n timeStamp: new Date().getTime(),\n };\n if (!this.user.isAuthenticated) {\n this.cacheManagerService.writeForceGameLaunchObjInSessionStorage('CasinoCoreForceGameObj', forceGameLaunchObj);\n this.loginDialog.whenReady.pipe(takeUntil(this.destroy$)).subscribe(() => this.loginDialog.open());\n return false;\n }\n\n return true;\n }\n\n launchBingoGames(redirectUrl: any, _gameName: string, gameType: string, origin: string): void {\n //setting overlay visibility.\n redirectUrl = decodeURIComponent(redirectUrl);\n if (gameType == 'Bingovf') {\n if (this.deviceService.isTouch) {\n this.navigator.goTo(redirectUrl);\n } else {\n this.openedRooms = [];\n if (!this.session.get('openedRooms')) this.session.set('openedRooms', this.openedRooms);\n this.openedRooms = this.session.get('openedRooms') || [];\n\n if (this.openedRooms.indexOf(_gameName) > -1) {\n this.activeroom = _gameName;\n return;\n }\n const gamePopOutWindow = window.open(\n redirectUrl,\n '_blank',\n 'height=605,width=975,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes',\n );\n if (origin) {\n this.navigator.goTo(origin);\n }\n this.openedRooms.push(_gameName);\n this.session.set('openedRooms', this.openedRooms);\n const checkPopOutWindowOpenInterval = setInterval(() => {\n if (this.activeroom == _gameName) {\n this.activeroom = '';\n gamePopOutWindow?.focus();\n }\n if (gamePopOutWindow?.closed) {\n this.openedRooms = this.openedRooms.filter((a: string) => {\n return a != _gameName;\n });\n this.session.set('openedRooms', this.openedRooms);\n clearInterval(checkPopOutWindowOpenInterval);\n this.recentGamesService.setRecentGames();\n }\n }, 500);\n }\n } else this.navigator.goTo(redirectUrl);\n }\n launchGame(redirectUrl: any) {\n redirectUrl = decodeURIComponent(redirectUrl);\n if (this.isInGameClient) {\n window.parent.postMessage({ type: 'LaunchGame', data: redirectUrl }, window.location.origin);\n //return true;\n }\n this.navigator.goTo(redirectUrl);\n }\n\n getGameLaunchUrl(\n gameName: string,\n gameType: string,\n ballType: string,\n launchType: string,\n gameIcon: string,\n gameId: string,\n favstatus: boolean,\n originUrl: string,\n ): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n let endPoint = this.apiPathsHelperService.transformApi(apiPathsConfig.bingo['bgGameLaunch'], this.urlUtilityService.getBingoApiBaseUrl());\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n endPoint = apiPathsConfig.bingo['bgGameLaunch'];\n }\n const cozyBingoConfig = this.configProviderService.provideCozyBingoConfig();\n if (cozyBingoConfig.enableBingoGameLaunchPostMethod) {\n let lastLoginTime: any;\n if (this.currentSessionConfig.loginDuration != null) {\n const clientLoginDuration = toNumber(this.session.get('clientLoginDuration'));\n this.session.remove('clientLoginDuration');\n if (cozyBingoConfig.enableLastLoginTimeCheck) {\n lastLoginTime = clientLoginDuration ? Date.now() - clientLoginDuration : Date.now() - this.currentSessionConfig.loginDuration;\n }\n }\n const postObj = {\n gameName: gameName,\n gameType: gameType,\n ballType: ballType,\n launchType: launchType,\n gameIcon: gameIcon,\n gameId: gameId,\n favstatus: favstatus,\n originUrl: originUrl,\n sso: this.claimsConfig.get('ssotoken'),\n themeId: '',\n originGameId: '',\n isReplaceGameSrc: false,\n lastLoginTime: lastLoginTime,\n isInGameClient: false,\n };\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n this.apiBingoService.post(endPoint, postObj, { withCredentials: true });\n } else {\n this.api.post(endPoint, postObj, { withCredentials: true });\n }\n }\n let res: Observable<any>;\n if (apiPathsConfig.bingo['newApiStructure'] && apiPathsConfig.bingo['newApiStructure'] == 'enabled') {\n res = this.apiBingoService.get(\n endPoint,\n {\n gameName: gameName,\n gameType: gameType,\n ballType: ballType,\n launchType: launchType,\n gameIcon: gameIcon,\n gameId: gameId,\n favstatus: favstatus,\n originUrl: originUrl,\n sso: this.claimsConfig.get('ssotoken'),\n },\n { withCredentials: true },\n );\n } else {\n res = this.api.get(\n endPoint,\n {\n gameName: gameName,\n gameType: gameType,\n ballType: ballType,\n launchType: launchType,\n gameIcon: gameIcon,\n gameId: gameId,\n favstatus: favstatus,\n originUrl: originUrl,\n sso: this.claimsConfig.get('ssotoken'),\n },\n { withCredentials: true },\n );\n }\n\n return res;\n }\n getCasinoGameLaunchUrl(variantName: string): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.bingo['ccGameLaunch'], { variantName: variantName });\n }\n ngOnDestroy() {\n this.destroy$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { CacheManagerService } from './cache-manager.service';\nimport { CasinoManager } from './casino-manager.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CategoryManager {\n lobbyCategoryLookup: Map<string, Map<string, any>> = new Map<string, Map<string, any>>();\n parentCategoryLookUpMap: Map<string, Map<string, any>> = new Map<string, Map<string, any>>();\n\n public currentCategory: any;\n private categoryLookUpFilledPublisher = new BehaviorSubject<Map<string, any>>(new Map<string, any>());\n categoryLookUpObservable: Observable<any> = this.categoryLookUpFilledPublisher.asObservable();\n\n private defaultCategoryFilledPublisher = new BehaviorSubject<any>(null);\n defaultCategoryLookUpObservable: Observable<any> = this.defaultCategoryFilledPublisher.asObservable();\n\n gameStickersMap: any = {};\n stickersLookupCompletePublisher = new BehaviorSubject<Boolean>(new Boolean());\n\n constructor(\n private api: PlatformApiService,\n private cacheManager: CacheManagerService,\n private casinoManager: CasinoManager,\n private configProviderService: ConfigProviderService,\n ) {}\n\n getAllLMTCategories(lobbyType: string = '', invokerproduct: string = ''): Observable<any> {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.lmt['lmtCategoriesAsync'], { lobbytype: lobbyType, invokerProduct: invokerproduct });\n }\n\n defaultCategoryLoadEvent(gymlandRecentfromDefaultCategory: any) {\n this.defaultCategoryFilledPublisher.next(gymlandRecentfromDefaultCategory);\n }\n\n getAllCategories(lobbyType: string = '') {\n if (lobbyType === '') {\n lobbyType = this.casinoManager.getLobbyType() || '';\n }\n let categoryLookUp: Map<string, any> = new Map<string, any>();\n categoryLookUp = this.lobbyCategoryLookup.get(lobbyType) || new Map<string, any>();\n if (categoryLookUp && categoryLookUp.size > 0) {\n return categoryLookUp;\n } else {\n const categoryMap: any = this.cacheManager.getAllCategoriesFromLocalCache(lobbyType);\n if (categoryMap) {\n this.lobbyCategoryLookup.set(lobbyType, categoryMap);\n this.parentCategoryLookUpMap.set(lobbyType, this.setParentCategoryLookUpMap(categoryMap));\n }\n return categoryMap;\n }\n }\n\n setParentCategoryLookUpMap(categoryLookup: any) {\n const tempParentCategories: Map<string, string> = new Map<string, string>();\n if (categoryLookup && categoryLookup.size > 0) {\n categoryLookup.entries().forEach((entry: any) => {\n if (!entry[1].isNavigationCategory) {\n categoryLookup.entries().forEach((category: any) => {\n if (category[1].linkedCategory == entry[0]) {\n categoryLookup.entries().forEach((category2: any) => {\n if (category2[1].lmtSubCategories && category2[1].lmtSubCategories.indexOf(category[1].categoryid) > -1) {\n entry[1].parentCategoryid = category2[1].categoryid;\n tempParentCategories.set(entry[1].categoryid, entry[1].parentCategoryid);\n }\n });\n }\n });\n }\n });\n }\n return tempParentCategories;\n }\n\n getDefaultCategoryFromDynacon(): string {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const lobbyType: string = this.casinoManager.getLobbyType() || '';\n if (lobbyType) {\n for (let i = 0; i < casinoConfig.defaultyLobbyTypeCategory.length; i++) {\n if (casinoConfig?.defaultyLobbyTypeCategory[i]?.lobbyType?.toLowerCase() === lobbyType?.toLowerCase()) {\n return casinoConfig.defaultyLobbyTypeCategory[i].defaultCategory;\n }\n }\n }\n return '';\n }\n\n getDefaultLMTCategory() {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n return this.getLMTMap(casinoConfig.defaultCategory);\n }\n\n getLMTMap(categoryOnAddressBar: string): any {\n if (!categoryOnAddressBar || categoryOnAddressBar === '') {\n return this.getDefaultCategoryInfo();\n }\n if (categoryOnAddressBar?.toLowerCase() === this.getDefaultCategoryFromDynacon()?.toLowerCase()) {\n return this.getDefaultCategoryInfo();\n }\n return this.fetchCategoryInfoOnsiteCoreDataCategoryId(categoryOnAddressBar);\n }\n\n fetchCategoryInfoOnsiteCoreDataCategoryId(sitecoreDataCategoryId: string) {\n if (sitecoreDataCategoryId) {\n const allCategoryLookUpMap: any = this.getAllCategories();\n if (allCategoryLookUpMap && allCategoryLookUpMap.size > 0) {\n for (const key of Array.from(allCategoryLookUpMap.keys())) {\n const category: any = allCategoryLookUpMap.get(key);\n if (category && category.categoryid && category?.categoryid?.toLowerCase() === sitecoreDataCategoryId?.toLowerCase()) {\n return allCategoryLookUpMap.get(key);\n }\n }\n return null;\n }\n }\n return null;\n }\n\n getDefaultCategoryInfo() {\n const defaultLobbyCategory: string = this.getDefaultCategoryFromDynacon();\n const defaultCategoryInfo: any = this.fetchCategoryInfoOnsiteCoreDataCategoryId(defaultLobbyCategory);\n if (defaultCategoryInfo) {\n return defaultCategoryInfo;\n } else {\n const allCategoryLookUpMap: any = this.getAllCategories();\n if (allCategoryLookUpMap && allCategoryLookUpMap.size > 0) {\n return allCategoryLookUpMap.entries().next().value[1];\n }\n }\n return null;\n }\n\n mapGameStickers(lookUpResponse: any) {\n const gameStickersMap: any = {};\n lookUpResponse.forEach((category: any) => {\n if (category['gamesModel'])\n category['gamesModel'].forEach((gameModel: any) => {\n 'sticker' in gameModel && (gameStickersMap[gameModel.game] = gameModel.sticker);\n });\n });\n this.gameStickersMap = gameStickersMap;\n this.cacheManager.setGameToStickersMap(this.gameStickersMap);\n this.stickersLookupCompletePublisher.next(true);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastMessageService {\n eventId: any;\n isShown: boolean;\n iconClass: string;\n message: string;\n isIconShown: boolean;\n\n constructor() {}\n\n on(iconClass: string, message: string, isIconShown: boolean = false) {\n this.isShown = true;\n this.eventId = setTimeout(() => {\n this.off();\n }, 2000);\n this.iconClass = iconClass;\n this.message = message;\n this.isIconShown = isIconShown;\n }\n // NFR - Services optimization - Remove\n off() {\n clearTimeout(this.eventId);\n this.isShown = false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DiscoverFeedService {\n discoverFeedData: any;\n isStickerDisplay: boolean;\n private discoverFeedObject = new BehaviorSubject<any>(null);\n private displayDiscoverSticker = new BehaviorSubject<any>(null);\n discoverFeedObservable: Observable<any> = this.discoverFeedObject.asObservable();\n discoverFeedStickerObservable: Observable<any> = this.displayDiscoverSticker.asObservable();\n constructor(\n private api: PlatformApiService,\n private configProviderService: ConfigProviderService,\n ) {}\n\n GetDiscoverFeedSitecoreData() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.disjointFeeds['dsFeedData']).subscribe(\n (response: any) => {\n this.discoverFeedData = response;\n this.expiryDatecal(response.discoverContainer);\n this.discoverFeedObject.next(response);\n },\n () => {},\n );\n }\n getDiscoverFeed() {\n return this.discoverFeedData;\n }\n getStickerExpiryTime(discoverData: any) {\n this.displayDiscoverSticker.next(discoverData);\n }\n expiryDatecal(data: any) {\n if (data.highlightExpiryDate) {\n const expiryDate: any = new Date(data.highlightExpiryDate);\n const currentDate: any = new Date();\n const remainingTime = expiryDate - currentDate;\n const remainingTimeInMints = remainingTime / 1000 / 60;\n this.isStickerDisplay = remainingTimeInMints > 0 ? true : false;\n if (this.isStickerDisplay) {\n this.getStickerExpiryTime(data);\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DesignSystemEnablerService {\n constructor(\n private readonly _queryParamReader: ActivatedRoute,\n private configProvider: ConfigProviderService,\n ) {}\n\n isEnabled() {\n const queryParams = this._queryParamReader.snapshot.queryParams;\n const activateDesignSystem = this.configProvider.provideFeaturesConfig().activateDesignSystem;\n\n return this.isEnabledInQueryParameter(queryParams) || activateDesignSystem;\n }\n private isEnabledInQueryParameter(queryParams: { [k: string]: string }) {\n const enablerKeyInQueryParam = Object.keys(queryParams).find((p) => p.trim().toLowerCase() === '_enablefeature');\n const enablerEntryInQueryParam = Object.entries(queryParams).find((p) => p[0].trim().toLowerCase() === '_enablefeature');\n if (enablerKeyInQueryParam) {\n if (enablerEntryInQueryParam && (enablerEntryInQueryParam[1] || '').trim().toLowerCase() === 'ds') {\n return true;\n }\n }\n return false;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { BingoGameLaunchService } from './bingo-vf-services/bingo-game-launch.service';\nimport { CasinoCoreGamelaunchService } from './gamelaunch.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ForceGameLaunchHandlerService implements OnDestroy {\n gameLaunchObservable: Subscription;\n constructor(\n private casinoLobbyService: CasinoLobbyService,\n private casinoCoreGamelaunchService: CasinoCoreGamelaunchService,\n private bingoGameLaunchService: BingoGameLaunchService,\n ) {}\n\n onAppInit() {\n this.gameLaunchObservable = this.casinoLobbyService.forceGameLaunchObservable.subscribe(\n (response: any) => {\n if (response) {\n if (response.gameLaunchParam.vfBingo) {\n const params = response.gameLaunchParam;\n this.bingoGameLaunchService.initiateGameLaunch(\n params.gameName,\n params.gameType,\n params.ballType,\n params.launchType,\n params.gameIcon,\n params.gameId,\n params.favstatus,\n params.origin,\n params.gameObj,\n );\n } else {\n this.casinoCoreGamelaunchService.launchGame(response.gameLaunchParam);\n }\n }\n },\n () => {},\n );\n }\n ngOnDestroy() {\n this.gameLaunchObservable?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Logger, Message, MessageLifetime, MessageType } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService, GamePremiereConfig, PlatformApiService, UserRequestModel } from '../public-api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GamePremiereService {\n observable: Observable<any | null>;\n private optInPublisher = new BehaviorSubject<boolean>(false);\n optInObservable: Observable<boolean | null>;\n private changePromoStatusBehaviourSubject = new BehaviorSubject<any>(null);\n private publisher = new BehaviorSubject<boolean>(false);\n gamePremiereConfig: GamePremiereConfig;\n changePromoStatusObservable: Observable<boolean> = this.changePromoStatusBehaviourSubject.asObservable();\n gamePremiereOptInData: any;\n\n constructor(\n private configProviderService: ConfigProviderService,\n private api: PlatformApiService,\n private logger: Logger,\n ) {\n this.gamePremiereConfig = this.configProviderService.provideGamePremiereConfig();\n this.observable = this.publisher.asObservable();\n this.optInObservable = this.optInPublisher.asObservable();\n }\n\n get gamePremiereOptIn(): any {\n return this.gamePremiereOptInData;\n }\n\n getGamePremiereUserStatus(type: string, id: string): Observable<any> {\n return this.api.get(\n 'gamepremiere/GetGamePremiereStatus',\n { type: type, id: id },\n {\n responseType: 'json',\n withCredentials: true,\n showSpinner: true,\n },\n );\n }\n getGamepremiereOptIn(postRequestModel: UserRequestModel): void {\n this.api\n .post('gamePremiere/PostOptinStatus', postRequestModel, {\n responseType: 'json',\n withCredentials: true,\n showSpinner: false,\n })\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.optInPublisher.next(response);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.logger.error(message);\n },\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, Message, MessageLifetime, MessageQueueService, MessageType, TrackingService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { IGameSelectorWidget, IGameSelectorWidgetGlobalConfig } from './models/game-selector-widget.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameSelectorWidgetService {\n widgetsMap: Map<string, IGameSelectorWidget> = new Map<string, IGameSelectorWidget>();\n private widgetsMapPublisher = new BehaviorSubject<boolean>(false);\n widgetsMapObservable: Observable<boolean> = this.widgetsMapPublisher.asObservable();\n\n globalConfig: IGameSelectorWidgetGlobalConfig;\n widgetProduct: string;\n constructor(\n private api: PlatformApiService,\n private messageQueue: MessageQueueService,\n private tracking: TrackingService,\n private appInfoConfig: AppInfoConfig,\n ) {}\n\n private emptyMap() {\n if (this.widgetsMap && this.widgetsMap.size > 0) {\n this.widgetsMap.clear();\n }\n }\n\n fetchWidgets(widgetPaths: Array<string>) {\n this.api\n .post('GameSelector/FetchWidgets', widgetPaths, {\n responseType: 'json',\n withCredentials: true,\n showSpinner: false,\n })\n .subscribe(\n (response: IFetchWidgetsResponse) => {\n if (response.globalConfig) this.globalConfig = response.globalConfig;\n\n this.emptyMap();\n response.widgets.forEach((widget: IGameSelectorWidget) => {\n this.widgetsMap.set(widget.path, widget);\n });\n this.widgetsMapPublisher.next(true);\n },\n (error: string) => {\n let message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n setTimeout(() => {\n this.messageQueue.clear();\n }, 1000);\n }\n },\n );\n }\n // NFR - Services optimization - Remove\n getWidgetsMap() {\n return this.widgetsMap;\n }\n\n getWidget(path: string) {\n return this.widgetsMap.get(path);\n }\n\n getGlobaConfig() {\n return this.globalConfig;\n }\n\n addTrackingEvent(\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ) {\n this.tracking.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': this.appInfoConfig.product + '-' + positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n}\n\ninterface IFetchWidgetsResponse {\n widgets: Array<IGameSelectorWidget>;\n globalConfig: IGameSelectorWidgetGlobalConfig;\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { DeviceService, Page, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { EmbeddedGamePopupComponent } from '../embedded-game-popup/embedded-game-popup.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GameService {\n constructor(\n private page: Page,\n private user: UserService,\n private dialog: MatDialog,\n private deviceService: DeviceService,\n ) {}\n\n gameDataVar: any = {};\n dialogRef: any;\n private isVisible = new BehaviorSubject<boolean>(false);\n private gameData = new BehaviorSubject<any>(this.gameDataVar);\n overlayVisibilityStatus: Observable<boolean> = this.isVisible.asObservable();\n\n setOverlayVisibility(isVisible: boolean) {\n this.isVisible.next(isVisible);\n }\n // NFR - Services optimization - Remove\n openDialog(gameData: any): void {\n gameData.fromEmbedPopUp = true;\n this.dialogRef = this.dialog.open(EmbeddedGamePopupComponent, {\n width: this.deviceService.windowWidth() + 'px',\n data: gameData,\n });\n }\n\n closeDialog() {\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n gameDataInfo(data: any) {\n this.gameData.next(data);\n }\n // NFR - Services optimization - Remove\n getCategoryGamesFromLocalStorage(categoryType: string) {\n const dataFromSessionStorage = this.getDataFromSessionStorage(this.getCacheKey());\n if (dataFromSessionStorage) {\n const categoryLookUp = JSON.parse(dataFromSessionStorage);\n if (categoryLookUp[categoryType] && categoryLookUp[categoryType].games && categoryLookUp[categoryType].games.length > 0) {\n return this.findGamesInLocalStorage(categoryLookUp[categoryType].games);\n }\n }\n return null;\n }\n\n getGameDataByGameId(gameId: any) {\n const dataFromLocalStorage = this.getDataFromLocalStorage(gameId + '_GameMetaData');\n if (dataFromLocalStorage) {\n return JSON.parse(dataFromLocalStorage);\n }\n return null;\n }\n\n findGamesInLocalStorage(gameIds: any[]) {\n const gameDataSet: any = {\n gamesInLocalStorage: null,\n gamesNotAvailableInLocalStorage: null,\n };\n const localStorageGames: any[] = [];\n const localStorageGamesNotAvailable: string[] = [];\n gameIds.forEach((gameId: string) => {\n const dataFromLocalStorage = this.getDataFromLocalStorage(gameId + '_GameMetaData');\n if (dataFromLocalStorage) {\n localStorageGames.push(dataFromLocalStorage);\n } else {\n localStorageGamesNotAvailable.push(gameId);\n }\n });\n gameDataSet.gamesInLocalStorage = localStorageGames;\n gameDataSet.gamesNotAvailableInLocalStorage = localStorageGamesNotAvailable;\n return gameDataSet;\n }\n // NFR - Services optimization - Remove\n getCacheKey() {\n if (this.user.isAuthenticated) {\n return 'allCategoryLookupData_' + this.page.lang + '_' + this.user.username;\n } else {\n return 'allCategoryLookupData_' + this.page.lang;\n }\n }\n // NFR - Services optimization - Remove\n getDataFromSessionStorage(key: string) {\n try {\n return sessionStorage.getItem(key);\n } catch (error) {\n //console.log('error occurred while getting categories from session storage' + error);\n return null;\n }\n }\n\n getDataFromLocalStorage(key: string) {\n try {\n return localStorage.getItem(key);\n } catch (error) {\n return null;\n }\n }\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nimport { IContentLink, IContentVideo, IOption } from './common.model';\n\nexport interface GamingStoriesPhase2Configuration {\n enabled: boolean;\n storyItemInterval: number;\n gamingStoriesNpmPath: Array<IGamingStoriesNpmModel>;\n expirationTime: number;\n localStorageExpirationDuration: number;\n}\n\nexport interface IGamingStoriesNpmModel {\n product: string;\n productPath: string;\n}\n\nexport interface IGamingStoryContainer {\n sharedList: any;\n versionedList: any;\n storyList: Array<IGamingStory>;\n storyIconType: string;\n titlePosition: string;\n condition: string;\n tiltImageUrl: IContentImage;\n tiltMessage: string;\n}\n\nexport interface IGamingStory {\n // backgroundImage: IContentImage;\n storyImage: IContentImage;\n storyItems: Array<IGamingStoryItem>;\n title: string;\n storyViewed: boolean;\n storyName: string;\n condition: string;\n storyId: string;\n}\n\nexport interface IGamingStoryItem {\n storyImage: IContentImage;\n backgroundImage: IContentImage;\n configurations: any;\n customCTA: IContentLink;\n actorImage: IContentImage;\n description: string;\n emojies: Array<IEmojis>;\n enableSwipeup: boolean;\n //gameId: string;\n yesNoPollOption: Array<IOption>;\n actionTypePosition: string;\n titlePosition: string;\n subTitlePosition: string;\n descriptionPosition: string;\n showTnC: boolean;\n showVideo: boolean;\n showAudio: boolean;\n audio: string;\n storyItemActionType: string;\n storyItemInterval: number;\n storyType: string;\n subTitle: string;\n swipeupStoryItemContent: any;\n title: string;\n tnCContent: string;\n videoURL: string;\n cmsVideoURL: IContentVideo;\n audioFile: string;\n storyItemsPath: any;\n activeStoryItemIndex: number;\n activeStoriesIndex: number;\n storyItemViewed: boolean;\n question: string;\n answers: Array<IOption>;\n showOptIn: boolean;\n optInCTAText: string;\n optedInCTAText: string;\n targetPromoId: string;\n targetPromoStatus: string;\n isValid: string;\n userId: string;\n emojieName: string;\n storyItemId: string;\n condition: string;\n storyId: string;\n optedInUrl: IContentLink;\n expiryTime: any;\n}\nexport interface IMyDate {\n year: number;\n month: number;\n day: number;\n}\n\nexport interface IEmojis {\n emojiName: string;\n emojiPath: string;\n}\nexport class GamingStoriesStorageCloseModel {\n storyList: Array<IGamingStory>;\n activeStoriesIndex: number;\n activeStoryItemIndex: number;\n}\nexport class PostUserRequestAPIModel {\n userId: string;\n brandId: string;\n storyInfo: Array<StoryInfoModel>;\n}\nexport class StoryInfoModel {\n storyId: string;\n subStoryId: string;\n storyType: string;\n templateType: string;\n userInput: string;\n expTime: number;\n}\nexport class FetchUserRequestAPIModel {\n userId: string;\n brandId: string;\n reqStoryIds: Array<ReqStoryIdsModel>;\n}\nexport class ReqStoryIdsModel {\n storyId: string;\n subStoryId: string;\n}\nexport class FetchUserResponseAPIModel {\n statusCode: string;\n status: string;\n errorMessage: string;\n uId: string;\n brId: string;\n response: Array<ResponseDataModel>;\n}\nexport class ResponseDataModel {\n sId: string;\n subSId: string;\n tType: string;\n uInput: string;\n uAvg: Map<string, number>;\n\n constructor() {\n this.uAvg = new Map();\n }\n}\nexport class StoryInfoData {\n storyId: string;\n subStoryId: string;\n storyType: string;\n templateType: string;\n userInput: string;\n expTime: number;\n storyIndex: number;\n}\nexport class StoryInfoDataInSessionStorage {\n response: ResponseDataModel;\n expiryTime: number;\n userId: string;\n storyIndex: number;\n}\nexport class OptInStoriesTrack {\n activeStoriesIndex: number;\n activeStoryItemIndex: number;\n}\nexport class StoriesLocalStorageModel {\n userId: string;\n storyId: string;\n viewedTimeStamp: number;\n}\n","import { Injectable } from '@angular/core';\n\nimport { Message, MessageLifetime, MessageQueueService, MessageType, TrackingService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport {\n FetchUserRequestAPIModel,\n FetchUserResponseAPIModel,\n GamingStoriesPhase2Configuration,\n GamingStoriesStorageCloseModel,\n IGamingStoryContainer,\n IGamingStoryItem,\n PostUserRequestAPIModel,\n ResponseDataModel,\n StoriesLocalStorageModel,\n StoryInfoData,\n StoryInfoDataInSessionStorage,\n} from './models/gaming-stories.model';\n\ninterface IGetSwipeUpDataResponse {\n swipeUpStoryItemContent: Array<IGamingStoryItem>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GamingStoriesService {\n observable: Observable<any | null>;\n swipeUpObservable: Observable<boolean | null>;\n postGamingStoriesAPIObservable: Observable<boolean | null>;\n fetchGamingStoriesAPIObservable: Observable<boolean | null>;\n storiesFeedObservable: Observable<boolean | null>;\n storyContainerCloseList: GamingStoriesStorageCloseModel;\n pausePlayStory: boolean = false;\n muteVideo: string = 'muted';\n storyPaused: boolean = false;\n storyHasVideo: boolean = false;\n spliceDuplicateStore: boolean = false;\n storyInfoPostRequestList: Array<StoryInfoData> = [];\n storyInfoDataInPreLoginSessionStorageList: Array<StoryInfoDataInSessionStorage> = [];\n storeFetchAPIDataResList: Array<StoryInfoDataInSessionStorage> = [];\n duplicateRecords: Array<StoryInfoDataInSessionStorage> = [];\n uInputUndefinedCheck: Array<StoryInfoDataInSessionStorage> = [];\n private videoPresentBehaviourSubject = new BehaviorSubject<any>(null);\n videoPresentObservable: Observable<boolean> = this.videoPresentBehaviourSubject.asObservable();\n private videoProgressBehaviourSubject = new Subject<number>();\n videoProgressObservable: Observable<number> = this.videoProgressBehaviourSubject.asObservable();\n private optInPublisher = new BehaviorSubject<boolean>(false);\n optInObservable: Observable<boolean | null>;\n private changePromoStatusBehaviourSubject = new BehaviorSubject<any>(null);\n changePromoStatusObservable: Observable<boolean> = this.changePromoStatusBehaviourSubject.asObservable();\n pauseStoryBehaviourSubject = new BehaviorSubject<any>(null);\n pauseStoryObservable: Observable<boolean> = this.pauseStoryBehaviourSubject.asObservable();\n videoMuteBehaviourSubject = new BehaviorSubject<string>('');\n videoMuteObservable: Observable<string> = this.videoMuteBehaviourSubject.asObservable();\n fetchAPIBehaviourSubject = new BehaviorSubject<any>(null);\n fetchAPIObservable: Observable<Message> = this.fetchAPIBehaviourSubject.asObservable();\n\n private fetchUserAPIResponse: FetchUserResponseAPIModel;\n private storyData: IGamingStoryContainer;\n private gamingStoriesPhase2Config: GamingStoriesPhase2Configuration;\n private publisher = new BehaviorSubject<boolean>(false);\n private swipeUpContentData: Array<IGamingStoryItem>;\n private swipeUpPublisher = new BehaviorSubject<boolean>(false);\n private postGamingStoriesAPIPublisher = new BehaviorSubject<boolean>(false);\n private fetchGamingStoriesAPIPublisher = new BehaviorSubject<boolean>(false);\n private storiesFeedPublisher = new BehaviorSubject<boolean>(false);\n private gamingStoryItemOptInData: any;\n\n constructor(\n private tracking: TrackingService,\n private api: PlatformApiService,\n private messageQueue: MessageQueueService,\n private configProviderService: ConfigProviderService,\n private user: UserService,\n ) {\n this.gamingStoriesPhase2Config = this.configProviderService.provideGamingStoriesPhase2Config();\n this.observable = this.publisher.asObservable();\n this.swipeUpObservable = this.swipeUpPublisher.asObservable();\n this.postGamingStoriesAPIObservable = this.postGamingStoriesAPIPublisher.asObservable();\n this.fetchGamingStoriesAPIObservable = this.fetchGamingStoriesAPIPublisher.asObservable();\n this.storiesFeedObservable = this.storiesFeedPublisher.asObservable();\n this.optInObservable = this.optInPublisher.asObservable();\n }\n\n get config(): GamingStoriesPhase2Configuration {\n return this.gamingStoriesPhase2Config;\n }\n get getStoryContainerData(): IGamingStoryContainer {\n return this.storyData;\n }\n get gamingStoryItemOptIn(): any {\n return this.gamingStoryItemOptInData;\n }\n get swipeUpContentList(): Array<IGamingStoryItem> {\n return this.swipeUpContentData;\n }\n get fetchGamingStoriesAPIRes(): FetchUserResponseAPIModel {\n return this.fetchUserAPIResponse;\n }\n get postStoryInfoRequestItemsList(): Array<StoryInfoData> {\n return this.storyInfoPostRequestList;\n }\n get fetchstoryInfoDataInPreLoginSessionStorageList(): Array<StoryInfoDataInSessionStorage> {\n return this.storyInfoDataInPreLoginSessionStorageList;\n }\n get fetchStoryInfoDataList(): Array<StoryInfoDataInSessionStorage> {\n return this.storeFetchAPIDataResList;\n }\n get getStoryContainerCloseList(): GamingStoriesStorageCloseModel {\n return this.storyContainerCloseList;\n }\n getGamingStories(storyContainerPath: string, product: string, productPath: string): void {\n this.api\n .post(\n 'GamingStoriesPhase2/GetGamingStories',\n { storyContainerPath: storyContainerPath, product: product, productPath: productPath },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n )\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.storyData = response.gamingStories;\n let data: any = {};\n if (this.user.isAuthenticated) {\n data = { AfterApiCall: true };\n } else {\n data = { AfterApiCall: false };\n }\n this.publisher.next(data);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.messageQueue.add(message);\n },\n });\n }\n getSwipeUpContent(swipeUpContentPath: string): void {\n this.api\n .post(\n 'GamingStoriesPhase2/GetSwipeUpContent',\n { storyContainerPath: swipeUpContentPath },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n )\n .subscribe({\n next: (response: IGetSwipeUpDataResponse) => {\n if (response) {\n this.swipeUpContentData = response.swipeUpStoryItemContent;\n this.swipeUpPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.messageQueue.add(message);\n },\n });\n }\n getGamingOptIn(type: string, id: string, optIn: boolean, source: string): void {\n this.api\n .get(\n 'optinpromo/GetOptedPromo',\n { type: type, id: id, optIn: optIn, source: source },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n )\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.gamingStoryItemOptInData = response;\n this.optInPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.messageQueue.add(message);\n },\n });\n }\n\n postGamingStoriesAPI(postUserRequestAPIModel: PostUserRequestAPIModel): void {\n this.api\n .post('GamingStoriesPhase2/PostUserResponseAsync', postUserRequestAPIModel, {\n responseType: 'json',\n withCredentials: true,\n showSpinner: false,\n })\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.postGamingStoriesAPIPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.messageQueue.add(message);\n },\n });\n }\n fetchGamingStoriesAPI(fetchUserRequestAPIModel: FetchUserRequestAPIModel, expirationTime: number): void {\n this.api\n .post('GamingStoriesPhase2/FetchingUserResponseAsync', fetchUserRequestAPIModel, {\n responseType: 'json',\n withCredentials: true,\n showSpinner: true,\n })\n .subscribe({\n next: (response: FetchUserResponseAPIModel) => {\n if (response.status !== 'Failed') {\n this.fetchUserAPIResponse = response;\n this.fetchGamingStoriesAPIPublisher.next(true);\n this.fetchGamingStoriesAPIRes.response.forEach((fetchDataRes) => {\n const currentEpocTime = new Date().getTime() / 1000;\n const storyInfoDataInSessionStorage: StoryInfoDataInSessionStorage = new StoryInfoDataInSessionStorage();\n storyInfoDataInSessionStorage.response = new ResponseDataModel();\n storyInfoDataInSessionStorage.response.sId = fetchDataRes.sId;\n storyInfoDataInSessionStorage.response.subSId = fetchDataRes.subSId;\n storyInfoDataInSessionStorage.response.uInput = fetchDataRes.uInput;\n storyInfoDataInSessionStorage.response.uAvg = fetchDataRes.uAvg;\n storyInfoDataInSessionStorage.expiryTime = Math.round(currentEpocTime + expirationTime * 60);\n storyInfoDataInSessionStorage.userId = this.fetchGamingStoriesAPIRes.uId;\n this.storeFetchAPIDataRes(storyInfoDataInSessionStorage);\n });\n } else {\n const message: Message = {\n html: 'failed',\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.fetchAPIBehaviourSubject.next(message);\n }\n },\n error: (error: string) => {\n let message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n this.messageQueue.add(message);\n this.fetchAPIBehaviourSubject.next(message);\n },\n });\n }\n trackingGamingStoriesPhase2Event(\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n contentPosition: string,\n uRLClicked: string,\n ): void {\n this.tracking.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.ContentPosition': contentPosition,\n 'component.URLClicked': uRLClicked,\n });\n }\n pauseStory(pauseStoryTrigger: boolean) {\n this.storyPaused = pauseStoryTrigger;\n this.pauseStoryBehaviourSubject.next(pauseStoryTrigger);\n }\n pauseVideo() {\n let video = <HTMLVideoElement>document.getElementById('casino-gamingstory-video');\n let stream: HTMLMediaElement = {} as HTMLMediaElement;\n if (!video) stream = document.querySelector('#casino-gamingstory-cmsvideo stream') as HTMLMediaElement;\n if (video) {\n if (!video.paused) {\n video.pause();\n }\n } else if (stream) {\n if (!stream.paused) {\n stream.pause();\n }\n }\n }\n playVideo() {\n let video = <HTMLVideoElement>document.getElementById('casino-gamingstory-video');\n let stream: HTMLMediaElement = {} as HTMLMediaElement;\n if (!video) stream = document.querySelector('#casino-gamingstory-cmsvideo stream') as HTMLMediaElement;\n if (video) {\n if (video.paused) video.play();\n } else if (stream) {\n if (stream.paused) stream.play();\n }\n }\n storeGamingStoriesCloseContainer(storyContainerCloseList: GamingStoriesStorageCloseModel) {\n this.storyContainerCloseList = storyContainerCloseList;\n }\n storyInfoRequestItemsList(storyInfo: StoryInfoData) {\n this.storyInfoPostRequestList.push(storyInfo);\n }\n storingDataInPreLoginSessionStorage(storyInfoDataInSessionStorage: StoryInfoDataInSessionStorage) {\n this.storyInfoDataInPreLoginSessionStorageList.push(storyInfoDataInSessionStorage);\n sessionStorage.setItem('GS:StoryItemsInPreLoginSessionStorage', JSON.stringify(this.storyInfoDataInPreLoginSessionStorageList));\n }\n storeFetchAPIDataRes(storyInfoDataInSessionStorage: StoryInfoDataInSessionStorage) {\n this.spliceDuplicateStore = false;\n this.storeFetchAPIDataResList.push(storyInfoDataInSessionStorage);\n this.duplicateRecords = this.storeFetchAPIDataResList.filter(\n (x) =>\n x.userId === storyInfoDataInSessionStorage.userId &&\n x.response.sId === storyInfoDataInSessionStorage.response.sId &&\n x.response.subSId === storyInfoDataInSessionStorage.response.subSId,\n );\n this.uInputUndefinedCheck = this.storeFetchAPIDataResList.filter(\n (x) =>\n x.userId === storyInfoDataInSessionStorage.userId &&\n x.response.sId === storyInfoDataInSessionStorage.response.sId &&\n x.response.subSId === storyInfoDataInSessionStorage.response.subSId &&\n x.response.uInput === undefined,\n );\n if (this.duplicateRecords.length > 1 && this.uInputUndefinedCheck.length >= 1) {\n this.duplicateRecords.forEach((storyApi) => {\n if (!this.spliceDuplicateStore && storyApi.response.uInput === undefined) {\n this.storeFetchAPIDataResList.splice(this.storeFetchAPIDataResList.indexOf(storyApi), 1);\n this.spliceDuplicateStore = true;\n }\n });\n } else if (this.duplicateRecords.length > 1) {\n this.duplicateRecords.forEach((storyApi) => {\n if (!this.spliceDuplicateStore) {\n this.storeFetchAPIDataResList.splice(this.storeFetchAPIDataResList.indexOf(storyApi), 1);\n this.spliceDuplicateStore = true;\n }\n });\n }\n sessionStorage.setItem('GS:StoryItemsInPostLoginSessionStorage', JSON.stringify(this.storeFetchAPIDataResList));\n }\n videoPresentStatus(isVideoPresent: boolean) {\n this.videoPresentBehaviourSubject.next(isVideoPresent);\n }\n videoProgressStatus(videoProgress: number) {\n this.videoProgressBehaviourSubject.next(videoProgress);\n }\n changePromoStatus(storyStatusObject: any) {\n this.changePromoStatusBehaviourSubject.next(storyStatusObject);\n }\n writeGamingStoriesPhase2Array(gamingStoriesLocalStorageArray: Array<StoriesLocalStorageModel>) {\n if (this.user.isAuthenticated) {\n localStorage.setItem('gamingStoriesPhase2ViewedState_' + this.user.username, JSON.stringify(gamingStoriesLocalStorageArray));\n } else {\n localStorage.setItem('gamingStoriesPhase2ViewedState', JSON.stringify(gamingStoriesLocalStorageArray));\n }\n }\n readGamingStoriesPhase2Array() {\n let gamingStoriesArrayFromLocalStorage: any;\n if (this.user.isAuthenticated) {\n gamingStoriesArrayFromLocalStorage = JSON.parse(localStorage.getItem('gamingStoriesPhase2ViewedState_' + this.user.username)!);\n } else {\n gamingStoriesArrayFromLocalStorage = JSON.parse(localStorage.getItem('gamingStoriesPhase2ViewedState')!);\n }\n return gamingStoriesArrayFromLocalStorage;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GJackpotConstService {\n public static readonly WelcomeOverlay: string = 'WelcomeOverlay';\n public static readonly ParentCard: string = 'ParentCard';\n public static readonly WelcomeCard: string = 'WelcomeCard';\n public static readonly MainCard: string = 'MainCard';\n public static readonly SubCard: string = 'SubCard';\n public static readonly main: string = 'main';\n public static readonly overlay: string = 'overlay';\n public static readonly parent: string = 'parent';\n public static readonly sub: string = 'sub';\n public static readonly DisabledClaimedJackpots: string = 'DisabledClaimedJackpots';\n public static readonly ClaimCardShown: string = 'ClaimCardShown';\n public static readonly ClearCardShown: string = 'ClearCardShown';\n public static readonly JackpotCardsNotToShow: string = 'JackpotCardsNotToShow';\n public static readonly Success: string = 'SUCCESS';\n public static readonly LoginFailed: string = 'LOGIN_FAILED';\n public static readonly WinExpired: string = 'WIN_EXPIRED';\n public static readonly improperRefId: string = 'IMPROPER REF_ID';\n public static readonly alreadyInProgress: string = 'ALREADY_IN_PROGRESS';\n public static readonly alreadyInProgressOrDataNotAvilable: string = 'ALREADY_PROCESSED_OR_DATA_NOT_AVAILABLE';\n public static readonly ClaimJackpotsDetails: string = 'ClaimJackpotsDetails';\n public static readonly WelcomeOverlayShown: string = 'WelcomeOverlayShown';\n public static readonly TRIGGER_TIME: string = 'TRIGGER_TIME';\n public static readonly tablet: string = 'Tablet';\n public static readonly mobile: string = 'Mobile';\n public static readonly desktop: string = 'Desktop';\n public static readonly ParentCardReveal: string = 'ParentCard-Reveal';\n public static readonly MainCardReveal: string = 'MainCard-Reveal';\n public static readonly SubCardReveal: string = 'SubCard-Reveal';\n public static readonly Overlay: string = 'Overlay';\n public static readonly clearContainer: string = 'clear-container';\n public static readonly claimContainer: string = 'claim-container';\n public static readonly ClaimCard: string = 'ClaimCard';\n public static readonly ClearCard: string = 'ClearCard';\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalJackpotModService {\n globalJackpotPoolInfoMap: Map<string, any> = new Map<string, any>();\n siteCoreData: Map<string, any> = new Map<string, any>();\n lobbyData: Map<string, any> = new Map<string, any>();\n jackpotConfigData: Map<string, any> = new Map<string, any>();\n jackpotTeaserData: Map<string, any> = new Map<string, any>();\n jackpotSharedContentData: Map<string, any> = new Map<string, any>();\n historyFeedData: Map<string, any> = new Map<string, any>();\n private defaultTandCData: Map<string, any> = new Map<string, any>();\n private defaultTandCDataSubject = new BehaviorSubject<any>(null);\n defaultTandCDataSubjectObservable: Observable<any> = this.defaultTandCDataSubject.asObservable();\n\n constructor(private casinoLobbyService: CasinoLobbyService) {}\n\n onAppInit() {}\n\n setGlobalJackpotPoolInfoMap(lobbyType: string, pathSegment: string, jackpotPoolInfo: any) {\n const key = lobbyType + '#' + pathSegment + '#';\n this.globalJackpotPoolInfoMap.set(key, jackpotPoolInfo);\n }\n\n getGlobalJackpotPoolInfoMap(key: string) {\n return this.globalJackpotPoolInfoMap.get(key);\n }\n\n setSitecoreTemplateMap(lobbyType: string, pathSegment: string, siteCoreData: any) {\n const key = lobbyType + '#' + pathSegment + '#';\n this.siteCoreData.set(key, siteCoreData);\n }\n\n getSitecoreTemplateMap(key: string) {\n return this.siteCoreData.get(key);\n }\n\n setGlobalJackpotConfigData(lobbyType: string, pathSegment: string, jackpotConfigData: any) {\n const key = lobbyType + '#' + pathSegment + '#';\n this.jackpotConfigData.set(key, jackpotConfigData);\n }\n\n getGlobalJackpotConfigData(key: string) {\n return this.jackpotConfigData.get(key);\n }\n setJackpotTeaserContentMap(lobbyType: string, pathSegment: string, siteCoreData: any) {\n let key = lobbyType + '#' + pathSegment + '#';\n this.jackpotTeaserData.set(key, siteCoreData);\n }\n getJackpotTeaserContentMap(key: string) {\n return this.jackpotTeaserData.get(key);\n }\n setGlobalJackpotSharedContentData(lobbyType: string, pathSegment: string, jackpotSharedContentData: any) {\n let key = lobbyType + '#' + pathSegment + '#';\n this.jackpotSharedContentData?.set(key, jackpotSharedContentData);\n }\n getGlobalJackpotSharedContentData(key: string) {\n return this.jackpotSharedContentData?.get(key);\n }\n setGlobalJackpotLobbyTypeMap(lobbyType: string, pathSegment: string, lobbyData: any) {\n const key = lobbyType + '#' + pathSegment + '#';\n this.lobbyData.set(key, lobbyData);\n this.casinoLobbyService.setGlobalJackpotLobbyTypeMap(key, lobbyData);\n }\n\n async getGlobalJackpotLobbyDataFromLocalStorage(key: string): Promise<any> {\n const lobbyData: any = await this.casinoLobbyService.getGlobalJackpotLobbyDataFromLocalStorage(key);\n return lobbyData;\n }\n\n setHistoryFeedData(HistoryFeedData: any, lobbyType: string, pathSegment: string) {\n const key = lobbyType + '#' + pathSegment + '#';\n this.historyFeedData.set(key, HistoryFeedData);\n }\n getHistoryFeedData(key: string) {\n return this.historyFeedData.get(key);\n }\n\n setDisabledGames(DisabledGames: any) {\n this.casinoLobbyService.setDisabledGames(DisabledGames);\n }\n\n setDefaultTandCData(lobbyType: string, pathSegment: string, defaultTandCData: any) {\n const key = lobbyType + '#' + pathSegment + '#';\n this.defaultTandCData.set(key, defaultTandCData);\n this.defaultTandCDataSubject.next(defaultTandCData);\n }\n\n getDefaultTandCData(key: string) {\n return this.defaultTandCData.get(key);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DeviceService, Logger, TrackingService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoApiService } from './casino-api.service';\nimport { CategoryManager } from './category-manager.service';\nimport { ConstService } from './const.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalJackpotService {\n private globalJackpotObject: any;\n private gjWinnerJackpotData: any;\n private globalJackpotsSubject = new BehaviorSubject<any>(null);\n globalJackpotsFeedObservable: Observable<any> = this.globalJackpotsSubject.asObservable();\n private globalJackpotsTemplateSubject = new BehaviorSubject<any>(null);\n globalJackpotsTempslateObservable: Observable<any> = this.globalJackpotsTemplateSubject.asObservable();\n private wonStatusSubject = new BehaviorSubject<any>(null);\n userWinStatusObservable: Observable<any> = this.wonStatusSubject.asObservable();\n private claimStatusSubject = new BehaviorSubject<any>(null);\n claimStatusObservable: Observable<any> = this.claimStatusSubject.asObservable();\n private claimStatusErrorResponce = new BehaviorSubject<any>(null);\n claimStatusErrorResponceObservable: Observable<any> = this.claimStatusErrorResponce.asObservable();\n private historyFeedMarketingContent: any;\n private historyFeedMarketingContentSubject = new BehaviorSubject<any>(null);\n historyFeedTemplateSubjectObservable: Observable<any> = this.historyFeedMarketingContentSubject.asObservable();\n private gameslobbyfeedcategories = new BehaviorSubject<any>(null);\n lobbyfeedcategoriesObservable: Observable<any> = this.gameslobbyfeedcategories.asObservable();\n private winnersFeedSubject = new BehaviorSubject<any>(null);\n winnersFeedContentObservable: Observable<any> = this.winnersFeedSubject.asObservable();\n private devicetype: any;\n private lobbyfeedcategories: any;\n readonly RecentGames: string = 'RECENTGAMES';\n readonly FavouriteGames: string = 'FAVOURITEGAMES';\n lobbytype: string;\n isGlobalJackpot: boolean;\n oldPathSegment: string;\n seoBoxesRes: any = [];\n seoBoxesObservable: Observable<boolean | null>;\n private seoBoxesPublisher = new BehaviorSubject<boolean>(false);\n\n constructor(\n private api: CasinoApiService,\n private deviceService: DeviceService,\n private categoryManager: CategoryManager,\n private configProviderService: ConfigProviderService,\n private tracking: TrackingService,\n private logger: Logger,\n ) {\n if (this.deviceService.isTablet) this.devicetype = 'Tablet';\n else if (this.deviceService.isMobile) this.devicetype = 'Mobile';\n else this.devicetype = 'Desktop';\n this.seoBoxesObservable = this.seoBoxesPublisher.asObservable();\n }\n // NFR - Services optimization - Remove\n onAppInit() {}\n get seoBoxesContent(): any[] {\n return this.seoBoxesRes;\n }\n setGlobalJackpots(\n activeJackpotGroupId: any,\n activeTemplate: string,\n configurationType: string,\n selectedPhase: string,\n folderId: string,\n isRefreshLobby: boolean,\n ) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n this.api\n .get(\n apiPathsConfig.globalJackpots['gjpLobbyPoolFeed'],\n {\n jackpotGroupId: activeJackpotGroupId,\n device: this.devicetype,\n activeTemplate: activeTemplate,\n configurationType: configurationType,\n selectedPhase: selectedPhase,\n refreshLobby: isRefreshLobby,\n folderId: folderId,\n },\n { withCredentials: true },\n )\n .subscribe(\n (response: any) => {\n if (response) {\n this.globalJackpotObject = response;\n this.globalJackpotsSubject.next(response);\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve GlobalJackpot Data' + error);\n },\n );\n }\n\n setGlobalJackpotObject(globalJackpotObject: any) {\n this.globalJackpotObject = globalJackpotObject;\n this.globalJackpotsSubject.next(globalJackpotObject);\n }\n // NFR - Services optimization - Remove\n getGlobalJackpots() {\n return this.globalJackpotObject;\n }\n\n checkIfUserWonGroupJackpot(subJackpotId: any) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.globalJackpots['gjpUserWonJackpot'], { subJackpotId: subJackpotId }).subscribe(\n (response: any) => {\n if (response) {\n this.wonStatusSubject.next(response);\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve JackpotWon Data' + error);\n },\n );\n }\n\n userClaimGlobalJackpotStatus(winRefId: any) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.globalJackpots['gjpUserClaimStatus'], { winRefId: winRefId }, { responseType: 'text' }).subscribe(\n (response: string) => {\n this.claimStatusSubject.next(response);\n },\n (error) => {\n this.claimStatusErrorResponce.next(error);\n this.logger.error('Unable to retrieve Claim Status' + error);\n },\n );\n }\n clearRevealObservable() {\n this.wonStatusSubject.next('');\n }\n userClaimGlobalJackpotStatusClear() {\n this.claimStatusSubject.next('');\n }\n\n getAvailableGames() {\n return this.lobbyfeedcategories;\n }\n // NFR - Services optimization - Remove\n getUILobby(lobbyConfiguration: any, lobbyType: string) {\n let categoryTitleLangMap: Map<string, string> = new Map<string, string>();\n let stickerTitleLangMap: Map<string, string> = new Map<string, string>();\n if (lobbyConfiguration?.languageContent.length > 0 && lobbyConfiguration?.languageContent[0]) {\n if (lobbyConfiguration.languageContent[0].categories && lobbyConfiguration.languageContent[0].categories.length > 0) {\n categoryTitleLangMap = this.getLanguageContentMap(lobbyConfiguration.languageContent[0].categories);\n }\n if (lobbyConfiguration.languageContent[0].stickers && lobbyConfiguration.languageContent[0].stickers.length > 0) {\n stickerTitleLangMap = this.getLanguageContentMap(lobbyConfiguration.languageContent[0].stickers);\n }\n }\n return this.bindUILobby(lobbyConfiguration, lobbyType, categoryTitleLangMap, stickerTitleLangMap);\n //TODO:store UILobby in localStorage\n }\n getLobbyCategory(lobbyCategory: any, categoryTitleLangMap: any) {\n if (lobbyCategory) {\n const lmtCategoryId: string = lobbyCategory.categoryid;\n lobbyCategory.lmtCategoryId = lmtCategoryId;\n if (lobbyCategory.route) {\n lobbyCategory.categoryid =\n lobbyCategory.categoryid === 'LMC_GYML'\n ? lobbyCategory.categoryid\n : lobbyCategory?.route?.trim()?.replace(/ /g, '')?.toLowerCase();\n lobbyCategory.route = lobbyCategory.categoryid;\n }\n lobbyCategory.engName = lobbyCategory.categoryname;\n lobbyCategory.categoryname = this.getCategoryNameFromLangMap(lmtCategoryId, categoryTitleLangMap, lobbyCategory.categoryname);\n lobbyCategory.isNavigationCategory = this.getNavigationVisibility(lobbyCategory.isHidden);\n lobbyCategory.sitecoreData = this.getSitecoreInfoForCategoryIdAndLobbyType(lobbyCategory.categoryid);\n if (lobbyCategory.gamelist.length > 0) {\n for (let i = 0; i < lobbyCategory.gamelist.length; i++) {\n if (typeof lobbyCategory.gamelist[i].icon == 'number') {\n const t: string = String(lobbyCategory.gamelist[i].icon);\n lobbyCategory.gamelist[i].icon = t;\n }\n }\n }\n lobbyCategory.gamesModel = lobbyCategory.gamelist;\n return lobbyCategory;\n }\n }\n getLobbySubCategory(lobbySubCategory: any, categoryTitleLangMap: any) {\n if (lobbySubCategory) {\n const lmtCategoryId: string = lobbySubCategory.subcategoryid;\n lobbySubCategory.lmtCategoryId = lmtCategoryId;\n if (lobbySubCategory.route) {\n lobbySubCategory.categoryid =\n lobbySubCategory.subcategoryid === 'LMC_GYML'\n ? lobbySubCategory.subcategoryid\n : lobbySubCategory?.route?.trim()?.replace(/ /g, '')?.toLowerCase();\n lobbySubCategory.route = lobbySubCategory.categoryid;\n }\n lobbySubCategory.engName = lobbySubCategory.categoryname;\n lobbySubCategory.categoryname = this.getCategoryNameFromLangMap(lmtCategoryId, categoryTitleLangMap, lobbySubCategory.subcategoryname);\n lobbySubCategory.sitecoreData = this.getSitecoreInfoForCategoryIdAndLobbyType(lobbySubCategory.categoryid);\n lobbySubCategory.hideSubCategory = this.hideSubCategory(lobbySubCategory);\n if (lobbySubCategory.gamelist.length > 0) {\n for (let i = 0; i < lobbySubCategory.gamelist.length; i++) {\n if (typeof lobbySubCategory.gamelist[i].icon == 'number') {\n const t: string = String(lobbySubCategory.gamelist[i].icon);\n lobbySubCategory.gamelist[i].icon = t;\n }\n }\n }\n lobbySubCategory.gamesModel = lobbySubCategory.gamelist;\n return lobbySubCategory;\n }\n }\n getLanguageContentMap(langArray: any): Map<string, string> {\n const langMap: Map<string, string> = new Map<string, string>();\n if (langArray && langArray.length > 0) {\n for (let i = 0; i < langArray.length; i++) {\n const langItem: string = langArray[i];\n if (langItem.indexOf(':') > -1) {\n const langResolve: any = langItem.split(':');\n langMap.set(langResolve[0], langResolve[1]);\n }\n }\n }\n return langMap;\n }\n getParentCategoryId(category: any, feedCategories: any) {\n if (category.isHidden && category.isHidden === 'true') {\n //check if it is a aubcategory under any other category\n for (let i = 0; i < feedCategories.length; i++) {\n const item: any = feedCategories[i];\n if (item.subcategories && item.subcategories.length > 0) {\n for (let j = 0; j < item.subcategories.length; j++) {\n if (item.subcategories[j]?.toLowerCase() === category?.lmtCategoryId?.toLowerCase()) {\n const categoryRoute: string =\n item.categoryid === 'LMC_GYML' ? item.categoryid : item.route.replace(/\\s/g, '')?.toLowerCase();\n return categoryRoute;\n }\n }\n }\n }\n }\n return category.categoryid;\n }\n getCategoryNameFromSitecore(categoryid: string, lobbyType: string, fallbackCategoryId: boolean): string {\n const sitecoreData: any = this.getSitecoreInfoForCategoryIdAndLobbyType(categoryid);\n if (sitecoreData) {\n return sitecoreData.title;\n }\n if (fallbackCategoryId) {\n return categoryid;\n }\n return '';\n }\n getSitecoreInfoForCategoryIdAndLobbyType(categoryid: string) {\n const defaultSitecoreObj: any = {\n attributes: {\n icon: 'theme-home',\n },\n categoryId: categoryid,\n };\n return defaultSitecoreObj;\n }\n getCategoryNameFromLangMap(categoryId: string, langMap: any, defaultCategoryName: string): string {\n if (langMap && langMap.size > 0 && langMap.get(categoryId)) {\n return langMap.get(categoryId);\n }\n return defaultCategoryName;\n }\n getNavigationVisibility(hiddenStatus: string) {\n if (hiddenStatus) {\n return hiddenStatus?.toLowerCase().trim() == 'false';\n }\n return true;\n }\n setGlobalJackpotCategories() {\n this.gameslobbyfeedcategories.next(this.categoryManager.getAllCategories());\n }\n setIsGlobalJackpot(isGlobalJackpot: boolean) {\n this.isGlobalJackpot = isGlobalJackpot;\n }\n getIsGlobalJackpot() {\n return this.isGlobalJackpot;\n }\n setHistoryFeedContent(enablePhase2: boolean, folderId: string) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api\n .get(apiPathsConfig.globalJackpots['gjpHistoryFeed'], {\n enablePhase2: enablePhase2,\n folderId: folderId,\n })\n .subscribe(\n (response: any) => {\n if (response) {\n this.historyFeedMarketingContent = response;\n this.historyFeedMarketingContentSubject.next(response);\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve HistoryFeed Data' + error);\n },\n );\n }\n // NFR - Services optimization - Remove\n getHistoryFeedContent() {\n return this.historyFeedMarketingContent;\n }\n\n setGJPathSegment(pathsegment: string) {\n if (this.oldPathSegment != pathsegment) {\n this.globalJackpotObject = null;\n this.globalJackpotsSubject.next(null);\n this.wonStatusSubject.next(null);\n this.claimStatusSubject.next(null);\n this.claimStatusErrorResponce.next(null);\n this.historyFeedMarketingContent = null;\n this.historyFeedMarketingContentSubject.next(null);\n this.winnersFeedSubject.next(null);\n this.oldPathSegment = pathsegment;\n }\n }\n setGJWinnerJackpotContent(): void {\n // let thisClass = this;\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.globalJackpots['gjpWinnersFeed']).subscribe(\n (response: any) => {\n if (response) {\n this.gjWinnerJackpotData = response;\n this.winnersFeedSubject.next(this.gjWinnerJackpotData);\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve Global jackpot Winners Feed' + error);\n },\n );\n }\n getSeoboxes(id: string): void {\n this.api.get('GlobalJackpot/Get', { categoryType: id }).subscribe((response) => {\n if (response) {\n this.seoBoxesRes = response;\n this.seoBoxesPublisher.next(true);\n }\n });\n }\n hideSubCategory(lobbySubCategory: any) {\n let hideCategory: boolean;\n hideCategory =\n lobbySubCategory?.categoryid?.toLowerCase() === ConstService.RECENT_GAMES_CATEGORY_ID ||\n lobbySubCategory.categoryid?.toLowerCase() === ConstService.LMC_GYML_CATEGORY_ID;\n return hideCategory;\n }\n trackEvent(\n trackingType: string,\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ): void {\n this.tracking.triggerEvent(trackingType, {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n bindUILobby(lobbyConfiguration: any, lobbyType: string, categoryTitleLangMap: any, stickerTitleLangMap: any) {\n const lobbyCategoriesMap: Map<string, any> = new Map<string, any>();\n const lobbySubCategoriesMap: Map<string, any> = new Map<string, any>();\n\n if (lobbyConfiguration && lobbyConfiguration.categories && lobbyConfiguration.categories.length > 0) {\n for (let category of lobbyConfiguration.categories) {\n const lobbyCategory: any = this.getLobbyCategory(category, categoryTitleLangMap);\n if (lobbyCategory.subcategories && lobbyCategory.subcategories.length > 0) {\n lobbyCategory.lmtSubCategories = [];\n for (let subcategory of lobbyCategory.subcategories) {\n const lobbySubCategory: any = this.getLobbySubCategory(subcategory, categoryTitleLangMap);\n lobbySubCategory.parentCategoryId = this.getParentCategoryId(lobbyCategory, lobbyConfiguration.categories);\n lobbySubCategoriesMap.set(lobbySubCategory.route, lobbySubCategory);\n lobbyCategory.lmtSubCategories.push(lobbySubCategory.categoryid);\n }\n }\n lobbyCategoriesMap.set(lobbyCategory.route, lobbyCategory);\n }\n\n const recentPlayedCategory: any = {\n categoryid: this.RecentGames?.toLowerCase(),\n route: this.RecentGames?.toLowerCase(),\n categoryname: this.getCategoryNameFromSitecore(this.RecentGames?.toLowerCase(), lobbyType, true),\n isNavigationCategory: true,\n sitecoreData: this.getSitecoreInfoForCategoryIdAndLobbyType(this.RecentGames?.toLowerCase()),\n };\n\n lobbyCategoriesMap.set(recentPlayedCategory.route, recentPlayedCategory);\n\n const favouritesCategory: any = {\n categoryid: this.FavouriteGames?.toLowerCase(),\n route: this.FavouriteGames?.toLowerCase(),\n categoryname: this.getCategoryNameFromSitecore(this.FavouriteGames?.toLowerCase(), lobbyType, true),\n isNavigationCategory: true,\n sitecoreData: this.getSitecoreInfoForCategoryIdAndLobbyType(this.FavouriteGames?.toLowerCase()),\n };\n lobbyCategoriesMap.set(favouritesCategory.route, favouritesCategory);\n\n if (lobbySubCategoriesMap.size > 0) {\n lobbySubCategoriesMap.forEach((subcategory: any, subcategoryRoute: string) => {\n lobbyCategoriesMap.set(subcategoryRoute, subcategory);\n });\n }\n }\n const UILobby: any = {\n categoriesMap: lobbyCategoriesMap,\n categoryNameLangMap: categoryTitleLangMap,\n stickerNameMap: stickerTitleLangMap,\n gamemetadata: lobbyConfiguration.gamemetadata,\n };\n return UILobby;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TimerService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { CasinoApiService } from './casino-api.service';\nimport { TimeZoneService } from './time-zone.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LiveCasinoService {\n private liveGamesLookUp: Map<string, any> = new Map<string, any>();\n private liveGamesSubject = new BehaviorSubject<any>(null);\n liveGamesFeedObservable: Observable<any> = this.liveGamesSubject.asObservable();\n private liveGameswithSitecoreSubject = new BehaviorSubject<any>(null);\n liveGameswithSitecoreObservable: Observable<any> = this.liveGameswithSitecoreSubject.asObservable();\n\n liveCasinoApiSitecoreInfo: any;\n liveCasinoApiFeedStarted: boolean = false;\n liveCasinoApiFeedIntervalRefresh: any;\n isSitecoreInfoPublished: boolean;\n listenersCnt = 0;\n\n constructor(\n private api: CasinoApiService,\n private timeZoneService: TimeZoneService,\n private configProvider: ConfigProviderService,\n private timerService: TimerService,\n private urlUtilityService: UrlUtilityService,\n ) {}\n\n onAppInit() {\n this.liveGameswithSitecoreObservable.subscribe((liveCasinoData) => {\n if (liveCasinoData) {\n this.startLiveCasinoApiTntervalFeed();\n }\n });\n }\n\n startLiveCasinoApiTntervalFeed() {\n this.listenersCnt++;\n const liveCasinoConfig = this.configProvider.provideLiveCasinoConfig();\n this.liveCasinoApiFeedIntervalRefresh = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.getLiveCasinoData(false);\n }, liveCasinoConfig.liveCasinoApiFeedInterval);\n }\n\n getLiveCasinoData(isSitecoreInfoRequired: boolean): void {\n const options: any = { headers: {} };\n options.headers['Cache-Control'] = 'no-cache';\n options.headers['Pragma'] = 'no-cache';\n options.headers['Expires'] = '0';\n const apiPathsConfig = this.configProvider.provideApiPathsConfig();\n this.api\n .getCasinoProductApi(apiPathsConfig.liveCasino['liveCasinoData'], { isSitecoreInfoRequired: isSitecoreInfoRequired }, options)\n .subscribe(\n (response: any) => {\n this.getLiveCasinoDataSuccess(response, isSitecoreInfoRequired);\n },\n () => {},\n );\n }\n\n getLiveCasinoDataSuccess(response: any, isSitecoreInfoRequired: boolean) {\n if (response && response.liveCasinoApiDataItems && response.liveCasinoApiDataItems.length > 0) {\n response.liveCasinoApiDataItems.forEach((item: any) => {\n if (item && item.gamevariantname) {\n if (!(item.gameType && item?.gameType?.toLowerCase() === 'blackjack') && !item.seatsTaken) {\n item.seatsTaken = [];\n }\n this.liveGamesLookUp.set(item?.gamevariantname?.toLowerCase(), item);\n }\n });\n if (response.liveCasinoApiItemSitecoreData) {\n this.liveCasinoApiSitecoreInfo = response.liveCasinoApiItemSitecoreData;\n }\n\n this.liveGamesSubject.next(this.liveGamesLookUp);\n if (isSitecoreInfoRequired) {\n this.liveGameswithSitecoreSubject.next(this.liveGamesLookUp);\n this.isSitecoreInfoPublished = true;\n }\n }\n }\n getSitecoreInfoPublishedStatus(): boolean {\n return this.isSitecoreInfoPublished;\n }\n // NFR - Services optimization - Remove\n getLiveGamesLookUp() {\n return this.liveGamesLookUp;\n }\n\n getLiveGameLookUpInfo(gameId: string) {\n if (this.liveGamesLookUp.size > 0) {\n const liveGameInfo: any = this.liveGamesLookUp.get(gameId);\n if (liveGameInfo) {\n liveGameInfo.vendorName = liveGameInfo.vendorname;\n return liveGameInfo;\n }\n }\n }\n\n getLiveCasinoApiSitecoreInfo() {\n return this.liveCasinoApiSitecoreInfo;\n }\n\n getFlagIconURL(liveGameInfo: any): string {\n const gameConfig = this.configProvider.provideGameConfig();\n const liveCasinoConfig = this.configProvider.provideLiveCasinoConfig();\n if (liveGameInfo && liveGameInfo.language && liveGameInfo?.language?.toLowerCase() != 'en') {\n return gameConfig.host + liveCasinoConfig.flagUrlPattern.replace('{language}', liveGameInfo.language);\n } else {\n return '';\n }\n }\n\n isTableOnline(gameId: string): boolean {\n const liveGameInfo: any = this.getLiveGameLookUpInfo(gameId);\n if (liveGameInfo && liveGameInfo?.gameType) {\n if (!liveGameInfo.tableStatus) {\n return false;\n } else {\n if (!liveGameInfo.countdown) {\n return true;\n }\n if (liveGameInfo?.countdown?.type?.toLowerCase() === 'full time') {\n return true;\n } else if (liveGameInfo?.countdown?.type?.toLowerCase() === 'bounded') {\n const timerStartInstance: string = this.timeZoneService.getTimerStartInstance(liveGameInfo.countdown.time + ':00', 'UTC') || '';\n const seconds: number = this.timeZoneService.getSecondsFromTimeString(timerStartInstance);\n if (seconds > 0) {\n return false;\n } else {\n return true;\n }\n }\n }\n } else {\n //it is not a live Game. Hope it does not come here!\n return true;\n }\n return false;\n }\n // NFR - Services optimization - Remove\n setLiveCasinoStartVariable(value: boolean) {\n this.liveCasinoApiFeedStarted = value;\n }\n getLiveCasinoStartVariable(): boolean {\n return this.liveCasinoApiFeedStarted;\n }\n // NFR - Services optimization - Remove\n clearLiveCasinoDataPoints() {\n this.liveGamesLookUp = new Map<string, any>();\n this.liveGamesSubject.next(this.liveGamesLookUp);\n }\n secondsToStartTable(timeString: string): number {\n const timerStartInstance: string = this.timeZoneService.getTimerStartInstance(timeString + ':00', 'UTC') || '';\n const seconds: number = this.timeZoneService.getSecondsFromTimeString(timerStartInstance);\n return seconds;\n }\n\n stopFeed() {\n this.listenersCnt--;\n if (this.listenersCnt === 0 && this.liveCasinoApiFeedIntervalRefresh) {\n this.timerService.clearInterval(this.liveCasinoApiFeedIntervalRefresh);\n this.liveCasinoApiFeedIntervalRefresh = undefined;\n if (this.liveGamesSubject) {\n this.liveGamesSubject.unsubscribe();\n }\n if (this.liveGameswithSitecoreSubject) {\n this.liveGameswithSitecoreSubject.unsubscribe();\n }\n if (this.liveCasinoApiSitecoreInfo) {\n this.liveCasinoApiSitecoreInfo = undefined;\n }\n if (this.isSitecoreInfoPublished) {\n this.isSitecoreInfoPublished = false;\n }\n }\n }\n}\n","export class CasinoCoreNpmParams {\n isDll: boolean;\n disableFullLobbyFetch: boolean;\n fastLoadingVisibleOnLobby: any;\n isDisableLiveCasinoCalls: boolean;\n isDisableJackpotCalls: boolean;\n jackpotVisibleOnLobby: any;\n customLobbyTypeMaps: any;\n disableCasinoLocalStorage: boolean;\n targetOverlayLobby: boolean;\n disableSlotracesCallsOnBootstrap: boolean;\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nimport { IContentLink } from './common.model';\n\nexport interface IGamePremiere {\n headerText: string;\n closeCTA: IContentLink;\n sticker: string;\n overlayAnimationimage: IContentImage;\n staticPromoImage: IContentImage;\n promoVideo: string;\n enableVideo: boolean;\n subTitle1: string;\n subTitle2: string;\n mainTitle: string;\n mobileSubTitle1: string;\n mobileSubTitle2: string;\n stepsTitle: string;\n step1: string;\n steps2: string;\n steps3: string;\n additionalInfo: string;\n optinCTA: IContentLink;\n playnowCTA: IContentLink;\n moreInfoText: string;\n lessInfoText: string;\n viewDetails: IContentLink;\n moreInfoContent: string;\n styles: any;\n}\n\nexport interface GamePremiereConfig {\n enableGamePremiere: boolean;\n}\n\nexport class UserRequestModel {\n type: string;\n id: string;\n optIn: boolean;\n source: string;\n actionType: string;\n}\n","import { IContentImage } from '@casinocore/type-utils';\n\nexport interface IGameSelectorWidgetQuestionOption {\n title: string;\n image?: IContentImage;\n condition?: string;\n selected: boolean;\n}\n\nexport interface IGameSelectorWidgetQuestion {\n basedOn: string;\n question: string;\n condition?: string;\n options: Array<IGameSelectorWidgetQuestionOption>;\n optionsDisplayType: string;\n filterCriteria: string;\n tooltipSubtitle: string;\n tooltipTitle: string;\n ctA1Text: string;\n ctA2Text: string;\n}\n\nexport interface IGameSelectorWidget {\n path: string;\n questions: Array<IGameSelectorWidgetQuestion>;\n resultsTitle: string;\n subTitle: string;\n title: string;\n widgetBackgroundImage: IContentImage;\n overlayBackgroundImage: IContentImage;\n overlayBackgroundColor: string;\n ctaText: string;\n resultCTA1Text: string;\n resultCTA2Text: string;\n condition?: string;\n versionedList: any;\n gamesDisplayType: string;\n}\n\nexport interface IGameMetaData {\n displayName: string;\n rtp: number;\n ownerId: number;\n vendorId: string;\n featureTags: string;\n symbolTags: string;\n themeTags: string;\n sitecoreId: string;\n gameType: string;\n gameGroup: string;\n gameVariant: string;\n sticker: string;\n}\n\nexport interface IGameSelectorConfiguration {\n isEnabled: boolean;\n gameSelectorFeedUrl: string;\n providers: string[];\n}\n\nexport class RecommendedGamesFilterModel {\n basedOn: string;\n filterCriteria: string;\n answers: Array<string>;\n\n constructor() {\n this.answers = [];\n }\n}\n\nexport class RecommendedGameModel {\n gameId: string;\n vendorId: string;\n displayName: string;\n gameType: string;\n gameGroup: string;\n image: string;\n jackpotValue?: number;\n gameVariant: string;\n sticker: string;\n}\n\nexport interface IGameSelectorWidgetGlobalConfig {\n gameTitleColor: string;\n jackpotValueColor: string;\n preferenceBoxTextColor: string;\n progressBarColor: string;\n questionTextColor: string;\n resultTitleColor: string;\n selectedOptionTextColor: string;\n selectedOptionBorderColor: string;\n selectedOptionBackgroundColor: string;\n widgetTitleColor: string;\n widgetSubTitleColor: string;\n gameResultsColor: string;\n preferenceBoxStaticText: string;\n closebtnText: string;\n jackpotValue: string;\n noGamesFoundText: string;\n}\n\nexport interface IRecommendedGamesResponse {\n games: Array<RecommendedGameModel>;\n selectedOptions: Array<string>;\n questionsState: Array<IGameSelectorWidgetQuestion>;\n}\n\nexport enum WizardType {\n Questions,\n Games,\n NoGamesFound,\n}\n\nexport interface IMatDialogOverlayData {\n isDesktop: boolean;\n widget: IGameSelectorWidget;\n globalConfig: IGameSelectorWidgetGlobalConfig;\n category: any;\n widgetLocation: string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NewQuickInfoService {\n constructor(\n private api: PlatformApiService,\n private casinoLobbyService: CasinoLobbyService,\n private configProviderService: ConfigProviderService,\n ) {}\n\n getGameDescription(gameId: string | null, providerId: string | null) {\n if (gameId) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.gameData['gameDataDescription'], { gameId: gameId, providerId: providerId });\n }\n return null;\n }\n\n getCategoryInfo(lobbyType: string) {\n const gymlCategory = this.casinoLobbyService.getCategoryInfo(lobbyType, 'LMC_GYML');\n return gymlCategory;\n }\n\n getGameCatalogDetails(gameId: string | null, vendorId: string | null) {\n if (gameId) {\n return this.api.post('QuickInfo/GetGameCatalogDetails', { gameId: gameId, vendorId: vendorId });\n }\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { PlatformApiService } from '../platform-api/platform-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NewsFeedV2Service {\n newsFeedData: any;\n isEnabled: boolean;\n isEnabledOnHome: boolean;\n isEnabledOnNonHome: boolean;\n private newsFeedV2Subject = new BehaviorSubject<any>(null);\n newsFeedV2Observable: Observable<any> = this.newsFeedV2Subject.asObservable();\n newsFeedMap: Map<string, any> = new Map<string, any>();\n newsFeedV2WidgetSubject = new BehaviorSubject<any>(null);\n newsFeedV2WidgetObservable: Observable<any> = this.newsFeedV2WidgetSubject.asObservable();\n constructor(private api: PlatformApiService) {}\n setNewsFeedMap(path: string) {\n this.api.get('newsfeed/getNewsFeedContent', { path: path }, { withCredentials: true }).subscribe(\n (response: any) => {\n if (response) {\n this.newsFeedMap.set(path, response);\n this.newsFeedV2Subject.next(this.newsFeedMap);\n }\n },\n () => {},\n );\n }\n getNewsFeedMap(path: string) {\n const newsFeedMapItem = this.newsFeedMap.get(path);\n if (newsFeedMapItem) {\n if (newsFeedMapItem.isSiteCoreDataFetched) return newsFeedMapItem;\n else return null;\n } else {\n this.setNewsFeedMap(path);\n return null;\n }\n }\n // NewsFeedWidget for other products\n setNewsFeedContent(path: string) {\n this.api.get('newsfeed/getNewsFeedContent', { path: path }, { withCredentials: true }).subscribe(\n (response: any) => {\n if (response) {\n this.newsFeedV2WidgetSubject.next(response);\n }\n },\n () => {},\n );\n }\n\n setNewsFeedResponseArray(newsFeedResponse: any) {\n const tempArr: any = [];\n newsFeedResponse.forEach((element: any) => {\n const ele = element.fields;\n tempArr.push({\n header: ele['header'] != null ? ele['header'] : '',\n subHeader: ele['sub Header'] != null ? ele['sub Header'] : '',\n type: element['templateName'],\n iconClass: ele['icon Class'],\n gameID: ele['game ID'] != null ? ele['game ID'] : '',\n jackpotGroupName: ele['jackpot Group Name'] != null ? ele['jackpot Group Name'] : '',\n link: ele.link != null ? ele.link.url : '#',\n value: ele['value'] != null ? ele['value'] : '',\n condition: ele['condition'] != null ? ele['condition'] : '',\n subTitle: ele['subTitle'] != null ? ele['subTitle'] : '',\n displayLiveStatus: ele['displayLiveStatus'] != null ? ele['displayLiveStatus'] : '',\n displayDealerImage: ele['displayDealerImage'] != null ? ele['displayDealerImage'] : '',\n });\n });\n newsFeedResponse = tempArr;\n return newsFeedResponse;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DslService, TrackingService } from '@frontend/vanilla/core';\nimport { ReplaySubject, filter, first, map, merge, mergeMap, of, shareReplay } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CasinoApiService } from './casino-api.service';\nimport { CasinoManager } from './casino-manager.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NewsFeedService {\n newsFeedData: any;\n isEnabled: boolean;\n\n private _newsFeed = new ReplaySubject<any>(1);\n readonly newsFeed$ = this._newsFeed.asObservable().pipe(\n shareReplay(),\n map(this.newsFeedMapper),\n mergeMap((data) => this.validateDisplayCondition(data)),\n );\n\n constructor(\n private api: CasinoApiService,\n private tracking: TrackingService,\n private configProviderService: ConfigProviderService,\n private casinoManager: CasinoManager,\n private dslService: DslService,\n ) {}\n\n setNewsFeed() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n this.api.get(apiPathsConfig.disjointFeeds['nsFeedSitecoreData']).subscribe(\n (response: any) => {\n if (response) {\n this.setNewsFeedResponse(response);\n }\n },\n () => {},\n );\n }\n setNewsFeedResponse(data: any): void {\n this.newsFeedData = data;\n this._newsFeed.next(data);\n }\n\n trackEvent(labelEvent: string, actionEvent: string, positionEvent: any, eventDetails: string, displayGameNameEvent?: any) {\n const newsFeedConfig = this.configProviderService.provideNewsFeedCasinoConfig();\n if (labelEvent != 'Game_Launch') {\n this.tracking.triggerEvent('Event.Clicks', {\n 'component.CategoryEvent': 'NewsFeed',\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': this.casinoManager.IsFeatureEnabledforLobbytype('lobbyType', newsFeedConfig.newsFeedPosition),\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': 'not applicable',\n });\n } else {\n this.tracking.triggerEvent('Event.Clicks', {\n 'component.CategoryEvent': 'NewsFeed',\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': this.casinoManager.IsFeatureEnabledforLobbytype('lobbyType', newsFeedConfig.newsFeedPosition),\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': 'not applicable',\n 'component.DisplayGameName': displayGameNameEvent,\n });\n }\n }\n\n private newsFeedMapper(newsFeed: any) {\n const newsFeedData = newsFeed.newsFeedData?.map((element: any) => ({\n header: element['header'] ? element['header'] : '',\n subHeader: element['sub Header'] ? element['sub Header'] : '',\n type: element['type'],\n iconClass: element['icon Class'],\n gameID: element['game ID'] ? element['game ID'] : '',\n jackpotGroupName: element['jackpot Group Name'] ? element['jackpot Group Name'] : '',\n link: element.link ? element.link.url : '#',\n value: element['value'] ? element['value'] : '',\n condition: element['condition'] ? element['condition'] : '',\n }));\n return { ...newsFeed, newsFeedData };\n }\n\n private validateDisplayCondition(newsFeed: any) {\n return merge(\n ...newsFeed.newsFeedData.map((data: { condition: string }) => {\n return data.condition === '' ? of(true) : this.dslService.evaluateExpression<boolean>(data.condition);\n }),\n ).pipe(\n filter(Boolean),\n first(),\n map(() => newsFeed),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { TeaserService } from './teaser.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OptimizedTeaserManager {\n optimizedHeaderTeasers: any[] = [];\n optimizedTeaserResult: any;\n lMTCategories: any[] = [];\n globalTeaserSettings: any;\n optimizedTeasersData: any;\n maxRenderedTeasers: number;\n globalTeaserStyles: any;\n\n constructor(\n private configProviderService: ConfigProviderService,\n private teaserService: TeaserService,\n ) {}\n\n setOptimizedTeasers(category: any, displayMode: string) {\n this.maxRenderedTeasers = this.configProviderService.provideOptimizedTeaserConfig().maxRenderedTeasers;\n const maxTeasersToBeRendered: number = this.maxRenderedTeasers > 0 ? this.maxRenderedTeasers : 999;\n this.optimizedHeaderTeasers = [];\n const teaserResponse: any = this.teaserService.headerTeasers();\n if (teaserResponse) {\n const optimizedHeaderTeasers: any = teaserResponse.optimizedTeaserContents;\n this.globalTeaserSettings = teaserResponse.globalTeaserSettings;\n this.globalTeaserStyles = teaserResponse.globalTeaserStyles;\n if (\n category &&\n category.sitecoreData.showTeasers &&\n category.sitecoreData.optimizedTeasers &&\n category.sitecoreData.optimizedTeasers.length > 0 &&\n optimizedHeaderTeasers &&\n optimizedHeaderTeasers.length > 0\n ) {\n for (let i = 0; i < category.sitecoreData.optimizedTeasers.length; i++) {\n const optimizedHeader: any = category.sitecoreData.optimizedTeasers[i];\n const filteredTeaser: any = optimizedHeaderTeasers.filter((ot: any) => ot.data.metadata.id.parent.path === optimizedHeader.path);\n if (filteredTeaser && filteredTeaser.length > 0) {\n filteredTeaser.forEach((teaserItem: any) => {\n if (teaserItem.displayMode == displayMode && this.optimizedHeaderTeasers.length < maxTeasersToBeRendered) {\n this.optimizedHeaderTeasers.push(teaserItem);\n }\n });\n }\n }\n }\n }\n return this.optimizedHeaderTeasers;\n }\n\n setOptimizedTeasersBasedOnCatery(category: any) {\n this.maxRenderedTeasers = this.configProviderService.provideOptimizedTeaserConfig().maxRenderedTeasers;\n const optimizedSubNavigationTeasers: any[] = [];\n const optimizedEmbeddedBelowTeasers: any[] = [];\n const optimizedEmbeddedAboveTeasers: any[] = [];\n const optimizedTopTeasers: any[] = [];\n const teaserHeaders = this.teaserService.headerTeasers();\n if (teaserHeaders) {\n const optimizedHeaderTeasers: any = teaserHeaders.optimizedTeaserContents;\n this.globalTeaserSettings = teaserHeaders.globalTeaserSettings;\n if (\n category &&\n category.sitecoreData.showTeasers &&\n category.sitecoreData.optimizedTeasers &&\n category.sitecoreData.optimizedTeasers.length > 0 &&\n optimizedHeaderTeasers &&\n optimizedHeaderTeasers.length > 0\n ) {\n category.sitecoreData.optimizedTeasers.forEach((optimizedHeader: any) => {\n const filteredTeaser: any = optimizedHeaderTeasers.filter((ot: any) => ot.data.metadata.id.parent.path === optimizedHeader.path);\n if (filteredTeaser && filteredTeaser.length > 0) {\n filteredTeaser.forEach((teaserItem: any) => {\n const displayMode = teaserItem.displayMode;\n switch (displayMode) {\n case 'SubNavigation': {\n optimizedSubNavigationTeasers.push(teaserItem);\n break;\n }\n case 'EmbeddedBelowGames': {\n optimizedEmbeddedBelowTeasers.push(teaserItem);\n break;\n }\n case 'EmbeddedAboveGames': {\n optimizedEmbeddedAboveTeasers.push(teaserItem);\n break;\n }\n case 'Top': {\n optimizedTopTeasers.push(teaserItem);\n break;\n }\n default: {\n break;\n }\n }\n });\n }\n });\n }\n let optimizedTeasersData: any;\n optimizedTeasersData = {\n optimizedSubNavigationTeasers:\n this.maxRenderedTeasers > 0 ? optimizedSubNavigationTeasers.splice(0, this.maxRenderedTeasers) : optimizedSubNavigationTeasers,\n optimizedEmbeddedBelowTeasers:\n this.maxRenderedTeasers > 0 ? optimizedEmbeddedBelowTeasers.splice(0, this.maxRenderedTeasers) : optimizedEmbeddedBelowTeasers,\n optimizedEmbeddedAboveTeasers:\n this.maxRenderedTeasers > 0 ? optimizedEmbeddedAboveTeasers.splice(0, this.maxRenderedTeasers) : optimizedEmbeddedAboveTeasers,\n optimizedTopTeasers: this.maxRenderedTeasers > 0 ? optimizedTopTeasers.splice(0, this.maxRenderedTeasers) : optimizedTopTeasers,\n };\n return optimizedTeasersData;\n }\n }\n\n getGlobalTeaserSettings() {\n return this.globalTeaserSettings;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { IntlService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\n\n@Pipe({\n name: 'cultureDate',\n standalone: true,\n})\nexport class CultureDatePipe implements PipeTransform {\n constructor(\n private configProviderService: ConfigProviderService,\n private intlService: IntlService,\n ) {}\n\n transform(date: any): any {\n const featureConfig = this.configProviderService.provideFeaturesConfig();\n if (date && featureConfig.enableLocalDateTimeFormat) {\n const cultureDate = this.intlService.formatDate(date, 'mediumDate');\n const shortTime = this.intlService.formatDate(date, 'shortTime');\n date = cultureDate + ' ' + shortTime;\n }\n return date;\n }\n}\n","import { getCurrencySymbol } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'currencySymbol',\n standalone: true,\n})\nexport class CurrencySymbolPipe implements PipeTransform {\n transform(code: string, format: 'wide' | 'narrow' = 'narrow', locale?: string): string {\n return getCurrencySymbol(code, format, locale);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'currencyFormat',\n standalone: true,\n})\nexport class CurrencyFormatPipe implements PipeTransform {\n transform(value: any): number {\n let decimal: any;\n // Convert it into a string\n const string = value.toString();\n\n // Split the dot\n const array = string.split('.');\n // Get both numbers\n // The '+' sign transforms the string into a number again\n const amount = array[0];\n if (array[1]) {\n decimal = array[1]?.length == 2 ? array[1] : array[1].length == 1 ? '0' + array[1] : '00';\n }\n\n const final: any = Number(amount).toLocaleString() + '.' + (decimal ? decimal : '00');\n\n return final;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl | string {\n if (!value) {\n return value;\n }\n\n try {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n } catch {\n return value;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\n\n@Pipe({\n name: 'sitecore_image_resize',\n standalone: true,\n})\nexport class SitecoreImageResizePipe implements PipeTransform {\n constructor(private configProvider: ConfigProviderService) {}\n\n transform(value: string): string {\n const imageLoadOptimizationConfig = this.configProvider.provideImageLoadOptimizationClientConfig();\n if (\n imageLoadOptimizationConfig &&\n imageLoadOptimizationConfig.isDynamicResizingEnabled &&\n imageLoadOptimizationConfig.dynamicResizingQueryString &&\n imageLoadOptimizationConfig.dynamicResizingQueryString.length > 0 &&\n !this.isImageRezied(value)\n ) {\n const qs = (value.indexOf('?') !== -1 ? '&' : '?') + imageLoadOptimizationConfig.dynamicResizingQueryString;\n value = value + qs;\n }\n return value;\n }\n\n private isImageRezied(src: string): boolean {\n return src.indexOf('resized=true') !== -1;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, TimerService, TrackingService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, forkJoin } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PlayerStatsService {\n private playerstats = new BehaviorSubject<any>(null);\n playerstatsObservable: Observable<any> = this.playerstats.asObservable();\n sortInterval: any;\n feedTypeArray: any;\n isFeedRequestRecieved: boolean;\n constructor(\n private api: PlatformApiService,\n private timerService: TimerService,\n private configProviderService: ConfigProviderService,\n private tracking: TrackingService,\n private appInfoConfig: AppInfoConfig,\n private urlUtilityService: UrlUtilityService,\n ) {}\n fetchPlayerStatsFeed(feedTypeArray: any): void {\n this.feedTypeArray = feedTypeArray;\n if (feedTypeArray) {\n this.isFeedRequestRecieved = true;\n const request: Observable<any>[] = [];\n for (const feedtype of feedTypeArray) {\n request.push(\n this.api.post(\n 'playerstats/getPlayerStats',\n { feedType: feedtype },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n ),\n );\n }\n forkJoin(request).subscribe({\n next: (responses) => {\n if (responses) {\n this.playerstats.next(responses);\n }\n },\n error: () => {\n //console.log(error);\n },\n });\n }\n }\n playerStatsFeedInterval() {\n const playerstatsconfig = this.configProviderService.providePlayerStatsWidgetConfig();\n if (this.sortInterval) {\n clearInterval(this.sortInterval);\n }\n this.sortInterval = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.fetchPlayerStatsFeed(this.feedTypeArray);\n }, playerstatsconfig.playerStatsInterval);\n }\n addTrackingEvent(\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ) {\n this.tracking.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': this.appInfoConfig.product,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n addMultiplierImpressionTracking(gameImpressions: any) {\n this.tracking.triggerEvent('gameMultiplier', {\n game_multiplier_impressions: gameImpressions,\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Logger } from '@frontend/vanilla/core';\nimport { cloneDeep } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { CacheManagerService } from './cache-manager.service';\nimport { CasinoApiService } from './casino-api.service';\nimport { CasinoManager } from './casino-manager.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PromotedGamesService {\n promotedGames: any = [];\n promotedGamesFromAllLobby: any = [];\n private promotedGamesSubject = new BehaviorSubject<any>(null);\n promotedFeedObservable: Observable<any> = this.promotedGamesSubject.asObservable();\n private promotedGamesFromAllLobbySubject = new BehaviorSubject<any>(null);\n promotedFeedFromAllLobbyObservable: Observable<any> = this.promotedGamesFromAllLobbySubject.asObservable();\n\n constructor(\n private api: CasinoApiService,\n private configProviderService: ConfigProviderService,\n private casinoManager: CasinoManager,\n private cacheManager: CacheManagerService,\n private logger: Logger,\n ) {}\n\n setPromotedGames() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n this.api.get(apiPathsConfig.gamesServices['promotedGames']).subscribe(\n (response: any) => {\n this.promotedGames = [];\n if (response) {\n for (let i = 0; i < response.length; i++) {\n this.promotedGames.push(response[i].metadata.id.itemName);\n }\n this.promotedGamesFromAllLobby = cloneDeep(this.promotedGames);\n // this.promotedGamesFromAllLobby = {...this.promotedGames};\n if (featuresConfig?.rpGamesFilterInLiveCasino && this.casinoManager.getCurrentLobby()?.toLowerCase() == 'livecasino')\n this.filterLiveCasinoGames(this.promotedGames);\n if (featuresConfig?.rpWidgetGamesFilterInLiveCasino) this.promotedGamesFromAllLobby = this.promotedGames;\n this.promotedGamesSubject.next(this.promotedGames);\n this.promotedGamesFromAllLobbySubject.next(this.promotedGamesFromAllLobby);\n }\n },\n (error) => {\n this.logger.error('unable to retrieve data from promotedGames API' + error);\n },\n );\n }\n\n filterLiveCasinoGames(promotedGames: any) {\n const categoryCoreLookUp: any = this.cacheManager.getAllCategoriesFromLocalCache('LiveCasino', this.casinoManager.getInvokerProduct());\n this.promotedGames = categoryCoreLookUp?.lsGameMetaDataMap?.map((x: any) => x && x[0])?.filter((y: any) => promotedGames?.includes(y)) || [];\n }\n\n getPromotedGames() {\n return this.promotedGames;\n }\n\n getPromotedGamesFromAllLobby() {\n return this.promotedGamesFromAllLobby;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Message, MessageLifetime, MessageQueueService, MessageType } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { IPromotionsBanner } from './models/promotions-banner.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PromotionsBannerService {\n promotionsBannerData: IPromotionsBanner;\n private promotionsDataPublisher = new BehaviorSubject<any>(null);\n promotionsDataObservable: Observable<any> = this.promotionsDataPublisher.asObservable();\n\n constructor(\n private api: PlatformApiService,\n private messageQueue: MessageQueueService,\n ) {}\n\n fetchPromotionsBannerData(): void {\n this.api\n .post('PromotionsBanner/FetchPromotionsBannerData', {\n responseType: 'json',\n withCredentials: true,\n showSpinner: false,\n })\n .subscribe({\n next: (response: any) => {\n if (response) {\n this.promotionsBannerData = response;\n this.promotionsDataPublisher.next(true);\n }\n },\n error: (error: string) => {\n const message: Message = {\n html: error,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n }\n },\n });\n }\n getPromotionsBannerData(): any {\n return this.promotionsBannerData;\n }\n addError = (errorMessage: string): void => {\n const message: Message = {\n html: errorMessage,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n setTimeout(() => this.messageQueue.clear(), 1000);\n }\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class QuickInfoModalService {\n private dataSource = new BehaviorSubject<any>(null);\n gameDataObservable = this.dataSource.asObservable();\n\n constructor() {}\n\n setQuickInfoModalData(message: any) {\n this.dataSource.next(message);\n }\n\n getQuickInfoModalData() {\n return this.dataSource;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppInfoConfig, TimerService, TrackingService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WinnersService {\n private recentWinners = new BehaviorSubject<any>(null);\n recentWinnersObservable: Observable<any> = this.recentWinners.asObservable();\n sortInterval: any;\n feedType: any;\n constructor(\n private api: PlatformApiService,\n private timerService: TimerService,\n private configProviderService: ConfigProviderService,\n private tracking: TrackingService,\n private appInfoConfig: AppInfoConfig,\n private urlUtilityService: UrlUtilityService,\n ) {}\n fetchRecentWinnersFeed(val: any): void {\n this.feedType = val;\n this.api\n .post('recentwinners/GetRecentWinners', { feedType: val }, { responseType: 'json', withCredentials: true, showSpinner: false })\n .subscribe({\n next: (response) => {\n if (response) {\n this.recentWinners.next(response);\n }\n },\n error: () => {\n //console.log(error);\n },\n });\n }\n winnersFeedInterval() {\n const recentWinnersConfig = this.configProviderService.recentWinnersWidgetConfig();\n if (this.sortInterval) {\n clearInterval(this.sortInterval);\n }\n this.sortInterval = this.timerService.setIntervalOutsideAngularZone(() => {\n if (!this.urlUtilityService.getAppCurrentProduct()) return;\n this.fetchRecentWinnersFeed(this.feedType);\n }, recentWinnersConfig.recentWinnersInterval);\n }\n addTrackingEvent(\n categoryEvent: string,\n labelEvent: string,\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n uRLClicked: string,\n ) {\n this.tracking.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': categoryEvent,\n 'component.LabelEvent': labelEvent,\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': this.appInfoConfig.product,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': uRLClicked,\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { RecentGamesService } from './recent-games.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignPostingService {\n constructor(private recentGamesService: RecentGamesService) {}\n\n getSignPostingCount(categoryGames: any, recentGames: string[]): number {\n let signPostingCount: number = 0;\n const latestStickerGames: any = [];\n let stickers: any = [];\n if (categoryGames && categoryGames.length > 0) {\n categoryGames.forEach((element: any) => {\n if (element.sticker) {\n stickers = element.sticker.indexOf('#') !== -1 ? element.sticker.split('#') : [element.sticker];\n if (stickers.indexOf('LMS_LATEST') > -1) {\n latestStickerGames.push(element);\n }\n }\n });\n }\n\n if (latestStickerGames && latestStickerGames.length > 0 && recentGames) {\n const signPostedGames: any = latestStickerGames.filter((item: any) => !(recentGames.indexOf(item.game) > -1));\n if (signPostedGames) {\n signPostingCount = signPostedGames.length;\n }\n }\n return signPostingCount;\n }\n // NFR - Services optimization - Remove\n isSignPostedGame(game: any) {\n const recentGames = this.recentGamesService.getrecentGames();\n if (game.sticker && game.sticker.indexOf('LMS_LATEST') > -1) {\n if (recentGames && recentGames.length > 0 && recentGames.indexOf(game.gameId) !== -1) {\n return false;\n }\n return true;\n }\n return false;\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { CookieService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SmartBannerService {\n private smartBannerStatus = new BehaviorSubject<boolean>(true);\n private smartBannersExists = new BehaviorSubject<boolean>(false);\n smartBannerStatusObservable: Observable<boolean> = this.smartBannerStatus.asObservable();\n smartBannersExistsObservable: Observable<boolean> = this.smartBannersExists.asObservable();\n\n readonly hasSmartBanner = toSignal(this.smartBannersExists);\n readonly smartBannerRect = signal({ width: 0, height: 0 });\n\n constructor(private cookieService: CookieService) {}\n\n smartBannerStatusChange(isOpened: boolean) {\n this.smartBannerStatus.next(isOpened);\n }\n smartBannersExistsChanged(isListExists: boolean) {\n this.smartBannersExists.next(isListExists);\n }\n\n getSbClosedCookieValue(sbId: any) {\n const sbName = 'sb-closed-' + sbId;\n return this.cookieService.get(sbName);\n }\n\n getSbInstalledCookieValue(sbId: any) {\n const sbInstalledName = 'sb-installed-' + sbId;\n return this.cookieService.get(sbInstalledName);\n }\n installSmartBanner(sbId: any, daysReminder: any) {\n const sbInstalledName = 'sb-installed-' + sbId;\n this.cookieService.put(sbInstalledName, 'true', daysReminder);\n }\n\n closeSmartBanner(sbId: any, daysReminder: any) {\n const sbName = 'sb-closed-' + sbId;\n this.cookieService.put(sbName, 'true', daysReminder);\n }\n\n setCookie(name: any, value: any, exdays: any) {\n const exdate = new Date();\n const days = parseInt(exdays, 10);\n if (!isNaN(days)) {\n exdate.setDate(exdate.getDate() + days);\n this.cookieService.put(name, value, { expires: exdate.toUTCString() });\n } else {\n this.cookieService.put(name, value);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Message, MessageLifetime, MessageQueueService, MessageType } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { ISuperButton } from './models/super-button.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SuperButtonService {\n constructor(\n private api: PlatformApiService,\n private messageQueue: MessageQueueService,\n ) {}\n\n findFromCategory = (paths: Array<string>): Observable<ISuperButton> => {\n return this.api.post('SuperButton/FindFromCategory', paths, {\n responseType: 'json',\n withCredentials: true,\n showSpinner: false,\n });\n };\n\n findFromComposition = (isDefaultComposition: boolean, containerPath: string): Observable<ISuperButton> => {\n return this.api.post(\n 'SuperButton/FindFromComposition',\n { isDefaultComposition, containerPath },\n { responseType: 'json', withCredentials: true, showSpinner: false },\n );\n };\n\n addError = (errorMessage: string): void => {\n const message: Message = {\n html: errorMessage,\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n scope: 'casinocorelobby',\n };\n if (message) {\n this.messageQueue.add(message);\n setTimeout(() => this.messageQueue.clear(), 1000);\n }\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThumbnailService {\n private thumbnailPublisher = new BehaviorSubject<any>(null);\n thumbnailDataObservable: Observable<any> = this.thumbnailPublisher.asObservable();\n setThumbnailData(res: any) {\n this.thumbnailPublisher.next(res);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { FreespinSummaryService } from './freespins-summary.service';\nimport { TimeZoneService } from './time-zone.service';\n\n@Pipe({\n name: 'timezoneformat',\n standalone: true,\n})\nexport class TimeZoneFormatPipe implements PipeTransform {\n constructor(\n private freespinSummaryService: FreespinSummaryService,\n private timeZoneService: TimeZoneService,\n ) {}\n transform(timespan: number): any {\n if (timespan) {\n const userTimeZoneInfo = this.freespinSummaryService.getTimeZoneInfo();\n let userUTCOffsetSecs: number = 0;\n if (userTimeZoneInfo) {\n const userOffsetString = userTimeZoneInfo.BaseUtcOffset;\n userUTCOffsetSecs = this.timeZoneService.getSecondsFromTimeString(userOffsetString);\n }\n let userUTCOffsetMilliSecs = userUTCOffsetSecs * 1000;\n if (userTimeZoneInfo?.AdjustmentRules?.length > 0 && userTimeZoneInfo.AdjustmentRules[0].DaylightDelta) {\n const daylightDeltaOffsetSecs = this.timeZoneService.getSecondsFromTimeString(userTimeZoneInfo.AdjustmentRules[0].DaylightDelta);\n if (daylightDeltaOffsetSecs > 0) {\n userUTCOffsetMilliSecs = userUTCOffsetMilliSecs + daylightDeltaOffsetSecs * 1000;\n }\n }\n const dt = new Date();\n const timeStamp = timespan * 1000 + userUTCOffsetMilliSecs + dt.getTimezoneOffset() * 60 * 1000;\n const userExpiryTime = new Date(timeStamp);\n const dateFormat = this.timeZoneService.getDateFormat(new Date(userExpiryTime));\n return dateFormat;\n }\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 { TrackingService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SlotRacesTrackingService {\n constructor(private trackingService: TrackingService) {}\n\n track(actionEvent: string, positionEvent: string, locationEvent: string, eventDetails: string, coinEconomyFilter: boolean = false) {\n this.trackingService?.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': 'Slots',\n 'component.LabelEvent': coinEconomyFilter ? 'filter tab' : 'Race Cards',\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': 'not applicable',\n });\n }\n\n trackPhase2(\n actionEvent: string,\n positionEvent: string,\n locationEvent: string,\n eventDetails: string,\n coinEconomyFilter: boolean = false,\n urlClicked: string = '',\n ) {\n this.trackingService?.triggerEvent('Event.Tracking', {\n 'component.CategoryEvent': 'slots',\n 'component.LabelEvent': coinEconomyFilter ? 'filter tab' : 'race cards',\n 'component.ActionEvent': actionEvent,\n 'component.PositionEvent': positionEvent,\n 'component.LocationEvent': locationEvent,\n 'component.EventDetails': eventDetails,\n 'component.URLClicked': urlClicked ? urlClicked : 'not applicable',\n 'component.recommendationType': 'default',\n });\n }\n}\n","import { ContentImage, ContentItem } from '@frontend/vanilla/core';\n\nexport const FILTER_TYPE_ALL = 'ALL';\nexport const FILTER_TYPE_COINS_ENTRY = 'Coins_Entry';\nexport const FILTER_TYPE_CASH_ENTRY = 'Cash_Entry';\nexport const FILTER_TYPE_COIN_REWARD = 'Coins_Reward';\nexport const FILTER_TYPE_FREE_ENTRY = 'Free_Entry';\n\nexport interface SlotRacesLive {\n liveNow: Race[];\n}\n\nexport interface SlotRacesUpcoming {\n upcomingToday: Race[];\n upcomingTomorrow: Race[];\n}\n\nexport interface Leaderboard {\n content: IContent;\n rankDetails: any[];\n}\n\nexport interface Race {\n rewardValue: any;\n promoId: number;\n slotUniqueId: number;\n subType: string;\n cmsTempId: string;\n gameVariantName: string;\n gameVariantList: string[];\n startTime: string;\n endTime: string;\n startDate: Date;\n optinExpiryDate: Date;\n optinExpiryTime: string;\n endDate: Date;\n targetedPlayerCount: number;\n optinLimit: number;\n notificationStatus: boolean;\n isNotify: boolean;\n currentRank: number;\n ctaList: string[];\n criteriaDtls: any;\n spinProgress: any;\n slotRaceRuleConfig: PrizeRule[];\n slotRaceRuleConfigV2: PrizeRule[];\n rankDetails: any[];\n accountName: string;\n expiryInDays: number;\n productList: string[];\n additionalAttribs: Map<string, string>;\n duration: string;\n startTimeAMPM: string;\n isLive: boolean;\n gameId: string;\n jackpot: string;\n content: IContent;\n additionalParams: { [item: string]: string };\n beatBanker: { [item: string]: string };\n firstPlayTech: boolean;\n isOptinWithCoins: boolean;\n coinsForOptin: number;\n}\n\nexport interface PrizeRule {\n points: number;\n ruleType: string;\n ruleConfig: number;\n ruleNo: number;\n slabList: PrizeRule[];\n}\n\nexport interface SlotApiParams {\n slotInput: string;\n slotDuration?: number;\n}\n\nexport interface SitecoreContent {\n textTranslations: GenericList;\n\n rules: Rule[];\n\n tips: ContentItem[];\n\n rulesBanner: any;\n\n placeholderCardImage: any;\n\n coinEconomy: any;\n\n raceRuleConfigs: RaceRuleConfig[];\n\n errorMessages: GenericList;\n\n entryDetails: GenericList;\n\n npmHeader?: any;\n}\n\nexport interface RaceRuleConfig {\n multiplierDescription?: string;\n multiplierValue?: number;\n multiplierImage?: ContentImage;\n pointsDescription?: string;\n pointsImage?: ContentImage;\n RuleConfigValue?: number;\n pointsText?: string;\n pointValue?: number;\n spinsDescription?: string;\n spinsImage?: ContentImage;\n spinsText?: string;\n spinValue?: number;\n metadata?: Metadata;\n ruleConfigTitleV2?: string;\n ruleConfigDescriptionV2?: string;\n}\n\nexport interface Metadata {\n id: ItemId;\n}\n\nexport interface ItemId {\n itemName: string;\n}\n\nexport interface GenericList {\n sharedList: { [item: string]: string };\n versionedList: { [item: string]: string };\n}\n\nexport interface ResultsHistory {\n rank: number;\n playerName: string;\n points: number;\n slotStartDate: number;\n slotEndDate: number;\n startDate: Date;\n endDate: Date;\n dateStr: string;\n gameVariantName: string;\n gameVariantList: string[];\n isWin: boolean;\n gameIconSrc: string;\n prizeIcon: string;\n content: IContent;\n configMap: IConfigMap;\n configMaps: IConfigMap[];\n isBeatBanker: boolean;\n}\n\nexport interface IContent {\n promotion: IPromotion;\n rules: Rule[];\n}\n\nexport interface IPromotion {\n prizes: string;\n beatBanker: string;\n termsAndConditionsText: string;\n promoName: string;\n promoTitle: string;\n promoIcon: ContentImage;\n data: IData;\n metadata: Metadata;\n promoBackgroundImage: ContentImage;\n promoBackgroundColor: string;\n gameId?: string;\n}\n\nexport interface IData {\n metadata: Metadata;\n fields: IFields;\n}\n\nexport interface IFields {\n prizes: string;\n termsAndConditionsText: string;\n}\n\nexport interface Rule {\n image: ContentImage;\n title: string;\n text: string;\n metadata: Metadata;\n}\n\nexport interface SlotRacesResponseError {\n errorCode: number;\n exception: any;\n status: string;\n message: string;\n}\n\nexport interface IConfigMap {\n promoId: string;\n awardType: string;\n value: string;\n slotId: string;\n currency: string;\n}\n\nexport const LEADERBOARD_COLUMNS_DISPLAYED = ['rank', 'prize', 'prize-img', 'player', 'points'];\nexport const LEADERBOARD_COLUMNS_DISPLAYED_PH2 = ['rank', 'prize-img', 'player', 'points', 'prize'];\n\nexport interface ITournamentIcon {\n src: string;\n colspan: number;\n}\nexport interface SourceInfo {\n frontend: string;\n Brand: string;\n Product: ProductBalance[];\n Channel: string;\n Source: string;\n}\n\nexport interface ProductBalance {\n Product: string;\n Balance: string;\n}\n","<div class=\"claim-card-toster\" *ngIf=\"showClaimToster\" (click)=\"closeCardToster()\">\n <div class=\"message-panel\">\n <div class=\"theme-info-i\">\n <div>\n <div class=\"cms-container\" [textContent]=\"ToasterText\"></div>\n <div class=\"show-more-link\" *ngIf=\"displayShowMore\">\n <a [href]=\"navigateUrl\" [textContent]=\"winnersFeedShowMoreLinkText\" (click)=\"showMore()\"></a>\n </div>\n </div>\n <div class=\"theme-ex\"></div>\n </div>\n </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\nimport { NavigationService, ProductHomepagesConfig } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\n\n@Component({\n selector: 'cc-toaster-msg',\n templateUrl: 'toaster-msg.component.html',\n standalone: true,\n imports: [NgIf],\n})\nexport class ToasterMsgComponent implements OnInit {\n @Input() showClaimToster: boolean;\n @Input() ToasterText: string;\n @Input() displayShowMore: boolean;\n navigateUrl: string;\n winnersFeedShowMoreLinkText: string;\n globalConfig: any;\n\n constructor(\n private navigator: NavigationService,\n private pageConfig: ProductHomepagesConfig,\n private configProviderService: ConfigProviderService,\n ) {}\n ngOnInit() {\n this.globalConfig = this.configProviderService.provideGlobalConfig();\n this.winnersFeedShowMoreLinkText = this.globalConfig.messages['WinnersFeedShowMoreLinkText'];\n }\n\n closeCardToster() {\n this.showClaimToster = false;\n }\n\n showMore(): void {\n const globalJackpotClientConfig = this.configProviderService.provideGlobalJackpotConfig();\n this.navigateUrl = this.pageConfig?.casino + '/g/' + globalJackpotClientConfig?.globalJackpotPathSegments?.toLowerCase();\n this.navigator.goTo(this.navigateUrl);\n }\n}\n","export enum GlobalSearchCustomEvent {\n HIDE_HEADER_ENTRY = 'gs:hideHeaderEntry',\n HIDE_FLOATING_ENTRY = 'gs:hideFloatingEntry',\n SHOW_HEADER_ENTRY = 'gs:showHeaderEntry',\n SHOW_FLOATING_ENTRY = 'gs:showFloatingEntry',\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { NavigationService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { GlobalSearchCustomEvent } from './global-search.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalSearchService {\n private readonly navigation = inject(NavigationService);\n private readonly configProviderService = inject(ConfigProviderService);\n hideGlobalSearchBasedOnPath: boolean = false;\n\n hideGlobalSearchHeaderAndStickyEntryBasedOnPath(): boolean {\n const getCurrentPath: string = this.navigation.location.pathname;\n const globalSearchConfig = this.configProviderService.provideGlobalSearchConfig();\n const globalSearchPathBasedEnabler = globalSearchConfig.pathBasedEnabler;\n const disabledGlobalSearchPaths: string[] = globalSearchPathBasedEnabler.disablePaths;\n const enabledGlobalSearchPaths: string[] = globalSearchPathBasedEnabler.enablePaths;\n if (globalSearchPathBasedEnabler) {\n this.hideGlobalSearchBasedOnPath = disabledGlobalSearchPaths.some((disablePath) => getCurrentPath.includes(disablePath));\n } else if (enabledGlobalSearchPaths) {\n this.hideGlobalSearchBasedOnPath = !enabledGlobalSearchPaths.some((enablePath) => getCurrentPath.includes(enablePath));\n } else {\n this.hideGlobalSearchBasedOnPath = false;\n }\n return this.hideGlobalSearchBasedOnPath;\n }\n\n hideGlobalSearch(): void {\n dispatchEvent(new CustomEvent(GlobalSearchCustomEvent.HIDE_HEADER_ENTRY));\n dispatchEvent(new CustomEvent(GlobalSearchCustomEvent.HIDE_FLOATING_ENTRY));\n }\n\n showGlobalSearch(): void {\n dispatchEvent(new CustomEvent(GlobalSearchCustomEvent.SHOW_HEADER_ENTRY));\n dispatchEvent(new CustomEvent(GlobalSearchCustomEvent.SHOW_FLOATING_ENTRY));\n }\n\n hidingGlobalSearch(): void {\n if (this.hideGlobalSearchHeaderAndStickyEntryBasedOnPath() && this.hideGlobalSearchBasedOnPath) {\n this.hideGlobalSearch();\n } else {\n this.showGlobalSearch();\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { CookieService } from '../../shared/cookie.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoStylesService {\n private readonly configProviderService = inject(ConfigProviderService);\n private readonly cookieService = inject(CookieService);\n\n getDropShadow(category: any): string {\n const global: any = this.configProviderService.provideGlobalConfig();\n const darkMode = this.cookieService.getFromCookie('dark-mode');\n let dropShadow: string;\n if (darkMode) {\n dropShadow = category?.sitecoreData?.attributes?.darkmodegametiledropshadow\n ? category?.sitecoreData?.attributes?.darkmodegametiledropshadow\n : global.lobbyConfigurations['darkModeGameTileDropShadow'];\n } else {\n dropShadow = category?.sitecoreData?.attributes?.gametiledropshadow\n ? category?.sitecoreData?.attributes?.gametiledropshadow\n : global.lobbyConfigurations['gameTileDropShadow'];\n }\n return dropShadow;\n }\n\n getBorderRadius(category: any): string {\n const global: any = this.configProviderService.provideGlobalConfig();\n const gameTileBorderRadius = category?.sitecoreData?.attributes?.gametileborderradius\n ? category?.sitecoreData?.attributes?.gametileborderradius\n : global.lobbyConfigurations['gameTileBorderRadius'];\n return !category.isIconSixCategory ? gameTileBorderRadius : null; //filtering out iconsix game icon\n }\n\n getLTileFontFamily(category: any): string {\n const global: any = this.configProviderService.provideGlobalConfig();\n const lobbyTileFontFamily = category?.sitecoreData?.attributes?.lobbytilefontfamily\n ? category?.sitecoreData?.attributes?.lobbytilefontfamily\n : global.lobbyConfigurations['lobbyTileFontFamily'];\n return lobbyTileFontFamily;\n }\n\n getsubCategoryTextColor(category: any): string {\n const global: any = this.configProviderService.provideGlobalConfig();\n const subCategoryTextColor = category?.sitecoreData?.attributes?.subcategorytextcolor\n ? category?.sitecoreData?.attributes?.subcategorytextcolor\n : global.lobbyConfigurations['subCategoryTextColor'];\n return subCategoryTextColor;\n }\n\n getsubCategoryTitleFontSize(category: any): string {\n const global: any = this.configProviderService.provideGlobalConfig();\n const subCategoryTitleFontSize = category?.sitecoreData?.attributes?.subcategorytitlefontsize\n ? category?.sitecoreData?.attributes?.subcategorytitlefontsize\n : global.messages['subCategoryTitleFontSize'];\n return subCategoryTitleFontSize;\n }\n\n getsubCategorySubTitleFontSize(category: any): string {\n const global: any = this.configProviderService.provideGlobalConfig();\n const subCategorySubTitleFontSize = category?.sitecoreData?.attributes?.subcategorysubtitlefontsize\n ? category?.sitecoreData?.attributes?.subcategorysubtitlefontsize\n : global.messages['subCategorySubTitleFontSize'];\n return subCategorySubTitleFontSize;\n }\n\n appendTheme(src: any, gameInfo: any) {\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n let appendTheme = '';\n if (featuresConfig?.gameIconTheming) {\n const { [gameInfo]: gameId } = featuresConfig.gameIconTheming;\n if (gameId) {\n for (const theme in gameId) {\n if (gameId[theme]) {\n appendTheme = theme;\n }\n }\n }\n }\n if (appendTheme && src && src.indexOf(appendTheme) < 0) {\n const arr = src?.split('/');\n arr?.splice(arr.length - 1, 0, appendTheme);\n src = arr.join('/');\n }\n return src;\n }\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, Optional, assertInInjectionContext, inject, ErrorHandler, DestroyRef } from '@angular/core';\nimport { Subject, Subscription, pipe, from, EMPTY } from 'rxjs';\nimport { filter, take, shareReplay, map, takeUntil, mergeAll, share, mapTo, tap, catchError } from 'rxjs/operators';\nfunction isSingleShotHookNameGuard(name) {\n return !!name && typeof name === 'string' && name !== '';\n}\n/**\n * @internal\n * Operator to filter values for single shot observables\n */\nconst singleShotOperators = o$ => o$.pipe(filter(v => v === true), take(1), shareReplay());\n/**\n * This is an operator that is used to listen to Angular lifecycle hooks.\n * It plucks a defined lefe cycle name `HookProps` and forwards values for the particular value and in the behavior of the hook e.g. single shot\n *\n * @param name\n */\nfunction toHook(name) {\n const operators = isSingleShotHookNameGuard(name) ? singleShotOperators : o => o;\n return o$ => o$.pipe(map(p => p[name]), operators);\n}\n/**\n * This operator can be used to take instances that implements `OnDestroy$` and unsubscribes from the given Observable when the instances\n * `onDestroy$` Observable emits.\n *\n * @param instanceWithLifecycle\n */\nfunction untilDestroyed(instanceWithLifecycle) {\n return source => source.pipe(takeUntil(instanceWithLifecycle.onDestroy$));\n}\n\n/**\n * @deprecated - use rxEffects instead\n *\n * Reduces subscription boilerplate for performing observable-based side-effects in components.\n *\n * Before:\n * ```ts\n * @Component({\n * // ...\n * })\n * export class FooComponent implements OnDestroy {\n * private readonly destroy$ = new Subject<void>();\n *\n * constructor() {\n * obs$.pipe(takeUntil(this.destroy$)).subscribe(doSideEffect);\n * }\n *\n * ngOnDestroy(): void {\n * this.destroy$.next();\n * this.destroy$.complete();\n * }\n * }\n * ```\n *\n * After:\n * ```ts\n * @Component({\n * // ...\n * providers: [RxEffects],\n * })\n * export class FooComponent {\n * constructor(effects: RxEffects) {\n * effects.register(obs$, doSideEffect);\n * // OR\n * effects.register(obs$.pipe(tap(doSideEffect)));\n * // OR\n * effects.register(obs$.subscribe(doSideEffect));\n * }\n * }\n * ```\n *\n * NOTE: Avoid calling register/unregister/subscribe inside the side-effect function.\n */\nlet RxEffects = /*#__PURE__*/(() => {\n class RxEffects {\n errorHandler;\n constructor(errorHandler) {\n this.errorHandler = errorHandler;\n }\n static nextId = 0;\n _hooks$ = new Subject();\n observables$ = new Subject();\n // we have to use publish here to make it hot (composition happens without subscriber)\n effects$ = this.observables$.pipe(mergeAll(), share());\n subscription = this.effects$.subscribe();\n onDestroy$ = this._hooks$.pipe(toHook('destroy'));\n destroyers = {};\n register(obsOrSub, fnOrObj) {\n if (obsOrSub instanceof Subscription) {\n this.subscription.add(obsOrSub);\n return;\n }\n const effectId = RxEffects.nextId++;\n const destroy$ = this.destroyers[effectId] = new Subject();\n const applyBehavior = pipe(mapTo(effectId), takeUntil(destroy$));\n if (fnOrObj != null) {\n this.observables$.next(from(obsOrSub).pipe(\n // ternary expression is to help Typescript infer overloads\n typeof fnOrObj === 'function' ? tap(fnOrObj) : tap(fnOrObj), catchError(err => {\n this.errorHandler?.handleError(err);\n return EMPTY;\n }), applyBehavior));\n } else {\n this.observables$.next(from(obsOrSub).pipe(applyBehavior));\n }\n return effectId;\n }\n /**\n * Imperatively cancel a side-effect while the component is still running.\n *\n * Note that all effects are automatically cancelled when a component is destroyed,\n * so you most often won't need to call this method.\n * @param effectId Effect ID (returned by register method)\n */\n unregister(effectId) {\n this.destroyers[effectId]?.next();\n }\n /**\n * Fires a sideEffect when the instances `OnDestroy` hook is fired.\n *\n * @example\n * effects.registerOnDestroy(mode => localStorage.setItem('colorMode', mode));\n *\n * @param sideEffect\n */\n registerOnDestroy(sideEffect) {\n return this.register(this.onDestroy$, sideEffect);\n }\n /**\n * Operator that unsubscribes based on emission of an registered effect.\n *\n * @NOTICE\n * This operator has to be placed always at the end of the operator chain (before the subscription).\n * Otherwise we may leak as a subsequent operator could instantiate new ongoing Observables which will not get unsubscribed.\n *\n * @example\n * const effectId1 = effects.register(\n * colorMode$.subscribe(mode => localStorage.setItem('colorMode', mode))\n * );\n *\n * someValue$.pipe(\n * effect.untilEffect(effectId1)\n * )\n *\n */\n untilEffect(effectId) {\n return source => source.pipe(untilDestroyed(this), takeUntil(this.effects$.pipe(filter(eId => eId === effectId))));\n }\n /**\n * @internal\n */\n ngOnDestroy() {\n this._hooks$.next({\n destroy: true\n });\n this.subscription.unsubscribe();\n }\n /** @nocollapse */\n static ɵfac = function RxEffects_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RxEffects)(i0.ɵɵinject(i0.ErrorHandler, 8));\n };\n /** @nocollapse */\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RxEffects,\n factory: RxEffects.ɵfac\n });\n }\n return RxEffects;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @description\n * Functional way to setup observable based side effects with RxEffects.\n * It's a creation function for RxEffects that destroys itself when the provided\n * `DestroyRef` is destroyed.\n *\n * @example\n * ```ts\n * import { rxEffects } from '@rx-angular/state/effects';\n *\n * \\@Component({})\n * export class FooComponent {\n * const readonly util = inject(Util);\n * readonly effects = rxEffects(({ register }) => {\n * register(this.util.windowResize$, () => {\n * console.log('window was resized');\n * })\n * });\n *\n * ngOnInit() {\n * this.effects.register(this.util.rotationChanged$, () => {\n * console.log('viewport rotation changed');\n * });\n * }\n * }\n * ```\n *\n * @param {RxEffectsSetupFn} setupFn\n * @returns RxEffects\n *\n * @docsCategory RxEffects\n * @docsPage RxEffects\n *\n */\nfunction rxEffects(setupFn) {\n assertInInjectionContext(rxEffects);\n const errorHandler = inject(ErrorHandler, {\n optional: true\n });\n const destroyRef = inject(DestroyRef);\n const runningEffects = [];\n destroyRef.onDestroy(() => runningEffects.forEach(ef => ef.unsubscribe()));\n /**\n * Subscribe to observables and trigger side effect.\n *\n * @example\n *\n * /@Component({\n * template: `<button name=\"save\" (click)=\"save()\">Save</button>`\n * })\n * class ListComponent {\n * private ef = rxEffects(({register}) => {\n * register(timer(0, this.backupInterval), console.log));\n * }\n * }\n *\n * @param {SideEffectObservable} obs$ Source observable input\n * @param {SideEffectFnOrObserver} sideEffect Observer object\n *\n * @return {Function} - unregisterFn\n */\n function register(obs$, sideEffect) {\n const observer = typeof sideEffect === 'object' ? {\n ...sideEffect,\n // preserve original logic\n error: e => {\n sideEffect.error?.(e);\n errorHandler?.handleError(e);\n }\n } : {\n next: sideEffect,\n error: e => errorHandler?.handleError(e)\n };\n const sub = from(obs$).subscribe(observer);\n runningEffects.push(sub);\n return () => sub.unsubscribe();\n }\n /**\n * Register custom cleanup logic.\n *\n * @example\n *\n * /@Component({\n * template: `<button name=\"save\" (click)=\"save()\">Save</button>`\n * })\n * class ListComponent {\n * private ef = rxEffects(({onDestroy}) => {\n * onDestroy(() => console.log('done'));\n * }\n * }\n *\n * @param {Fn} callback onDestroy callback\n *\n * @return {Fn} unregisterFn\n */\n function onDestroy(callback) {\n return destroyRef.onDestroy(callback);\n }\n const effects = {\n register,\n onDestroy\n };\n setupFn?.(effects);\n return effects;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RxEffects, rxEffects };\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { DeviceService, UserService } from '@frontend/vanilla/core';\nimport { rxEffects } from '@rx-angular/state/effects';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { CasinoCoreNpmParamsService } from '../../shared/casino-core-npm-params.service';\nimport { JackpotDataService } from '../../shared/jackpotdata-service';\nimport { PromotionsBannerService } from '../../shared/promotions-banner.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class JackpotAndPromotionsService {\n jackpotGroupSubject = new BehaviorSubject<string>('');\n jackpotGroupObservable: Observable<any> = this.jackpotGroupSubject.asObservable();\n postloginfirstJackpotSortCall: boolean = false;\n globalJackpotPathSegment: string;\n\n private readonly rxEffects = rxEffects();\n private readonly route = inject(ActivatedRoute);\n private readonly user = inject(UserService);\n private readonly jackpotDataService = inject(JackpotDataService);\n private readonly configProviderService = inject(ConfigProviderService);\n private readonly casinoCoreNpmParamsService = inject(CasinoCoreNpmParamsService);\n private readonly promotionsBannerService = inject(PromotionsBannerService);\n private readonly deviceService = inject(DeviceService);\n\n onAppInit() {\n this.rxEffects.register(this.route.queryParams, (params: any) => {\n this.jackpotGroupSubject.next(params['jackpotgroupId']);\n });\n }\n\n setGlobalJackpotPathSegment(pathsegment: string) {\n this.globalJackpotPathSegment = pathsegment;\n }\n\n initiateJackpotFeedsAndGames() {\n const jackpotDataClientConfig: any = this.configProviderService.provideJackpotConfig();\n const feedCacheConfig: any = this.configProviderService.provideFeedCacheConfig();\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n\n if (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postloginfirstJackpotSortCall)) {\n if (feedCacheConfig.enableJackpotFeed && !casinoNpmParams?.isDisableJackpotCalls) {\n this.jackpotDataService.startFeed();\n }\n if (jackpotDataClientConfig.enableJackpotSortGames) {\n this.jackpotDataService.fetchJackpotSortGames();\n }\n if (this.user.isAuthenticated) this.postloginfirstJackpotSortCall = true;\n }\n }\n\n getJackpotListFromWidget(jackpotWidget: any): any[] {\n const jackpots: any[] = [];\n jackpotWidget.forEach((jp: any) => {\n if (jp != null) {\n jackpots.push(jp.itemName);\n }\n });\n return jackpots;\n }\n\n getGlobalJackpotByLobbyType(lobbyType: string): string {\n if (!lobbyType) {\n return lobbyType;\n }\n const globaljackpotconfig = this.configProviderService.provideGlobalJackpotConfig();\n const isGJLobby = globaljackpotconfig.globalJackpotPathSegmentsArray.filter(\n (lobby: any) => lobby.lobbyType && lobby.lobbyType?.toLowerCase() == lobbyType?.toLowerCase(),\n );\n if (isGJLobby && isGJLobby.length > 0) {\n return lobbyType + '#' + this.globalJackpotPathSegment + '#';\n }\n return lobbyType;\n }\n\n initiateJackpotandPromotionBanner(casinoNpmParams: any) {\n const jackpotDataClientConfig: any = this.configProviderService.provideJackpotConfig();\n const promotionsBannerConfig: any = this.configProviderService.providePromotionsBannerConfig();\n const feedCacheConfig: any = this.configProviderService.provideFeedCacheConfig();\n if (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postloginfirstJackpotSortCall)) {\n if (feedCacheConfig.enableJackpotFeed && !casinoNpmParams?.isDisableJackpotCalls) {\n this.jackpotDataService.stopFeed();\n this.jackpotDataService.startFeed();\n }\n if (jackpotDataClientConfig.enableJackpotSortGames) {\n this.jackpotDataService.fetchJackpotSortGames();\n }\n if (this.user.isAuthenticated) this.postloginfirstJackpotSortCall = true;\n }\n if (promotionsBannerConfig?.isEnablePromotionsBanner && this.deviceService.isMobilePhone && casinoNpmParams.isDll) {\n this.promotionsBannerService.fetchPromotionsBannerData();\n }\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, ClientConfigService, Page, ProductsConfig } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ABTestingClientConfig } from '../client-config/abtesting-config';\nimport { AdvanceGameDataClientConfig } from '../client-config/advance-game-data.config';\nimport { ApiPathsClientConfig } from '../client-config/api-paths.config';\nimport { ArcadeLobbyClientConfig } from '../client-config/arcadelobby-config';\nimport { BetMGMOriginalsClientConfig } from '../client-config/betmgmoriginals-config';\nimport { CasinoCoreConfigClientConfig } from '../client-config/casino-config.config';\nimport { CasinoAsIFrameOverlayConfig } from '../client-config/casino-overlay.config';\nimport { ClientSideConfigClientConfig } from '../client-config/clientside-config';\nimport { CommonClientConfig } from '../client-config/common.config';\nimport { CozyBingoClientConfig } from '../client-config/cozy-bingo.config';\nimport { DevSettingsConfig } from '../client-config/dev-settings.config';\nimport { DiscoverFeedClientConfig } from '../client-config/discover-feed.config';\nimport { DownloadAppFromDeviceClientConfig } from '../client-config/download-app-from-device.config';\nimport { FeaturesClientConfig } from '../client-config/features.config';\nimport { FeedCacheClientConfig } from '../client-config/feed-cache.config';\nimport { FreeSpinsClientConfig } from '../client-config/freespins.config';\nimport { GameLaunchTrackingClientConfig } from '../client-config/game-launch-tracking.config';\nimport { GamePremiereClientConfig } from '../client-config/game-premiere.config';\nimport { GameSelectorWidgetClientConfig } from '../client-config/game-selector-widget.config';\nimport { GameShowHubClientConfig } from '../client-config/game-show-hub.config';\nimport { GameConfigClientConfig } from '../client-config/game.config';\nimport { GameImpressionsClientConfig } from '../client-config/gameimpressions-config';\nimport { GamificationWidgetConfig } from '../client-config/gamification-widget-config';\nimport { GamingStoriesClientConfig } from '../client-config/gaming-stories-config';\nimport { GamingStoriesPhase2ClientConfig } from '../client-config/gaming-stories-phase2-config';\nimport { GeolocationClientConfig } from '../client-config/geo-location.config';\nimport { GlobalJackpotClientConfig } from '../client-config/global-jackpot.config';\nimport { GlobalSearchClientConfig } from '../client-config/global-search.config';\nimport { GlobalClientConfig } from '../client-config/global.config';\nimport { HeaderTeasersClientConfig } from '../client-config/header-teaser.config';\nimport { ImageLoadOptimizationClientConfig } from '../client-config/image-load-optimization.config';\nimport { ImmersiveLobbyClientConfig } from '../client-config/immersive-lobby.config';\nimport { JackpotDataClientConfig } from '../client-config/jackpot-data.config';\nimport { LiveCasinoLoungeClientConfig } from '../client-config/live-casino-lounge.config';\nimport { LiveDealerConfigClientConfig } from '../client-config/live-dealer.config';\nimport { LiveCasinoClientConfig } from '../client-config/livecasino-config';\nimport { LMTDataClientConfig } from '../client-config/lmt-data.config';\nimport { McPageClientConfig } from '../client-config/mc-page.config';\nimport { MinBetGamesClientConfig } from '../client-config/minbetgames-config';\nimport { ModularBingoClientConfig } from '../client-config/modular-bingo.config';\nimport { ModularSettingsClientConfig } from '../client-config/modular-settings.config';\nimport { ModularizationClientConfig } from '../client-config/modularization-config';\nimport { NativeGameLaunchClientConfig } from '../client-config/native-game-launch.config';\nimport { NewsFeedConfigClientConfig } from '../client-config/news-feed.config';\nimport { NonCriticalClientConfig } from '../client-config/noncritical-config';\nimport { OptimizedTeaserClientConfig } from '../client-config/optimized-teaser.config';\nimport { PlayerStatsWidgetClientConfig } from '../client-config/player-stats-config';\nimport { PreLoginClientConfig } from '../client-config/pre-login.config';\nimport { PromoCoinEconomyClientConfig } from '../client-config/promo-coin-economy-config';\nimport { PromoOfferWidgetConfig } from '../client-config/promo-offer-widget-config';\nimport { PromotedGamesClientConfig } from '../client-config/promoted-games.config';\nimport { PromotionsBannerClientConfig } from '../client-config/promotions-banner.config';\nimport { PromotionsInfoClientConfig } from '../client-config/promotions-info.config';\nimport { QuickInfoClientConfig } from '../client-config/quick-info.config';\nimport { RecentWinnersWidgetClientConfig } from '../client-config/recent-winners-config';\nimport { RecentlyPlayedClientConfig } from '../client-config/recentlyplayed-games.config';\nimport { SearchClientConfig } from '../client-config/search.config';\nimport { SlotRacesClientConfig } from '../client-config/slot-races.config';\nimport { SmartLobbyClientConfig } from '../client-config/smart-lobby.config';\nimport { SubNavigationClientConfig } from '../client-config/sub-nav.config';\nimport { SuperButtonClientConfig } from '../client-config/super-button.config';\nimport { ThumbnailConfigClientConfig } from '../client-config/thumbnailconfig';\nimport { VideoPreviewClientConfig } from '../client-config/video-preview.config';\nimport { WidgetConfigClientConfig } from '../client-config/widget.config';\nimport { UrlUtilityService } from '../public-api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigProviderService {\n casinoConfig: any;\n featuresConfig: any;\n globalSearchConfig: any;\n lmtConfig: any;\n globalConfig: GlobalClientConfig;\n devSettingsClientConfig: any;\n globalJackpotConfig: any;\n gameConfig: any;\n smartLobbyConfig: any;\n mcPageConfig: any;\n liveDealerConfig: any;\n jackpotConfig: any;\n nativegamelaunchConfig: any;\n geolocationConfig: any;\n casinoAsIFrameConfig: any;\n feedCacheConfig: any;\n advanceGameDataConfig: any;\n widgetConfig: any;\n quickInfoConfig: any;\n optimizedTeaserConfig: any;\n promotionsInfoConfig: any;\n discoverFeedConfig: any;\n subNavigationConfig: any;\n modularSettingsConfig: any;\n liveCasinoConfig: any;\n newsFeedCasinoConfig: any;\n slotRacesConfig: SlotRacesClientConfig;\n promotedGamesConfig: any;\n thumbnailConfig: any;\n casinoClientConfigLoadedSubject = new BehaviorSubject<boolean>(false);\n //Subscribe to this observable to get the status of the casino client config of the lobby\n casinoClientConfigObservable: Observable<boolean> = this.casinoClientConfigLoadedSubject.asObservable();\n cozybingoConfig: any;\n recentlyPlayedConfig: any;\n headerTeasersConfig: any;\n freeSpinsClientConfig: any;\n imageLoadOptimizationConfig: ImageLoadOptimizationClientConfig;\n clientSideConfig: any;\n apiPathsConfig: any;\n searchConfig: any;\n nonCriticalConfig: any;\n abTestingConfig: any;\n downloadAppFromDeviceConfig: any;\n gamingStoriesClientConfig: any;\n preLoginConfig: any;\n promoOfferWidgetConfig: any;\n gamificationWidgetConfig: any;\n gameSelectorWidgetConfig: any;\n gameShowHubConfig: any;\n liveCasinoLoungeConfig: any;\n immersiveLobbyConfig: any;\n gamingStoriesPhase2Config: any;\n superButtonConfig: any;\n gameLaunchTrackingConfig: any;\n commonConfig: any;\n promotionsBannerConfig: any;\n videoPreviewConfig: VideoPreviewClientConfig;\n recentWinnersWidgetConfig: any;\n modularBingoClientConfig: ModularBingoClientConfig;\n arcadeLobbyConfig: any;\n promoCoinEconomyConfig: any;\n gamePremiereConfig: any;\n minBetGamesConfig: any;\n playerStatsWidgetConfig: any;\n gameImpressionsConfig: any;\n betMGMOriginals: any;\n modularization: ModularizationClientConfig;\n constructor(\n private clientConfigService: ClientConfigService,\n private urlUtilityService: UrlUtilityService,\n private httpClient: HttpClient,\n private page: Page,\n private productConfig: ProductsConfig,\n ) {}\n\n fillClientConfig(isDll: boolean) {\n if (isDll) {\n this.casinoConfig = this.clientConfigService.get(CasinoCoreConfigClientConfig);\n this.globalSearchConfig = this.clientConfigService.get(GlobalSearchClientConfig);\n this.featuresConfig = this.clientConfigService.get(FeaturesClientConfig);\n this.globalConfig = this.clientConfigService.get(GlobalClientConfig);\n this.devSettingsClientConfig = this.clientConfigService.get(DevSettingsConfig);\n this.lmtConfig = this.clientConfigService.get(LMTDataClientConfig);\n this.gameConfig = this.clientConfigService.get(GameConfigClientConfig);\n this.videoPreviewConfig = this.clientConfigService.get(VideoPreviewClientConfig);\n this.smartLobbyConfig = this.clientConfigService.get(SmartLobbyClientConfig);\n this.globalJackpotConfig = this.clientConfigService.get(GlobalJackpotClientConfig);\n this.mcPageConfig = this.clientConfigService.get(McPageClientConfig);\n this.liveDealerConfig = this.clientConfigService.get(LiveDealerConfigClientConfig);\n this.jackpotConfig = this.clientConfigService.get(JackpotDataClientConfig);\n this.nativegamelaunchConfig = this.clientConfigService.get(NativeGameLaunchClientConfig);\n this.geolocationConfig = this.clientConfigService.get(GeolocationClientConfig);\n this.casinoAsIFrameConfig = this.clientConfigService.get(CasinoAsIFrameOverlayConfig);\n this.feedCacheConfig = this.clientConfigService.get(FeedCacheClientConfig);\n this.advanceGameDataConfig = this.clientConfigService.get(AdvanceGameDataClientConfig);\n this.widgetConfig = this.clientConfigService.get(WidgetConfigClientConfig);\n this.quickInfoConfig = this.clientConfigService.get(QuickInfoClientConfig);\n this.optimizedTeaserConfig = this.clientConfigService.get(OptimizedTeaserClientConfig);\n this.promotionsInfoConfig = this.clientConfigService.get(PromotionsInfoClientConfig);\n this.discoverFeedConfig = this.clientConfigService.get(DiscoverFeedClientConfig);\n this.subNavigationConfig = this.clientConfigService.get(SubNavigationClientConfig);\n this.liveCasinoConfig = this.clientConfigService.get(LiveCasinoClientConfig);\n this.newsFeedCasinoConfig = this.clientConfigService.get(NewsFeedConfigClientConfig);\n this.modularSettingsConfig = this.clientConfigService.get(ModularSettingsClientConfig);\n this.slotRacesConfig = this.clientConfigService.get(SlotRacesClientConfig);\n this.promotedGamesConfig = this.clientConfigService.get(PromotedGamesClientConfig);\n this.thumbnailConfig = this.clientConfigService.get(ThumbnailConfigClientConfig);\n this.cozybingoConfig = this.clientConfigService.get(CozyBingoClientConfig);\n this.recentlyPlayedConfig = this.clientConfigService.get(RecentlyPlayedClientConfig);\n this.headerTeasersConfig = this.clientConfigService.get(HeaderTeasersClientConfig);\n this.freeSpinsClientConfig = this.clientConfigService.get(FreeSpinsClientConfig);\n this.imageLoadOptimizationConfig = this.clientConfigService.get(ImageLoadOptimizationClientConfig);\n this.clientSideConfig = this.clientConfigService.get(ClientSideConfigClientConfig);\n this.apiPathsConfig = this.clientConfigService.get(ApiPathsClientConfig);\n this.searchConfig = this.clientConfigService.get(SearchClientConfig);\n this.nonCriticalConfig = this.clientConfigService.get(NonCriticalClientConfig);\n this.downloadAppFromDeviceConfig = this.clientConfigService.get(DownloadAppFromDeviceClientConfig);\n this.gamingStoriesClientConfig = this.clientConfigService.get(GamingStoriesClientConfig);\n this.preLoginConfig = this.clientConfigService.get(PreLoginClientConfig);\n this.promoOfferWidgetConfig = this.clientConfigService.get(PromoOfferWidgetConfig);\n this.gamificationWidgetConfig = this.clientConfigService.get(GamificationWidgetConfig);\n this.abTestingConfig = this.clientConfigService.get(ABTestingClientConfig);\n this.gameSelectorWidgetConfig = this.clientConfigService.get(GameSelectorWidgetClientConfig);\n this.gameShowHubConfig = this.clientConfigService.get(GameShowHubClientConfig);\n this.commonConfig = this.clientConfigService.get(CommonClientConfig);\n this.liveCasinoLoungeConfig = this.clientConfigService.get(LiveCasinoLoungeClientConfig);\n this.immersiveLobbyConfig = this.clientConfigService.get(ImmersiveLobbyClientConfig);\n this.gamingStoriesPhase2Config = this.clientConfigService.get(GamingStoriesPhase2ClientConfig);\n this.superButtonConfig = this.clientConfigService.get(SuperButtonClientConfig);\n this.gameLaunchTrackingConfig = this.clientConfigService.get(GameLaunchTrackingClientConfig);\n this.recentWinnersWidgetConfig = this.clientConfigService.get(RecentWinnersWidgetClientConfig);\n this.promotionsBannerConfig = this.clientConfigService.get(PromotionsBannerClientConfig);\n this.modularBingoClientConfig = this.clientConfigService.get(ModularBingoClientConfig);\n (this.arcadeLobbyConfig = this.clientConfigService.get(ArcadeLobbyClientConfig)),\n (this.promoCoinEconomyConfig = this.clientConfigService.get(PromoCoinEconomyClientConfig)),\n (this.minBetGamesConfig = this.clientConfigService.get(MinBetGamesClientConfig));\n this.gamePremiereConfig = this.clientConfigService.get(GamePremiereClientConfig);\n this.gameImpressionsConfig = this.clientConfigService.get(GameImpressionsClientConfig);\n this.playerStatsWidgetConfig = this.clientConfigService.get(PlayerStatsWidgetClientConfig);\n this.betMGMOriginals = this.clientConfigService.get(BetMGMOriginalsClientConfig);\n this.modularization = this.clientConfigService.get(ModularizationClientConfig);\n this.setClientConfigLoadedObservable();\n } else {\n const options: any = { headers: {} };\n options.headers['Cache-Control'] = 'no-cache';\n options.headers['Pragma'] = 'no-cache';\n options.headers['Expires'] = '0';\n if (this.productConfig[ClientConfigProductName.CASINO].enabled) {\n options.headers['x-bwin-casino-api'] = this.page.environment;\n }\n options.withCredentials = true;\n this.httpClient.get(this.urlUtilityService.getClientConfigUrl(), options).subscribe((response: any) => {\n if (response) {\n this.casinoConfig = response.csCasinoConfig;\n this.featuresConfig = response.csFeatures;\n this.lmtConfig = response.cslmtData;\n this.globalConfig = response.csGlobal;\n this.globalSearchConfig = response.csCasinoGlobalSearch;\n this.devSettingsClientConfig = response.csDevSettingsConfig;\n this.globalJackpotConfig = response.csGlobalJackpot;\n this.gameConfig = response.csGameConfig;\n this.smartLobbyConfig = response.csSmartLobbyConfig;\n this.mcPageConfig = response.csMcPage;\n this.liveDealerConfig = response.csLiveDealerConfig;\n this.jackpotConfig = response.csJackpotData;\n this.nativegamelaunchConfig = response.csNativeGameLaunch;\n this.geolocationConfig = response.csGeolocationConfig;\n this.casinoAsIFrameConfig = response.csCasinoAsIFrameOverlayConfig;\n this.feedCacheConfig = response.csFeedCacheConfiguration;\n this.advanceGameDataConfig = response.csAdvanceGameDataModel;\n this.quickInfoConfig = response.csQuickInfo;\n this.widgetConfig = response.csWidgetConfig;\n this.optimizedTeaserConfig = response.csOptimizedTeaser;\n this.promotionsInfoConfig = response.csPromotionsInfo;\n this.discoverFeedConfig = response.csDiscoverFeed;\n this.subNavigationConfig = response.csSubNavigationConfig;\n this.modularSettingsConfig = response.csModularSettings;\n this.liveCasinoConfig = response.csLiveCasinoApi;\n this.newsFeedCasinoConfig = response.csNewsFeedConfig;\n this.promotedGamesConfig = response.csPromotedGamesConfig;\n this.slotRacesConfig = response.csSlotRaces;\n this.thumbnailConfig = response.csThumbnail;\n this.cozybingoConfig = response.csCozyBingo;\n this.recentlyPlayedConfig = response.csRecentlyPlayed;\n this.headerTeasersConfig = response.csHeaderTeasers;\n this.freeSpinsClientConfig = response.csFreeSpins;\n this.clientSideConfig = response.csClientSideConfig;\n this.imageLoadOptimizationConfig = response.csImageLoadOptimizationConfig;\n this.apiPathsConfig = response.csApiPathsConfig;\n this.searchConfig = response.csSearchConfig;\n this.nonCriticalConfig = response.csNonCriticalFeedConfig;\n this.abTestingConfig = response.csAbTestingConfig;\n this.downloadAppFromDeviceConfig = response.csDownloadAppFromDevice;\n this.promoOfferWidgetConfig = response.csPromoOfferWidget;\n this.gamificationWidgetConfig = response.csGamificationWidget;\n this.gamingStoriesClientConfig = response.csGamingStoriesConfig;\n this.preLoginConfig = response.csPrelogin;\n this.gameSelectorWidgetConfig = response.csGameSelectorConfig;\n this.gameShowHubConfig = response.csGameShowHubConfig;\n this.commonConfig = response.csCommonConfig;\n this.liveCasinoLoungeConfig = response.csLiveCasinoLoungeConfig;\n this.immersiveLobbyConfig = response.csImmersiveLobbyConfig;\n this.videoPreviewConfig = response.csVideoPreviewConfig;\n this.gameLaunchTrackingConfig = response.csGameLaunchTrackingConfig;\n this.promotionsBannerConfig = response.csPromotionsBannerConfig;\n this.gamePremiereConfig = response.csGamePremiere;\n this.recentWinnersWidgetConfig = response.csRecentWinnersConfig;\n this.gamingStoriesPhase2Config = response.csGamingStoriesPhase2Config;\n this.modularBingoClientConfig = response.csModularBingo;\n this.arcadeLobbyConfig = response.csAracdeLobbyConfig;\n this.promoCoinEconomyConfig = response.csPromoCoinEconomyConfig;\n this.minBetGamesConfig = response.csMinBetGamesConfig;\n this.playerStatsWidgetConfig = response.csPlayerStatsConfig;\n this.gameImpressionsConfig = response.csGameImpressionsConfig;\n this.betMGMOriginals = response.csBetMGMOriginals;\n this.modularization = response.csModularization;\n\n this.setClientConfigLoadedObservable();\n }\n });\n }\n }\n\n setClientConfigLoadedObservable() {\n this.casinoClientConfigLoadedSubject.next(true);\n }\n\n provideCasinoConfig() {\n return this.casinoConfig;\n }\n\n provideFeaturesConfig() {\n return this.featuresConfig;\n }\n\n provideLmtConfig() {\n return this.lmtConfig;\n }\n\n setLmtConfig(customLobbyTypes: any) {\n this.lmtConfig.lobbyTypeMap = customLobbyTypes;\n }\n\n provideGlobalConfig() {\n return this.globalConfig;\n }\n\n provideGlobalSearchConfig() {\n return this.globalSearchConfig;\n }\n\n provideDevSettingsConfig() {\n return this.devSettingsClientConfig;\n }\n\n provideGlobalJackpotConfig() {\n return this.globalJackpotConfig;\n }\n\n provideGameConfig() {\n return this.gameConfig;\n }\n\n provideSmartLobbyConfig() {\n return this.smartLobbyConfig;\n }\n\n provideThumbnailConfig() {\n return this.thumbnailConfig;\n }\n\n provideMcPageConfig() {\n return this.mcPageConfig;\n }\n\n provideLiveDealerConfig() {\n return this.liveDealerConfig;\n }\n\n provideJackpotConfig() {\n return this.jackpotConfig;\n }\n\n provideNativeGameLaunchConfig() {\n return this.nativegamelaunchConfig;\n }\n\n provideGeoLocationConfig() {\n return this.geolocationConfig;\n }\n\n provideCasinoAsIFrameConfig() {\n return this.casinoAsIFrameConfig;\n }\n\n provideFeedCacheConfig() {\n return this.feedCacheConfig;\n }\n\n provideOptimizedTeaserConfig() {\n return this.optimizedTeaserConfig;\n }\n\n provideAdvanceGameDataConfig() {\n return this.advanceGameDataConfig;\n }\n\n provideQuickInfoConfig() {\n return this.quickInfoConfig;\n }\n\n providewidgetConfig(): any {\n return this.widgetConfig;\n }\n\n providePromotionsInfoConfig() {\n return this.promotionsInfoConfig;\n }\n\n provideDiscoverFeedConfig() {\n return this.discoverFeedConfig;\n }\n\n provideSubNavigationConfig() {\n return this.subNavigationConfig;\n }\n\n provideModularSettingsConfig() {\n return this.modularSettingsConfig;\n }\n\n provideLiveCasinoConfig() {\n return this.liveCasinoConfig;\n }\n\n provideNewsFeedCasinoConfig() {\n return this.newsFeedCasinoConfig;\n }\n\n provideSlotRacesConfig(): SlotRacesClientConfig {\n return this.slotRacesConfig;\n }\n\n providePromotedGamesConfig() {\n return this.promotedGamesConfig;\n }\n\n provideCozyBingoConfig() {\n return this.cozybingoConfig;\n }\n\n providePromoOfferWidgetConfig() {\n return this.promoOfferWidgetConfig;\n }\n\n provideGamificationWidgetConfig() {\n return this.gamificationWidgetConfig;\n }\n\n provideRecentlyPlayedGamesConfig() {\n return this.recentlyPlayedConfig;\n }\n\n provideHeaderTeasersConfig() {\n return this.headerTeasersConfig;\n }\n\n providefreeSpinsClientConfig() {\n return this.freeSpinsClientConfig;\n }\n\n provideImageLoadOptimizationClientConfig(): ImageLoadOptimizationClientConfig {\n return this.imageLoadOptimizationConfig;\n }\n\n provideClientSideConfig() {\n return this.clientSideConfig;\n }\n\n provideApiPathsConfig() {\n return this.apiPathsConfig;\n }\n\n provideSearchConfig() {\n return this.searchConfig;\n }\n\n provideNonCriticalConfig() {\n return this.nonCriticalConfig;\n }\n\n provideABTestingConfig() {\n return this.abTestingConfig;\n }\n\n provideDownloadAppFromDeviceConfig() {\n return this.downloadAppFromDeviceConfig;\n }\n\n provideGamingStoriesConfig() {\n return this.gamingStoriesClientConfig;\n }\n\n providePreLoginConfig() {\n return this.preLoginConfig;\n }\n\n provideVideoPreviewConfig() {\n return this.videoPreviewConfig;\n }\n\n provideGameSelectorWidgetConfig() {\n return this.gameSelectorWidgetConfig;\n }\n\n provideGameShowHubConfig() {\n return this.gameShowHubConfig;\n }\n\n provideCommonConfig() {\n return this.commonConfig;\n }\n\n provideLiveCasinoLoungeConfig() {\n return this.liveCasinoLoungeConfig;\n }\n\n provideImmersiveLobbyConfig() {\n return this.immersiveLobbyConfig;\n }\n\n provideGamingStoriesPhase2Config() {\n return this.gamingStoriesPhase2Config;\n }\n\n provideSuperButtonConfig() {\n return this.superButtonConfig;\n }\n\n provideGameLaunchTrackingConfig() {\n return this.gameLaunchTrackingConfig;\n }\n\n providePromotionsBannerConfig() {\n return this.promotionsBannerConfig;\n }\n\n provideRecentWinnersWidgetConfig(): RecentWinnersWidgetClientConfig {\n return this.recentWinnersWidgetConfig;\n }\n provideModularBingoClientConfig(): ModularBingoClientConfig {\n return this.modularBingoClientConfig;\n }\n\n provideAracadeLobbyConfig() {\n return this.arcadeLobbyConfig;\n }\n\n providePromoCoinEconomyConfig() {\n return this.promoCoinEconomyConfig;\n }\n\n provideMinBetGamesConfig() {\n return this.minBetGamesConfig;\n }\n\n provideGameImpressionsConfig() {\n return this.gameImpressionsConfig;\n }\n\n provideGamePremiereConfig() {\n return this.gamePremiereConfig;\n }\n\n providePlayerStatsWidgetConfig(): PlayerStatsWidgetClientConfig {\n return this.playerStatsWidgetConfig;\n }\n\n providerBetMGMOriginalsConfig(): BetMGMOriginalsClientConfig {\n return this.betMGMOriginals;\n }\n provideModularizationConfig(): ModularizationClientConfig {\n return this.modularization;\n }\n}\n","export enum GeoLocationJSPathIdentifier {\n GEOCOMPLYJS = 'pathIdentifier=geocomplyjs',\n OOBEEJS = 'pathIdentifier=oobeejs',\n APPINTEGRATIONJS = 'pathIdentifier=appintegrationjs',\n}\n\nexport enum GeoLocationWindowProp {\n GEOCOMPLY = 'GeoComply',\n GCOOBEE = 'GCOobee',\n GEOLOCATIONCOORDINATOR = 'geolocationCoordinator',\n}\n\nexport type GeoLocationScriptMap = {\n identifier: GeoLocationJSPathIdentifier;\n windowProp: GeoLocationWindowProp;\n};\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { GeoCoordinatorPermissionsManagerService, PermissionInfo } from '@frontend/geo-coordinator/permissions-manager';\nimport { UserService } from '@frontend/vanilla/core';\n\nimport { ConfigProviderService } from '../../config-provider/config-provider.service';\nimport { GeolocationActivatorService } from '../../geolocation/services/activator.service';\nimport { GeolocationCoordinatorService } from '../../geolocation/services/coordinator.service';\nimport { CasinoCoreNpmParamsService } from '../../shared/casino-core-npm-params.service';\nimport { WindowRef } from '../../shared/windowref.service';\nimport { GeoLocationJSPathIdentifier, GeoLocationScriptMap, GeoLocationWindowProp } from './geo-location.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeoLocationService {\n private readonly route = inject(ActivatedRoute);\n private readonly windowRef = inject(WindowRef);\n private readonly casinoCoreNpmParamsService = inject(CasinoCoreNpmParamsService);\n private readonly user = inject(UserService);\n private readonly geolocationActivator = inject(GeolocationActivatorService);\n private readonly geolocationCoordinatorService = inject(GeolocationCoordinatorService);\n private readonly configProviderService = inject(ConfigProviderService);\n private readonly geoCoordinatorPermissionsManagerService = inject(GeoCoordinatorPermissionsManagerService);\n\n initializeGeolocationCoordinator() {\n if (this.route) {\n const bootstrapCoordinationStart = this.route.snapshot.queryParamMap.get('_bootstrapCoordinationStart');\n if (bootstrapCoordinationStart && bootstrapCoordinationStart === 'false') {\n return;\n }\n }\n if (!this.casinoCoreNpmParamsService.getcasinoCoreNpmParams().isDll) this.checkGeolocationScript();\n const geoConfig = this.configProviderService.provideGeoLocationConfig();\n if (this.user.isAuthenticated && this.geolocationActivator.isActive) {\n if (!geoConfig.enableNDBS) {\n this.geolocationCoordinatorService.initialize({\n showPLCPopup: false,\n });\n } else {\n if (this.geolocationCoordinatorService?.permissionsManager) {\n this.geolocationCoordinatorService.permissionsManager.onPermissionInfo = (permissionsInfo: PermissionInfo) => {\n if (permissionsInfo.status === 'available') {\n this.geoCoordinatorPermissionsManagerService.closePermissionsInfo();\n this.geolocationCoordinatorService.initialize({\n showPLCPopup: false,\n });\n return;\n }\n if (permissionsInfo.status === 'notavailable') {\n this.geoCoordinatorPermissionsManagerService.handlePermissionsInfo({\n permissionsInfo,\n textDictionary: this.configProviderService.provideGlobalConfig().messages,\n geoCoordinatorService: this.geolocationCoordinatorService,\n });\n }\n };\n this.geolocationCoordinatorService?.permissionsManager?.seekPermission();\n }\n }\n this.geolocationCoordinatorService.registerUnload();\n this.geolocationCoordinatorService.registerSynchronization();\n }\n }\n\n private checkGeolocationScript() {\n const geolocationConfig: any = this.configProviderService.provideGeoLocationConfig();\n geolocationConfig.assetsPath &&\n geolocationConfig.assetsPath.length > 0 &&\n geolocationConfig.assetsPath.forEach((assetScript: any) => {\n const scriptMappings: GeoLocationScriptMap[] = [\n { identifier: GeoLocationJSPathIdentifier.GEOCOMPLYJS, windowProp: GeoLocationWindowProp.GEOCOMPLY },\n { identifier: GeoLocationJSPathIdentifier.OOBEEJS, windowProp: GeoLocationWindowProp.GCOOBEE },\n { identifier: GeoLocationJSPathIdentifier.APPINTEGRATIONJS, windowProp: GeoLocationWindowProp.GEOLOCATIONCOORDINATOR },\n ];\n scriptMappings.forEach((map: GeoLocationScriptMap) => {\n if (assetScript.indexOf(map.identifier) > -1) {\n if (!this.windowRef.nativeWindow[map.windowProp]) {\n this.appendGeolocationScript(assetScript);\n }\n }\n });\n });\n }\n\n private appendGeolocationScript(assetScript: string) {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = assetScript;\n document.body.appendChild(script);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n CookieService,\n DeviceService,\n DslService,\n Logger,\n NativeAppService,\n Page,\n ProductService,\n UserLoggingOutEvent,\n UserLoginEvent,\n UserService,\n} from '@frontend/vanilla/core';\nimport { GamificationService } from '@frontend/vanilla/features/gamification';\nimport { cloneDeep } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { LMTDataClientConfig } from '../client-config/lmt-data.config';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { ApiPathsHelperService } from '../shared/api-paths-helper-service';\nimport { CacheManagerService } from '../shared/cache-manager.service';\nimport { CasinoApiService } from '../shared/casino-api.service';\nimport { CasinoCoreNpmParamsService } from '../shared/casino-core-npm-params.service';\nimport { CasinoIFrameOverlayService } from '../shared/casino-iframe-overlay.service';\nimport { CasinoManager } from '../shared/casino-manager.service';\nimport { ConstService } from '../shared/const.service';\nimport { CookieService as CasinoCookieService, ODR_NAME } from '../shared/cookie.service';\nimport { CozyBingoDataService } from '../shared/cozybingodata.service';\nimport { DiscoverFeedService } from '../shared/discover-feed.service';\nimport { FavouriteService } from '../shared/favourite.service';\nimport { FreespinSummaryService } from '../shared/freespins-summary.service';\nimport { GameSelectorWidgetService } from '../shared/game-selector-widget.service';\nimport { InvokerProductService } from '../shared/invoker-product.service';\nimport { LiveCasinoService } from '../shared/livecasino.service';\nimport { CasinoCoreNpmParams } from '../shared/models/casino-core-npm.params';\nimport { GameLobbyModel } from '../shared/models/game-lobby.model';\nimport { NewsFeedService } from '../shared/news-feed.service';\nimport { PromotedGamesService } from '../shared/promoted-games.service';\nimport { RecentGamesService } from '../shared/recent-games.service';\nimport { TeaserService } from '../shared/teaser.service';\nimport { ThumbnailService } from '../shared/thumbnail.service';\nimport { UnfinishedGamesService } from '../shared/unfinished-games-service';\nimport { UtilityService } from '../shared/utility.service';\nimport { WindowRef } from '../shared/windowref.service';\nimport { SlotRacesService } from '../slot-races/shared/slot-races.service';\nimport { UrlUtilityService } from '../utilities/url-utility.service';\nimport { LobbyInfo, LobbyItem } from './casino-lobby.models';\nimport { GameManagerService } from './game-manager/game-manager.service';\nimport { GeoLocationService } from './geo-location/geo-location.service';\nimport { GlobalSearchService } from './global-search/global-search.service';\nimport { JackpotAndPromotionsService } from './jackpot-and-promotions/jackpot-and-promotions.service';\nimport { GameMetaDataMap } from './lobby-details-model/game-metadata.model';\nimport { LobbyItemBaseModel } from './lobby-details-model/lobby-item.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CasinoLobbyService {\n lobbySitecoreData: any;\n lobbySitecoreDataForInvokerProduct: any;\n lobbyTypeMaps: Map<string, LobbyItem | any> = new Map<string, LobbyItem | any>();\n gJLobbyTypeMaps: Map<string, any> = new Map<string, any>();\n lobbyTypeMapsForInvokerProduct: Map<string, any> = new Map<string, any>();\n casinoConfig: any;\n stickersDataSubject = new BehaviorSubject<any>(null);\n stickersDataObservable: Observable<any> = this.stickersDataSubject.asObservable();\n lobbyLoadedSubject = new BehaviorSubject<any>(null);\n lobbyLoadedSubjectForInvokerProduct = new BehaviorSubject<any>(null);\n gameMetaDataMap: Map<string, GameMetaDataMap> = new Map<string, GameMetaDataMap>();\n lobbyLoadedObservable: Observable<any> = this.lobbyLoadedSubject.asObservable();\n lobbyLoadedObservableForInvokerProduct: Observable<any> = this.lobbyLoadedSubjectForInvokerProduct.asObservable();\n disabledGames: any;\n isTouchDevice: boolean;\n gameDataFromLMT: any = [];\n private forceGameLaunchBehaviourSubject = new BehaviorSubject<any>(null);\n coinBalancePublisher = new BehaviorSubject<any>(null);\n coinBalanceObservable: Observable<any> = this.coinBalancePublisher.asObservable();\n coinStoreDetailsPublisher = new BehaviorSubject<string | null>(null);\n coinStoreDetailsObservable: Observable<any> = this.coinStoreDetailsPublisher.asObservable();\n forceGameLaunchObservable: Observable<boolean> = this.forceGameLaunchBehaviourSubject.asObservable();\n disjointFeedsInitiated: boolean;\n categoryNotFoundSubject = new BehaviorSubject<any>(null);\n categoryNotFoundObservable: Observable<any> = this.categoryNotFoundSubject.asObservable();\n hideSlotRacesTitlePublisher = new BehaviorSubject<boolean>(false);\n hideSlotRacesTitleObs: Observable<any> = this.hideSlotRacesTitlePublisher.asObservable();\n optMiniTeasersSource: Array<string> = [];\n postLoginFeedsInitiated: boolean = false;\n gameSelectorWidgetSource: string[] = [];\n lmtConfig: any;\n rpfavandunfinishedcalled: boolean;\n isNewMoreInfoActive: boolean = false;\n private lobbyLoadEventTracked: boolean = false;\n postloginfirstTeaserCall: boolean = false;\n postLoginFirstSlotRaceCall: boolean = false;\n postloginfirstLiveCasinoCall: boolean = false;\n userCoinBalance: number;\n arcadeCoinExpiry: number;\n path: any = 'path';\n hideGlobalSearchBasedOnPath: boolean = false;\n\n private readonly api = inject(PlatformApiService);\n private readonly casinoApiService = inject(CasinoApiService);\n private readonly cacheManager = inject(CacheManagerService);\n private readonly configProviderService = inject(ConfigProviderService);\n private readonly casinoManager = inject(CasinoManager);\n private readonly user = inject(UserService);\n private readonly deviceService = inject(DeviceService);\n private readonly recentGamesService = inject(RecentGamesService);\n private readonly page = inject(Page);\n private readonly urlUtility = inject(UrlUtilityService);\n private readonly teaserService = inject(TeaserService);\n private readonly favouriteService = inject(FavouriteService);\n private readonly unfinishedGamesService = inject(UnfinishedGamesService);\n private readonly invokerProductService = inject(InvokerProductService);\n private readonly discoverFeedService = inject(DiscoverFeedService);\n private readonly liveCasinoService = inject(LiveCasinoService);\n private readonly newsFeedService = inject(NewsFeedService);\n private readonly promotedGamesService = inject(PromotedGamesService);\n private readonly freespinSummaryService = inject(FreespinSummaryService);\n private readonly apiPathsHelperService = inject(ApiPathsHelperService);\n private readonly slotRacesService = inject(SlotRacesService);\n private readonly cozybingoService = inject(CozyBingoDataService);\n private readonly cookies = inject(CookieService);\n private readonly thumbnailService = inject(ThumbnailService);\n private readonly windowRef = inject(WindowRef);\n private readonly casinoCoreNpmParamsService = inject(CasinoCoreNpmParamsService);\n private readonly gameSelectorWidgetService = inject(GameSelectorWidgetService);\n private readonly casinoIFrameOverlayService = inject(CasinoIFrameOverlayService);\n private readonly logger = inject(Logger);\n private readonly gamificationService = inject(GamificationService);\n private readonly casinoCookieService = inject(CasinoCookieService);\n private readonly jackpotAndPromotionsService = inject(JackpotAndPromotionsService);\n private readonly nativeAppService = inject(NativeAppService);\n private readonly utilityService = inject(UtilityService);\n private readonly globalSearchService = inject(GlobalSearchService);\n private readonly geoLocationService = inject(GeoLocationService);\n private readonly gameManagerService = inject(GameManagerService);\n private readonly dslService = inject(DslService);\n private readonly productService = inject(ProductService);\n\n onAppInit() {\n this.configProviderService.casinoClientConfigObservable.subscribe((isClientConfigLoaded) => {\n if (isClientConfigLoaded) {\n this.geoLocationService.initializeGeolocationCoordinator();\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n if (!casinoNpmParams.disableFullLobbyFetch) {\n this.setCasinoLobby(true);\n }\n if (casinoNpmParams.disableFullLobbyFetch && casinoNpmParams.customLobbyTypeMaps && casinoNpmParams.customLobbyTypeMaps.length > 0) {\n this.setPartialCasinoLobbiesforOtherProducts(casinoNpmParams.customLobbyTypeMaps, true, false);\n this.configProviderService.setLmtConfig(casinoNpmParams.customLobbyTypeMaps);\n } else if (casinoNpmParams.disableFullLobbyFetch && casinoNpmParams.targetOverlayLobby) {\n this.setPartialCasinoLobbiesForOverlay();\n }\n //load Coin Expiry\n this.arcadeCoinExpiry = this.calculateCoinArcadeExpiry();\n }\n });\n this.lobbyLoadedObservable.subscribe((lobbyLoadEvent) => {\n if (lobbyLoadEvent) {\n this.onLobbyLoaded(lobbyLoadEvent.initiateFeeds);\n }\n });\n this.user.events.pipe(filter((e: any) => e instanceof UserLoginEvent)).subscribe(() => {\n if (this.lobbyTypeMaps && this.lobbyTypeMaps.size > 0) {\n this.lobbyTypeMaps.clear();\n }\n if (this.gameMetaDataMap && this.gameMetaDataMap.size > 0) {\n this.gameMetaDataMap.clear();\n }\n this.postLoginCalls(false, true);\n this.geoLocationService.initializeGeolocationCoordinator();\n this.rpfavandunfinishedcalled = false;\n });\n this.user.events.pipe(filter((e: any) => e instanceof UserLoggingOutEvent)).subscribe(() => {\n this.cookies.remove('PCGameData');\n });\n const pcdata = this.cookies.getObject('PCGameData');\n if (pcdata) {\n this.cookies.remove('PCGameData');\n }\n }\n\n checkForTouchDevice() {\n try {\n this.isTouchDevice =\n !this.nativeAppService.isDownloadClient &&\n this.deviceService.isTouch &&\n !window.matchMedia('(pointer: fine)').matches &&\n !navigator.userAgent.match(/Win64/ || /WOW64/);\n } catch (error) {\n this.isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n }\n\n private setPartialCasinoLobbiesForOverlay() {\n const overlayConfig = this.configProviderService.provideCasinoAsIFrameConfig();\n this.casinoIFrameOverlayService.setOverlayStatus(true);\n const invokerProduct: string = this.invokerProductService.getInvokerProduct();\n if (overlayConfig?.overlayLobbyTypeMap && overlayConfig.overlayLobbyTypeMap.length > 0) {\n const applicableLobbyTypeMaps: any = overlayConfig.overlayLobbyTypeMap.filter(\n (l: any) => l?.invokerProduct?.toLowerCase() === invokerProduct?.toLowerCase(),\n );\n if (applicableLobbyTypeMaps && applicableLobbyTypeMaps.length > 0) {\n this.setPartialCasinoLobbiesforOtherProducts(applicableLobbyTypeMaps, true, false);\n this.configProviderService.setLmtConfig(applicableLobbyTypeMaps);\n }\n }\n }\n\n private onLobbyLoaded(initiateDisjointFeeds: boolean) {\n if (initiateDisjointFeeds) {\n this.initiateDisjointFeeds(initiateDisjointFeeds);\n }\n if (this.user.isAuthenticated) {\n const initDisjoint =\n this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR) || this.casinoCookieService.isODR(ODR_NAME.SPORTS_WODR)\n ? initiateDisjointFeeds\n : true;\n this.postLoginCalls(true, initDisjoint);\n }\n //Write postlobby calls here\n }\n\n getThumbnailbasedonroute(category: any) {\n if (category?.sitecoreData?.gameThumbnail && category.sitecoreData.gameThumbnail.length > 0) {\n const vipThumail = category.sitecoreData.gameThumbnail.filter((gt: any) => {\n return gt.isVipThumbnail;\n });\n const nonVipThumail = category.sitecoreData.gameThumbnail.filter((gt: any) => {\n return !gt.isVipThumbnail;\n });\n if (!this.user.isAuthenticated && nonVipThumail?.[0]) {\n return nonVipThumail[0];\n } else if (this.user.isAuthenticated) {\n if (!this.user.claims.get('vipLevel') && nonVipThumail[0]) {\n return nonVipThumail[0];\n } else if (this.user.claims.get('vipLevel') && vipThumail[0]) {\n return vipThumail[0];\n } else if (vipThumail.length == 0 && nonVipThumail?.[0]) {\n return nonVipThumail[0];\n }\n }\n }\n }\n\n get isLobbyLoadEventTracked(): boolean {\n return this.lobbyLoadEventTracked;\n }\n\n setLobbyLoadEventTrackingStatus(status: boolean): void {\n this.lobbyLoadEventTracked = status;\n }\n\n private initGameSelectorWidget(): void {\n if (this.gameSelectorWidgetSource?.length) {\n const widgetPaths = [...new Set(this.gameSelectorWidgetSource.map((item) => item[this.path]))];\n this.gameSelectorWidgetService.fetchWidgets(widgetPaths);\n }\n }\n\n refreshFeeds() {\n if (this.disjointFeedsInitiated && this.configProviderService.providePromotedGamesConfig()?.isEnabled) {\n this.promotedGamesService.setPromotedGames();\n }\n if (this.user.isAuthenticated) {\n if (this.postLoginFeedsInitiated) {\n this.recentGamesService.setRecentGames();\n this.unfinishedGamesService.setUnfinishedGames();\n }\n } else if (\n this.disjointFeedsInitiated &&\n this.configProviderService.provideFeaturesConfig()?.enablePreLoginRecentlyPlayed &&\n this.cookies.get('lastVisitor')\n ) {\n this.recentGamesService.setRecentGames();\n }\n }\n\n private initiateDisjointFeeds(initiateDisjointFeeds: boolean) {\n if (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postloginfirstTeaserCall)) {\n this.teaserService.setTeasers();\n if (this.user.isAuthenticated) {\n this.postloginfirstTeaserCall = true;\n } else {\n this.initGameSelectorWidget();\n }\n }\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n if (lmtConfig.enableDynamicSequentialCalls && !this.rpfavandunfinishedcalled) {\n this.recentGamesService.setRecentGames();\n this.favouriteService.setFavouriteGames();\n this.unfinishedGamesService.setUnfinishedGames();\n this.rpfavandunfinishedcalled = true;\n }\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n this.jackpotAndPromotionsService.initiateJackpotFeedsAndGames();\n const optMiniTeaserPaths = [...new Set(this.optMiniTeasersSource.map((item) => item[this.path]))];\n this.teaserService.fetchOptMiniTeasers(optMiniTeaserPaths);\n const discoverFeedConfig = this.configProviderService.provideDiscoverFeedConfig();\n if (discoverFeedConfig.enableDiscoverFeed) {\n this.discoverFeedService.GetDiscoverFeedSitecoreData();\n }\n const liveCasinoConfig = this.configProviderService.provideLiveCasinoConfig();\n if (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postloginfirstLiveCasinoCall)) {\n if (liveCasinoConfig.enabled && !casinoNpmParams?.isDisableLiveCasinoCalls) {\n this.liveCasinoService.getLiveCasinoData(true);\n }\n if (this.user.isAuthenticated) this.postloginfirstLiveCasinoCall = true;\n }\n const promotedGamesConfig = this.configProviderService.providePromotedGamesConfig();\n if (promotedGamesConfig.isEnabled) {\n this.promotedGamesService.setPromotedGames();\n }\n const newsFeedConfig = this.configProviderService.provideNewsFeedCasinoConfig();\n if (newsFeedConfig.isEnabled) {\n this.newsFeedService.setNewsFeed();\n }\n\n if (!this.user.isAuthenticated && featuresConfig.enablePreLoginRecentlyPlayed && this.cookies.get('lastVisitor')) {\n this.recentGamesService.setRecentGames();\n }\n this.initializeSlotRaces(initiateDisjointFeeds);\n //Write postlobby calls here\n this.disjointFeedsInitiated = true;\n }\n\n // private initSlotRaces() {\n // let casinoCoreNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n // if (casinoCoreNpmParams && !casinoCoreNpmParams.disableSlotracesCallsOnBootstrap) {\n // this.initializeSlotRaces();\n // }\n // }\n\n initializeSlotRaces(initiateDisjointFeeds: boolean) {\n if (initiateDisjointFeeds && (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postLoginFirstSlotRaceCall))) {\n const slotRacesConfig = this.configProviderService.provideSlotRacesConfig();\n const widgetConfig = this.configProviderService.providewidgetConfig();\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n if (\n ((slotRacesConfig?.enableSlotRaces || slotRacesConfig?.enableSlotRacesPhase2) && !casinoNpmParams.disableSlotracesCallsOnBootstrap) ||\n ((slotRacesConfig?.enableSlotRaces || slotRacesConfig?.enableSlotRacesPhase2) &&\n widgetConfig?.enableSlotRacesForOtherProducts &&\n casinoNpmParams?.disableSlotracesCallsOnBootstrap)\n ) {\n this.slotRacesService.forceOptin();\n this.slotRacesService.forceCoinBalance();\n const gameDataMap = this.getGameMetaData();\n const disabledGames = this.getDisabledGames();\n this.slotRacesService.initSlotRaces(\n gameDataMap,\n disabledGames,\n this.lobbyTypeMaps?.get(slotRacesConfig.slotraceLobbytypeForGamesOrdering),\n casinoNpmParams.isDll,\n true,\n );\n }\n if (this.user.isAuthenticated) this.postLoginFirstSlotRaceCall = true;\n }\n }\n\n isDisjointFeedsInitiated(): boolean {\n return this.disjointFeedsInitiated;\n }\n\n private postLoginCalls(fromOnLobbyLoaded: boolean, initiateDisjointFeeds: boolean) {\n this.lmtConfig = this.configProviderService.provideLmtConfig();\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n if (!fromOnLobbyLoaded) {\n if (\n casinoNpmParams &&\n casinoNpmParams.disableFullLobbyFetch &&\n casinoNpmParams.customLobbyTypeMaps &&\n casinoNpmParams.customLobbyTypeMaps.length > 0\n ) {\n this.setPartialCasinoLobbiesforOtherProducts(casinoNpmParams.customLobbyTypeMaps, true, false);\n } else if (casinoNpmParams.disableFullLobbyFetch && casinoNpmParams.targetOverlayLobby) {\n this.setPartialCasinoLobbiesForOverlay();\n } else {\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n if (!lmtConfig.enablePostloginPartialCalls) {\n this.setCasinoLobby(false, !fromOnLobbyLoaded);\n }\n }\n } else {\n this.initiatePostLoginDisjointFeeds(initiateDisjointFeeds);\n }\n }\n\n private handleForceGameLaunch() {\n const modularSettingsConfig = this.configProviderService.provideModularSettingsConfig();\n setTimeout(() => {\n const forceLoginGameObjectExpirationTime = modularSettingsConfig.forceLoginGameObjectExpirationTime;\n const currentTimeStamp = new Date().getTime();\n const forceGameLaunchObjData = this.cacheManager.readForceGameLaunchObjDataFromSessionStorage('CasinoCoreForceGameObj');\n if (forceGameLaunchObjData) {\n if (forceGameLaunchObjData.gameLaunchParam && forceGameLaunchObjData.gameLaunchParam.from == 'thumbnail') {\n this.cacheManager.setThumbnailLocalStorageCacheMap(\n forceGameLaunchObjData.gameLaunchParam.lobbyType,\n forceGameLaunchObjData.gameLaunchParam.game.gameId,\n true,\n );\n this.thumbnailService.setThumbnailData(forceGameLaunchObjData.gameLaunchParam);\n }\n forceGameLaunchObjData.gameLaunchParam.noGameTraking = true;\n sessionStorage.removeItem('CasinoCoreForceGameObj');\n if (currentTimeStamp - forceGameLaunchObjData.timeStamp <= forceLoginGameObjectExpirationTime * 1000) {\n this.forceGameLaunchBehaviourSubject.next(forceGameLaunchObjData);\n }\n }\n }, modularSettingsConfig.forceGameLaunchExecutionTimeOut);\n }\n\n checkIfGamePremiereEnabledForCategory(lobbyType: string, categoryRoute: string): boolean {\n if (lobbyType == undefined || lobbyType == null || lobbyType == '') return false;\n\n if (categoryRoute == undefined || categoryRoute == null || categoryRoute == '') return false;\n\n const gamePremiereConfig = this.configProviderService.provideGamePremiereConfig();\n const showGamePremiereByLobbyTypeCategory = gamePremiereConfig.showGamePremiereByLobbyTypeCategory;\n\n if (\n showGamePremiereByLobbyTypeCategory == null ||\n showGamePremiereByLobbyTypeCategory == undefined ||\n showGamePremiereByLobbyTypeCategory?.length <= 0\n ) {\n return false;\n }\n\n const gamePremiereCurrentLobbyType = showGamePremiereByLobbyTypeCategory.find(\n (x: any) => x?.lobbyType.toLowerCase() == lobbyType.toLowerCase(),\n );\n\n if (gamePremiereCurrentLobbyType == null || gamePremiereCurrentLobbyType == undefined) return false;\n\n //Enables for all the Categories if there are no categories\n if (gamePremiereCurrentLobbyType.category == null || gamePremiereCurrentLobbyType.category?.length <= 0) {\n return true;\n }\n\n if (gamePremiereCurrentLobbyType.category.some((x: any) => x?.toLowerCase() === categoryRoute.toLowerCase())) {\n return true;\n }\n\n return false;\n }\n\n private initiatePostLoginDisjointFeeds(initiateDisjointFeeds: boolean) {\n if (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postloginfirstTeaserCall)) {\n this.teaserService.setTeasers();\n if (this.user.isAuthenticated) this.postloginfirstTeaserCall = true;\n }\n if (this.user.isAuthenticated && !this.postLoginFeedsInitiated) {\n //checkForForcedLogin\n this.handleForceGameLaunch();\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n if (!lmtConfig.enableDynamicSequentialCalls && !this.rpfavandunfinishedcalled) {\n this.recentGamesService.setRecentGames();\n this.favouriteService.setFavouriteGames();\n this.unfinishedGamesService.setUnfinishedGames();\n this.rpfavandunfinishedcalled = true;\n }\n const casinoNpmParams = this.casinoCoreNpmParamsService.getcasinoCoreNpmParams();\n this.initiatePostLoginFeatures(casinoNpmParams);\n this.initGameSelectorWidget();\n const optMiniTeaserPaths = [...new Set(this.optMiniTeasersSource.map((item) => item[this.path]))];\n this.teaserService.fetchOptMiniTeasers(optMiniTeaserPaths);\n this.initiatePostLoginRemainingFeed(casinoNpmParams, initiateDisjointFeeds);\n this.jackpotAndPromotionsService.initiateJackpotandPromotionBanner(casinoNpmParams);\n this.subscribeCoinBalance();\n this.postLoginFeedsInitiated = true;\n }\n }\n\n getApplicableLobbyTypes(applicableLobbyTypeMaps: any): any {\n applicableLobbyTypeMaps = applicableLobbyTypeMaps.filter(\n (af: any) => af?.invokerProduct?.toLowerCase() === this.invokerProductService.getInvokerProduct() && af.fetchMeta,\n );\n return applicableLobbyTypeMaps;\n }\n\n private getApplicableLobbyTypeMapsDynacon(): any[] {\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n const applicableLobbyTypeMaps = lmtConfig.lobbyTypeMap;\n //TODO: filter as per invokerProduct\n return this.getApplicableLobbyTypes(applicableLobbyTypeMaps);\n }\n\n private async retrieveRawLobbyTypesMapDataFromLocalStorage(respondBack: boolean = false) {\n const applicableLobbyTypeMaps = this.getApplicableLobbyTypeMapsDynacon();\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const collectedLobbies: any = [];\n let allApplicableLobbyDataPresent: boolean = false;\n\n if (applicableLobbyTypeMaps && applicableLobbyTypeMaps.length > 0) {\n for (let i = 0; i < applicableLobbyTypeMaps.length; i++) {\n const lobbyType: string = applicableLobbyTypeMaps[i].lobbyType;\n const lobbyTypeMapsInCache: LobbyItemBaseModel | any = await this.cacheManager.readCategoryDataLocalCache(\n featuresConfig.browserLocalStorageCategoryDataUpdateInterval,\n lobbyType,\n applicableLobbyTypeMaps[i]?.invokerProduct?.toLowerCase(),\n );\n if (lobbyTypeMapsInCache != null) {\n collectedLobbies.push({\n lobbyType,\n feed: lobbyTypeMapsInCache,\n });\n allApplicableLobbyDataPresent = true;\n } else {\n allApplicableLobbyDataPresent = false;\n break;\n }\n }\n if (allApplicableLobbyDataPresent && collectedLobbies && collectedLobbies.length > 0) {\n dispatchEvent(\n new CustomEvent('LocalStorage_Collected_Lobbies', {\n detail: { collectedLobbies },\n }),\n );\n } else if (respondBack) {\n dispatchEvent(new CustomEvent('LocalStorage_Collected_Lobbies'));\n }\n this.globalSearchService.hidingGlobalSearch();\n }\n }\n\n async checkAndRetrieveAllLobbyTypeMapsOnLocalStorage(applicableLobbyTypeMaps: any): Promise<Map<string, LobbyItem> | any> {\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const lobbyTypeMaps: Map<string, LobbyItem> = new Map<string, LobbyItem>();\n let allApplicableLobbyDataPresent: boolean = false;\n if (applicableLobbyTypeMaps && applicableLobbyTypeMaps.length > 0) {\n for (let i = 0; i < applicableLobbyTypeMaps.length; i++) {\n const lobbyTypeMapsInCache: LobbyItemBaseModel | any = await this.cacheManager.readCategoryDataLocalCache(\n featuresConfig.browserLocalStorageCategoryDataUpdateInterval,\n applicableLobbyTypeMaps[i].lobbyType,\n applicableLobbyTypeMaps[i]?.invokerProduct?.toLowerCase(),\n );\n\n if (lobbyTypeMapsInCache != null) {\n const UILobby: LobbyItem = new LobbyItem();\n UILobby.setLobbyItemFromLocalStorage(lobbyTypeMapsInCache);\n // filling gameMetaDataMap\n for (let i = 0; i < lobbyTypeMapsInCache?.lsGameMetaDataMap?.length; i++) {\n const gameItem = lobbyTypeMapsInCache?.lsGameMetaDataMap[i][1];\n this.gameMetaDataMap.set(gameItem.game, gameItem);\n }\n lobbyTypeMaps.set(applicableLobbyTypeMaps[i].lobbyType, UILobby);\n allApplicableLobbyDataPresent = true;\n } else {\n allApplicableLobbyDataPresent = false;\n break;\n }\n }\n this.gameManagerService.updateMetaData(this.gameMetaDataMap);\n } else {\n this.logger.error('Please configure necessary lobbyTypeMaps in dynacon');\n allApplicableLobbyDataPresent = false;\n }\n\n if (this.gJLobbyTypeMaps && this.gJLobbyTypeMaps.size > 0) {\n this.gJLobbyTypeMaps.forEach((v: any, k: string) => {\n lobbyTypeMaps.set(k, v);\n });\n }\n\n if (lobbyTypeMaps && lobbyTypeMaps.size > 0) {\n this.gameSelectorWidgetSource = [];\n const gameSelectorWidgetConfig = this.configProviderService.provideGameSelectorWidgetConfig();\n\n this.optMiniTeasersSource = [];\n const optimizedTeaserConfig = this.configProviderService.provideOptimizedTeaserConfig();\n\n lobbyTypeMaps.forEach((lobbyType: any) => {\n if (lobbyType.categoriesMap && lobbyType.categoriesMap.size > 0) {\n lobbyType.categoriesMap.forEach((category: any) => {\n const catSitecoreData = category.sitecoreData;\n if (\n gameSelectorWidgetConfig?.isEnabled &&\n catSitecoreData?.displayGameSelectorWidget &&\n catSitecoreData?.gameSelectorWidget\n ) {\n this.gameSelectorWidgetSource.push(catSitecoreData?.gameSelectorWidget);\n }\n\n if (\n catSitecoreData?.optimisedMiniTeasers?.length &&\n optimizedTeaserConfig.teaserOptimization &&\n optimizedTeaserConfig.enableOptMiniTeasers &&\n !this.isTouchDevice\n ) {\n this.optMiniTeasersSource.push(...catSitecoreData.optimisedMiniTeasers);\n }\n });\n }\n });\n }\n return allApplicableLobbyDataPresent ? lobbyTypeMaps : new Map<string, LobbyItem>();\n }\n\n private async checkAndRetrieveAllCustomLobbyTypeMapsOnLocalStorage(customLobbyTypes: any): Promise<Map<string, LobbyItem> | any> {\n const customLobbyTypeMaps: any = this.getApplicableLobbyTypes(customLobbyTypes);\n return this.checkAndRetrieveAllLobbyTypeMapsOnLocalStorage(customLobbyTypeMaps);\n }\n\n async checkAndRetrieveAllApplicableLobbyTypeMapsOnLocalStorage(): Promise<Map<string, LobbyItem> | any> {\n const applicableLobbyTypeMaps = this.getApplicableLobbyTypeMapsDynacon();\n return this.checkAndRetrieveAllLobbyTypeMapsOnLocalStorage(applicableLobbyTypeMaps);\n }\n\n async setPartialCasinoLobby(lobbyType: string) {\n this.lmtConfig = this.configProviderService.provideLmtConfig();\n await this.readAndDispatchLobbyDataForGlobalSearch();\n if (this.lobbyTypeMaps?.size > 0 && this.lobbyTypeMaps?.get(lobbyType)?.categoriesMap) {\n return;\n }\n this.lobbyTypeMaps = await this.checkAndRetrieveAllApplicableLobbyTypeMapsOnLocalStorage();\n if (!this.lobbyTypeMaps) {\n this.lobbyTypeMaps = new Map<string, LobbyItem>();\n }\n if (this.lobbyTypeMaps?.size > 0 && this.lobbyTypeMaps?.get(lobbyType)?.categoriesMap) {\n this.setCasinoLobbyFromLocalStorage(this.lobbyTypeMaps, true);\n } else {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const invokerProduct: string = this.invokerProductService.getInvokerProduct();\n this.casinoApiService.getCasinoProductApi(apiPathsConfig.lmt.lmtPartialFeed, { lobbyType, invokerProduct }).subscribe(\n async (response: any) => {\n if (response) {\n // for testing language content is not available from the feed please don't delete this commented block\n // if (this.lmtConfig?.enableLMTMockData) {\n // delete response?.collectedLobby[0]?.lobbyFeedJson?.lobbyconfiguration?.languageContent;\n // }\n this.setLobbyContent(response, false);\n if (this.lmtConfig.enablePostloginPartialCalls) {\n const postLogin = this.user.isAuthenticated ? true : false;\n this.setCasinoLobby(true, postLogin);\n } else {\n this.setCasinoLobby(true);\n }\n await this.readAndDispatchLobbyDataForGlobalSearch();\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve casino lobby data' + error);\n },\n );\n }\n }\n\n async setPartialCasinoLobbiesforOtherProducts(customLobbyTypes: any, initiateDisjointFeeds: boolean, postLogin: boolean = false) {\n this.lobbyTypeMaps = await this.checkAndRetrieveAllCustomLobbyTypeMapsOnLocalStorage(customLobbyTypes);\n if (!this.lobbyTypeMaps) {\n this.lobbyTypeMaps = new Map<string, LobbyItem | any>();\n }\n if (this.lobbyTypeMaps && this.lobbyTypeMaps.size > 0) {\n this.setCasinoLobbyFromLocalStorage(this.lobbyTypeMaps, initiateDisjointFeeds, postLogin);\n } else {\n if (this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR) || this.casinoCookieService.isODR(ODR_NAME.SPORTS_WODR)) {\n customLobbyTypes = this.configProviderService.provideLmtConfig()?.otherProductsLobbyTypeForOdr\n ? this.configProviderService.provideLmtConfig().otherProductsLobbyTypeForOdr\n : null;\n }\n const endPoint = this.apiPathsHelperService.transformApi(\n 'lmtfeed/GetCustomLobbyTypesFeed?invokerProduct=${args[0]}',\n this.invokerProductService.getInvokerProduct(),\n );\n this.api.post(endPoint, customLobbyTypes, { withCredentials: true }).subscribe(\n async (response: any) => {\n if (response) {\n this.setLobbyContent(response, initiateDisjointFeeds, postLogin);\n await this.readAndDispatchLobbyDataForGlobalSearch();\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve casino lobby data' + error);\n },\n );\n }\n }\n\n //used in globalsearchservice (casino/app/src)\n async readAndDispatchLobbyDataForGlobalSearch(respondBack: boolean = false) {\n const globalSearchConfig = this.configProviderService.provideGlobalSearchConfig();\n globalSearchConfig?.isEnabled && (await this.retrieveRawLobbyTypesMapDataFromLocalStorage(respondBack));\n }\n\n //Call this function to set the content of the lobby\n\n async setCasinoLobby(initiateDisjointFeeds: boolean, postLogin: boolean = false, fromGlobalJackpotFeedInit: boolean = false) {\n const tempLobbyTypeMaps: Map<string, LobbyItem | any> = cloneDeep(this.lobbyTypeMaps);\n // let tempLobbyTypeMaps: Map<string, any> = new Map<string, any>([...this.lobbyTypeMaps].map(x => Object.assign({}, x))) ;\n const lmtConfig: any = this.configProviderService.provideLmtConfig();\n this.lobbyTypeMaps = await this.checkAndRetrieveAllApplicableLobbyTypeMapsOnLocalStorage();\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n if (!this.lobbyTypeMaps) {\n this.lobbyTypeMaps = new Map<string, any>();\n }\n if (this.lobbyTypeMaps && this.lobbyTypeMaps.size > 0) {\n this.setCasinoLobbyFromLocalStorage(this.lobbyTypeMaps, initiateDisjointFeeds, postLogin);\n } else {\n this.lobbyTypeMaps = tempLobbyTypeMaps || new Map<string, any>();\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const endPoint = this.apiPathsHelperService.transformApi(\n apiPathsConfig.lmt.lmtFeedOfProduct,\n this.invokerProductService.getInvokerProduct(),\n );\n\n this.casinoApiService.getCasinoProductApi(endPoint, null).subscribe(\n async (response: any) => {\n if (response) {\n if (lmtConfig.enableDynamicSequentialCalls && !this.rpfavandunfinishedcalled) {\n this.recentGamesService.setRecentGames();\n this.favouriteService.setFavouriteGames();\n this.unfinishedGamesService.setUnfinishedGames();\n this.rpfavandunfinishedcalled = true;\n }\n this.setLobbyContent(response, initiateDisjointFeeds, postLogin);\n await this.readAndDispatchLobbyDataForGlobalSearch();\n if (featuresConfig?.storeVendorInfoInCache && !fromGlobalJackpotFeedInit) {\n this.getAllVendorDetails();\n }\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve casino lobby data' + error);\n },\n );\n }\n }\n\n private getAllVendorDetails() {\n this.api.get('QuickInfo/ProcessVendors').subscribe({\n next: () => {},\n error: (error) => {\n this.logger.error('Unable to retrieve vendors data' + error);\n },\n });\n }\n\n private subscribeCoinBalance() {\n this.gamificationService.coinBalance.subscribe(\n (coinBalRes: any) => {\n this.userCoinBalance = parseInt(coinBalRes?.balance);\n const coinsEarnedInCurrentMonth = coinBalRes.additionalAttribs.find((obj: any) => obj.key === '#COINS_EARNED_CURRENT_MONTH#').value;\n if (this.userCoinBalance > 0) {\n const balance =\n new Date().getDate() >= this.configProviderService.providePromoCoinEconomyConfig()?.coinExpiryDay\n ? this.userCoinBalance\n : this.userCoinBalance - coinsEarnedInCurrentMonth;\n if (balance > 0) this.coinBalancePublisher.next(+balance);\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve coin balance' + error);\n },\n );\n }\n\n //no references for this function\n getCoinBalance() {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n return this.api.get(apiPathsConfig.slotRaces.racesCoinBalance, {}, { withCredentials: true });\n }\n\n private setCasinoLobbyFromLocalStorage(\n lobbyTypeMapsFromLocalStorage: Map<string, any>,\n initiateDisjointFeeds: boolean,\n postLogin: boolean = false,\n ) {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n this.casinoApiService.getCasinoProductApi(apiPathsConfig.gamesServices.disabledGames, null).subscribe(\n (response) => {\n this.disabledGames = response;\n const lobbyLoadEvent: any = {\n lobbyTypeMaps: lobbyTypeMapsFromLocalStorage,\n initiateFeeds: initiateDisjointFeeds,\n userAuthenticated: this.user.isAuthenticated,\n isPostLogin: postLogin,\n };\n this.publishLobbyLoadedEvent(lobbyLoadEvent);\n },\n (error) => {\n this.logger.error(error);\n const lobbyLoadEvent: any = {\n lobbyTypeMaps: lobbyTypeMapsFromLocalStorage,\n initiateFeeds: initiateDisjointFeeds,\n userAuthenticated: this.user.isAuthenticated,\n isPostLogin: postLogin,\n };\n this.publishLobbyLoadedEvent(lobbyLoadEvent);\n },\n );\n }\n\n async setCasinoLobbyForInvokerProduct(lobbyType: string, invokerProduct: string) {\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n this.lobbyTypeMapsForInvokerProduct.clear();\n const lobbyTypeMapsInCache: LobbyItemBaseModel | any = await this.cacheManager.readCategoryDataLocalCache(\n featuresConfig.browserLocalStorageCategoryDataUpdateInterval,\n lobbyType,\n invokerProduct?.toLowerCase(),\n );\n\n if (lobbyTypeMapsInCache) {\n const UILobby: LobbyItem = new LobbyItem();\n UILobby.setLobbyItemFromLocalStorage(lobbyTypeMapsInCache);\n this.lobbyTypeMapsForInvokerProduct.set(lobbyType, UILobby);\n }\n if (this.lobbyTypeMapsForInvokerProduct && this.lobbyTypeMapsForInvokerProduct.size > 0) {\n const lobbyLoadEvent: any = {\n lobbyTypeMaps: this.lobbyTypeMapsForInvokerProduct,\n userAuthenticated: this.user.isAuthenticated,\n };\n this.publishLobbyLoadedEventForInvokerProduct(lobbyLoadEvent);\n } else {\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n\n this.casinoApiService\n .getCasinoProductApi(apiPathsConfig.lmt.lmtPartialFeed, { lobbyType, invokerProduct }, { withCredentials: true })\n .subscribe(\n (response: any) => {\n if (response) {\n this.setLobbyContentForInvokerProduct(response, lobbyType, invokerProduct);\n }\n },\n (error) => {\n this.logger.error('Unable to retrieve casino lobby data' + error);\n },\n );\n }\n }\n\n initiateCasinoLobby(casinoCoreNpmParams: CasinoCoreNpmParams) {\n this.casinoCoreNpmParamsService.setcasinoCoreNpmParams(casinoCoreNpmParams);\n this.configProviderService.fillClientConfig(casinoCoreNpmParams.isDll);\n //We dont need this as we fetch this from vanilla deviceService.isTouch\n //Check for usages and replace it with deviceService.isTouch\n this.checkForTouchDevice();\n }\n\n private publishLobbyLoadedEvent(lobbyLoadEvent: any) {\n this.setSearchCriteriaforCategoryGames();\n lobbyLoadEvent.isLoggedIn = this.user.isAuthenticated;\n this.lobbyLoadedSubject.next(lobbyLoadEvent);\n this.raiseLobbyLoadedEvent(lobbyLoadEvent);\n }\n\n private publishLobbyLoadedEventForInvokerProduct(lobbyLoadEvent: any) {\n this.lobbyLoadedSubjectForInvokerProduct.next(lobbyLoadEvent);\n this.raiseLobbyLoadedEvent(lobbyLoadEvent);\n }\n\n private setLobbyContent(lobbyData: any, initiateDisjointFeeds: boolean, postLogin: boolean = false) {\n this.setLobbySitecoreData(lobbyData.collectedSitecoreCategory);\n this.setLobbyTypeMaps(lobbyData.collectedLobby, initiateDisjointFeeds, postLogin);\n this.setDisabledGames(lobbyData.disabledGames);\n }\n\n private setLobbyContentForInvokerProduct(lobbyData: any, lobbyType: string, invokerProduct: string) {\n this.setLobbySitecoreDataForInvokerProduct(lobbyData.collectedSitecoreCategory);\n this.setLobbyTypeMapsForInvokerProduct(lobbyData.collectedLobby, lobbyType, invokerProduct);\n }\n\n private setLobbySitecoreData(lobbySitecoreData: any) {\n this.lobbySitecoreData = lobbySitecoreData;\n }\n\n private setLobbySitecoreDataForInvokerProduct(lobbySitecoreData: any) {\n this.lobbySitecoreDataForInvokerProduct = lobbySitecoreData;\n }\n\n private getLobbySitecoreData() {\n return this.lobbySitecoreData ? this.lobbySitecoreData : this.lobbySitecoreDataForInvokerProduct;\n }\n\n private setLobbyTypeMaps(lobbiesInfo: any, initiateDisjointFeeds: boolean, postLogin: boolean = false) {\n if (lobbiesInfo && lobbiesInfo.length > 0) {\n for (let i = 0; i < lobbiesInfo.length; i++) {\n const lobbyMapItem: LobbyInfo = this.getLobbyTypeItemMap(lobbiesInfo[i]);\n this.lobbyTypeMaps.set(lobbyMapItem.key, lobbyMapItem.value);\n this.cacheManager.writeCategoryLocalStorageCacheMap(\n lobbyMapItem.key,\n cloneDeep(lobbyMapItem.value),\n //{...lobbyMapItem.value},\n this.invokerProductService.getInvokerProduct(),\n );\n }\n\n if (this.gJLobbyTypeMaps && this.gJLobbyTypeMaps.size > 0) {\n this.gJLobbyTypeMaps.forEach((v: any, k: string) => {\n this.lobbyTypeMaps.set(k, v);\n });\n }\n const lobbyLoadEvent: any = {\n lobbyTypeMaps: this.lobbyTypeMaps,\n initiateFeeds: initiateDisjointFeeds,\n userAuthenticated: this.user.isAuthenticated,\n isPostLogin: postLogin,\n };\n this.publishLobbyLoadedEvent(lobbyLoadEvent);\n }\n }\n\n private setLobbyTypeMapsForInvokerProduct(lobbiesInfo: any, lobbyType: string, invokerProduct: string) {\n let checkForLobbyTypeInLobbiesInfo: boolean = false;\n if (lobbiesInfo && lobbiesInfo.length > 0) {\n for (let i = 0; i < lobbiesInfo.length; i++) {\n if (lobbyType == lobbiesInfo[i].lobbyType) {\n checkForLobbyTypeInLobbiesInfo = true;\n lobbiesInfo = lobbiesInfo[i];\n break;\n }\n }\n if (checkForLobbyTypeInLobbiesInfo) {\n const lobbyMapItem: LobbyInfo = this.getLobbyTypeItemMap(lobbiesInfo);\n this.lobbyTypeMapsForInvokerProduct.set(lobbyMapItem.key, lobbyMapItem.value);\n this.cacheManager.writeCategoryLocalStorageCacheMap(\n lobbyMapItem.key,\n cloneDeep(lobbyMapItem.value),\n //{...lobbyMapItem.value},\n invokerProduct?.toLowerCase(),\n );\n }\n const lobbyLoadEvent: any = {\n lobbyTypeMaps: this.lobbyTypeMapsForInvokerProduct,\n userAuthenticated: this.user.isAuthenticated,\n };\n this.publishLobbyLoadedEventForInvokerProduct(lobbyLoadEvent);\n }\n }\n\n private getLobbyTypeItemMap(lobbyInfo: any) {\n const lobbyContent: LobbyItem = this.getLobbyContent(lobbyInfo?.lobbyFeedJson?.lobbyconfiguration, lobbyInfo?.lobbyType);\n const MapKeyValuePair: LobbyInfo = {\n key: lobbyInfo?.lobbyType,\n value: lobbyContent,\n };\n return MapKeyValuePair;\n }\n\n setDisabledGames(disabledGamesData: any) {\n this.disabledGames = disabledGamesData;\n }\n\n getDisabledGames() {\n if (this.disabledGames) {\n return this.disabledGames;\n }\n return [];\n }\n\n private getLobbyContent(lobbyConfiguration: any, lobbyType: string): LobbyItem {\n let categoryTitleLanguageMap: Map<string, string> = new Map<string, string>();\n let stickerTitleLanguageMap: Map<string, string> = new Map<string, string>();\n let gameMetaDataMap: Map<string, GameMetaDataMap> = new Map<string, GameMetaDataMap>();\n if (lobbyConfiguration) {\n if (lobbyConfiguration.languageContent?.[0]) {\n if (lobbyConfiguration.languageContent[0].categories && lobbyConfiguration.languageContent[0].categories.length > 0) {\n categoryTitleLanguageMap = this.utilityService.getLanguageContentMap(lobbyConfiguration.languageContent[0].categories);\n }\n if (lobbyConfiguration.languageContent[0].stickers && lobbyConfiguration.languageContent[0].stickers.length > 0) {\n stickerTitleLanguageMap = this.utilityService.getLanguageContentMap(lobbyConfiguration.languageContent[0].stickers);\n }\n }\n if (lobbyConfiguration?.gamemetadata && lobbyConfiguration.gamemetadata?.length > 0) {\n gameMetaDataMap = this.getGameMetaDataMap(lobbyConfiguration.gamemetadata, lobbyType);\n }\n }\n const lobbyCategoriesMap: Map<string, any> = new Map<string, any>();\n const lobbySubCategoriesMap: Map<string, any> = new Map<string, any>();\n\n if (lobbyConfiguration?.categories && lobbyConfiguration.categories.length > 0) {\n for (let i = 0; i < lobbyConfiguration.categories.length; i++) {\n const lobbyCategory: any = this.getLobbyCategory(lobbyConfiguration.categories[i], categoryTitleLanguageMap, lobbyType);\n if (lobbyCategory.subcategories && lobbyCategory.subcategories.length > 0) {\n lobbyCategory.lmtSubCategories = [];\n for (let j = 0; j < lobbyCategory.subcategories.length; j++) {\n const lobbySubCategory: any = this.getLobbySubCategory(lobbyCategory.subcategories[j], categoryTitleLanguageMap, lobbyType);\n lobbySubCategory.parentCategoryId = lobbyCategory.categoryid; //this.getParentCategoryId(lobbyCategory.subcategories[j], allLobbyCategories);\n lobbySubCategory.parentLMTCategoryId = lobbyCategory.lmtCategoryId;\n lobbySubCategory.filterRecentlyPlayedGames = this.isFilterRecentlyPlayedGames(\n lobbyConfiguration.catVsFeatureMetadata,\n lobbySubCategory,\n );\n lobbySubCategory.havingCasiaGames = this.filterCasiaCategory(lobbyConfiguration.catVsFeatureMetadata, lobbySubCategory);\n if (this.configProviderService.provideAdvanceGameDataConfig().enableFeatureId) {\n lobbySubCategory.filterFeatureIds = this.isFilterFeatureIds(lobbyConfiguration.catVsFeatureMetadata, lobbySubCategory);\n }\n if (lobbySubCategory.route) lobbySubCategoriesMap.set(lobbySubCategory.route, lobbySubCategory);\n lobbyCategory.lmtSubCategories.push(lobbySubCategory.categoryid);\n }\n }\n if (lobbyCategory.route) lobbyCategoriesMap.set(lobbyCategory.route, lobbyCategory);\n }\n\n const recentPlayedCategory: any = {\n categoryid: ConstService?.Recent_Games?.toLowerCase(),\n route: ConstService?.Recent_Games?.toLowerCase(),\n categoryname: this.getCategoryNameFromSitecore(ConstService?.Recent_Games?.toLowerCase(), lobbyType, true),\n subTitle: this.getSubtitleFromSitecore(ConstService?.Recent_Games?.toLowerCase(), lobbyType),\n isNavigationCategory: true,\n sitecoreData: this.getSitecoreInfoForCategoryIdAndLobbyType(ConstService?.Recent_Games?.toLowerCase(), lobbyType),\n isSubCatVisible: false,\n lmtCategoryId: ConstService.Recent_Games.toUpperCase(),\n engCategoryName: 'RECENTGAMES',\n };\n\n lobbyCategoriesMap.set(recentPlayedCategory.route, recentPlayedCategory);\n\n const favouritesCategory: any = {\n categoryid: ConstService?.Favourite_Games?.toLowerCase(),\n route: ConstService?.Favourite_Games?.toLowerCase(),\n categoryname: this.getCategoryNameFromSitecore(ConstService?.Favourite_Games?.toLowerCase(), lobbyType, true),\n subTitle: this.getSubtitleFromSitecore(ConstService?.Favourite_Games?.toLowerCase(), lobbyType),\n isNavigationCategory: true,\n sitecoreData: this.getSitecoreInfoForCategoryIdAndLobbyType(ConstService?.Favourite_Games?.toLowerCase(), lobbyType),\n isSubCatVisible: true,\n lmtCategoryId: ConstService.Favourite_Games.toUpperCase(),\n engCategoryName: 'FAVOURITEGAMES',\n };\n lobbyCategoriesMap.set(favouritesCategory.route, favouritesCategory);\n if (lobbySubCategoriesMap.size > 0) {\n lobbySubCategoriesMap.forEach((subcategory: any, subcategoryRoute: string) => {\n lobbyCategoriesMap.set(subcategoryRoute, subcategory);\n });\n }\n }\n\n const UILobby: LobbyItem = new LobbyItem();\n UILobby.setCategoriesMap(lobbyCategoriesMap);\n UILobby.setcategoryNameLangMap(categoryTitleLanguageMap);\n UILobby.setStickerNameMap(stickerTitleLanguageMap);\n UILobby.setGameMetaDataMap(gameMetaDataMap);\n UILobby.lbyTempName = lobbyConfiguration?.lbyTempName;\n UILobby.lbyTargetType = lobbyConfiguration?.lbyTargetType;\n UILobby.optSegName = lobbyConfiguration?.optSegName;\n UILobby.catVsFeatureMetadata = lobbyConfiguration?.catVsFeatureMetadata;\n UILobby.lobbyGameIconImageSuffix = lobbyConfiguration?.lobbyGameIconImageSuffix;\n return UILobby;\n }\n\n private isFilterRecentlyPlayedGames(catVsFeatureMetadata: any[], lobbySubCategory: any): boolean {\n let isFilterRPGames: boolean = false;\n if (catVsFeatureMetadata && catVsFeatureMetadata.length != 0) {\n catVsFeatureMetadata.forEach((metadata: any) => {\n if (metadata.subCategoryId == lobbySubCategory.subcategoryid && metadata.featureIds.indexOf('FilterRecentlyPlayedGames') > -1) {\n isFilterRPGames = true;\n return;\n }\n });\n }\n return isFilterRPGames;\n }\n\n private filterCasiaCategory(catVsFeatureMetadata: any[], lobbySubCategory: any): boolean {\n if (catVsFeatureMetadata && catVsFeatureMetadata.length > 0) {\n const category: any = catVsFeatureMetadata.filter((item) => item.subCategoryId == lobbySubCategory.subcategoryid);\n if (category && category.length > 0) {\n return category[0].featureIds.indexOf('CasiaGamesYouMightLike') > -1;\n }\n }\n return false;\n }\n\n private isFilterFeatureIds(catVsFeatureMetadata: any[], lobbySubCategory: any) {\n let featureIds: any = null;\n if (catVsFeatureMetadata && catVsFeatureMetadata.length > 0) {\n catVsFeatureMetadata.forEach((metadata: any) => {\n if (metadata.subCategoryId == lobbySubCategory.subcategoryid) {\n featureIds =\n metadata?.featureIds.length == 1\n ? metadata?.featureIds\n : { ...metadata?.featureIds.filter((item: any) => item !== 'FilterRecentlyPlayedGames') };\n return featureIds[0];\n } else {\n return featureIds;\n }\n });\n }\n return featureIds;\n }\n\n getGameMetaDataMap(gameMetaDataArray: any, lobbyType: string): Map<string, GameMetaDataMap> {\n const gameMetaDataMap: Map<string, GameMetaDataMap> = new Map<string, GameMetaDataMap>();\n if (gameMetaDataArray && gameMetaDataArray.length > 0) {\n for (let i = 0; i < gameMetaDataArray.length; i++) {\n const gameItem: any = gameMetaDataArray[i];\n gameItem.metaLobbyType = lobbyType;\n gameMetaDataMap.set(gameItem.game, gameItem);\n this.gameMetaDataMap.set(gameItem.game, gameItem);\n }\n this.gameManagerService.updateMetaData(this.gameMetaDataMap);\n }\n return gameMetaDataMap;\n }\n private setSearchCriteriaforCategoryGames() {\n const categoryGamesConfig = this.configProviderService.provideSearchConfig();\n if (categoryGamesConfig.enableCategorySearchCriteria && categoryGamesConfig.categoryGamesSearchCriteria.length > 0) {\n for (const key of this.lobbyTypeMaps.keys()) {\n for (let j = 0; j < categoryGamesConfig.categoryGamesSearchCriteria.length; j++) {\n const categoryRoute = categoryGamesConfig?.categoryGamesSearchCriteria[j]?.categoryRoute?.trim()?.toLowerCase();\n const category = this.getCategoryInfo(key, categoryRoute);\n if (category?.categoryInfo?.gamelist && category.categoryInfo.gamelist.length > 0) {\n for (let k = 0; k < category.categoryInfo.gamelist.length; k++) {\n const gameId = category.categoryInfo.gamelist[k].game;\n const gameObject = this.gameMetaDataMap.get(gameId);\n if (gameObject) {\n gameObject.condition = categoryGamesConfig.categoryGamesSearchCriteria[j].clientDsl;\n this.gameMetaDataMap.set(gameId, gameObject);\n }\n }\n }\n }\n }\n this.gameManagerService.updateMetaData(this.gameMetaDataMap);\n }\n }\n\n private getLobbyCategory(lobbyCategory: any, categoryTitleLangMap: any, lobbyType: string) {\n if (lobbyCategory) {\n const lmtCategoryId: string = lobbyCategory.categoryid;\n lobbyCategory.lmtCategoryId = lmtCategoryId;\n if (lobbyCategory.route) {\n if (lobbyCategory.categoryid === ConstService.LMC_GYML) {\n lobbyCategory.isSubCatVisible = false;\n } else {\n lobbyCategory.categoryid = lobbyCategory?.route?.replace(/\\s/g, '')?.toLowerCase();\n lobbyCategory.isSubCatVisible = true;\n }\n lobbyCategory.route = lobbyCategory.categoryid;\n }\n lobbyCategory.engCategoryName = cloneDeep(lobbyCategory.categoryname);\n // lobbyCategory.engCategoryName = {...lobbyCategory.categoryname};\n lobbyCategory.categoryname = this.getCategoryNameFromLangMap(lmtCategoryId, categoryTitleLangMap, lobbyCategory.categoryname);\n lobbyCategory.isNavigationCategory = this.getNavigationVisibility(lobbyCategory.isHidden);\n if (lobbyCategory.route) {\n lobbyCategory.sitecoreData = this.getSitecoreInfoForCategoryIdAndLobbyType(lobbyCategory.route, lobbyType);\n }\n const titleAndSubTitle: any = this.getTitleAndSubTitle(lobbyCategory);\n lobbyCategory.categoryname = titleAndSubTitle.title;\n lobbyCategory.subTitle = titleAndSubTitle.subTitle;\n return lobbyCategory;\n }\n }\n\n private getLobbySubCategory(lobbySubCategory: any, categoryTitleLangMap: any, lobbyType: string) {\n if (lobbySubCategory) {\n const lmtCategoryId: string = lobbySubCategory.subcategoryid;\n lobbySubCategory.lmtCategoryId = lmtCategoryId;\n if (lobbySubCategory.route) {\n if (lobbySubCategory.subcategoryid === ConstService.LMC_GYML) {\n lobbySubCategory.categoryid = lobbySubCategory.subcategoryid;\n lobbySubCategory.isSubCatVisible = false;\n } else {\n lobbySubCategory.categoryid = lobbySubCategory?.route?.replace(/\\s/g, '')?.toLowerCase();\n lobbySubCategory.isSubCatVisible = true;\n }\n lobbySubCategory.categoryid =\n lobbySubCategory.subcategoryid === ConstService.LMC_GYML\n ? lobbySubCategory.subcategoryid\n : lobbySubCategory?.route?.replace(/\\s/g, '')?.toLowerCase();\n lobbySubCategory.route = lobbySubCategory.categoryid;\n }\n lobbySubCategory.engCategoryName = cloneDeep(lobbySubCategory.subcategoryname);\n // lobbySubCategory.engCategoryName = {...lobbySubCategory.subcategoryname};\n lobbySubCategory.categoryname = this.getCategoryNameFromLangMap(lmtCategoryId, categoryTitleLangMap, lobbySubCategory.subcategoryname);\n lobbySubCategory.sitecoreData = this.getSitecoreInfoForCategoryIdAndLobbyType(lobbySubCategory.categoryid, lobbyType);\n lobbySubCategory.hideSubCategory =\n lobbySubCategory?.subcategoryid?.toLowerCase() === ConstService?.Recent_Games?.toLowerCase() ||\n lobbySubCategory?.subcategoryid?.toLowerCase() === ConstService.LMC_GYML;\n const titleAndSubTitle: any = this.getTitleAndSubTitle(lobbySubCategory);\n lobbySubCategory.categoryname = titleAndSubTitle.title;\n lobbySubCategory.subTitle = titleAndSubTitle.subTitle;\n return lobbySubCategory;\n }\n }\n\n private getCategoryNameFromLangMap(categoryId: string, langMap: any, defaultCategoryName: string): string {\n if (langMap && langMap.size > 0 && langMap.get(categoryId)) {\n return langMap.get(categoryId);\n }\n return defaultCategoryName;\n }\n\n private getNavigationVisibility(hiddenStatus: string) {\n if (hiddenStatus) {\n return hiddenStatus?.toLowerCase().trim() == 'false';\n }\n return true;\n }\n\n private getTitleAndSubTitle(lobbyCategory: any): any {\n let subTitle: any;\n let title: any;\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n if (lobbyCategory) {\n title = lobbyCategory?.sitecoreData?.overridenCategoryname || lobbyCategory?.categoryname;\n if (lobbyCategory?.sitecoreData) {\n subTitle = lobbyCategory?.sitecoreData?.headerTitle;\n }\n if (featuresConfig.delimiterForDynamicGameNames && featuresConfig.delimiterForDynamicGameNames != '') {\n const splitArr: string[] = (lobbyCategory?.sitecoreData?.overridenCategoryname || lobbyCategory.categoryname).split(\n featuresConfig.delimiterForDynamicGameNames,\n );\n title = splitArr[0];\n if (splitArr[1]) {\n subTitle = splitArr[1];\n }\n }\n }\n const titleAndSubTitle = {\n title,\n subTitle,\n };\n return titleAndSubTitle;\n }\n\n private getSitecoreInfoForCategoryIdAndLobbyType(categoryid: string, lobbyType: string) {\n const optimizedTeaserConfig = this.configProviderService.provideOptimizedTeaserConfig();\n const gameSelectorWidgetConfig = this.configProviderService.provideGameSelectorWidgetConfig();\n\n const allLobbiesSitecoreData: any = this.getLobbySitecoreData();\n if (allLobbiesSitecoreData) {\n for (let i = 0; i < allLobbiesSitecoreData.length; i++) {\n if (allLobbiesSitecoreData[i].lobbyType == lobbyType) {\n const lobbySitecoreData = allLobbiesSitecoreData[i].sitecoreData;\n for (let j = 0; j < lobbySitecoreData.length; j++) {\n const catSitecoreData = lobbySitecoreData[j];\n if (catSitecoreData?.categoryId?.toLowerCase() == categoryid?.toLowerCase()) {\n if (catSitecoreData?.jackpotWidget && catSitecoreData?.jackpotWidget.length > 0) {\n catSitecoreData.jackpotWidgetIds = this.jackpotAndPromotionsService.getJackpotListFromWidget(\n catSitecoreData?.jackpotWidget,\n );\n }\n\n if (\n gameSelectorWidgetConfig?.isEnabled &&\n catSitecoreData?.displayGameSelectorWidget &&\n catSitecoreData?.gameSelectorWidget\n ) {\n this.gameSelectorWidgetSource.push(catSitecoreData?.gameSelectorWidget);\n }\n\n if (\n optimizedTeaserConfig.teaserOptimization &&\n optimizedTeaserConfig.enableOptMiniTeasers &&\n !this.isTouchDevice &&\n catSitecoreData?.optimisedMiniTeasers?.length\n ) {\n this.optMiniTeasersSource.push(...catSitecoreData.optimisedMiniTeasers);\n }\n\n return catSitecoreData;\n }\n }\n }\n }\n }\n\n return {\n attributes: {\n icon: 'theme-home-i',\n },\n };\n }\n\n private getCategoryNameFromSitecore(categoryid: string, lobbyType: string, fallbackCategoryId: boolean): string {\n const sitecoreData: any = this.getSitecoreInfoForCategoryIdAndLobbyType(categoryid, lobbyType);\n if (sitecoreData) {\n return sitecoreData.title;\n }\n if (fallbackCategoryId) {\n return categoryid;\n }\n return '';\n }\n\n private getSubtitleFromSitecore(categoryid: string, lobbyType: string): string {\n const sitecoreData: any = this.getSitecoreInfoForCategoryIdAndLobbyType(categoryid, lobbyType);\n if (sitecoreData) {\n return sitecoreData.headerTitle;\n }\n return '';\n }\n\n getCategoryInfo(lobbyType: string, categoryRoute: string) {\n lobbyType = this.jackpotAndPromotionsService.getGlobalJackpotByLobbyType(lobbyType);\n if (this.lobbyTypeMaps && this.lobbyTypeMaps.size > 0) {\n const lobbyInfo: LobbyItem | any = this.lobbyTypeMaps?.get(lobbyType);\n if (lobbyInfo && lobbyInfo.categoriesMap && lobbyInfo.categoriesMap.size > 0) {\n const catInfo: any = lobbyInfo.categoriesMap.get(categoryRoute);\n const categoryObject: any = {\n categoryInfo: catInfo,\n categoryNameLangMap: lobbyInfo.categoryNameLangMap,\n stickerNameMap: lobbyInfo.stickerNameMap,\n };\n return categoryObject;\n }\n }\n }\n\n getLobbyInfo(lobbyType: string): LobbyItem | any {\n if (this.lobbyTypeMaps && this.lobbyTypeMaps.size > 0) {\n const lobbyInfo: LobbyItem | any = this.lobbyTypeMaps && this.lobbyTypeMaps?.get(lobbyType);\n return lobbyInfo;\n }\n return null;\n }\n\n getCategoryInfoOnLMTId(lobbyType: string, linkedLMTCategoryId: string) {\n const odrLobbyType = this.jackpotAndPromotionsService.getGlobalJackpotByLobbyType(lobbyType);\n lobbyType =\n this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR) || this.casinoCookieService.isODR(ODR_NAME.SPORTS_WODR) ? odrLobbyType : lobbyType;\n const lobbyInfo: LobbyItem | any = this.lobbyTypeMaps?.get(lobbyType);\n if (lobbyInfo && lobbyInfo.categoriesMap && lobbyInfo.categoriesMap.size > 0) {\n const linkedCategoryInfo: any = Array.from(lobbyInfo.categoriesMap.values()).filter(\n (categoryItem: any) => categoryItem.lmtCategoryId === linkedLMTCategoryId,\n );\n if (linkedCategoryInfo && linkedCategoryInfo.length > 0) {\n return linkedCategoryInfo[0];\n }\n }\n }\n\n getGameMetaData() {\n return this.gameMetaDataMap;\n }\n\n isDefaultCategory(lobbyType: string, categoryRoute: string): boolean {\n if (lobbyType && lobbyType != '' && categoryRoute && categoryRoute != '') {\n const defaultCategory: any = this.getDefaultOrFirstCategoryInfo(lobbyType);\n if (defaultCategory?.categoryInfo) {\n if (defaultCategory.categoryInfo.categoryid === categoryRoute) {\n return true;\n }\n }\n }\n return false;\n }\n\n getDefaultOrFirstCategoryInfo(lobbyType: string) {\n let defaultCategory: any;\n let lobbyInfo: any;\n lobbyType = this.jackpotAndPromotionsService.getGlobalJackpotByLobbyType(lobbyType);\n if (this.lobbyTypeMaps && this.lobbyTypeMaps.size > 0) {\n lobbyInfo = this.lobbyTypeMaps?.get(lobbyType);\n if (lobbyInfo?.categoriesMap && lobbyInfo.categoriesMap.size > 0) {\n const casinoConfig: any = this.configProviderService.provideCasinoConfig();\n const defaultCategoryOnDynacon: string = this.casinoManager.IsFeatureEnabledforLobbytype(\n lobbyType,\n casinoConfig.defaultyLobbyTypeCategory,\n );\n\n if (defaultCategoryOnDynacon && defaultCategoryOnDynacon != '') {\n defaultCategory = lobbyInfo.categoriesMap.get(defaultCategoryOnDynacon);\n }\n if (!defaultCategory) {\n defaultCategory = lobbyInfo.categoriesMap.entries().next().value[1];\n }\n }\n }\n if (defaultCategory && lobbyInfo) {\n const defaultCategoryObject: any = {\n categoryInfo: defaultCategory,\n categoryNameLangMap: lobbyInfo.categoryNameLangMap,\n stickerNameMap: lobbyInfo.stickerNameMap,\n };\n return defaultCategoryObject;\n }\n }\n\n private getDefaultOrFirstCategoryInfoForInvokerProduct(lobbyType: string) {\n let defaultCategory: any;\n let lobbyInfo: any;\n if (this.lobbyTypeMapsForInvokerProduct && this.lobbyTypeMapsForInvokerProduct.size > 0) {\n lobbyInfo = this.lobbyTypeMapsForInvokerProduct?.get(lobbyType);\n if (lobbyInfo?.categoriesMap && lobbyInfo.categoriesMap.size > 0) {\n const casinoConfig: any = this.configProviderService.provideCasinoConfig();\n const defaultCategoryOnDynacon: string = this.casinoManager.IsFeatureEnabledforLobbytype(\n lobbyType,\n casinoConfig.defaultyLobbyTypeCategory,\n );\n\n if (defaultCategoryOnDynacon && defaultCategoryOnDynacon != '') {\n defaultCategory = lobbyInfo.categoriesMap.get(defaultCategoryOnDynacon);\n }\n if (!defaultCategory) {\n defaultCategory = lobbyInfo.categoriesMap.entries().next().value[1];\n }\n }\n }\n if (defaultCategory && lobbyInfo) {\n const defaultCategoryObject: any = {\n categoryInfo: defaultCategory,\n categoryNameLangMap: lobbyInfo.categoryNameLangMap,\n stickerNameMap: lobbyInfo.stickerNameMap,\n };\n return defaultCategoryObject;\n }\n }\n\n getNavCategories(lobbyType: string, productOverride?: string) {\n const featuresConfig = this.configProviderService.provideFeaturesConfig();\n const slotRacesConfig = this.configProviderService.provideSlotRacesConfig();\n const subNavigationConfig = this.configProviderService.provideSubNavigationConfig();\n const lobby: any = this.getLobby(lobbyType);\n const product: string = this.utilityService.getProductForGivenLobbyType(lobbyType);\n const navCategories: any = [];\n const defaultCategoryInfo: any = this.getDefaultOrFirstCategoryInfo(lobbyType)?.categoryInfo;\n if (!productOverride && subNavigationConfig.hardProductOverride) {\n productOverride = subNavigationConfig.hardProductOverride;\n }\n if (lobby?.lobby) {\n const slotRacesCategory = this.casinoManager.getSlotRaceCategoryId(lobbyType);\n const isSlotRacesEnabled = this.casinoManager.IsFeatureEnabledforLobbytype(lobbyType, featuresConfig.enableSlotRacesForLobbyType);\n const lobbyCategoriesMap: Map<string, any> = cloneDeep(lobby.lobby.categoriesMap);\n\n // let lobbyCategoriesMap: Map<string, any> = new Map<string, any>([...lobby.lobby.categoriesMap].map(x => Object.assign({}, x))) ;\n\n if (lobbyCategoriesMap && lobbyCategoriesMap.size > 0) {\n lobbyCategoriesMap.forEach((category: any) => {\n let addCategory: boolean = true;\n const isSlotRacesCategory = slotRacesCategory == category.categoryid;\n const categoryurl = category?.sitecoreData?.categoryUrl;\n if (category.isNavigationCategory) {\n if (!category.sitecoreData) {\n const defaultSitecoreObj: any = {\n attributes: {\n icon: 'theme-home',\n },\n };\n category.sitecoreData = defaultSitecoreObj;\n }\n if (defaultCategoryInfo && defaultCategoryInfo.categoryid === category.categoryid) {\n category.isdefault = true;\n //SEO C ges code\n const lmtData = this.configProviderService.provideLmtConfig();\n\n if (this.productService.isSingleDomainApp && this.isCategoryUnderSubLobby(product)) {\n category.url = `${this.urlUtility.getProductApiBaseUrl(productOverride)}/${this.getParentLobby()}/${product}`;\n } else {\n category.url = `${this.urlUtility.getProductApiBaseUrl(productOverride)}/${product}`;\n }\n if (\n lmtData.enableDefaultLink &&\n this.casinoManager.getProductForGivenLobbyType(lobbyType)?.toLowerCase() ==\n lmtData?.defaultProductHomeUrl?.toLowerCase()\n ) {\n category.url = this.urlUtility.getProductBaseUrl(productOverride) + '/';\n if (lmtData.appendCultureToDefaultUrl) {\n category.url = `${category.url}/${this.page.lang}`;\n }\n }\n } else {\n if (categoryurl) {\n category.url = categoryurl.url;\n } else {\n if (this.productService.isSingleDomainApp && this.isCategoryUnderSubLobby(product)) {\n category.url = `${this.urlUtility.getProductApiBaseUrl(productOverride)}/${this.getParentLobby()}/${product}/c/${category.categoryid}`;\n } else {\n category.url = `${this.urlUtility.getProductApiBaseUrl(productOverride)}/${product}/c/${category.categoryid}`;\n }\n }\n }\n addCategory = this.addCategoryForLivegamesIframe(lobbyType);\n if (\n slotRacesCategory &&\n isSlotRacesCategory &&\n (!isSlotRacesEnabled || (!slotRacesConfig.enablePreLogin && !this.user.isAuthenticated))\n ) {\n addCategory = false;\n }\n const lmtSubCategories = category?.lmtSubCategories?.filter(Boolean);\n if (\n addCategory &&\n (ConstService.RECENT_GAMES_CATEGORY_ID === category.categoryid?.toLowerCase() ||\n ConstService.FAVOURITE_GAMES_CATEGORY_ID === category.categoryid?.toLowerCase() ||\n category?.gamelist?.length > 0 ||\n lmtSubCategories?.length > 0)\n ) {\n navCategories.push(category);\n }\n }\n });\n }\n }\n return navCategories;\n }\n\n private addCategoryForLivegamesIframe(lobbyType: string): boolean {\n const casinoConfig = this.configProviderService.provideCasinoConfig();\n const liveGamesCategories = casinoConfig.liveGamesCategories;\n const currentProduct: string = this.utilityService.getProductForGivenLobbyType(lobbyType);\n if (liveGamesCategories && liveGamesCategories.length > 0) {\n return !(liveGamesCategories.indexOf(currentProduct) > -1);\n }\n return true;\n }\n\n getNavCategoriesForInvokerProduct(lobbyType: string): any {\n const lobby: any = this.getLobbyForInvokerProduct(lobbyType);\n const product: string = this.utilityService.getProductForGivenLobbyType(lobbyType);\n const navCategories: any = [];\n const defaultCategoryInfo: any = this.getDefaultOrFirstCategoryInfoForInvokerProduct(lobbyType);\n if (lobby?.lobby) {\n const lobbyCategoriesMap: Map<string, any> = lobby.lobby.categoriesMap;\n if (lobbyCategoriesMap && lobbyCategoriesMap.size > 0) {\n lobbyCategoriesMap.forEach((category: any) => {\n if (category.isNavigationCategory) {\n if (!category.sitecoreData) {\n const defaultSitecoreObj: any = {\n attributes: {\n icon: 'theme-home',\n },\n };\n category.sitecoreData = defaultSitecoreObj;\n }\n if (defaultCategoryInfo && defaultCategoryInfo.categoryid === category.categoryid) {\n category.isdefault = true;\n category.url = '/' + this.page.lang + '/' + product;\n } else {\n category.url = '/' + this.page.lang + '/' + product + '/c/' + category.categoryid;\n }\n navCategories.push(category);\n }\n });\n }\n }\n return navCategories;\n }\n\n getLobby(lobbyType: string) {\n const lobbyInfo: any = this.lobbyTypeMaps?.get(lobbyType);\n const lobbyResult: any = {\n lobby: lobbyInfo,\n disabledGames: this.disabledGames,\n };\n return lobbyResult;\n }\n\n private getLobbyForInvokerProduct(lobbyType: string) {\n const lobbyInfo: any = this.lobbyTypeMapsForInvokerProduct?.get(lobbyType);\n const lobbyResult: any = {\n lobby: lobbyInfo,\n };\n return lobbyResult;\n }\n\n getStickerMap(lobbyType: string) {\n const lobbyInfo: any = this.lobbyTypeMaps?.get(lobbyType);\n if (lobbyInfo) {\n const stickerNameMap = lobbyInfo.stickerNameMap;\n return stickerNameMap;\n }\n return null;\n }\n\n setGlobalJackpotLobbyTypeMap(lobbyType: any, lobbyData: any) {\n const lmtConfig = this.configProviderService.provideLmtConfig();\n const lobbyContent: LobbyItem = this.getLobbyContent(lobbyData, lobbyType);\n this.lobbyTypeMaps.set(lobbyType, lobbyContent);\n this.gJLobbyTypeMaps.set(lobbyType, lobbyContent);\n this.cacheManager.writeCategoryLocalStorageCacheMap(\n lobbyType,\n cloneDeep(lobbyContent),\n //{...lobbyContent},\n this.invokerProductService.getInvokerProduct(),\n );\n if (this.disjointFeedsInitiated) {\n }\n // set globalBonusJackpots lobbyType if cookie is ODR\n const odrConfig =\n lmtConfig?.otherProductsLobbyTypeForOdr?.[0]?.product &&\n lmtConfig.otherProductsLobbyTypeForOdr[0]?.lobbyType &&\n lmtConfig.otherProductsLobbyTypeForOdr[0]?.invokerProduct;\n if (odrConfig && (this.casinoCookieService.isODR(ODR_NAME.CASINO_WODR) || this.casinoCookieService.isODR(ODR_NAME.SPORTS_WODR))) {\n this.setPartialCasinoLobbiesforOtherProducts(lmtConfig.otherProductsLobbyTypeForOdr, true, false);\n } else {\n this.setCasinoLobby(true);\n }\n }\n\n async getGlobalJackpotLobbyDataFromLocalStorage(lobbyType: string): Promise<LobbyItem | any> {\n const featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n const lobbyTypeMapsInCache: LobbyItemBaseModel | any = await this.cacheManager.readCategoryDataLocalCache(\n featuresConfig.browserLocalStorageCategoryDataUpdateInterval,\n lobbyType,\n this.invokerProductService.getInvokerProduct(),\n );\n\n if (lobbyTypeMapsInCache != null) {\n const UILobby: LobbyItem = new LobbyItem();\n UILobby.setLobbyItemFromLocalStorage(lobbyTypeMapsInCache);\n // filling gameMetaDataMap\n for (let i = 0; i < lobbyTypeMapsInCache?.lsGameMetaDataMap?.length; i++) {\n const gameItem = lobbyTypeMapsInCache?.lsGameMetaDataMap[i][1];\n this.gameMetaDataMap.set(gameItem.game, gameItem);\n }\n this.lobbyTypeMaps.set(lobbyType, UILobby);\n this.gJLobbyTypeMaps.set(lobbyType, UILobby);\n\n if (this.disjointFeedsInitiated) {\n } else {\n const postLogin = this.user.isAuthenticated ? true : false;\n this.setCasinoLobby(true, postLogin, true);\n }\n this.gameManagerService.updateMetaData(this.gameMetaDataMap);\n return UILobby;\n }\n return null;\n }\n\n getLobbyBasedOnLobbyType(lobbyType: string) {\n return this.lobbyTypeMaps?.get(lobbyType);\n }\n\n getCategoryName(lobbyType: string, categoryId: string) {\n const catInfo = this.getCategoryInfo(lobbyType, categoryId);\n let categoryName: string = '';\n if (catInfo?.categoryInfo) {\n categoryName = catInfo.categoryInfo.engCategoryName ? catInfo.categoryInfo.engCategoryName : '';\n }\n return categoryName;\n }\n\n getLinkedToCategory(lobbyType: string, lmtCategoryId: string) {\n const lobby: any = this.getLobby(lobbyType);\n if (lobby?.lobby) {\n const lobbyCategoriesMap: Map<string, any> = cloneDeep(lobby.lobby.categoriesMap);\n\n // let lobbyCategoriesMap: Map<string, any> = new Map<string, any>([...lobby.lobby.categoriesMap].map(x => Object.assign({}, x))) ;\n\n if (lobbyCategoriesMap && lobbyCategoriesMap.size > 0) {\n const categoryArray: any = [];\n lobbyCategoriesMap.forEach((category) => {\n if (category.linkedCategory === lmtCategoryId) {\n categoryArray.push(category);\n }\n });\n return categoryArray;\n }\n }\n }\n\n raiseLobbyLoadedEvent(lobbyLoadedEvent: any) {\n lobbyLoadedEvent.invokerProduct = this.invokerProductService.getInvokerProduct();\n lobbyLoadedEvent.disabledGames = this.disabledGames;\n const evt = new CustomEvent('cc:casinocore_lobby_data', {\n detail: lobbyLoadedEvent,\n });\n this.windowRef.nativeWindow.casinoLobbyData = lobbyLoadedEvent;\n window.dispatchEvent(evt);\n }\n\n getFromCookie(key: any): boolean {\n if (this.cookies.get(key) > '0') {\n return true;\n }\n return false;\n }\n\n setMoreInfoComponentStatus(value: boolean) {\n this.isNewMoreInfoActive = value;\n }\n getMoreInfoComponentStatus() {\n return this.isNewMoreInfoActive;\n }\n\n calculateCoinArcadeExpiry(): number {\n const coinExpiryDay = this.configProviderService.providePromoCoinEconomyConfig()?.coinExpiryDay - 1;\n const currentDay = new Date().getDate();\n if (coinExpiryDay > currentDay) {\n return coinExpiryDay - currentDay;\n } else if (coinExpiryDay < currentDay) {\n const currentMonthDays = this.utilityService.getDaysInMonth(new Date().getFullYear(), new Date().getMonth() + 1);\n return currentMonthDays - currentDay + coinExpiryDay;\n } else {\n return 0;\n }\n }\n\n getMinBetBasedOnGameId(gameId: string): any {\n const minBetGamesConfig = this.configProviderService.provideMinBetGamesConfig()?.coinArcade_MinBetGames;\n return minBetGamesConfig[gameId] ? minBetGamesConfig[gameId] : minBetGamesConfig.default;\n }\n getIconsuppix() {\n const lobbyType = this.casinoManager.getLobbyType() || '';\n const lobbySuffix = this.getLobbyInfo(lobbyType);\n return lobbySuffix?.lobbyGameIconImageSuffix;\n }\n getImagePath(gameId: string, iconType: string, format?: any) {\n const gameConfig: any = this.configProviderService.provideGameConfig();\n let featuresConfig: any = this.configProviderService.provideFeaturesConfig();\n let gameFloder = this.getIconsuppix();\n if (gameFloder && featuresConfig.enableGameIconImageSuffix) {\n iconType = iconType + gameFloder;\n }\n const imageFormat = format ? '.' + format : '.jpg';\n const gameUrl = gameConfig.host + gameConfig.gameIconTemplate.replace('{0}', iconType).replace('{1}', gameId) + imageFormat;\n return gameUrl;\n }\n initiatePostLoginFeatures(casinoNpmParams: any) {\n const cozybingoConfig: any = this.configProviderService.provideCozyBingoConfig();\n const fresSpinsConfig: any = this.configProviderService.providefreeSpinsClientConfig();\n if (cozybingoConfig.cozyBingoFavouritesInRpwidget || cozybingoConfig.cozyBingoRecentGamesInRpwidget) {\n this.cozybingoService.getBingoData(true, cozybingoConfig.cozyBingoRecentGamesInRpwidget);\n }\n\n if (fresSpinsConfig.isFreeSpinSummaryEnabled) {\n this.freespinSummaryService.setFreespinsummary();\n }\n const liveCasinoConfig = this.configProviderService.provideLiveCasinoConfig();\n if (!this.user.isAuthenticated || (this.user.isAuthenticated && !this.postloginfirstLiveCasinoCall)) {\n if (liveCasinoConfig.enabled && !casinoNpmParams?.isDisableLiveCasinoCalls) {\n this.liveCasinoService.getLiveCasinoData(!this.liveCasinoService.getSitecoreInfoPublishedStatus());\n }\n if (this.user.isAuthenticated) this.postloginfirstLiveCasinoCall = true;\n }\n }\n\n initiatePostLoginRemainingFeed(casinoNpmParams: any, initiateDisjointFeeds: boolean) {\n const newsFeedConfig = this.configProviderService.provideNewsFeedCasinoConfig();\n if (newsFeedConfig.isEnabled) {\n this.newsFeedService.setNewsFeed();\n }\n const slotRacesConfig = this.configProviderService.provideSlotRacesConfig();\n const widgetConfig: any = this.configProviderService.providewidgetConfig();\n if (\n (slotRacesConfig?.enableSlotRaces && !casinoNpmParams.disableSlotracesCallsOnBootstrap) ||\n (slotRacesConfig?.enableSlotRaces && widgetConfig?.enableSlotRacesForOtherProducts && casinoNpmParams?.disableSlotracesCallsOnBootstrap)\n ) {\n this.initializeSlotRaces(initiateDisjointFeeds);\n }\n }\n\n searchGames(query: string, disabledGames: string[]): GameLobbyModel[] {\n query = query?.toLowerCase();\n const filteredGames: GameLobbyModel[] = this.fetchFilteredGames(this.gameMetaDataMap, disabledGames, query);\n let elementsStartingWithQuery: GameLobbyModel[] = [];\n let elementsContainingQuery: GameLobbyModel[] = [];\n filteredGames?.forEach((fGame: GameLobbyModel) => {\n if (fGame?.title?.toLowerCase().startsWith(query)) {\n elementsStartingWithQuery.push(fGame);\n } else {\n elementsContainingQuery.push(fGame);\n }\n });\n let sortedArray: GameLobbyModel[] = elementsStartingWithQuery.concat(elementsContainingQuery);\n return sortedArray;\n }\n\n private fetchFilteredGames(gameMetaData: Map<string, GameMetaDataMap>, disabledGames: string[], serachQuery: string): GameLobbyModel[] {\n const filteredGames: GameLobbyModel[] = [];\n gameMetaData?.forEach((data: GameMetaDataMap) => {\n if (data?.name?.toLowerCase().indexOf(serachQuery) <= -1) {\n return;\n }\n const disabledGame: string[] = disabledGames.filter((disabledGame: string) => disabledGame === data.game);\n if (data.condition) {\n this.dslService.evaluateExpression(data.condition).subscribe((result: boolean) => {\n if (result && disabledGame?.length == 0) {\n filteredGames.push(this.setSearchGameIcon(data.game, data.name, data.provider, data.condition));\n }\n });\n } else if (disabledGame?.length == 0) {\n filteredGames.push(this.setSearchGameIcon(data.game, data.name, data.provider, data.condition));\n }\n });\n return filteredGames;\n }\n\n private setSearchGameIcon(gameId: string, gameTitle: string, gameProvider: string, condition: string): GameLobbyModel {\n const gameConfig = this.configProviderService.provideGameConfig();\n const gamelobbyModel: GameLobbyModel = new GameLobbyModel();\n gamelobbyModel.gameId = gameId;\n gamelobbyModel.internalGameName = gameId;\n gamelobbyModel.title = gameTitle;\n gamelobbyModel.provider = gameProvider;\n gamelobbyModel.condition = condition;\n let gameIcon = gameConfig.iconTypeMapping[1];\n let gameFloder = this.getIconsuppix();\n if (gameFloder) {\n gameIcon = gameIcon + gameFloder;\n }\n gamelobbyModel.icon = {\n src: gameConfig.host + gameConfig.gameIconTemplate.replace('{0}', gameIcon).replace('{1}', gamelobbyModel.gameId) + '.jpg',\n };\n gamelobbyModel.rowSpan = 1;\n gamelobbyModel.colSpan = 1;\n return gamelobbyModel;\n }\n\n private isCategoryUnderSubLobby(product: string): boolean {\n const lmtConfig: LMTDataClientConfig = this.configProviderService.lmtConfig;\n const mainLobby = Object.keys(lmtConfig.subLobbyType)[0];\n if (lmtConfig.subLobbyType[mainLobby].includes(product)) return true;\n return false;\n }\n\n private getParentLobby(): string {\n const lmtConfig: LMTDataClientConfig = this.configProviderService.lmtConfig;\n return Object.keys(lmtConfig.subLobbyType)[0];\n }\n}\n","import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { DeviceService, DslService, MessageQueueService, TrackingService, UserService } from '@frontend/vanilla/core';\nimport { DslPipe } from '@frontend/vanilla/shared/browser';\nimport { cloneDeep } from 'lodash-es';\nimport { Subscription } from 'rxjs';\n\nimport { CasinoLobbyService } from '../casino-lobby-manager/casino-lobby.service';\nimport { CasinoStylesService } from '../casino-lobby-manager/casino-styles/casino-styles.service';\nimport { GameManagerService } from '../casino-lobby-manager/game-manager/game-manager.service';\nimport { ConfigProviderService } from '../config-provider/config-provider.service';\nimport { GlobalTranslateComponent } from '../directives/globaltranslate/globaltranslate.component';\nimport { HighlightSearch } from '../directives/search-highlight-filter/search-highlight.filter';\nimport { PlatformApiService } from '../platform-api/platform-api.service';\nimport { ApiPathsHelperService } from '../shared/api-paths-helper-service';\nimport { CasinoManager } from '../shared/casino-manager.service';\nimport { CategoryManager } from '../shared/category-manager.service';\nimport { FavouriteService } from '../shared/favourite.service';\nimport { GameDataManager } from '../shared/game-data-manager.service';\nimport { CasinoCoreGameLaunchFactoryService } from '../shared/gamelaunchfactory.service';\nimport { GlobalSearchHelperService } from '../shared/globalsearch-helper.service';\nimport { GameLobbyModel } from '../shared/models/game-lobby.model';\nimport { GameLaunch } from '../shared/models/gamelaunch.model';\n\n@Component({\n selector: 'cc-search-desktop',\n templateUrl: 'search-desktop.component.html',\n standalone: true,\n imports: [NgIf, NgClass, ReactiveFormsModule, FormsModule, GlobalTranslateComponent, NgFor, AsyncPipe, HighlightSearch, DslPipe],\n})\nexport class SearchDesktopComponent implements OnInit, OnChanges, OnDestroy {\n @Input() isTouch: boolean;\n @Input() placeholder: string;\n @Input() lobbyType: string;\n @Input() categoryRoute: string;\n @Output() embedGameClicked = new EventEmitter<any>();\n\n readonly defaultSrc = this.casinoManager.getGrayImageUrl();\n idSuffix: string;\n model = {\n query: '',\n results: <any>[],\n };\n index: number = 1;\n activeIndex: number = 0;\n keypressed: string = 'default';\n isMsgVisible: boolean = false;\n readonly innerWidth = this.deviceService.windowWidth;\n GYMLGames: any = [];\n gymlCategory: any;\n displayValue: boolean;\n showGymlSearch: boolean;\n showGlobalSearch: boolean = false;\n wasInside: boolean;\n gymlText: string;\n SearchCloseIcon: boolean;\n recommendationGames: any = [];\n recommendationGamesList: any = [];\n combineData: any = [];\n showDesktopSearch: boolean = true;\n showGSInDesktopSearch: boolean = true;\n lobbyLoadedObs: Subscription;\n gameLaunchService: any;\n favGamesSubscribe: Subscription;\n constructor(\n private gameDataManager: GameDataManager,\n private categoryManager: CategoryManager,\n private user: UserService,\n private messageQueue: MessageQueueService,\n private casinoManager: CasinoManager,\n private tracking: TrackingService,\n private api: PlatformApiService,\n private deviceService: DeviceService,\n private configProviderService: ConfigProviderService,\n private casinoLobbyService: CasinoLobbyService,\n private gameLaunchFactoryService: CasinoCoreGameLaunchFactoryService,\n private apiPathsHelperService: ApiPathsHelperService,\n private dslService: DslService,\n private gshService: GlobalSearchHelperService,\n private favouriteService: FavouriteService,\n private destroyRef: DestroyRef,\n private casinoStyles: CasinoStylesService,\n private gameManagerService: GameManagerService,\n ) {\n this.displayValue = true;\n }\n\n ngOnInit() {\n const features = this.configProviderService.provideFeaturesConfig();\n this.showGSInDesktopSearch = features.enableGSInRegularSearch;\n //Initializing globalSearch in RegularSearch\n if (this.showGSInDesktopSearch) {\n this.gshService.contextAvailable.subscribe((context: any) => {\n if (context?.appContext.isEnabled) {\n this.showDesktopSearch = true;\n }\n });\n\n this.gshService.presentationBootstraped.subscribe(() => {\n this.showDesktopSearch = true;\n });\n\n this.gshService.registerEventHandlers();\n this.gshService.fetchContext();\n }\n this.gameLaunchService = this.gameLaunchFactoryService.getGameLaunchService();\n const Global = this.configProviderService.provideGlobalConfig();\n const casinoConfiguration = this.configProviderService.provideCasinoConfig();\n this.showGlobalSearch = features.showGlobalSearch;\n this.showDesktopSearch = features.showDesktopSearch;\n if (this.placeholder === 'embedgame') {\n if (!this.showGSInDesktopSearch) {\n this.showDesktopSearch = true;\n }\n }\n this.SearchCloseIcon = false;\n this.setIdSuffix();\n this.gymlText = Global.messages['SearchGamesYouMightLike']\n ? Global.messages['SearchGamesYouMightLike']\n : Global.messages['GamesYouMightLike'];\n if (this.enableEnhancedSearch()) {\n this.setGYML();\n this.categoryManager.categoryLookUpObservable.subscribe((response) => {\n if (response && response.size > 0) {\n this.gymlCategory = cloneDeep(response.get('LMC_GYML'));\n // this.gymlCategory = {...response.get('LMC_GYML')};\n if (\n this.gymlCategory &&\n this.gymlCategory.categoryInfo &&\n this.gymlCategory.categoryInfo.gamelist &&\n this.gymlCategory.categoryInfo.gamelist.length > 0\n ) {\n this.gymlCategory.gamesModel = this.gymlCategory.categoryInfo.gamelist.slice(0, casinoConfiguration.gymlLimitForSearch);\n const gymlGameIds: string[] = [];\n this.gymlCategory.gamesModel.forEach((gameModel: any) => {\n gymlGameIds.push(gameModel.game);\n });\n const gamesModel: any = this.gameDataManager.setDefaultGameIcons(gymlGameIds);\n this.getGyMLGames(gamesModel);\n }\n }\n });\n this.casinoManager.lobbyObservable.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((lobbyModel: any) => {\n if (lobbyModel) {\n this.displayValue = true;\n }\n });\n\n this.gameDataManager.gameLookUpObservable.subscribe(() => {\n this.gymlCategory = this.casinoLobbyService.getCategoryInfo(this.lobbyType, 'LMC_GYML');\n if (\n this.gymlCategory &&\n this.gymlCategory.categoryInfo &&\n this.gymlCategory.categoryInfo.gamelist &&\n this.gymlCategory.categoryInfo.gamelist.length > 0\n ) {\n this.gymlCategory.gamesModel = this.gymlCategory.categoryInfo.gamelist.slice(0, casinoConfiguration.gymlLimitForSearch);\n const gymlGameIds: string[] = [];\n this.gymlCategory.gamesModel.forEach((gameModel: any) => {\n gymlGameIds.push(gameModel.game);\n });\n const gamesModel: any = this.gameDataManager.setDefaultGameIcons(gymlGameIds);\n this.getGyMLGames(gamesModel);\n }\n });\n\n this.lobbyLoadedObs = this.casinoLobbyService.lobbyLoadedObservable.subscribe((response) => {\n if (response) {\n this.gymlCategory = cloneDeep(this.casinoLobbyService.getCategoryInfo(this.lobbyType, 'LMC_GYML'));\n // this.gymlCategory = {...this.casinoLobbyService.getCategoryInfo(this.lobbyType, 'LMC_GYML')};\n if (\n this.gymlCategory &&\n this.gymlCategory.categoryInfo &&\n this.gymlCategory.categoryInfo.gamelist &&\n this.gymlCategory.categoryInfo.gamelist.length > 0\n ) {\n this.gymlCategory.gamesModel = this.gymlCategory.categoryInfo.gamelist.slice(0, casinoConfiguration.gymlLimitForSearch);\n const gymlGameIds: string[] = [];\n this.gymlCategory.gamesModel.forEach((gameModel: any) => {\n gymlGameIds.push(gameModel.game);\n });\n const gamesModel: any = this.gameDataManager.setDefaultGameIcons(gymlGameIds);\n this.getGyMLGames(gamesModel);\n }\n }\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.categoryRoute?.currentValue !== changes?.categoryRoute?.previousValue) {\n this.model.query = '';\n this.model.results = [];\n this.SearchCloseIcon = false;\n this.showGymlSearch = false;\n this.displayValue = true;\n }\n this.setIdSuffix();\n }\n\n displaySearchCloseIcon() {\n if (this.model.query.length == 0) {\n this.SearchCloseIcon = false;\n }\n }\n\n closeSearchIcon() {\n this.model.query = '';\n this.displaySearchCloseIcon();\n }\n\n setGYML() {\n const casinoConfiguration = this.configProviderService.provideCasinoConfig();\n this.gymlCategory = this.casinoLobbyService.getCategoryInfo(this.lobbyType, 'LMC_GYML');\n if (\n this.gymlCategory &&\n this.gymlCategory.categoryInfo &&\n this.gymlCategory.categoryInfo.gamelist &&\n this.gymlCategory.categoryInfo.gamelist.length > 0\n ) {\n this.gymlCategory.categoryInfo.gamesModel = this.gymlCategory.categoryInfo.gamelist.slice(0, casinoConfiguration.gymlLimitForSearch);\n const gymlGameIds: string[] = [];\n this.gymlCategory.categoryInfo.gamesModel.forEach((gameModel: any) => {\n gymlGameIds.push(gameModel.game);\n });\n const gamesModel: any = this.gameDataManager.setDefaultGameIcons(gymlGameIds);\n this.getGyMLGames(gamesModel);\n }\n }\n\n setIdSuffix(): void {\n if (this.placeholder === 'navigation') {\n this.idSuffix = 'nav';\n } else {\n this.idSuffix = '';\n }\n }\n\n onGameIconError(game: any): void {\n game.icon.src = this.defaultSrc;\n }\n\n getGyMLGames(gamesModelList: any[]) {\n this.GYMLGames = [];\n for (let i = 0; i < gamesModelList.length; i++) {\n const gameModelItem: any = this.gameManagerService.getGameInfo(gamesModelList[i].game);\n if (gameModelItem) {\n gameModelItem.icon = '1';\n const gamelobbyModel: GameLobbyModel = this.gameDataManager.setGameLobbyModel(gameModelItem, this.isTouch);\n this.GYMLGames.push(gamelobbyModel);\n }\n }\n this.GYMLGames = this.checkGameIconTheming(this.GYMLGames);\n }\n\n /*\n Author : Naresh Tatikonda\n Purpose : preparing recommendation games object from recommendation feed string list\n */\n getRecomendationGames(gamesModelList: string[]) {\n this.recommendationGamesList = [];\n for (let i = 0; i < gamesModelList.length; i++) {\n const lmtGameData: any = this.gameManagerService.getGameInfo(gamesModelList[i]);\n //TODO: check against disabled games\n if (lmtGameData) {\n const gamelobbyModel: GameLobbyModel = this.gameDataManager.setGameLobbyModel(lmtGameData, this.isTouch);\n if (lmtGameData) {\n gamelobbyModel.title = lmtGameData.name;\n }\n this.recommendationGamesList.push(gamelobbyModel);\n }\n }\n }\n\n /*\n Author : Naresh Tatikonda\n Purpose : preparing recommendation games array based on conditions\n */\n getGamesYouMightLikeOnLMT() {\n /*\n condution checks,when recommendationsgames length <6 ,then merging recommendation games and gamesyoumightlike games object\n */\n if (this.recommendationGames.length < 6 || this.recommendationGames.length == 0) {\n //setting gamesyoumight like games to fastloading games\n\n this.recommendationGamesList = this.recommendationGames.length > 0 ? this.getRecomendationGames(this.recommendationGames) : [];\n this.combineData = this.recommendationGamesList.concat(this.GYMLGames);\n //filter for remove duplicate objects from array object\n this.GYMLGames = Array.from(this.combineData.reduce((m: any, t: any) => m.set(t.gameId, t), new Map()).values());\n } else {\n //here recommendation games count >=6\n this.GYMLGames = this.getRecomendationGames(this.recommendationGames);\n }\n this.GYMLGames = this.checkGameIconTheming(this.GYMLGames);\n }\n\n recommendationFeed() {\n //adding recommendation feed integration (Naresh Tatikonda)\n const apiPathsConfig = this.configProviderService.provideApiPathsConfig();\n const recommendationUrl = this.apiPathsHelperService.transformApi(apiPathsConfig.gameData['gameRecommendations']);\n this.api.get(recommendationUrl).subscribe((response: any) => {\n if (response) {\n //getting response from recommendation feed\n this.recommendationGames = response.recommendationgames;\n //adding by Naresh Tatikonda\n this.getGamesYouMightLikeOnLMT();\n }\n });\n }\n\n launchGame(game: any, isgYml: boolean, gamePos: any) {\n this.messageQueue.clear();\n const nonCriticalConfig: any = this.configProviderService.provideNonCriticalConfig();\n if (this.user.isAuthenticated && nonCriticalConfig.enableRecommendationGames && this.placeholder === 'embedgame') {\n this.recommendationFeed();\n }\n\n game.iconType = 1; // for advance game data model\n if (this.placeholder === 'navigation') {\n if (isgYml) {\n const gameModel = new GameLaunch();\n gameModel.game = game;\n gameModel.isTouch = this.isTouch;\n gameModel.categoryType = 'Search';\n gameModel.from = 'q';\n gameModel.replaceRouteInHistory = false;\n gameModel.isDemoLaunch = false;\n gameModel.skipUnfinGame = false;\n gameModel.gameLaunchedFrom = 'Search_GYML';\n gameModel.gameSection = 'Search_GYML';\n gameModel.gameContainer = 'Search';\n gameModel.game.lobbyType = this.lobbyType;\n gameModel.gamePosition = gamePos;\n gameModel.clickTimeStamp = this.gameLaunchService.currentTimeStamp();\n this.gameLaunchService.launchGame(gameModel);\n } else {\n const gameModel = new GameLaunch();\n gameModel.game = game;\n gameModel.isTouch = this.isTouch;\n gameModel.categoryType = 'Search';\n gameModel.from = 'q';\n gameModel.replaceRouteInHistory = false;\n gameModel.isDemoLaunch = false;\n gameModel.skipUnfinGame = false;\n gameModel.gameLaunchedFrom = 'Search';\n gameModel.gameSection = 'Search';\n gameModel.gameContainer = 'Search';\n gameModel.game.lobbyType = this.lobbyType;\n gameModel.gamePosition = gamePos;\n gameModel.clickTimeStamp = this.gameLaunchService.currentTimeStamp();\n this.gameLaunchService.launchGame(gameModel);\n }\n } else if (this.placeholder === 'embedgame') {\n game.GamePosition = gamePos;\n game.lobbyType = this.lobbyType;\n this.favGamesSubscribe = this.favouriteService.favouriteGamesFeedObservable.subscribe((favouriteGameIds: any) => {\n if (favouriteGameIds) {\n game.isFavourite = favouriteGameIds.indexOf(game.gameId) > -1;\n }\n });\n this.embedGameClicked.emit(game);\n }\n this.model.query = '';\n this.model.results = [];\n this.displayValue = true;\n this.showGymlSearch = false;\n this.SearchCloseIcon = false;\n }\n\n trackInput() {\n this.tracking.triggerEvent('GameSearch', {\n 'eventAction': this.placeholder == 'embedgame' ? 'EGV_Search' : 'Search',\n 'page.search': this.model.query,\n });\n }\n\n queryChanged(event: any) {\n this.displayValue = false;\n this.showGymlSearch = false;\n\n if (this.enableEnhancedSearch() && this.model.query.length === 1 && this.placeholder === 'navigation') {\n }\n if (this.model.query.length !== 0) {\n this.displayValue = true;\n this.SearchCloseIcon = true;\n } else {\n this.SearchCloseIcon = false;\n if (this.enableEnhancedSearch() && this.placeholder === 'navigation') {\n this.displayValue = false;\n if (this.user.isAuthenticated) {\n this.showGymlSearch = true;\n }\n }\n }\n\n if (this.model.query.length < 1) {\n this.model.results = [];\n this.isMsgVisible = false;\n if (this.placeholder === 'embedgame') {\n this.displayValue = true;\n }\n if (!this.user.isAuthenticated) {\n this.displayValue = true;\n }\n if (this.enableEnhancedSearch() && this.model.query === '' && this.placeholder === 'navigation') {\n }\n return;\n } else if (event.key === 'ArrowUp') {\n if (this.index === 1 || this.index === 0) {\n this.activeIndex = 0;\n this.index = 1;\n } else {\n if (this.keypressed === 'ArrowDown') {\n this.activeIndex = this.activeIndex - 1;\n this.index = this.index - 2;\n } else {\n this.activeIndex = this.index - 1;\n }\n }\n this.index--;\n let list, index;\n list = document.querySelectorAll('.search-non-touch li');\n for (index = 0; index < list.length; ++index) {\n list[index].classList.remove('active');\n }\n list[this.activeIndex].classList.add('active');\n if (this.activeIndex > 5) {\n const container = document.getElementsByClassName('search-non-touch');\n container[0].scrollTop = container[0].scrollTop - 65;\n }\n this.keypressed = 'ArrowUp';\n } else if (event.key === 'ArrowDown') {\n if (this.index === 1) {\n this.activeIndex = 0;\n } else {\n if (this.keypressed === 'ArrowUp') {\n this.activeIndex = this.activeIndex + 1;\n this.index = this.index + 2;\n } else {\n this.activeIndex = this.index - 1;\n }\n }\n this.index++;\n let index;\n const list = document.querySelectorAll('.search-non-touch li');\n for (index = 0; index < list.length; ++index) {\n list[index].classList.remove('active');\n }\n list[this.activeIndex].classList.add('active');\n if (this.activeIndex > 5) {\n const container = document.getElementsByClassName('search-non-touch');\n container[0].scrollTop = container[0].scrollTop + 65;\n }\n this.keypressed = 'ArrowDown';\n } else if (event.key === 'Enter') {\n this.index = 1;\n if (this.model.results[this.activeIndex] && this.model.results[this.activeIndex].condition) {\n this.dslService.evaluateExpression(this.model.results[this.activeIndex].condition).subscribe((result) => {\n if (result) {\n this.launchGame(this.model.results[this.activeIndex], false, 0);\n }\n });\n } else {\n this.launchGame(this.model.results[this.activeIndex], false, 0);\n }\n } else if (event.key === 'Backspace') {\n this.index = 1;\n this.displaySearchResults();\n if (this.placeholder === 'embedgame') {\n this.displayValue = true;\n }\n } else {\n setTimeout(() => {\n if (this.model.query.length < 1) {\n this.model.results = [];\n return;\n }\n this.displaySearchResults();\n }, 500);\n this.isMsgVisible = false;\n }\n }\n\n displaySearchResults() {\n this.model.results = this.casinoLobbyService.searchGames(this.model.query, this.casinoLobbyService.getDisabledGames());\n this.model.results = this.checkGameIconTheming(this.model.results);\n this.isMsgVisible = this.model.results.length > 0 ? false : true;\n }\n\n checkGameIconTheming(gamesList: any) {\n const features = this.configProviderService.provideFeaturesConfig();\n if (features.enableGameIconTheming) {\n gamesList.map((ele: any) => {\n ele.icon.src = this.casinoStyles.appendTheme(ele.icon.src, ele.gameId);\n });\n }\n return gamesList;\n }\n\n hideDisplayGYML(): boolean {\n if (this.placeholder === 'embedgame') {\n return true;\n }\n if (!this.GYMLGames) {\n return true;\n }\n if (this.GYMLGames.length <= 0) {\n return true;\n }\n return this.displayValue;\n }\n\n enableEnhancedSearch(): boolean {\n const features = this.configProviderService.provideFeaturesConfig();\n return features.enableEnhancedSearch && this.GYMLGames && this.GYMLGames.length >= 0;\n }\n\n docClick(event: any) {\n if (\n event.target.className != 'casino-search-input ng-untouched ng-pristine ng-valid' &&\n event.target.className != 'casino-search-input ng-pristine ng-valid ng-touched' &&\n event.target.className != 'casino-search-input ng-valid ng-touched ng-dirty' &&\n event.target.className != 'casino-search-input ng-valid ng-dirty ng-touched'\n ) {\n this.model.query = '';\n this.model.results = [];\n }\n }\n\n @HostListener('click', ['$event'])\n clickInside(event: any) {\n const casinoConfiguration = this.configProviderService.provideCasinoConfig();\n const gymlCategory = this.casinoLobbyService.getCategoryInfo(this.lobbyType, 'LMC_GYML');\n if (gymlCategory && gymlCategory.categoryInfo) {\n this.gymlCategory = gymlCategory;\n this.getGyMLGames(this.gymlCategory.categoryInfo.gamelist.slice(0, casinoConfiguration.gymlLimitForSearch));\n } else {\n this.gymlCategory = null;\n this.getGyMLGames([]);\n }\n this.wasInside = true;\n\n if (\n event &&\n event.target &&\n (event.target.id === 'gyml-desktop-id' || event.target.id === 'gym-desktop-heading-id' || event.target.id === 'lobby-games-id')\n ) {\n return;\n }\n if (event && event.target && event.target.id === 'search-text' && (!this.model.query || this.model.query === '')) {\n if (this.enableEnhancedSearch() && this.user.isAuthenticated && this.placeholder === 'navigation') {\n this.displayValue = false;\n\n if (this.user.isAuthenticated) {\n this.showGymlSearch = true;\n }\n }\n } else {\n this.displayValue = true;\n this.showGymlSearch = false;\n }\n }\n\n @HostListener('document:click')\n clickout() {\n const features = this.configProviderService.provideFeaturesConfig();\n if (!this.wasInside) {\n if (features.enableEnhancedSearch && this.GYMLGames && this.GYMLGames.length > 0) {\n }\n this.model.query = '';\n this.model.results = [];\n this.displayValue = true;\n this.showGymlSearch = false;\n this.SearchCloseIcon = false;\n }\n this.wasInside = false;\n }\n\n clickGymlHeading(event: any) {\n event.stopImmediatePropagation();\n }\n\n clickGymlGames(event: any) {\n event.stopImmediatePropagation();\n }\n\n //For launching globalSearch in regularSearch\n showGlobalSearchInRegularSearch() {\n if (this.showDesktopSearch && this.showGSInDesktopSearch && this.placeholder === 'navigation') {\n this.gshService.launchGlobalSearch();\n } else {\n this.showGSInDesktopSearch = false;\n }\n }\n\n ngOnDestroy() {\n if (this.lobbyLoadedObs) {\n this.lobbyLoadedObs.unsubscribe();\n }\n if (this.favGamesSubscribe)\n // {this.favGamesSubscribe.unsubscribe(); }\n this.gshService.deregisterEvents();\n }\n}\n","<div *ngIf=\"showDesktopSearch\">\n <div *ngIf=\"innerWidth() > 768 && !isTouch\" class=\"desktop-search{{ idSuffix }}\">\n <div class=\"casino-search-input-div\">\n <span\n class=\"theme-search\"\n [ngClass]=\"{ 'gyml-search-icon': showGymlSearch && idSuffix }\"\n (click)=\"showGlobalSearchInRegularSearch()\"></span>\n <span class=\"close-button theme-close-i\" *ngIf=\"SearchCloseIcon\" (click)=\"closeSearchIcon()\"></span>\n @defer (on immediate) {\n <input\n #searchInput\n id=\"search-text\"\n class=\"casino-search-input\"\n type=\"text\"\n autocomplete=\"off\"\n [ngClass]=\"{ 'casino-gyml-search': showGymlSearch && idSuffix }\"\n placeholder=\"{{ SearchProduct.value }}...\"\n (change)=\"queryChanged($event)\"\n (keyup)=\"queryChanged($event)\"\n (focusout)=\"trackInput()\"\n (focusin)=\"showGlobalSearchInRegularSearch()\"\n (focus)=\"searchInput.placeholder = ''\"\n (blur)=\"searchInput.placeholder = SearchProduct.value + '...'\"\n [(ngModel)]=\"model.query\" />\n }\n <cc-global-translate #SearchProduct [key]=\"'SearchProduct'\" [hidden]=\"true\"></cc-global-translate>\n </div>\n\n <div class=\"casino-desktop-gyml-results\" [hidden]=\"hideDisplayGYML()\">\n <span class=\"gym-heading\" id=\"gym-desktop-heading-id\" (click)=\"clickGymlHeading($event)\">\n {{ gymlText }}\n </span>\n <ul class=\"gyml-list\">\n <li *ngFor=\"let game of GYMLGames; let gamePos = index\" (click)=\"launchGame(game, true, gamePos)\">\n <img src=\"{{ game.icon.src }}\" (error)=\"onGameIconError(game)\" />\n <span class=\"search-result-title\" [innerHTML]=\"game.name\"></span>\n </li>\n </ul>\n </div>\n\n <div class=\"casino-desktop-search-results\" *ngIf=\"model.query\">\n <ul class=\"search-results-list\" [ngClass]=\"{ 'search-non-touch': !isTouch, 'emptyResult': isMsgVisible }\">\n <li *ngFor=\"let game of model.results | dsl | async; let gamePos = index\" (click)=\"launchGame(game, false, gamePos)\">\n <img src=\"{{ game.icon.src }}\" (error)=\"onGameIconError(game)\" />\n <span class=\"search-result-title\" [innerHTML]=\"game.title | highlightsearch: model.query\"></span>\n </li>\n </ul>\n\n <p class=\"no-result\" [hidden]=\"!isMsgVisible\">\n <cc-global-translate [key]=\"'SearchNoResults'\"></cc-global-translate>\n </p>\n </div>\n </div>\n</div>\n"],"names":["GamificationService","coinBalance","coinBalanceEvents","constructor","apiService","isLoaded","ReplaySubject","load","get","subscribe","response","next","ɵɵinject","SharedFeaturesApiService","factory","ɵfac","providedIn","_GamificationService","GamificationBootstrapService","gamificationService","user","rtmsService","onFeatureInit","isAuthenticated","messages","pipe","filter","m","type","RtmsType","COIN_BAL_UPDATE_EVENT","UserService","RtmsService","a","_GamificationBootstrapService","GamificationDslValuesProvider","userService","dslCacheService","dslRecorderService","eventsService","distinctUntilChanged","previous","current","balance","invalidate","raise","eventName","VanillaEventNames","TriggerAnimation","getProviders","Gamification","createRecordable","createProperty","name","getCurrentValue","DSL_NOT_READY","deps","defaultValue","DslCacheService","DslRecorderService","EventsService","_GamificationDslValuesProvider","provide","runOnFeatureInit","registerLazyDslOnModuleInit","MessagePanelRegistry","onChangeSubject","Subject","components","onChange","asObservable","add","component","push","remove","index","indexOf","splice","componentsInScope","c","currentScope","lastMessagePanelComponent","length","_MessagePanelRegistry","ɵɵtext","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵclassProp","message_r1","ɵɵproperty","html","ɵɵrepeaterCreate","MessagePanelComponent_Conditional_0_For_4_Template","ɵɵcomponentInstance","trackByHtml","j","ɵɵrepeater","ctx_r1","MessagePanelComponent","service","elementRef","windowOffsetModifierService","registry","webWorkerService","trackByProp","unsubscribe","messagesEffectRef","effect","message","scope","offset","nativeElement","getBoundingClientRect","top","scrollBy","ngOnInit","takeUntil","workerType","WorkerType","MessagePanelTimeout","createWorker","timeout","isLatest","removeWorker","ngOnDestroy","complete","destroy","ɵɵdirectiveInject","MessageQueueService","ElementRef","WindowOffsetModifierService","WebWorkerService","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","MessagePanelComponent_Conditional_0_Template","ɵɵconditional","CommonModule","NgClass","DynamicHtmlDirective","styles","encapsulation","_MessagePanelComponent","heap","node","siftUp","peek","first","pop","last","siftDown","i","parentIndex","parent","compare","leftIndex","left","rightIndex","right","b","diff","getCurrentTime","hasPerformanceNow","_global","localPerformance","localDate","initialTime","maxSigned31BitInt","IMMEDIATE_PRIORITY_TIMEOUT","USER_BLOCKING_PRIORITY_TIMEOUT","NORMAL_PRIORITY_TIMEOUT","LOW_PRIORITY_TIMEOUT","IDLE_PRIORITY_TIMEOUT","taskQueue","timerQueue","taskIdCounter","currentTask","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","setTimeout","clearTimeout","setImmediate","messageChannel","defaultZone","fn","advanceTimers","currentTime","timer","handleTimeout","requestHostCallback","flushWork","firstTimer","requestHostTimeout","hasTimeRemaining","cancelHostTimeout","workLoop","_currentTask","zoneChanged","hitDeadline","shouldYieldToHost","ngZone","callback","currentPriorityLevel","didUserCallbackTimeout","continuationCallback","scheduleCallback","priorityLevel","options","startTime","delay","expirationTime","newTask","cancelCallback","task","isMessageLoopRunning","scheduledHostCallback","taskTimeoutID","yieldInterval","needsPaint","queueStartTime","forceFrameRate","fps","performWorkUntilDeadline","hasMoreWork","schedulePerformWorkUntilDeadline","channel","port","ms","coerceObservable","o","isObservable","of","coerceObservableWith","o$","map","coerceDistinctWith","flattenOperator","switchAll","coerceAllFactory","subjectFactory","observablesSubject","values$","observable","immediateStrategy","cdRef","work","scheduleOnQueue","userBlockingStrategy","normalStrategy","lowStrategy","idleStrategy","coalescingManager","switchMap","v","Observable","subscriber","mapTo","RX_CONCURRENT_STRATEGIES","animationFrameTick","id","getZoneUnPatchedApi","localCredentials","_","notification","coalesceWith","tap","noopCredentials","nativeCredentials","NgZone","RX_NATIVE_STRATEGIES","RX_RENDER_STRATEGIES_CONFIG","InjectionToken","RX_RENDER_STRATEGIES_DEFAULTS","__spreadValues","mergeDefaultConfig","cfg","custom","__spreadProps","y","onStrategy","value","strategy","workFactory","catchError","error","throwError","take","strategyHandling","defaultStrategyName","strategies","hotFlattened","startWith","nameToStrategyCredentials","share","RxStrategyProvider","_RxStrategyProvider","__publicField","BehaviorSubject","s","shareReplay","strategyName","_work","getWork","_v","returnVal","abC","fromEvent","__ngFactoryType__","ɵɵdefineInjectable","patchZone","args","isObject","obj","extend","target","src","key","ssrDocument","getDocument","doc","ssrWindow","getWindow","win","classesToTokens","classes","deleteProps","object","nextTick","now","getComputedStyle","el","window","style","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","isNode","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","time","duration","dir","isOutOfBound","animate","progress","easeProgress","currentPosition","getSlideTransformEl","slideEl","elementChildren","element","selector","children","elementIsChildOf","isChild","showWarning","text","createElement","tag","elementPrevAll","prevEls","prev","elementNextAll","nextEls","elementStyle","prop","elementIndex","child","elementParents","parents","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","makeElementsArray","getRotateFix","support","calcSupport","document","getSupport","deviceCached","calcDevice","_temp","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","needPerspectiveFix","isSafari","major","minor","num","isWebView","isSafariBrowser","need3dFix","getBrowser","Resize","on","emit","observer","animationFrame","resizeHandler","createObserver","entries","width","height","newWidth","newHeight","_ref2","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","ObserverFunc","mutations","observerUpdate","init","containerParents","eventsEmitter","events","handler","priority","self","method","event","onceHandler","_len","_key","eventHandler","data","context","_len2","_key2","updateSize","updateSlides","getDirectionPropertyValue","label","params","wrapperEl","slidesEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","gridEnabled","slideSize","shouldResetSlideSize","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","groups","groupSize","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","speed","activeSlides","getSlideByIndex","updateSlidesOffset","minusOffset","toggleSlideClasses$1","condition","className","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","toggleSlideClasses","updateSlidesClasses","activeIndex","getFilteredSlide","activeSlide","prevSlide","nextSlide","processLazyPreloader","imageEl","slideSelector","lazyEl","unlazy","preload","amount","slidesPerView","activeColumn","preloadColumns","slideIndexLastInView","realIndex","getActiveIndexByTranslate","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","updateClickedSlide","path","pathEl","slideFound","update","getSwiperTranslate","currentTranslate","setTranslate","byController","x","z","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","transitionEmit","direction","step","transitionStart","transitionEnd","transition","slideTo","initial","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","t","slideToLoop","newIndex","targetSlideIndex","cols","centeredSlides","needLoopFix","slideNext","animating","perGroup","increment","slidePrev","rtlTranslate","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slideToIndex","loopCreate","slideRealIndex","initSlides","slidesPerGroup","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slidesToAdd","loopFix","byMousewheel","allowSlidePrev","allowSlideNext","loopedSlides","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","currentSlideTranslate","shift","loopParams","loopDestroy","newSlidesOrder","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","found","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","touches","targetEl","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","startY","preventDefault","shouldPreventDefault","onTouchMove","targetTouch","pageX","pageY","diffX","diffY","touchAngle","touchesDiff","prevTouchesDirection","isLoop","allowLoopFix","evt","loopFixed","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","onResize","isVirtualLoop","onClick","onScroll","onLoad","onDocumentTouchStart","capture","domMethod","swiperMethod","attachEvents","detachEvents","events$1","isGridEnabled","setBreakpoint","initialized","breakpoints","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","isEnabled","hasLoop","getBreakpoint","containerEl","currentHeight","points","point","minRatio","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","removeClasses","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideRightEdge","checkOverflow$1","defaults","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","_Swiper","swipers","newParams","mod","swiperParams","property","min","cls","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","lazyElements","deleteInstance","cleanStyles","newDefaults","modules","module","prototypeGroup","protoMethod","Virtual","cssModeTimeout","tempDOM","renderSlide","force","beforeInit","initialSlide","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","from","onRendered","slidesToRender","prependIndexes","appendIndexes","getSlideIndex","loopFrom","loopTo","appendSlide","prependSlide","numberOfNewSlides","cache","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","domSlidesAssigned","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","handle","targetElContainsTarget","delta","rtlFactor","positions","prevEvent","ignoreWheelEvents","position","firstEvent","snapToThreshold","enable","disable","createElementIfNotDefined","originalParams","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","nextEl","prevEl","onPrevClick","onNextClick","initButton","destroyButton","_s","targetIsButton","isHidden","classesToSelector","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","bulletActiveClass","getMoveDirection","onBulletClick","moveDirection","total","bullets","firstIndex","midIndex","classesToRemove","suffix","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Autoplay","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","onTransitionEnd","resume","calcTimeLeft","timeLeft","getSlideDelay","activeSlideEl","run","delayForce","currentSlideDelay","proceed","start","stop","pause","reset","onVisibilityChange","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","freeMode","once","lastMoveEvent","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","shadowEl","requireUpdateOnVirtual","effectTarget","effectParams","transformEl","createShadow","shadowClass","shadowContainer","EffectCoverflow","swiperWidth","swiperHeight","isHorizontal","transform","center","rotate","r","centerOffset","offsetMultiplier","rotateY","rotateX","translateZ","stretch","translateY","translateX","slideTransform","shadowBeforeEl","shadowAfterEl","ks","Gs","SwiperComponent_Conditional_8_Conditional_1_Template","SwiperComponent_Conditional_8_Conditional_2_Template","ctx_r0","swiperOptions","pagination","navigation","SwiperComponent","ngAfterViewInit","runOutsideAngular","swiperRef","inject","defaultOptions","clickable","showPagination","input","sanitizeOptions","swiperClass","Array","isArray","undefined","syncedSwiperParams","extendedModules","autoplay","Set","updatedOptions","Object","reduce","acc","paramKey","param","isObjParam","schedule","Re","viewQuery","ɵɵprojection","SwiperComponent_Conditional_8_Template","_SwiperComponent","IconsetConfig","_a","LazyClientConfigBase","__ngConditionalFactory__","iconsFactory","LazyClientConfigService","__decorate","LazyClientConfig","product","ClientConfigProductName","SF","IconFastService","config","getIconParameter","uniqueIconName","parameter","iconItems","matchingIcon","find","iconName","parameters","urlId","image","getAvailableValues","icon","imageUrl","extraClass","fillColor","title","isValueHere","searchValue","_IconFastService","ɵɵclassMap","H","p","K","IconCustomComponent_Conditional_1_Conditional_1_Template","IconCustomComponent_Conditional_1_Conditional_2_Template","IconCustomComponent","renderer","iconFastCoreService","iconFastService","iconsConfig","deviceService","__async","firstValueFrom","whenReady","set","hostElement","getAttribute","parentSize","svgElement","querySelector","setAttribute","iconTitle","Renderer2","IconFastCoreService","DeviceService","IconCustomComponent_Conditional_1_Template","isRobot","FastSvgComponent","_IconCustomComponent","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","close","U","f","_r3","ɵɵtextInterpolate1","closeLinkText","commonMessages","PopoverCloseText","PopperContentComponent","closeType","onCloseLinkClick","EventEmitter","autoClose","content","hide","CommonMessages","T","NgxFloatUiContentComponent","PopperContentComponent_Conditional_2_Template","PopperContentComponent_Conditional_12_Template","cssClass","cssTextClass","NgxFloatUiModule","_PopperContentComponent","CurrentSessionConfig","currentSessionConfigFactory","BaseControlValueAccessor","_BaseControlValueAccessor","_renderer","_elementRef","isDisabled","ɵɵdefineDirective","BuiltInControlValueAccessor","_BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","ɵɵgetInheritedFactory","ɵɵInheritDefinitionFeature","NG_VALUE_ACCESSOR","DEFAULT_VALUE_ACCESSOR","forwardRef","DefaultValueAccessor","_isAndroid","getDOM","COMPOSITION_BUFFER_MODE","_DefaultValueAccessor","_compositionMode","normalizedValue","$event","ɵɵProvidersFeature","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","max","maxValidator","control","requiredValidator","requiredTrueValidator","emailValidator","minLength","minLengthValidator","maxLength","maxLengthValidator","pattern","patternValidator","nullValidator","validators","compose","composeAsync","regex","regexStr","isPresent","toObservable","isPromise","mergeErrors","arrayOfErrors","errors","executeValidators","validator","isValidatorFn","normalizeValidators","presentValidators","composeValidators","observables","forkJoin","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","getControlAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","removeValidators","AbstractControlDirective","errorCode","ControlContainer","NgControl","AbstractControlStatus","cd","ngControlStatusHost","NgControlStatus","_NgControlStatus","NgControlStatusGroup","_NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","ControlEvent","ValueChangeEvent","source","PristineChangeEvent","pristine","TouchedChangeEvent","touched","StatusChangeEvent","status","FormSubmittedEvent","FormResetEvent","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","asyncValidator","coerceToAsyncValidator","assertControlPresent","isGroup","controls","RuntimeError","assertAllValuesPresent","AbstractControl","asyncValidators","computed","signal","validatorFn","asyncValidatorFn","untracked","opts","changed","sourceControl","skipPristineCheck","changeFn","shouldHaveEmitted","ctrl","emitEvent","obs","currPath","changedControl","newPristine","onlySelf","parentDirty","FormGroup","controlName","subtreeUpdated","updated","cb","initValue","UntypedFormGroup","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","setUpModelChangePipeline","setUpBlurPipeline","setUpDisabledChangeHandler","cleanUpControl","validateControlPresenceOnChange","noop","cleanUpValidators","registerOnValidatorChange","onDisabledChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","newValue","updateControl","emitModelEvent","setUpFormContainer","cleanUpFormContainer","isPropertyUpdated","changes","viewModel","change","isBuiltInAccessor","valueAccessor","syncPendingControls","form","directives","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","removeListItem$1","list","formDirectiveProvider$1","NgForm","resolvedPromise$1","_NgForm","container","group","removeListItem","isFormControlState","formState","FormControl","isFormControl","formControlBinding$1","NgModel","resolvedPromise","_NgModel","_changeDetectorRef","oldName","disabledValue","booleanAttribute","ChangeDetectorRef","ɵɵNgOnChangesFeature","ɵNgNoValidate","_ɵNgNoValidate","RANGE_VALUE_ACCESSOR","RangeValueAccessor","_RangeValueAccessor","ɵRangeValueAccessor_BaseFactory","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider","FormGroupDirective","_FormGroupDirective","oldCtrl","newCtrl","controlNameBinding","FormControlName","_FormControlName","_ngModelWarningConfig","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_extractId$1","valueString","_SelectControlValueAccessor","ɵSelectControlValueAccessor_BaseFactory","NgSelectOption","_NgSelectOption","_element","_select","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","_extractId","_SelectMultipleControlValueAccessor","optionSelectedStateSetter","ids","opt","selected","selectedOptions","ɵSelectMultipleControlValueAccessor_BaseFactory","ɵNgSelectMultipleOption","_ɵNgSelectMultipleOption","toInteger","AbstractValidatorDirective","_AbstractValidatorDirective","REQUIRED_VALIDATOR","RequiredValidator","_RequiredValidator","ɵRequiredValidator_BaseFactory","ɵɵattribute","MIN_LENGTH_VALIDATOR","MinLengthValidator","_MinLengthValidator","minlength","ɵMinLengthValidator_BaseFactory","MAX_LENGTH_VALIDATOR","MaxLengthValidator","_MaxLengthValidator","maxlength","ɵMaxLengthValidator_BaseFactory","PATTERN_VALIDATOR","PatternValidator","_PatternValidator","ɵPatternValidator_BaseFactory","ɵInternalFormsSharedModule","_ɵInternalFormsSharedModule","ɵɵdefineNgModule","ɵɵdefineInjector","FormArray","adjustedIndex","isAbstractControlOptions","FormBuilder","_FormBuilder","nnfb","reducedControls","newOptions","createdControls","UntypedFormBuilder","_UntypedFormBuilder","controlsConfig","ɵUntypedFormBuilder_BaseFactory","FormsModule","_FormsModule","ReactiveFormsModule","_ReactiveFormsModule","TrustAsHtmlPipe","sanitizer","bypassSecurityTrustHtml","DomSanitizer","pure","_TrustAsHtmlPipe","FormatPipe","util","mask","format","UtilsService","_FormatPipe","HtmlAttrsDirective","ngOnChanges","attrs","renderAttributes","currentValue","previousValue","newValues","oldValues","snapshot","addedClasses","forEach","classList","keys","has","isClass","removeAttribute","Map","attrValue","toLowerCase","I","vnHtmlAttrs","_HtmlAttrsDirective","TrustAsResourceUrlPipe","url","bypassSecurityTrustResourceUrl","_TrustAsResourceUrlPipe","S","class","w","d","IFrameComponent","_window","zone","__privateAdd","iframeEvents","__privateSet","WINDOW","__privateGet","origin","startsWith","post","iframe","contentWindow","postMessage","L","N","IFrameComponent_Conditional_1_Template","IFrameComponent_Conditional_2_Template","allowPaymentAttr","_IFrameComponent","BalancePropertiesConfig","balancePropertiesConfigFactory","BalancePropertiesService","balanceProperties","balancePropertiesEvents","balanceSettingsConfig","balanceInfo","refresh","propagate","showSpinner","propagateRefresh","transfer","isLow","lowBalanceThreshold","lowThresholds","currency","BalanceSettingsConfig","_BalancePropertiesService","BalancePropertiesBootstrapService","balancePropertiesService","balancePropertiesConfig","nativeAppService","localStoreService","trackingService","balancePropertiesCoreService","UserPreHooksLoginEvent","addEventListener","WindowEvent","Focus","Storage","storageArea","localStorage","LocalStoreKey","AuthStorageKey","eventsFromNative","toUpperCase","NativeEventType","GETBALANCE","sendToNative","USERBALANCE","accountBalance","currencyCode","UPDATEBALANCE","Boolean","triggerEvent","UserUpdateEvent","NativeAppService","LocalStoreService","TrackingService","BalancePropertiesCoreService","_BalancePropertiesBootstrapService","BalancePropertiesDslValuesProvider","intlService","recordable","getProperty","payPalBalance","payPalRestrictedBalance","payPalCashoutableBalance","balanceForGameType","bonusWinningsRestrictedBalance","cashoutRestrictedBalance","cashoutableBalance","cashoutableBalanceReal","availableBalance","depositRestrictedBalance","inPlayAmount","releaseRestrictedBalance","playMoneyBalance","playMoneyInPlayAmount","owedAmount","taxWithheldAmount","pokerWinningsRestrictedBalance","cashoutRestrictedCashBalance","cashoutableBalanceAtOnline","cashoutableBalanceAtRetail","creditCardDepositBalance","creditCardWinningsBalance","debitCardDepositBalance","mainRealBalance","uncollectedFunds","sportsDepositBalance","sportsExclusiveBalance","gamesDepositBalance","sportsWinningsBalance","pokerWinningsBalance","slotsWinningsBalance","sportsRestrictedBalance","pokerRestrictedBalance","slotsRestrictedBalance","allWinningsBalance","maxLimitExceededBalance","prepaidCardDepositBalance","createFunction","formatCurrency","Balance","IntlService","_BalancePropertiesDslValuesProvider","BalanceType","require_dexie","__commonJSMin","exports","global","extendStatics","__extends","__","__assign","n","__spreadArray","pack","l","ar","extension","getProto","_hasOwn","hasOwn","props","proto","setProp","defineProperty","functionOrGetSet","derive","Child","Parent","getOwnPropertyDescriptor","getPropertyDescriptor","pd","_slice","slice","end","override","origFunc","overridedFactory","assert","asap$1","arrayToObject","array","extractor","result","nameAndValue","getByKeyPath","keyPath","rv","period","innerObj","setByKeyPath","currentKeyPath","remainingKeyPath","delByKeyPath","kp","shallowClone","concat","flatten","intrinsicTypeNames","intrinsicTypes","cloneSimpleObjectTree","k","objectIsEmpty","circularRefs","deepClone","any","innerDeepClone","toString","toStringTag","iteratorSymbol","getIteratorOf","delArrayItem","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","isAsyncFunction","dexieErrorNames","idbDomErrorNames","errorList","defaultTexts","DexieError","msg","getMultiErrorMessage","failures","ModifyError","successCount","failedKeys","BulkError","pos","errnames","BaseException","exceptions","fullName","msgOrInner","inner","exceptionMap","mapError","domError","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","thiz","debug","setDebug","INTERNAL","ZONE_ECHO_LIMIT","_a$1","globalP","nativeP","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","schedulePhysicalTick","physicalTick","asap","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","rejectionMapper","globalPSD","PSD","numScheduledCalls","tickFinalizers","DexiePromise","psd","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","then","onFulfilled","onRejected","_this","possibleAwait","cleanup","decrementExpectedAwaits","resolve","reject","propagateToListener","Listener","nativeAwaitCompatibleWrap","err","PromiseReject","onFinally","snapShot","values","onPossibleParallellAsync","remaining","newScope","usePSD","zoneProps","run_at_end_of_this_or_next_physical_tick","possiblePromises","results","reason","failure","promise","shouldExecuteTick","beginMicroTickScope","propagateAllListeners","endMicroTickScope","ex","addPossiblyUnhandledError","listeners","finalizePhysicalTick","listener","callListener","ret","markErrorAsHandled","wasRootExec","callbacks","unhandledErrs","finalizers","finalizer","wrap","errorCatcher","outerScope","switchToZone","taskCounter","zoneStack","zoneEchoes","zone_id_counter","a1","a2","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","bEnteringZone","currentZone","GlobalPromise","targetEnv","a3","outerZone","execInGlobalContext","tempTransaction","db","mode","storeNames","trans","DEXIE_VERSION","maxString","minKey","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","DBNAMES_DB","READONLY","READWRITE","combine","filter1","filter2","AnyRange","workaroundForUndefinedPrimKey","Entity","cmp","ta","tb","compareUint8Arrays","getUint8Array","compareArrays","al","bl","tsTag","Table","writeLocked","tableName","checkTableInTransaction","keyOrCrit","indexOrCrit","keyPaths","compoundIndex","ix","keyPathsInValidOrder","idxByName","equals","prevFilterFn","idx","filterFunction","thenShortcut","numRows","_super","class_1","inheritedProps","propName","readHook","Class","auto","objToAdd","lastResult","keyOrObject","objects","keysOrOptions","wantResults","numObjects","objectsToAdd","numFailures","objectsToPut","keysAndChanges","coreTable","entry","changeSpecs","offsetMap","objs","resultKeys","resultObjs","_i","_b","numEntries","mappedOffset","numKeys","Events","evs","chainFunction","defaultFunction","addConfiguredEvents","makeClassConstructor","prototype","createTableConstructor","tableSchema","isPlainKeyRange","ignoreLimitFilter","addFilter","addReplayFilter","isLimitFilter","curr","addMatchFilter","getIndexOrStore","coreSchema","openCursor","iter","coreTrans","set_1","union","cursor","advance","primaryKey","iterate","cursorPromise","valueMapper","mappedFn","wrappedFn","advancer","PropModSymbol","PropModification","spec","term","subtrahend_1","prefixToReplace","Collection","count","parts","lastPart","getval","order","sorter","aVal","bVal","valueMapper_1","a_1","offsetLeft","rowsLeft","bIncludeStopEntry","indexName","strKey","modifyer","anythingModified","origVal","outbound","extractKey","limit","modifyChunkSize","totalFailures","applyMutateResult","expectedCount","criteria","deleteCallback","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","range","coreRange","createCollectionConstructor","whereClause","keyRangeGenerator","keyRange","whereCtx","table","readingHook","simpleCompare","simpleCompareReverse","fail","collectionOrWhereClause","collection","WhereClause","emptyCollection","rangeEqual","upperFactory","lowerFactory","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","upper","lower","upperNeedles","lowerNeedles","nextKeySuffix","needlesLen","initDirection","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","lowerOpen","upperOpen","includeLower","includeUpper","str","ranges","ascending","descending","includeLowers","includeUppers","addRange","newRange","sortDirection","rangeSorter","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","keyWithinCurrentRange","checkKey","createWhereClauseConstructor","orCollection","eventRejectHandler","DEXIE_STORAGE_MUTATED_EVENT_NAME","STORAGE_MUTATED_DOM_EVENT_NAME","globalEvents","Transaction","fnAndPSD","idbtrans","idbdb","dbOpenError","ev","bWriteLock","promiseLike","root","store","spin","currentWaitPromise","memoizedTables","transactionBoundTable","createTransactionConstructor","dbschema","chromeTransactionDurability","wasActive","createIndexSpec","unique","multi","compound","isPrimKey","nameFromKeyPath","createTableSchema","primKey","indexes","safariMultiStoreFix","getMaxKey","IdbKeyRange","getKeyExtractor","getSinglePathKeyExtractor","split","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","extractSchema","tables","autoIncrement","indexByKeyPath","multiEntry","makeIDBKeyRange","idbRange","createDbCoreTable","mutate","isAddOrPut","req","reqs","errorHandler","args1","args2","done","query","reverse","_cursorContinue","_cursorContinuePrimaryKey","_cursorAdvance","doThrowCursorIsNotStarted","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","hasGetAll","request","nonInfinitLimit","idbKeyRange","count_1","req_1","result_1","keyCount","callbackCount","successHandler","schema","tableMap","createMiddlewareStack","stackImpl","middlewares","down","create","createMiddlewareStacks","IDBKeyRange","dbcore","generateMiddlewareStacks","stacks","tbl","setApiOnPlace","tableNames","propDesc","removeTablesApi","lowerVersionFirst","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","parseIndexSyntax","rejectTransaction","transless","createTable","getExistingVersion","updateTablesAndIndexes","patchCurrentVersion","createMissingTables","buildGlobalSchema","adjustToExistingIndexNames","getSchemaDiff","_loop_1","tableChange","addIndex","state_1","metaVersion","queue","versions","versToRun","version","oldSchema","newSchema","tuple","store_1","idxName","contentUpgrade","upgradeSchema_1","contentUpgradeIsAsync_1","returnValue_1","promiseFollowed","decrementor","deleteRemovedTables","runQueue","oldDef","newDef","oldIndexes","newIndexes","oldIdx","newIdx","storeName","dbStoreNames","idbindex","readGlobalSchema","verifyInstalledSchema","installedSchema","ch","dexieName","indexSpec","primKeyAndIndexes","indexNum","Version","stores","outSchema","storesSpec","upgradeFunction","createVersionConstructor","versionNumber","getDbNamesTable","indexedDB","dbNamesDB","Dexie$1","hasDatabasesNative","getDatabaseNames","infos","info","_onDatabaseCreated","_onDatabaseDeleted","vip","idbReady","intervalId","tryIdb","isEmptyRange","RangeSet","fromOrTree","rangeSet","mergeRanges","getRangeSetIterator","rebalance","rightWasCutOff","newSet","_addRangeSet","rangesOverlap","rangeSet1","rangeSet2","i1","nextResult1","i2","nextResult2","state","keyProvided","rootClone","oldRootRight","computeDepth","extendObservabilitySet","part","obsSetsOverlap","os1","os2","unsignaledParts","isTaskEnqueued","signalSubscribersLazily","optimistic","signalSubscribersNow","updatedParts","deleteAffectedCacheEntries","queriesToSignal","tblCache","collectTableSubscribers","dbName","requery","outQueriesToSignal","updatedEntryLists","filteredEntries","_c","entries_1","_d","updatedEntryLists_1","_e","dexieOpen","openCanceller","nativeVerToOpen","schemaPatchMode","throwIfCancelled","resolveDbReady","upgradeTransaction","wasCreated","tryOpenDB","delreq","oldVer","objectStoreNames","fireRemainders","remainders_1","everything_1","awaitIterator","iterator","callNext","doThrow","onSuccess","onError","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","scopeFuncIsAsync","returnValue","pad","createVirtualIndexMiddleware","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","virtualIndex","virtualKeyPath","findBestIndex","translateRange","translateRequest","createVirtualCursor","_continue","virtualCursor","virtualIndexMiddleware","getObjectDiff","prfx","ap","bp","apTypeName","bpTypeName","getEffectiveKeys","hooksMiddleware","downCore","downTable","tableMiddleware","dxTrans","deleting","creating","updating","addPutOrDelete","deleteRange","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","deleteNextChunk","effectiveKeys","getFromTransactionCache","clone","cacheExistingValuesMiddleware","core","cachedResult","isCachableContext","isCachableRequest","observabilityMiddleware","FULL_RANGE","indexesWithAutoIncPK","tableClone","mutatedParts","getRangeSet","pkRangeSet","delsRangeSet","newObjs","oldCache","oldObjs","trackAffectedIndexes","idxVals","pkPos","getRange","readSubscribers","subscr","isLiveQuery","cachable","obsSet","pkRangeSet_1","delsRangeSet_1","queriedIndex","queriedRanges","keysPromise_1","resultingKeys","pKeys","cursor_1","wantValues_1","pkey","addAffectedIndex","addKeyOrKeys","oldKey","newKey","adjustOptimisticFromFailures","numBulkOps","isAboveLower","isBelowUpper","isWithinRange","applyOptimisticOps","ops","cacheEntry","immutable","queryRange","extractPrimKey","extractIndex","extractLowLevelIndex","finalResult","op","modifedResult","includedValues","includedPKs","pk","existingKeys_1","keySet_1","keysToDelete_1","range_1","areRangesEqual","r1","r2","compareLowers","lower1","lower2","lowerOpen1","lowerOpen2","compareUppers","upper1","upper2","upperOpen1","upperOpen2","isSuperRange","findCompatibleQuery","queries","equalEntry","superEntry","countQuery","subscribeToCacheEntry","enqueForDeletion","cacheMiddleware","coreMW","ac_1","endTransaction","wasCommitted","affectedSubscribers_1","stores_1","_f","_g","_h","freezeResults","modRes","tableMW","reqWithResolvedKeys","valueWithKey","adjustedReq","exactMatch","vipify","vipDb","receiver","Dexie","addons","bSticky","db_1","vipDB","tx","addon","versionInstance","stack","level","mw","disableAutoOpen","closeOptions","hasInvalidArguments","doDelete","onlyIfCompatible","idbMode","enterTransaction","symbolObservable","domDeps","liveQuery","querier","hasValue","execute","closed","abortController","accumMuts","currentObs","subscription","startedListening","mutationListener","doQuery","_doQuery","shouldNotify","databaseName","generatorFn","promiseOrFunction","optionalTimeout","propagatingLocally","event_1","detail","propagateLocally","updateParts","wasMe","bc","createBC","changedParts","connections_1","replacePrefix","namedExports","ABTestingClientConfig","abTestingClientConfigFactory","CASINO","AdvanceGameDataClientConfig","advanceGameDataClientConfigFactory","ApiPathsClientConfig","apiPathsClientConfigFactory","ArcadeLobbyClientConfig","arcadeLobbyClientConfigFactory","BetMGMOriginalsClientConfig","betMGMOriginalsClientConfigFactory","CasinoCoreConfigClientConfig","casinoCoreConfigClientConfigFactory","CasinoAsIFrameOverlayConfig","casinoAsIFrameOverlayConfigFactory","ClientSideConfigClientConfig","clientSideConfigClientConfigFactory","CommonClientConfig","commonClientConfigFactory","CozyBingoClientConfig","cozyBingoClientConfigFactory","DevSettingsConfig","devSettingsConfigFactory","DiscoverFeedClientConfig","discoverFeedClientConfigFactory","DownloadAppFromDeviceClientConfig","downloadAppFromDeviceClientConfigFactory","FeaturesClientConfig","featuresClientConfigFactory","FeedCacheClientConfig","feedCacheClientConfigFactory","FreeSpinsClientConfig","freeSpinsClientConfigFactory","GameLaunchTrackingClientConfig","gameLaunchTrackingClientConfigFactory","GamePremiereClientConfig","gamePremiereClientConfigFactory","GameSelectorWidgetClientConfig","gameSelectorWidgetClientConfigFactory","GameShowHubClientConfig","gameShowHubClientConfigFactory","GameConfigClientConfig","gameConfigClientConfigFactory","GameImpressionsClientConfig","gameImpressionsClientConfigFactory","GamificationWidgetConfig","gamificationWidgetConfigFactory","GamingStoriesClientConfig","gamingStoriesClientConfigFactory","GamingStoriesPhase2ClientConfig","gamingStoriesPhase2ClientConfigFactory","GeolocationClientConfig","geolocationClientConfigFactory","GlobalJackpotClientConfig","globalJackpotClientConfigFactory","GlobalSearchClientConfig","globalSearchClientConfigFactory","GlobalClientConfig","globalClientConfigFactory","HeaderTeasersClientConfig","headerTeasersClientConfigFactory","ImageLoadOptimizationClientConfig","imageLoadOptimizationClientConfigFactory","ImmersiveLobbyClientConfig","immersiveLobbyClientConfigFactory","JackpotDataClientConfig","jackpotDataClientConfigFactory","LiveCasinoLoungeClientConfig","liveCasinoLoungeClientConfigFactory","LiveDealerConfigClientConfig","liveDealerConfigClientConfigFactory","LiveCasinoClientConfig","liveCasinoClientConfigFactory","LMTDataClientConfig","lmtDataClientConfigFactory","McPageClientConfig","mcPageClientConfigFactory","MinBetGamesClientConfig","minBetGamesClientConfigFactory","ModularBingoClientConfig","modularBingoClientConfigFactory","ModularSettingsClientConfig","modularSettingsClientConfigFactory","ModularizationClientConfig","modularizationClientConfigFactory","NativeGameLaunchClientConfig","nativeGameLaunchClientConfigFactory","NewsFeedConfigClientConfig","newsFeedConfigClientConfigFactory","NonCriticalClientConfig","nonCriticalClientConfigFactory","OptimizedTeaserClientConfig","optimizedTeaserClientConfigFactory","PlayerStatsWidgetClientConfig","playerStatsWidgetClientConfigFactory","PreLoginClientConfig","preLoginClientConfigFactory","PromoCoinEconomyClientConfig","promoCoinEconomyClientConfigFactory","PromoOfferWidgetConfig","promoOfferWidgetConfigFactory","PromotedGamesClientConfig","promotedGamesClientConfigFactory","PromotionsBannerClientConfig","promotionsBannerClientConfigFactory","PromotionsInfoClientConfig","promotionsInfoClientConfigFactory","QuickInfoClientConfig","quickInfoClientConfigFactory","RecentWinnersWidgetClientConfig","recentWinnersWidgetClientConfigFactory","RecentlyPlayedClientConfig","recentlyPlayedClientConfigFactory","SearchClientConfig","searchClientConfigFactory","SlotRacesClientConfig","slotRacesClientConfigFactory","SmartLobbyClientConfig","smartLobbyClientConfigFactory","SubNavigationClientConfig","subNavigationClientConfigFactory","SuperButtonClientConfig","superButtonClientConfigFactory","ThumbnailConfigClientConfig","thumbnailConfigClientConfigFactory","VideoPreviewClientConfig","videoPreviewClientConfigFactory","WidgetConfigClientConfig","widgetConfigClientConfigFactory","md","CashierIframeComponent","dialogRef","page","windowRef","utils","appInfoConfig","configProviderService","iframeCommunicationEnabled","onNoClick","casinoConfig","provideCasinoConfig","mcPage","provideMcPageConfig","provideFeaturesConfig","enableIframeCommunication","qdUrl","cashierQDUrlTemplate","brand","productId","lang","ssoToken","depositUrl","cashierDepositUrlTemplate","replace","checkQDAllowedForDepositURL","isQDAllowed","cashierIframeUrl","nativeWindow","removeEventListener","cashierIframe","getElementById","unescape","seed","cur","trim","paramIndex","action","showAllOptions","MatDialogRef","MAT_DIALOG_DATA","Page","WindowRef","AppInfoConfig","ConfigProviderService","ae","zt","ɵɵpipeBind1","ɵɵsanitizeResourceUrl","MatDialogContent","MatDialogActions","_CashierIframeComponent","GamePopoutComponent","provideGlobalConfig","continue","cancel","gameLaunchNewWindow","gameSessionRestart","gamePopOutUrl","ɵɵtextInterpolate","MatDialogClose","_GamePopoutComponent","LobbyItemBaseModel","LobbyItem","setCategoriesMap","categoriesMap","lsCategoriesMap","setcategoryNameLangMap","categoryNameLangMap","lsCategorytNameLangMap","setStickerNameMap","stickerNameMap","lsStickerNameMap","setGameMetaDataMap","gameMetaDataMap","lsGameMetaDataMap","setLobbyItemFromLocalStorage","lobbyInfoLocalStorage","lbyTempName","lbyTargetType","optSegName","lsCatVsFeatureMetadata","catVsFeatureMetadata","lobbyGameIconImageSuffix","getPosition","xPosition","yPosition","scrollLeft","clientLeft","offsetTop","scrollTop","clientTop","offsetParent","getClientPosition","postion","getHiddenValues","clientHeight","getTranslateValues","matrixType","includes","matrixArray","matrixValues","parseFloat","onlyUnique","hasClass","contains","RegExp","addClass","elm","documentElement","removeClass","reg","getAmount","locale","isNaN","formatter","Intl","NumberFormat","isValid","toDate","date","replaceAll","year","substring","month","timestamp","Date","toLocaleDateString","toTimeStamp","totalMinutes","parseInt","minutes","Math","floor","hours","days","timeStamp","textToNumber","small","zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety","magnitude","hundred","thousand","million","billion","finalNumber","words","word","elementScroll","isLeft","leftCheckValue","stopImmediatePropagation","scrollWidth","showLeft","showRight","overflow","requestAnimationFrame","replaceUrlState","urlPrefix","location","href","history","replaceState","pushUrlState","urlParts","pushState","join","isNotInUrl","findParent","closest","isDateValid","convertedDate","getTime","PlatformApiService","ApiBase","apiServiceFactory","ApiServiceFactory","ProductService","_PlatformApiService","productService","createForProduct","area","forwardProductApiRequestHeader","getMetadata","isEnabledProductApi","ImageType","PromoOptinStatusType","CUSTOM_LINK_TYPE_DRAWER","CUSTOM_LINK_TYPE_LINK","Dimension","LottieAnimationStatus","ITEM_TYPE_GAME_LOGO","ITEM_TYPE_GAME","ITEM_TYPE_CUSTOM_LINK","CUSTOM_LINK_TYPE_JACKPOT_DRAWER","GSHUB_ONBOARDING_COOKIE_NAME","GameShowHubService","api","tracking","messageQueue","casinoLobbyService","categoryRoutePrefix","sectorIdPrefix","loadingPublisher","mapPublisher","backgroundPublisher","animatedLayerPublisher","sectorsMap","sectorsPublisher","sectorOpenedPublisher","chatWindowOpenedPublisher","lottieAnimationStatusPublisher","drawerContentMap","drawerContentMapPublisher","onboardingDataPublisher","jackpotDrawerContentMap","jackpotDrawerContentMapPublisher","lobbyGames","gameShowHubConfig","provideGameShowHubConfig","loadingObservable","mapObservable","backgroundObservable","animatedLayerObservable","sectorsObservable","sectorOpenedObservable","chatWindowOpenedObservable","lottieAnimationStatusObservable","drawerContentMapAvailable","onboardingDataAvailable","jackpotDrawerContentMapAvailable","mapData","globalConfig","globalConfigData","globalClrConfig","globalConfigClr","isMobile","currentWidth","lobbyType","currentLobbyType","mainElement","parentElement","isiOS","windowWidth","offsetHeight","innerHeight","isMobileLandscape","isMobilePhone","mobileLandscapeConfig","minWidth","maxWidth","getScreenName","innerHTML","visibility","opacity","getLoadingStatus","combineLatest","getMap","mapPath","responseType","withCredentials","setCustomLinkDrawerContent","MessageType","Error","lifetime","MessageLifetime","Single","getLobbyGames","setLobbyGame","game","getJackpotSectorItem","jackpotSectorItem","setJackpotSectorItem","sectorItem","initSectors","sector","Lottie","initMap","setLobbyType","setBackgroundStatus","loaded","setAnimatedLayerStatus","setSectorLoaded","sectorId","sectorType","getSectorsLoadedCount","setSectorOpened","selectedMapItem","setChatWindowOpened","isOpened","setLottieAnimationStatus","setOnboardingData","onboardingData","getOnboardingData","fetchDrawerContent","paths","contentPaths","emptyDrawerMap","drawerContent","getDrawerContentMap","getDrawerContent","fetchJackpotDrawerContent","emptyJackpotDrawerMap","getJackpotDrawerContentMap","getJackpotDrawerContent","getJackpotAmount","jackpotAmount","jpTickerIncrement","globalClientConfig","jackpotConfig","provideJackpotConfig","initialcurrency","realpart","decimalpart","jackpotTickValue","lobbyConfigurations","IncrementTickingForJackpotOnGameTiles","toFixed","showJackpotCurrencyOnRight","jpAmount","showLoading","hideLoading","getCategoryInfo","link","subCategoryUrl","categoryId","substr","categoryInfo","getLobbyInfo","categoryName","engCategoryName","trackEvent","trackingType","categoryEvent","labelEvent","actionEvent","positionEvent","locationEvent","eventDetails","uRLClicked","clear","sectors","customLinks","itemType","customLinkDrawers","customLinkType","customLinkDrawerContent","customLinkDrawerContents","arrayString","customLinkJackpotDrawers","customLinkJackpotDrawerContents","arr","CasinoLobbyService","_GameShowHubService","GameManagerService","gameMetaDataPlayerStatsSubject","gameMetaDataPlayerStatsObservable","getGameInfo","gameId","getGameDisplayName","setGameIconNotFound","iconType","gameInfo","isImageNotFound","isGameIconNotAvailable","updateMetaData","_GameManagerService","DsBadge","variant","inverse","hostClass","getAriaLabel","textContent","hostAttrs","hostVars","hostBindings","se","Et","_DsBadge","G","ɵɵstyleMap","ctx_r3","enableStickerStyles","getStickerStyles","ɵ$index_2_r3","getStyles","badge_r2","CsBadgeComponent_For_2_Conditional_1_Template","CsBadgeComponent_For_2_Conditional_2_Template","isLegacy","CsBadgeComponent","required","badges","stickerStyles","isUk","sticker","CsBadgeComponent_For_2_Template","_forTrack0","changeDetection","_CsBadgeComponent","CsChevronComponent","chevronKind","CsChevronComponent_Conditional_0_Template","CsChevronComponent_Conditional_1_Template","_CsChevronComponent","iconClass","titleInlineStyle","titleText","subtitleInlineStyle","subtitleClass","subtitleText","ContainerDescriptionComponent_Conditional_0_Conditional_5_Template","ContainerDescriptionComponent_Conditional_0_Conditional_9_Template","ContainerDescriptionComponent_Conditional_0_Conditional_10_Template","ContainerDescriptionComponent","ɵɵInputTransformsFeature","ContainerDescriptionComponent_Conditional_0_Template","_ContainerDescriptionComponent","CsCtaComponent","kind","cta_text","casinoDsClass","inlineStyle","ngContentSelectors","_c1","DsButton","_CsCtaComponent","getComputerStyle","GameTileCtaComponent","customBgColor","customTextColor","ctaWidth","numberAttribute","GameTileCtaComponent_Conditional_0_Template","GameTileCtaComponent_Conditional_1_Template","_GameTileCtaComponent","GlobalJackpotCtaComponent","GlobalJackpotCtaComponent_Conditional_0_Template","GlobalJackpotCtaComponent_Conditional_1_Template","_GlobalJackpotCtaComponent","HyperLinkCtaComponent_Conditional_0_Conditional_1_Template","HyperLinkCtaComponent_Conditional_0_Conditional_2_Template","HyperLinkCtaComponent","showIcon","HyperLinkCtaComponent_Conditional_0_Template","_HyperLinkCtaComponent","startIconClass","CsClassIconComponent","CsClassIconComponent_Conditional_1_Template","_CsClassIconComponent","RpFavCtaLegacyComponent","color","backgroundColor","endIconClass","isFav","setActive","_c0","ɵɵstyleProp","_RpFavCtaLegacyComponent","RpFavWidgetCtaComponent_Conditional_0_Conditional_3_Template","RpFavWidgetCtaComponent","RpFavWidgetCtaComponent_Conditional_0_Template","RpFavWidgetCtaComponent_Conditional_1_Template","_RpFavWidgetCtaComponent","imgSrc","ɵɵsanitizeUrl","altText","CsImageIconComponent","CsImageIconComponent_Conditional_1_Template","_CsImageIconComponent","coinsForOptin","ɵɵelementContainerStart","SlotRaceCtaComponent_Conditional_1_Conditional_3_Conditional_8_Template","ki","SlotRaceCtaComponent_Conditional_1_Conditional_3_Template","SlotRaceCtaComponent_Conditional_1_Conditional_4_Template","SlotRaceCtaComponent","SlotRaceCtaComponent_Conditional_0_Template","SlotRaceCtaComponent_Conditional_1_Template","_SlotRaceCtaComponent","inlineStyleCategoryName","customCategoryNameClass","categoryNametext","inlineStyleGameName","customGameNameClass","gameNametext","inlineStyleGameType","customGameTypeClass","gameTypeText","TileFooterComponent_Conditional_0_Conditional_3_Template","TileFooterComponent_Conditional_0_Conditional_4_Template","TileFooterComponent_Conditional_0_Conditional_5_Template","customCategoryContainerClass","TileFooterComponent","TileFooterComponent_Conditional_0_Template","_TileFooterComponent","getNavigator","isChildOfPicture","isImageElement","setImage","imagePath","useSrcset","setSources","attrName","sources","setSourcesToDefault","setSourcesToLazy","setSourcesToError","setImageAndSources","setSourcesFn","setImageAndSourcesToDefault","setImageAndSourcesToLazy","setImageAndSourcesToError","Hooks","platformId","attributes","newAttributes","cssClassNames","removeCssClassName","cssClassName","addCssClassName","hasCssClassName","SharedHooks","decode","img","errorImagePath","isPlatformServer","IntersectionObserverHooks","scrollContainerKey","entrys","lazyLoadImage","hooks","evntObservable","mergeMap","LAZYLOAD_IMAGE_HOOKS","LazyLoadImageDirective","never","PLATFORM_ID","LazyLoadImageModule","ge","onImageStateChanged","onGameIconError","computedStyle","isImageLoaded","defaultSrc","ɵɵpureFunction2","isBlockModuleVersion","ImageLoaderComponent_Conditional_2_Conditional_1_Template","ImageLoaderComponent_Conditional_2_Conditional_2_Template","disableLazyLoading","isDll","enableFallback","ImageLoaderComponent","lazySrc","visibilityChanged","onVisibilityChanged","elementIntersect","gameTileBorderRadius","outputs","ImageLoaderComponent_Conditional_2_Template","_ImageLoaderComponent","FeatureContainerComponent","defaultChunkSize","defaultSwipeSize","chunkSize","enableNavigation","swipeSize","ngAfterContentInit","contentChildren","contentItem","contentElement","contentQueries","dirIndex","_FeatureContainerComponent","freespinAvailableCount","freespinTotalCount","FreeSpinsSummaryIconComponent_Conditional_0_Conditional_8_Template","FreeSpinsSummaryIconComponent_Conditional_0_Conditional_9_Template","freespinscountbg","ɵɵpureFunction1","isThreeDigit","FreeSpinsSummaryIconComponent","isOptedIn","FreeSpinsSummaryIconComponent_Conditional_0_Template","_FreeSpinsSummaryIconComponent","customClassBasedOnNumber","isMultipleDigit","gradientIndex","GradientNumberComponent","SINGLE_DIGIT_THRESHOLD","customGradientClassMap","GradientNumberComponent_Conditional_0_Template","_GradientNumberComponent","currentViewState","viewStates","Overlay","Disabled","TopTenGameTileAggregationComponent","TileViewState","viewState","Normal","showonMouseHover","withOverlay","withFav","mouseenter","mouseleave","TopTenGameTileAggregationComponent_Conditional_20_Template","TopTenGameTileAggregationComponent_Conditional_25_Template","TopTenGameTileAggregationComponent_Conditional_31_Template","_TopTenGameTileAggregationComponent","favVariants","Filled","iconKind","favIconKinds","Star","Hollow","Heart","FavCtaComponent","FavVariantType","FavIconKindType","FavCtaComponent_Conditional_0_Template","_FavCtaComponent","QuickInfoIconComponent","QuickInfoIconComponent_Conditional_0_Template","_QuickInfoIconComponent","WS_REGEXP","EMPTY_ARRAY","DecoratorClassDirective","_ngEl","initialClasses","rawClasses","stateMap","decoratorClassHost","_applyStateDiff","csDecoratorClass","toggleClass","_toggleClass","ngDoCheck","klass","_updateState","rawClass","nextEnabled","stateEntry","delete","c_lass","_DecoratorClassDirective","ɵɵpropertyInterpolate","alt","_r2","onImageLoad","onImageLoadError","Image","isError","imageStyle","output","loadedFailed","Image_Conditional_2_Template","Image_Conditional_3_Template","ɵɵpureFunction0","NgStyle","NgOptimizedImage","_Image","disableTheme","host","isImageLoadError","optimisedSrc","casinoManagerService","CasinoManager","gameManagerService","casinoStylesService","CasinoStylesService","initialiseImageConfig","gameConfig","provideGameConfig","defaultUrl","getGrayImageUrl","enableGameIconTheming","appendTheme","onLoadError","InvokerProductService","getInvokerProduct","isSingleDomainApp","HOST","appProduct","isNative","_InvokerProductService","CasinoWidgetService","navigationService","invokerProductService","isCasinoWidget","isfromCasino","setWidgetProduct","invokerProduct","widgetInvokerProduct","search","getApiParams","postMessageToParent","getWidgetPosition","widgetPosition","getWidgetHeight","elementId","widget","currentWidgetHeight","scrollHeight","assigningWidgetParams","interval","setInterval","checkAndUpdateWidgetHeight","newWidgetHeight","maxHeightCount","clearInterval","isFooterWidget","categoryid","getWidgetProduct","setInvokerProduct","NavigationService","_CasinoWidgetService","HomeLobbyModel","NativeApiService","nativeApplication","raiseEvent","actionValue","frame","display","body","appendChild","raiseEventCommon","eventInfo","isNativeWrapper","raiseTeaserEvent","prevEventId","clearEvent","processPromoEvent","eventId","processLobbyEvent","raiseOpenGameEvent","openUrl","raiseNativeAppEvent","nativeScheme","nativeAppScheme","targetEvent","scheme","parentNode","removeChild","_NativeApiService","windowRect","casinoWidgetService","cookieService","nativeApiService","logger","isTouchDevice","checkTouchDevice","loadNextGamesSetPublisher","loadNextGamesSetObservable","lobbyModelPublisher","lobbyObservable","reSizePublisher","reSizeObservable","lobbyModel","playerSegmentionSubject","playerSegmentDataObservable","setCategoryLobby","publishCategory","sourceCategory","publishCtgry","category","defCategory","pathname","setProperty","activeCategory","navigationLevel","previousProduct","currentCategory","setWidgetToggleInfo","enableToggle","toggleEnabled","getWidgetToggleInfo","getActiveCategory","getLobbyType","lmtConfig","provideLmtConfig","lobbyTypeMap","getProductForLobbyType","lobbyTypeMapt","isDownloadClient","isTouch","matchMedia","matches","navigator","maxTouchPoints","setGameHomeUrl","gameHomeUrl","getGameHomeUrl","loadNextGamesSet","getCurrentWidth","getDefaultCategoryType1","defaultCategory","categoryLookup","sitecoreData","getDefaultCategoryType","goToLobby","gameEventId","goTo","getLobbyUrlPrefix","lmtDataClientConfig","getProduct","getProductForGivenLobbyType","lobbyTypet","IsFeatureEnabledforLobbytype","featureType","countValue","stringValue","stringArray","jsonValue","forceMobileNav","fetchMeta","IsFeatureEnabledforLobbytypeWithInvokerProduct","feature","invokerproduct","assignGameClass","getSlotRaceCategoryId","slotRacesConfig","provideSlotRacesConfig","slotRacesLMTCategoryIdForLobbyType","getJackpotTileCategoryId","jackpotTilesLMTCategoryIdForLobbyType","getLobbyTypeForProduct","productRoute","productLobbyTypes","lobbytype","extractLobbyType","setCurrentLobby","currentlobbyType","getCurrentLobby","isSingleHostLobbyType","currentProduct","singleHostLobbyItem","singleHostLobbyMap","sh","singleHost","staticImages","gray","CookieService","Logger","_CasinoManager","ConstService","_ConstService","Instant_Casino","Live_Casino","Recent_Games","Favourite_Games","LMC_GYML","ALL_GAMES_CATEGORY_ID","LIVE_DEALER_GAMES_CATEGORY_ID","LIVE_CASINO_ALL_GAMES_CATEGORY_ID","LOBBY_LOADING_COMPLETED_EVENT","FAVOURITE_GAMES_CATEGORY_ID","RECENT_GAMES_CATEGORY_ID","SPORTS_HOME_ICON_EVENT","UNFINISHED_GAMES_CATEGORY_ID","GYML_GAMES_CATEGORY_ID","HOME_CATEGORY_ID","LMC_GYML_CATEGORY_ID","EGV_GYML","DETAIL_PAGE_MODE_PICKER","DETAIL_PAGE_MODE_FORCEPICKER","DETAIL_PAGE_MODE_FORCE","DETAIL_PAGE_MODE_ALL","GAME_OF_THE_DAY","HIGHLIGHT_JACKPOTS","LIVE_CASINO","PROMOTIONS_DISCOVER","QUICK_LINKS","EDITORS_PICK","SEARCH","SEARCH_GYML","ADV_GAME","EventNames","EventDataKeys","VanillaTrackingAdapter","vanillaTrackingService","VanillaTrackingService","trigger","reportError","updateDataLayer","_VanillaTrackingAdapter","PlatformBingoApiService","hr","_PlatformBingoApiService","BINGO","UrlUtilityService","products","getCasinoBaseUrl","getUrl","getProductBaseUrl","productOverride","getProductApiBaseUrl","getApiBaseUrl","getCasinoApiBaseUrl","apiBaseUrl","getClientConfigUrl","getCategoryNavigationBaseUrl","getBingoApiBaseUrl","getPromoSmartUrl","getDiceSmartUrl","getCasinoSmartUrl","isProduct","URL","getAppCurrentProduct","ProductHomepagesConfig","_UrlUtilityService","ApiPathsHelperService","transformApi","apiPathConfig","Function","_ApiPathsHelperService","BingoFavouriteService","apiBingoService","router","urlUtilityService","apiPathsHelperService","addFavourite","roomId","accountName","apiPathsConfig","provideApiPathsConfig","bingo","isFavourite","endPoint","removeFavourite","getFavouriteUrl","favAddClass","favRemClass","getFavouriteWidgetGames","sso","Router","_BingoFavouriteService","CasinoCoreNpmParamsService","setcasinoCoreNpmParams","casinoCoreNpmParams","casinoNpmParams","getcasinoCoreNpmParams","_CasinoCoreNpmParamsService","CasinoIFrameOverlayService","casinoManager","casinoCoreNpmParamsService","setOverlayStatus","isOverlay","getOverlayStatus","isOverLayOnAProduct","casinoAsIFrameOverlayConfig","provideCasinoAsIFrameConfig","overlayLobbyTypeMap","lobbyTypeForNavCategories","overlayBottomNavLobbyTypeMap","overlayBottomNavLobbyTypeMapItem","fetchOverlayLobby","overlayConfig","overlayLobbyType","applicableLobbyTypeMaps","customLobbyTypeMaps","lobbyTypeObj","_CasinoIFrameOverlayService","CasinoApiService","productConfig","requestParams","getCasinoProductApi","headers","environment","getBingoApi","postBingoApi","put","jsonp","callbackParam","ProductsConfig","_CasinoApiService","CozyBingoDataService","casinoApiService","cozyBingoRoomsData","cozyBingoRoomsDataObservable","cozyBingoRecentGamesData","cozyBingoRecentGamesObservable","cozyBingoRoomsMap","cozyBingofavourites","cozyBingoRecentGames","getBingoData","fetchBingoRoomsSitecoreData","fetchRecentlyPlayed","sitecoreResponseRooms","sitecoreResponseRoomnames","featuresConfiguration","globalMessages","categoryList","bingoConfiguration","scheduleData","games_list","roomDataMap","cozybingoConfig","provideCozyBingoConfig","cozyBingoFavouritesInRpwidget","cozyBingoRecentGamesInRpwidget","raiseEventForRecentlyPlayed","recentGamesObject","recentgames","provideGlobalSearchConfig","rooms","sitecorerooms","sitecoreroomnames","schedulePolling","defaultRoomSitecoreInfo","room","roomSitecoreInfo","sitecoreroom","desktopImage","enableWidgetImageForBingoGame","widgetImage","titleFromRoomNames","sitecoreInfo","getRoomdatabyId","roomid","getcozybingofavourites","cozyFavs","checkForFavouriteGame","fromCasino","getcozybingorecentgames","cozyrpgames","getFeatureConfigs","getGlobalMessages","getcategoryList","getbingoConfiguration","ReloadFeed","gameData","timeOut","curentTime","games","g","state_end_time","f_game","apply","_CozyBingoDataService","FavouriteService","messageQueueService","cookie","bingoFavouriteService","cozyBingoService","casinoIFrameOverlayService","favouriteGames","otherProductFavouriteGames","favouriteGamesSubject","favouriteGamesFeedObservable","otherProductFavouriteGamesSubject","bingoProductFavouriteGamesSubject","otherProductFavouriteGamesFeedObservable","bingoProductFavouriteGamesFeedObservable","quickInfoPublisher","quickIconObservable","vanillaTrackingAdapter","setFavouriteGames","nonCriticalFeeds","getObject","gameToBeFavorited","toggleGameFavourite","getFavouriteGames","updateOtherProductFavouriteGames","publishingFavObervable","bingoFavData","gameName","trackFavourite","gameInteraction","GameInteraction","ComponentGameInteraction","ComponentGameSection","shouldTrackSection","gameSection","fetchGames","preLoginFavourite","isFromEgv","RemoveGameFavourite","gameVariantName","fromCozybingo","contactUsParam","requestBody","errorcode","favourites","raiseFavEvent","AddGameFavorites","redirect","addError","Information","TempData","forceReload","removeQuickInfoClass","favEvent","CustomEvent","dispatchEvent","_FavouriteService","CasinoCoreGameLaunchFactoryService","setGameLaunchService","gameLaunchService","getGameLaunchService","setGameService","gameService","getGameService","_CasinoCoreGameLaunchFactoryService","JACKPOT_MAP_BROADCAST_EVENT","JACKPOT_VALUE_QUERY_EVENT","JackpotDataService","timerService","jackpotSubject","jpTickingSubject","jackpotSortGames","jackpotTilesSubject","jpSortGamesObservable","multiJackpotWidgetCarouselSubject","jackpotFeedObservable","jackpotTilesFeedObservable","multiJackpotWidgetCarouselChangedObservable","jpTickingObservable","gameJackpotMap","jackpotGroupNameMap","listenersCnt","incrementTickingForJackpotOnGameTiles","queryJackpotValueHandler","fetchJackpot","jackpots","jackpotsCache","setJackpots","fetchJackpotTiles","enableJackpotTile","jackpotTiles","startFeed","JackpotData","provideFeedCacheConfig","enableJackpotFeed","fetchJackpotPromise","enableTickingForJackpotOnGameTiles","setJackpotTickers","SelfExclusionPollInterval","jpInterval","jackpotFeed","jackpotKey","jackpotGroupName","gamesList","jackpotObject","isHotJackpotGroup","jackpotName","jackpotAttributes","globalJackpotAttributes","incrementJackpotValues","changeActiveMultiJackpotWidget","isChanged","getJackpotData","jpRibbonBgColor","JackpotRibbonBgColor","jpRibbonTextColor","JackpotRibbonTextColor","getJackpotRibbonStyles","jackpotValue","jpRibbonBgClr","jpRibbonTextClr","jpBgColor","jpTextColor","getJackpotGroupNameMap","getJackpotByGroupName","groupName","getGameJackpotValue","stopFeed","tickingInterval","setIntervalOutsideAngularZone","formatcurrency","inputarr","amt","valueStr","currencyFormat","fetchJackpotSortGames","sortgamesInterval","nextUpdateTime","sortDataNextTime","resultTime","jackpotDataConfig","jackpotGamesSortingTime","sortInterval","filterJpGroup","jackpotGroups","gpGroupName","sortData","gamesAvailable","filterGames","sortGamesList","sortGames","sgame","unSortGames","id1","some","id2","newFeaturegridArray","featureGrid","maxRowSpan","rowSpan","maxColSpan","colSpan","TimerService","_JackpotDataService","import_dexie","DexieSymbol","_Dexie","import_wrapper_default","IDB_NAME","DBTableSchemas","IndexedDBService","setupIndexedDB","setIndexedDbTable","isOpen","open","setTablesSchema","_IndexedDBService","IndexedDBManager","indexedDBService","getIndexedDbStore","read","cacheKey","lmtExpirationTime","cachedItem","cachedAt","createdAt","resolveData","write","cacheValue","catch","_IndexedDBManager","LocalStorageExpirablePersistenceService","expirationInterval","getItem","parsedCacheItem","JSON","parse","setItem","stringify","_LocalStorageExpirablePersistenceService","GameDataFromCacheResponseModel","gameMetaData","gamesNotInCache","CacheManagerService","localStorageExpirablePersistenceService","indexedDBManager","getCategoryCacheKey","cachekey","username","casinoContextValues","readCategoryDataLocalCache","expirationIntervalInSeconds","cachedCategoryData","featuresConfig","devSettingsConfig","provideDevSettingsConfig","isPreviewUser","isIndexedDBEnabled","enableClientStorage","Promise","readCategoryDataLocalCacheReturnValue","writeCategoryLocalStorageCacheMap","fullLobbyInfo","lobbyItemToStore","disableCasinoLocalStorage","enableIndexedDBStorage","writeForceGameLaunchObjInSessionStorage","sessionStorageObjName","gameObj","sessionStorage","getAuthenticatedThumbnailCacheKey","getAnonymousThumbnailCacheKey","getThumbnailCacheKey","setThumbnailLocalStorageCacheMap","thumbnailGames","forceLaunch","getThumbnailsfromLocalStorage","removeThumbnailfromLocalStorage","removeItem","readForceGameLaunchObjDataFromSessionStorage","objName","ForceGameLaunchObjData","getAllCategoriesFromLocalCache","browserLocalStorageCategoryDataUpdateInterval","setGameToStickersMap","getGamesDataFromCache","devSettings","gameDataSet","singleGameData","localStorageTimeStamp","browserLocalStorageCacheDuration","setGameDataCache","getGameToStickersMap","_CacheManagerService","UnfinishedGamesService","cacheManager","unfinishedGames","unfinishedGamesFromAllLobby","unfinishedGamesSubject","unfinishedFeedObservable","unfinishedGamesFromAllLobbySubject","unfinishedFeedFromAllLobbyObservable","setUnfinishedGames","apiurl","gamesServices","cloneDeep","rpGamesFilterInLiveCasino","filterLiveCasinoGames","rpWidgetGamesFilterInLiveCasino","categoryCoreLookUp","getUnfinishedGamesFromAllLobby","getUnfinishedGames","checkForUnfinishedGame","_UnfinishedGamesService","hotIcon","epcotHotIcon","GameEmbedComponent_div_6_span_2_img_2_Template","GameEmbedComponent_div_6_span_2_img_4_Template","enableEpcotSubNavigation","GameEmbedComponent_div_6_span_2_Template","isFastLoadingGame","jpRibbonStyles","_c2","newJackpotRibbonStyling","enableHotIcon","displayQuickInfo","toggleFavourite","GameEmbedComponent_div_13_ng_template_4_div_1_Template","useFavouriteGames","GameEmbedComponent_div_13_div_2_Template","GameEmbedComponent_div_13_ng_template_4_Template","ɵɵtemplateRefExtractor","useQuickInfo","Favourite_r4","_r6","_r5","GameEmbedComponent_div_18_span_5_Template","enableDetailPage","forceDetailPage","GameEmbedComponent","favouriteService","unfinishedGamesService","jackpotDataService","gameLaunchFactoryService","embedGameClicked","gameClass","forceVisible","QuickInfoDisplay","jackpotData","subnavConfig","provideSubNavigationConfig","enableJpTickingForLobbyType","showJackpotOnGameTiles","showJackpotOnGameTilesLobbyType","unfinishedStyle","bageStyle","unfinishedBG","unfinishedBackground","unfinishedBGOpacity","unfinishedText","UNFINISHED","favouriteGamesLobbyType","enableQuickInfoLobbyType","showGameTitle","setGameClass","subscribrToUnfinishedFeed","setJackPotValue","subscribtToJackpotFeed","hotIconPath","unfinishedFeedSubscription","jackpotHandle","FavouriteGames","Navigator","navigateToLogin","categorytype","hideQuickInfo","mouseOver","overlayVisibilityStatus","overlayStatus","mouseLeave","clearPersistent","setUnfinishedImageStyle","isUnfinishedBadge","radius","setBageStyle","fullStyle","test","textLength","enableRibbonConfig","demoAvailable","isNewBadge","isCashbackBadge","isCasinoLiveBadge","isFlagBadge","ɵɵresolveWindow","GameEmbedComponent_div_6_Template","GameEmbedComponent_div_8_Template","GameEmbedComponent_div_13_Template","GameEmbedComponent_div_18_Template","NgIf","_GameEmbedComponent","placeholder","categoryRoute","LazySearchDesktopComponent","LazySearchDesktopComponent_Defer_1_Template","ɵɵdefer","LazySearchDesktopComponent_Defer_2_DepsFn","ɵɵdeferOnImmediate","_LazySearchDesktopComponent","AdvanceGameDataModel","AdvanceGameDataService","advanceGameDataModel","getAdvanceCategoryInfo","gameLaunchParam","parentcategoryId","subcategoryId","categoryType","catInfoObject","rowNumber","catInfo","featureid","filterFeatureIds","parentLMTCategoryId","lmtCategoryId","parentCategoryId","subCategoryId","createAdvanceGameModel","parentCategory","subCategory","columnNumber","iconTypeForTracking","gridPosition","advanceGameDataConfig","provideAdvanceGameDataConfig","featureId","enableAdvanceGameData","iconSize","setRemainingAdvanceGameDataParameters","gameClickedFromSearchAdvanceGameDataModel","section","gridPos","browserName","getCapability","browserVersion","osName","osVersion","devicemake","vendor","setAdvanceGameModel","getAdvanceGameModel","advanceGameDataModelObj","appendAdvanceGameDataUrl","channelId","isTablet","clientVersion","model","appType","isNativeApp","advanceGameDataParamArray","advanceGameDataUrl","advanceUrlPattern","finalUrl","appendAdvanceGameDataQueryString","theString","regEx","encodeURIComponent","setGameLaunchProductsIndex","windowObj","clientConfig","vnHeader","headerPrduct","ProductIndex","vnBottomNav","items","bottmNavItems","_AdvanceGameDataService","CashierService","getQuickDepositAllowedStatus","cashier","_CashierService","FreespinSummaryService","freeSpinsGameDetails","freeSpinsCategoryDetails","freeSpinsRewardDetails","freespinsMoreInfoClick","freeSpinsSummaryData","freeSpinsSummaryDataPublisher","freeSpinsGameDetailsObser","freeSpinsCategoryDetailsObser","freeSpinsRewardDetailsObser","freespinsMoreInfoClickObser","freeSpinsGameDetailsMap","freeSpinsCategoryDetailsMap","freeSpinsRewardDetailsMap","freeSpinsSummaryDataObser","moreinfoUrl","freeSpinsSummaryDataMapObservable","setFreespinsummary","freeSpins","setFreespinsummaryData","freeSpinResponse","freeSpinSummaryData","rewardDetailsData","freeSpinRewardDetails","timeZoneData","timeZone","gameDetails","gameTypeDetails","rewardDetails","userRewardId","getTimeZoneInfo","getFreespinCountInfoForGame","getFreespinCountInfoForCategory","getFreeSpinRewardDetail","rewardId","getFreeSpinRewardDetails","rewardIds","providefreeSpinsClientConfig","freeSpinsMoreInfo","rewardetails","rewardDetailItem","freespinRewardId","String","redirectUrl","code","pageName","v68","freespinMoreinfoClick","addTrackingEvent","disPlaycontent","_FreespinSummaryService","GameLobbyModel","isDataNotAvailable","infoIconClass","GameDataManager","gameDataLookup","gamesLookUp","gameDataFromLMT","liveCasinoLookup","gameLookUpFilledPublisher","gameLookUpObservable","formIconImageUrl","gameModelItem","isArcade","gameIconTemplate","getGameIcon","getGameFormat","setGameLobbyModel","arcadeLobbyType","gamelobbyModel","provider","ownerId","internalGameName","gameIndex","getRowSpan","getColSpan","arcadeConfig","provideAracadeLobbyConfig","lobbyInfo","gameConfigMap","arcadeIconConfigMap","iconConfigMap","gameIcon","enableGameIconImageSuffix","getAllGamesFromLMT","getGameData","gameDataFromCache","tryAndGetGameDataFromCache","gameNames","updateLookUp","createEmptyGameModel","gamesData","getGamesDataFromLookUp","gameDataFromLocalStorage","emptyGameModel","gameDataMap","setDefaultGameIcons","gameIds","gamesModel","GameModelItem","getLMTGameData","getGameDescription","providerId","_GameDataManager","Type","Group","NA","GameLaunchTrackingService","track","trackingData","provideGameLaunchTrackingConfig","trackDataLayer","onetrustKey","onetrustTracking","payload","endpoint","getPayload","trackAPI","description","favourite","playingStatus","displayName","categorySubType","recommendationType","lobbyName","lobbySource","optimoveSegment","eventData","ComponentGameName","ComponentGameType","ComponentGamePosition","ComponentGameGridPosition","ComponentGameContainerLocation","ComponentGameStatus","ComponentGameContainerDescription","ComponentGameFavorite","ComponentGamePlayingStatus","ComponentGameDisplayName","ComponentCategoryType","ComponentCategorySubType","ComponentRecommendationType","CasinoLobbyName","CasinoLobbySource","CasinoOptimoveSegment","GameOpen","getTimeStamp","gameTrackingObj","clickTimeStamp","getPageName","getCookieValue","getSessionValue","sessionId","sessionValue","getDistinctId","accountId","mp","token","getFrontEndValue","applicationName","getClientId","cid","getAll","GA3","getGA3Payload","GA4","getGA4Payload","MP","getMPPayload","specificParams","commonParams","tid","gA3","measurementId","ds","random","de","je","dt","dl","dr","referrer","dh","ul","culture","geoid","geoCountry","ec","ea","ni","sid","gA4","LCG","cd1","cd5","cd6","cd8","cd11","cd12","cd13","cd84","cd126","cd127","cd128","cd129","cd130","cd131","cd132","cd133","cd134","cd135","cd164","cd154","cd155","cd170","cd171","cd172","cd3","country","frontend","cd15","cd33","cd35","cd36","cd38","cd39","cd40","cd41","cd42","cd43","cd44","cd96","cd97","cd100","cd157","cd174","cd194","cd195","cd196","cd119","assign","measurement_id","api_secret","apiSecretKey","client_id","user_id","timestamp_micros","user_properties","appinfo","device_native","prof_country","prof_customerid","prof_loggedin","page_fe","page_title","page_location","page_referrer","page_hostname","session_id","seg","category_event","label_event","action_event","location_event","event_details","prof_currency","clean_page_URL","game_name","game_position","game_category","game_grid","game_type","game_fav","game_id","game_status","game_containerloc","game_containerdesc","position_event","test_abtest","category_type","category_subtype","game_recommendation_type","lobby_name","lobby_source","optimove_segment","custom_timestamp","user_agent","page_name","ip","verbose","properties","distinct_id","app","GridPosition","Position","Section","CategoryType","CategorySubType","ContainerDescription","ContainerLocation","DisplayName","Favourite","Name","PlayingStatus","Status","RecommendationType","LobbyName","LobbySource","OptimoveSegment","Brand","Host","Label","domain","Referrer","Path","URLSearchParams","xhr","XMLHttpRequest","send","_GameLaunchTrackingService","JackpotService","_JackpotService","GameLaunch","replaceRouteInHistory","isDemoLaunch","skipUnfinGame","specialProduct","trackingproduct","isNewSportsNative","returnUrl","highlightedColor","Globalsearchsection","skipMetaDataCheck","fetchLiveGameIFrame","customLobbyTypeMap","moreInfoOverlay","isMoreInfoOverlay","audioFrom","isFavorite","OpenLoginDialog","loginDialogService","preLoginConfig","providePreLoginConfig","redirectForLogin","nemIDHost","nemIdPathSegment","afterclosesubcription","afterClosed","casinoCoreGamelaunchService","stopAudio","loginCloseUrl","LoginDialogService","_OpenLoginDialog","RecentGamesService","cozyBingoDataService","recentGames","recentGamesFromAllLobby","mostRecentPlayedGames","recentGamesSubject","recentGamesFeedObservable","recentGamesFromAllLobbySubject","recentGamesFeedFromAllLobbyObservable","isRpfavWidgetDisplayed","isRpfavWidgetDisplayedObservable","collectiveRecentGames","setRecentGames","casino","gamevariant","arcadeLobby","filterArcadeLobbyGames","casinoGames","getrecentGames","getrecentGamesFromAllLobby","recentPlayedGames","getMostRecentlyPlayedGames","getMostRecentlyPlayedRouteInfo","recentlyPlayedClientConfig","provideRecentlyPlayedGamesConfig","isMostRecentlyPlayedEnabled","mostRecentlyPlayedRoutes","recentlyPlayedRoutes","mostPlayedRoute","isRpfavDisplayed","getRecentGames","_RecentGamesService","SlotRacesService","claims","stickerMap","raceGamesMap","contentPublisher","contentData","raceRuleConfigs","rules","rulesBanner","placeholderCardImage","coinEconomy","textTranslations","sharedList","versionedList","tips","errorMessages","entryDetails","notifyPublisher","notifyObservable","liveRacesPublisher","liveNow","liveRacesData","forcRacepublisher","forceRace","forceCoinBalancepublisher","forceCoinBalanceObs","upcomingRacesPublisher","upcomingToday","upcomingTomorrow","upcomingRacesData","globalTimerPublisher","globalTimerObservable","updateNavigationCategories","updateNavigation","stickerRacesPublisher","stickerRacesData","rtmsDatPublisher","rtmsData","coinDetailsPublisher","coinDetails","raceCompletedPublisher","raceCompletedObs","selectedEntryOption","pollForUser","globalTimerInterval","disabledGameNames","promoPrizesMap","categoryMap","slotInputArr","setNotifyStatus","promoId","slotUniqueId","initSlotRaces","disabledGames","lmtData","isDLL","isInItSlotRaces","emptySlotRacesData","isSlotRacesInitiated","updateLobbyNavigation","getSitecoreData","configs","getlmtData","enablePreLogin","getLiveRaces","getUpcomingRaces","updateGameMetaData","enableSlotRacesStickers","slotRaceStickersData","slotRaces","setSlotRaces","setSlotRacesParams","isPrizesMapEmpty","disablePrizesApiCall","getPrizes","globalTimerCountDown","getRaces","isSlotRacesEnabled","startLiveSlotPolling","liveSlotPollingStarted","pollingInterval","racesListPollingInterval","stopLiveSlotPolling","fetchNPMData","progressBarColor","getElementsByTagName","getPrizesFromAPI","prizesMap","offers","createPrizesMap","prizes","promoPrizes","prize","rankDetails","prizesArray","configMaps","beatBanker","isBeatBanker","getPrizesForPromo","currencyPrize","promo","hasOwnProperty","slotInput","getRacesList","slotDuration","upcomingSlotsDuration","disablePreloginApiCalls","getRacesFromAPI","races","statusDtls","statusCode","getRaceCompletedStatus","offerResponses","makeDateConversions","enableSlotRacesPhase2","finalRaces","race","startDate","endDate","endTime","optinExpiryDate","optinExpiryTime","startTimeAMPM","getAMPMTime","populateRacesObject","getHours","getMinutes","enable24HrTimeFormat","ampm","mnts","isGameMetadataAvailable","tomorrow","setHours","dayAfter","liveSlots","upcomingSlots","every","ordandunordGames","mappedObject","filterPromoGames","raceMetaData","gameMetadata","gameVariantList","unorderedGames","orderedGames","getOrderedGames","isLive","publishRaces","tempGameList","getLeaderboard","slotId","maxRank","fromResultsHistory","getLeaderboardFromAPI","updateRacesArrays","upcomingRaces","liveRaces","newLiveRaces","timeoutInterval","raceData","corrLive","stickersDataMap","raceItem","milliseconds","seconds","upcomingSlotStickersDuration","getUpdatedSlotStickerDuration","stickerText","awardType","additionalParams","awardTypeSticker","subType","enableStickersFreeToPlay","sticker_free_to_play","enableStickersFreePlayTech","sticker_free_play_tech","stickerItem","getResultsHistory","getResultsHistoryFromAPI","formatResults","slotStartDate","slotEndDate","dateStr","getDate","getMonth","getFullYear","promotion","isWin","getParsedData","rank","Number","FromRank","ToRank","prizeIcon","Icon","banker","buildGameIdBasedMetadataIndex","metadata","indexedMetadata","metadataItem","prmId","fromDate","updateOptinStatus","GetCoinBalnce","updateNotificationStatus","notificationStatus","notificationPopupTimeout","addErrorMessage","errCode","getErrorMessage","scrollTo","timerInterval","forceOptin","forceOptinRace","parsedForceOptinRace","forceCoinBalance","parsedForceCoinBalance","coinBal","getCurrentRaces","disableWhenNoPromotions","newNavCategoryVisibility","isNavCategoryVisible","slotRacesCategoryId","enableSlotRacesForLobbyType","gameClose","slotRacesCategory","lmtGames","categoryname","gamelist","tempArray","patGames","updateCoinIcon","isCoin","getcoinValue","selectedEntryFilter","entryFilter","selectedFilteredtOption","getselectedEntryFilter","subcategories","bindCoinImg","coinImg","raceObj","isDisplayCoin","coinSrc","isCoinAward","getCoinDetails","getAwardTypeDetails","ClaimsService","_SlotRacesService","ɵɵpipeBind2","Game","favouriteStyle","unFavouriteStyle","_r4","addFavourate","EmbeddedGameViewComponent_div_6_div_4_li_12_span_4_Template","openRequestedPopup","summaryPopUpIsOpened","titlePopout","_r7","toggleExtrasColumn","EmbeddedGameViewComponent_div_6_div_4_div_2_Template","openDialog","EmbeddedGameViewComponent_div_6_div_4_li_12_Template","EmbeddedGameViewComponent_div_6_div_4_li_14_Template","toggleFullScreen","EmbeddedGameViewComponent_div_6_div_4_li_24_Template","EmbeddedGameViewComponent_div_6_div_4_li_26_Template","isFullScreen","depositButtonString","titleExitFullScreen","titleFullScreen","extrasColumnFlag","isIframeVisible","iconsNewPosition","iframeUrl","EmbeddedGameViewComponent_div_6_div_4_Template","EmbeddedGameViewComponent_div_6_ng_container_8_Template","_r9","_r11","EmbeddedGameViewComponent_div_8_div_6_li_6_span_4_Template","_r12","_r13","_r14","EmbeddedGameViewComponent_div_8_div_6_div_2_Template","EmbeddedGameViewComponent_div_8_div_6_li_6_Template","EmbeddedGameViewComponent_div_8_div_6_li_8_Template","_r10","EmbeddedGameViewComponent_div_8_div_6_li_18_Template","EmbeddedGameViewComponent_div_8_div_6_li_20_Template","ɵɵsanitizeHtml","Global","AddToFavorites","AddedToFavorites","_r15","EmbeddedGameViewComponent_div_8_div_17_span_4_Template","EmbeddedGameViewComponent_div_8_div_17_span_6_Template","EmbeddedGameViewComponent_div_8_div_17_span_8_Template","_c3","i_r17","_r16","gameClickedOnSearch","_c4","isLiveDealerOpen","ɵɵpropertyInterpolate1","game_r18","borderRadius","EmbeddedGameViewComponent_div_8_div_19_div_7_Template","RecentlyPlayedGames","RecentlyPlayedGamesList","i_r20","_r19","game_r21","EmbeddedGameViewComponent_div_8_div_21_div_7_Template","GamesyouMightLikeMessage","ɵɵpipeBind3","recommendationGamesList","EmbeddedGameViewComponent_div_8_div_4_Template","EmbeddedGameViewComponent_div_8_div_6_Template","_r8","EmbeddedGameViewComponent_div_8_div_14_Template","EmbeddedGameViewComponent_div_8_div_17_Template","EmbeddedGameViewComponent_div_8_div_19_Template","EmbeddedGameViewComponent_div_8_div_21_Template","egvOverlayFlag","EmbeddedGameViewComponent","recentGameService","gameDataManager","jackpotService","dialog","balanceService","commonMessagesObject","m2Page","route","productHomepagesConfig","freespinSummaryService","cashierService","advanceGameDataService","slotRacesService","gameLaunchTrackingService","sendDataToEmbeddedGamePopUp","sendDialogCloseEventToEmbeddedGamePopUp","isGreaterthan","gamesUMightLikeList","gamesUMightLikeStringList","recentlyPlayedGamesStringList","iconShrinkClickedFirst","GYML","recommendationGames","combineData","multipleGameLaunched","isGameCloseTracked","rpGameClickedEGV","allowAttributes","iframeAllowattributes","gameEmbedPop","cozyBingoIframe","getElementsByClassName","setGameTitle","globalsearchconfig","enableNewEmbeddedViewIconsPosition","homeUrl","queryParamMap","isQuickDepositAllowed","teaserLaunchRealtiveUri","recommendationFeed","nonCriticalConfig","provideNonCriticalConfig","enableRecommendationGames","getGamesYouMightLikeOnLMT","recentGamesString","assignRecentlyPlayedGames","recentObs","lobbyLoadedObservable","RecentlyPlayedNGamesUMightLike","favouriteGameIds","FavouriteHeart","isLoaderHide","maximizeFullScreen","gameLaunchSuccess","useSingleCookieForGameIndexCountInEGV","getFromCookie","errorMessageQueue","Favorites","stopSchedulePollingInBingo","enableOverlayMobileSearchTopPosition","embeddedGameOverlayTopAllignment","gameid","recommendationUrl","recommendationgames","lmtGameMetaData","setToCookie","GetParam","exec","getDisabledGames","gamesYouMightLikeDataSet","gamesModellist","filteredGame","disabledGame","jackpotvalue","getJackpotValueForGame","assignRecommendationGamesList","gameslist","recommendationGamesData","assignGames","recentandUnfinishedGames","RecentlyPlayedGameData","assignGamesYouMightLike","GYMLGameData","defaultGamesModel","isUnfinished","getUnfinishedStatus","jackpotsFeed","refreshJackpots","handleScreenChange","closeOnRCPUClose","gamechange","gameCloseAckEventReceived","updateGameInfo","gamevariantname","get_formatted_timestamp","enableArcPlayBreakEvent","gameclickedfromsearch","isGameCloseAckEventEnabled","gameClickedProcessing","popUpClicked","popUpClickedProcessing","enableGamestartCookie","getGameMetaData","gameModel","getDesktopGameLaunchUrl","callbackResponse","unloadHandler","fullscreenchangeHandler","webkitfullscreenchangeHandler","mozfullscreenchangeHandler","mozFullScreen","MSFullscreenChangeHandler","fromEmbedded","skipRefresh","triggerRecentGameCall","closeGamePopUp","gameExited","emitVideoStatus","freespinsConfig","launchCategory","ping","isWidget","isGameCloseApiEnabled","closeGame","gameCloseAction","gameCloseDelay","invokerProductHomePage","getGameLunchType","isFreeSpinSummaryEnabled","enableRefreshonGameClose","playerPlayBreakStatus","globalJackpotClientConfig","provideGlobalJackpotConfig","globalJackpotPathSegments","isCasinoDomain","urlParser","loginMessageKey","openNav","closeNav","fullScreen","checkFullScreen","adjustGamesPanel","requestFullScreen","minimizeFullScreen","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","msExitFullscreen","fullScreenElement","msFullscreenElement","webkitIsFullScreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","toggleFullWindowScreen","allowFullScreen","screen","GamePosition","isSearch","lobbyData","getLobbyBasedOnLobbyType","gameContainer","gridPosToBePass","gamemodel","gamePosition","currentTimeStamp","checkGameInGameMetaData","gameNotFoundAction","storeUserInfo","panelClass","instance","componentInstance","windowOptions","embededPopUpWidth","embededPopUpHeight","gamePopOutWindow","checkPopOutWindowOpenInterval","contentMessageElement","HTMLElement","egv_overlay","dateNow","datetime","getMilliseconds","flag","stopSchedulePolling","Disable_SchedulePolling","DOCUMENT","MatDialog","Location","ActivatedRoute","ɵɵresolveDocument","EmbeddedGameViewComponent_span_4_Template","EmbeddedGameViewComponent_div_6_Template","EmbeddedGameViewComponent_div_8_Template","NgFor","SlicePipe","DatePipe","_EmbeddedGameViewComponent","TeaserService","_headerTeasers","headerTeasers","asReadonly","teaserDataPublisher","teaserDataObservable","optMiniTeasersMap","optMiniTeasersMapPublisher","optMiniTeasersMapObservable","teaserMutedSubject","teaserMutedObservable","indexChangedSubject","indexChangedObservable","indexChangedDataSubject","indexChangedDataObservable","setIndex","muteVideo","identifier","identifierClass","isMuted","muteAllVideos","setTeasers","teasers","getTeaserData","indexChangeTeaserData","teaserData","fetchOptMiniTeasers","optMiniTeaserPaths","contents","mercuryBgImage","getOptMiniTeasers","_TeaserService","eventFromEmbeddedGameView","dialogCloseEventFromEmbeddedGameView","EmbeddedGamePopupComponent","teaserService","disableClose","singleGameErrorTimeout","scrollTopTimeout","messageQueuePublisher","showMessageInBingo","CasinoCoreGamelaunchService","EmbeddedGamePopupComponent_div_8_Template","_EmbeddedGamePopupComponent","GlobalTranslateComponent","casinoClientConfigObservable","isClientConfigLoaded","_GlobalTranslateComponent","goBack","HeaderBoxComponent","navigateTo","showInNative","isNavigation","goBackURL","HeaderBoxComponent_div_0_Template","_HeaderBoxComponent","GameLaunchPlaces","gameIconOnLobby","gameTitleOnLobby","gameInfoIconOnLobby","demoPlayPage","playNowOnDetailPage","playNowOnDetailPageAfterScreenshots","playRedirectCtrl","unfinGamePage","searchOnLobby","teaser","activeFreeSpin","isLobby","place","_GameLaunchPlaces","goToPlayGame","ɵɵclassMapInterpolate1","GameDetailButtonsComponent","gameLaunchPlaces","clientSideConfig","provideClientSideConfig","twoButtons","playForFunAndRealButtons","isInhouseGame","launchType","toLocaleString","gameLaunchedFrom","launchGame","GameDetailButtonsComponent_button_0_Template","GameDetailButtonsComponent_button_2_Template","GameDetailButtonsComponent_button_4_Template","GameDetailButtonsComponent_button_6_Template","_GameDetailButtonsComponent","isFavouriteGame","responsibleGamingLink","linkText","disclaimer","GameDetailComponent","favouritesService","assignGameModel","gamedetailObj","playButtonMode","closeGameDetailDialog","GameDetailComponent_div_17_Template","GameDetailComponent_div_20_Template","GameDetailComponent_cc_game_detail_buttons_23_Template","GameDetailComponent_a_25_Template","GameDetailComponent_div_27_Template","GameDetailComponent_div_29_Template","GameDetailComponent_div_31_Template","GameDetailComponent_button_33_Template","screenshots","_GameDetailComponent","GeolocationActivatorService","activatedRoute","isActive","geolocationConfiguration","provideGeoLocationConfig","isDisabledViaRoute","disableFeaureQueryParameter","queryParameterValue","_GeolocationActivatorService","PermissionsManagerComponent","templateLoaderHost","matContext","permissionsInfo","permissionsConfig","geoCoordinatorService","parsedConfig","prepareConfig","templateContent","managerClasses","permissionInfoClasses","devicePropertyClasses","currentOrientation","deviceType","browserClasses","permissionsManager","loadAssets","configStore","activateTemplate","handleCloseDialog","permissionDictionaryConfig","dictionaryEntries","dictEntry","ca","Wn","Jn","isAndroid","isChrome","isNexus","gc","_PermissionsManagerComponent","GeoCoordinatorPermissionsManagerService","documentRef","_permissionsInfoOptions","handlePermissionsInfo","console","log","canReopenDialog","closePermissionsInfo","textDictionary","handleDialogClassesDecoration","whichClasses","afterOpened","existing","incoming","_GeoCoordinatorPermissionsManagerService","GeolocationCoordinatorService","deviceservice","_initializePending","_uninitializePending","isSynchronizedUninit","coordinationSynchronizer","messageEvent","geolocationConfig","synchronizeCoordination","synchronizationEvent","geolocationCoordinator","uninitialize","hookupCoordinator","triggerFetchLocation","appDownloadUrl","probe","initialize","session","plcIdentifier","showPLCPopup","_initializationInput","onInitialized","callback_funvction","_onInitialized","onUninitialized","_onUninitialized","_onError","onProbed","_onProbed","registerUnload","onunload","registerSynchronization","getPLCIdentifier","onGeolocationError","errorData","onGeolocationInitialized","initializationData","onGeolocationUninitialized","onGeolocationProbed","probeResult","bind","onAvailable","_GeolocationCoordinatorService","RetryType","errorMessage_r1","ctx_r2","reCheckLocation","recheckLocation","ok","TriggerGeoLocationOption","GeoLocationErrorComponent","geoLocationValidationService","geoLocationErrorMessages","shouldRetryLocation","checkGeoLocationError","getGlobalConfig","geoComplyErrorHeader","turnOnWiFiDescription","addressAboveItemsDescription","invalidLocation","shouldCheckNativeGeoLocation","fetchLocationDetailsfromNativeEvent","reCheckLocationClicked","formattingMessage","rule","retry","NonRetry","isRetryButtonEnabled","errMsg","Retry","GeoLocationValidationService","GeoLocationErrorComponent_li_20_Template","GeoLocationErrorComponent_button_29_Template","GeoLocationErrorComponent_button_31_Template","_GeoLocationErrorComponent","geolocationCoordinatorService","retryCount","reCheckLocationClickedObservable","validateLocation","isLocationFetchTimeOut","isLocationFetched","resetTimerAndRefetchLocation","errorResponse","gdsApiInterval","initialRetryInterval","getLocationDetailsfromGDS","startTimer","clearTimer","resetTimer","showGeoLocationError","gdsUrl","isLocationAvailable","locationStatus","isRetryableErrCode","troubleShooterMessages","tsMsgs","refetchLocationOnRetryableErrorCodes","refetchGdsApi","retryInterval","enableRetryCountToCallNative","gdsFailureCount","assignToCoordinatorService","EventName","Action","HttpClient","RemoteLogger","_GeoLocationValidationService","BroswerStateDirective","onBlur","Pause","onFocus","Play","onPointerDown","checkIfIdle","onKeyDown","idleTimeout","idleTimeoutIn","_BroswerStateDirective","GeolocationTrackingService","trackPosition","_GeolocationTrackingService","download","geocomplyTitle","geoComplyMessage","downloadButtonText","continueButtonText","appDownloaderClicked","geolocationMobileInstallerTitle","oobeeInstallerHeadingText","oobeeInstallerHeadingInstruction","continuePlayOnAppInstructionText","appDownloadLink","continuePlayOnAppUserActionText","playOnAppOrWebPlayerOptionsSeparatorText","continuePlayOnWebInstructionText","oobeeInstallerDownloadStepText","oobeeInstallerDownloadUserActionText","oobeeInstallerContinueStepText","oobeeInstallerContinueUserActionText","popper_r4","geoguardEnquiryUserActionText","geoGuardDescriptionText","GeolocationInstallerComponent","geoLocationCheckService","_domSanitizer","additionalInfo","_geolocationTrackingService","loadingIndicatorService","showLoader","provideDownloadAppFromDeviceConfig","bypassSecurityTrustUrl","AndroidAppDownloadLink","geocomplyText","isMobileInstaller","loadingIndicatorHandler","checkGeolocation","downloadUrl","goToLastKnownProduct","appId","AndroidAppID","iOSAppDownloadLink","iOSAppID","hideLoader","GeolocationCheckService","LoadingIndicatorService","GeolocationInstallerComponent_div_2_Template","GeolocationInstallerComponent_div_4_Template","MatDialogTitle","NgxFloatUiDirective","_GeolocationInstallerComponent","GeolocationInstallerDialogService","_isDialogOpen","onDialogClosed","closeDialog","isDialogOpen","_GeolocationInstallerDialogService","geolocationInstallerService","geoLocationValidation","isOnErrorInvoked","geoCoordinatorPermissionsManagerService","onInstallerServiceDialogClosed","errorCallback","geoConfig","initializationStatus","closeDialogAndLaunchGame","enableNDBS","showGeolocationInstallerPopup","extractAppDownloadUrlFromErrorData","desktopLocationValidation","onPermissionInfo","seekPermission","onCheckClosed","_GeolocationCheckService","UtilityService","getPositionXY","touch","changedTouches","deepMergeObjects","mergeAccumulator","mergees","accumulatedMerge","argumentIndex","nextMergee","nextKeyToBeMerged","call","getDaysInMonth","getLastMonthArcadeExpiry","monthNames","coinExpiryDay","providePromoCoinEconomyConfig","getLanguageContentMap","languageArray","languageMap","langItem","langResolve","_UtilityService","isConsented","getCookie","decodeURIComponent","caLen","cookieName","setCookie","expireDays","setTime","expires","toUTCString","cpath","consent","isConsent","COOKIE","EXPIRE_DAYS","isODR","odrName","nativeAppCookie","isPokerApp","_CookieService","ODR_NAME","GameLaunchUrlFormationService","claimsConfig","casinoCookieService","launchMGSGame","defaultUrlPattern","gameLaunchParams","casinoCoreGameLaunchResponseParams","gameLaunchQueryParams","casinoCoreGameLaunchQueryResponseParams","featureConfig","enableMultigameView","enableMultiGameVIew","egvFavourites","brandId","frontendId","pingUrl","getPingUrlWithToken","accountUrl","getAccountUrl","historyUrl","getHistoryUrl","indexFilePath","getIndexFilePath","isFavGame","isGeoGuardEnabled","geoPollingUrl","casinoAsIFrameConfig","vnChannel","depositRedirectUrl","updateDepositRedirectUrl","appendOpenCasinoCoreOverlayQueryParam","appendQueryString","pageNumber","sglProduct","isLiveConfig","desktopChannelIds","enableSGLForPokerOrOdr","isPokerOROdr","isOdr","CASINO_WODR","singleGameLaunchUrlFormation","mobileUrlParamArray","languageCode","responsibleGamingUrl","casinoEnvironment","userHostAddress","keepAliveInterval","generalTermsAndConditionsUrl","casinoHomeUrl","portalLanguage","routeValue","desktopUrlParamArray","casinoNoLanguageBaseUrl","desktopMGSLiveGameLaunchURL","isLiveGame","desktopMGSGameLaunchUrl","lottoMGSGameLaunchUrl","mgsGameLaunchUrl","enableSlotRaceParams","launchSource","encodeQueryParam","addHost","passNativeAppCookieToGameLaunch","nativeApp","isDesktopContainer","coinGame","backToPortalLobby","singleGameUrlParamArray","singleGameLaunchUrl","userToken","sessionToken","gameLogUrl","winGameLaunchFile","lastIndexOf","setCurrentProduct","routeCurrentProduct","getCurrentProduct","queryParamValue","getQueryParameter","updatedUrl","removeParam","splittedURL","params_arr","queryString","provideModularSettingsConfig","productMap","af","parentUrl","_GameLaunchUrlFormationService","GlobalSearchHelperService","presentationBootstraped","contextAvailable","contextResultEventHandler","activeFrom","presentationBootstrappedEventHandler","launchGlobalSearch","launchChannel","launchedFrom","closeGlobaSearch","closedFrom","registerEventHandlers","deregisterEvents","fetchContext","_GlobalSearchHelperService","MonitorService","active","portalInfoAvailable","portalInfo","MONITOR_INACTIVE","monitorActiveStatus","monitorActiveObservable","setMonitorActiveStatus","activate","deactivate","isPortalInfoAvailable","getPortalInfo","managePortalInfo","success","statusMessage","isProtected","_MonitorService","NativeAppFeatures","topBar","footer","navigationBar","fixednav","nativeStyle","NativeAppHelperService","casinoapi","loginDialog","gameLaunchUrlFormationService","nativeAppFeatures","isNativeFeatureEnabled","featureName","handleNativeGameLaunch","gameLaunchModel","launchGameForNativeApp","getLaunchData","errorMessage","gameLaunchUrl","raiseNativeGameLaunchEvent","common","_NativeAppHelperService","NavigatorService","firstLoadFlag","goingBack","showSpinnerForExternalNavigation","defaultNavigateOptions","appendReferrer","detailPage","mcPageConfig","protocol","publicPage","publicPageName","portalPage","appendUrlPrefix","portalUrl","navigate","charAt","promptLogin","_NavigatorService","SearchSectionService","isMobileSearchVisible","isDesktopSearchGYMLVisible","searchVisibilityStatus","searchGYMLVisibilityStatus","setSearchVisibility","setDesktopSearchGYMLVisibility","_SearchSectionService","VCConstService","_VCConstService","CASINO_OPEN_GAME_URL","CASINO_OPEN_GAME","VCClientService","lhProductHomepagesConfig","handleVCGameLaunch","isNotLobby","launchGameForVC","raiseNativeVCEvent","showErrorMessageQueue","errorText","homePageUrl","launchUrl","gameTitle","nativeGameLaunchConfig","provideNativeGameLaunchConfig","nativeDis","external","isOnlyGameidLaunchEvent","checkPokerVCOutsideCasinoLobby","vendorsList","vendorsforShouldOverrideUserAgent","shouldOverrideUserAgent","isNewMacEvent","casinoEvents","isPokerVC","casinoURL","_VCClientService","generateGuid","m2NativeApp","cookies","vCClientService","nativeAppHelperService","monitorService","geolocationCheckService","cacheManagerService","urlUtility","geolocationActivator","casinoNpmParamsService","searchSection","gshService","utilityService","OPEN_URL","updateFreespinsSubject","updateFreespinsObs","gameDetailPageSubject","gameDetailPageObservable","stopAudioSubject","stopAudioObservable","messageQueueObservable","showDesktopSearch","showGSInDesktopSearch","navItemIndex","isSingleMessage","gameNotAvailableTimeOutData","gameNotAvailableTimeOut","delayAfterRefreshInterval","delayAfterRefresh","millisecondsToDisplayInterval","millisecondsToDisplay","enableSpinnerOnGameLaunch","_gameLaunchInProgress","customRecommendationType","enableGSInRegularSearch","gameMode","isDemo","forceGameLaunchParam","calculateGridPosition","customLobbyType","cl","setActiveCategory","advanceCatInfoObj","gameLaunchTracking","guid","screennameGameLaunchTracking","gamelaunchlocal","enableAccountUpgrade","accountUpgrade","onGameLaunchDone","nativeGameLaunchEnabled","getParams","playUrl","getPlayUrl","downloadAppFromDeviceConfig","downloadAppFromDevice","checkGeolocationAndLaunchMobileGame","checkGeolocationAndLaunchDesktopGame","loginOpenUrl","loginResponseObj","forceGameLaunchObj","appendRUrlToLoginDialogWindow","setGameLaunchNavItems","navItems","findIndex","demo","launchProductId","launchOrigin","isLiveGames","gamelaunchparams","queryStringMap","appendQueryStringMap","gamesConfig","errormessage","downloadAppErrorMsgs","isAnonymousLobbyEnabled","placeCheckForGameDetail","checkforGameDetailVisible","ForceDetailPage","EnableDetailPage","gamedetailPopUpData","handleGamelaunch","handleGameLaunchError","aams","enableNativeOdrEvent","sendCCBEventToPokerAndOdr","launchGameFromResponse","storeSsotokenInCookies","urlParameters","sessionKey","queryMap","validateUser","birthDate","dateOfBirth","minAge","minAgeValidationCasinoPlay","minDate","setFullYear","detailPageMode","detailPageModeLobbyType","vendorsWithOnlyRealMode","vendorsWithOnlyRealModeLobbyType","enableDemoPlay","enableDemoMode","rglinkOnDetailPage","showRGLinkOnDetailPageLobbyType","enablePlaytechLiveGameDetailsPage","DemoEnabled","DemoAvailable","matchedProviderFound","ResponsibleGamingLink","monitorStatus","embedGamePopUpData","openEmbeddedGameDailog","launchDesktopGame","errormessages","addClickTimeStamp","gameLaunchRedirectErrorAction","getGameSection","trackingContainer","widgetName","gameContainerDescription","childChildcategoryId","categoryEngName","getCategoryName","backgroundImageLayer1","backgroundImageLayer2","backgroundImageLayer3","trackingGridPosition","Globalsearchgameposition","currentTab","gameLaunchedLocation","isSignPostedGame","havingCasiaGames","returnUrlInQueryParameter","routerState","segment","trackedClassList","trackCategory","returnurl","getGameNotAvailable","addMultiple","handleDirectDesktopGameLaunch","gameObject","rurl","searchParams","appendString","validateGames","toPromise","statusObj","playBreak","gracePeriod","reload","storeUserDetails","cookieObj","putObject","_CasinoCoreGamelaunchService","IMMERSIVELOBBY_ONBOARDING_COOKIE_NAME","IMMERSIVELOBBY_STATS_CTA_TYPE_GAME","IMMERSIVELOBBY_STATS_CTA_TYPE_STATIC_GAME","IMMERSIVELOBBY_STATS_CTA_TYPE_SECTOR","IMMERSIVELOBBY_ITEM_TYPE_GAME_LOGO","IMMERSIVELOBBY_ITEM_TYPE_GAME","IMMERSIVELOBBY_ITEM_TYPE_CUSTOM_LINK","IMMERSIVELOBBY_CUSTOM_LINK_TYPE_JACKPOT_DRAWER","ImmersiveLobbySectorItemContent","ImmersiveLobbyStat","stats","impStats","isAvailable","ImmersiveLobbyService","casinoCoreGameLaunchService","statsRoute","gotoSectorPublisher","statsContentPublisher","statsDataPublisher","statsOpendPublisher","statsFetched","sectorIds","immersiveLobbyConfig","provideImmersiveLobbyConfig","gotoSectorObservable","statsContentAvailable","statsDataAvailable","statsOpenedObservable","statsOpened","statsError","statsNotUpdated","getSectorIds","setSectorId","innerWidth","globalConfigMsg","globalConfigColor","imageType","openedSector","getOpenedSector","gotoSector","categortId","fetchStatsContent","enableStats","statsContent","isStatsOpened","getStatsContent","fetchStatsData","emptyStats","statsData","getStatsData","isStatsError","isStatsNotUpdated","setStatsOpened","getStats","loadFlag","categories","stat","apiCategory","statIndex","itemId","statItem","itemKey","statAPIItem","dataType","convertedCurrency","isDynamicGame","showCTA","ctaType","betTS","statValue","enableGameNameMapping","gameTableNames","gameTableName","statAPIValue","fiteredGameTableName","physicalName","commercialGameTableName","hideCTAForGameDataType","staticGameId","isStaticGame","showHighlights","sort","customLinkItems","customLink","customUniquePath","customLinkJackpot","customPathSize","_ImmersiveLobbyService","LIVELOUNGE_ONBOARDING_COOKIE_NAME","LIVELOUNGE_STATS_CTA_TYPE_GAME","LIVELOUNGE_STATS_CTA_TYPE_STATIC_GAME","LIVELOUNGE_STATS_CTA_TYPE_SECTOR","LiveCasinoLoungeSectorItem","LiveCasinoLoungeStat","LiveCasinoLoungeService","liveCasinoLoungeConfig","provideLiveCasinoLoungeConfig","_LiveCasinoLoungeService","CasinoAudioButtonComponent","gameShowHubService","liveCasinoLoungeService","immersiveLobbyService","muted","audioStatus","audioOffsetTop","handleAudio","casinoAudioButton","responsiveFooter","footerPosition","audioButtonPosition","onPlay","casinoAudio","play","isStopped","liveLoungeLottieStatus","gameShowLottieStatus","immersiveLobbyLottieStatus","i0","audioUrl","_CasinoAudioButtonComponent","cancelBtn","ConfirmMessageComponent_div_0_div_11_Template","depositBtn","messagesInfo","header","closeBtn","purchaseButtonText","ConfirmMessageComponent","ConfirmMessageComponent_div_0_Template","_ConfirmMessageComponent","i_r2","paginationClick","currentIndex","CustomCarouselPaginationComponent","disableClick","stopPropagation","carousel","noOfItems","CustomCarouselPaginationComponent_ng_container_5_Template","NgForOf","_CustomCarouselPaginationComponent","DraggableDirective","moveOffset","devicePixelRatio","hidden","destroy$","createDrag","dragTarget","dragContainer","dragLockAxis","dragHandle","setupEvents","destroyEvents","manager","Hammer","Manager","recognizers","Pan","DIRECTION_ALL","panStart$","panMove$","panEnd$","disableDrag","isDragging","deltaX","deltaY","drag","dragEnd","hasMovedFarEnough","abs","outOfBoundary","scrollToFooter","scroll","_DraggableDirective","IntersectionStatus","fromIntersectionObserver","debounce","subject$","intersectionObserver","IntersectionObserver","isIntersecting","videoElementStatus","NotVisible","debounceTime","Visible","getSrc","observe","disconnect","currentSrc","childNodes","nodeValue","intersectionRatio","IntersectionObserverDirective","intersectionDebounce","intersectionRootMargin","intersectionThreshold","visibilityChange","intersectionRoot","rootMargin","si","_IntersectionObserverDirective","LongPressDirective","onMouseLongPress","touchstart","touchEnd","mousedown","button","mouseup","eventSubscribe","merge","_LongPressDirective","HighlightSearch","Kt","_HighlightSearch","OobeeIntimationToasterService","_toasterService","_userService","_geolocationConfig","oobeeIntimation","toasterId","ToastrQueueService","_OobeeIntimationToasterService","imageThumbnailSrc","GifTagComponent","videoLaunchRealtiveUri","labelPrefix","imageThumbnail","getGameIdFromLaunchUrl","subcategory","isGameUrl","videoBoxContent","GifTagComponent_div_0_Template","GifTagComponent_div_2_Template","_GifTagComponent","TimeZoneService","convertToClientTimeZone","timeString","clientTimeZoneSeconds","getClientTimeZoneSeconds","formatTimeFromSeconds","totalSeconds","getSecondsFromTimeString","getUTCSeconds","getTimezoneOffset","timezone","offSetSeconds","getOffsetFromTimeZoneSeconds","formatTimeNumber","timeArray","getTimerStartInstance","startTimeSeconds","currentDate","currentDateSeconds","getSeconds","durationSeconds","getDateFormat","dateFormat","mm","dd","yyyy","hour","newformat","_TimeZoneService","LCTimerComponent","timeZoneService","showDays","daysDisplayText","showTimer","onTimerEnd","displayTime","timerInstance","ceil","LCTimerComponent_ng_container_0_Template","_LCTimerComponent","ArcadeLobbyTrackingService","_ArcadeLobbyTrackingService","BetmgmOriginalsService","optInPublisher","getOptInPublisher","publisher","betMgmOriginalsTimerPublisher","betmgmOriginalConfig","providerBetMGMOriginalsConfig","enabledBetMGMOriginals","betmgmOriginalsSitecoreData","betmgmOriginalsConfigurations","optInObservable","getOptInObservable","betMgmOriginalsTimerObservable","betmgmoriginalOptIn","BetmgmOriginalOptInData","getBetmgmOriginalsUserStatus","postBetmgmOptIn","postRequestModel","setOriginalsTimerStatus","isTimerRunning","isTimerValidForOriginals","timerExpiryDate","validateBetMgmOriginalsConfigs","displayBetMGMOriginals","betMGMOriginalsConfig","isUserAuthenticated","SourceType","SourceId","TimerExpiryDate","_BetmgmOriginalsService","BingoGameLaunchService","recentGamesService","currentSessionConfig","isInGameClient","checkUserStatus","isRealPlayer","bingoGameLaunchTracking","isNew","gameType","isInteger","gameContainerLocation","widgetFrameClr","initiateGameLaunch","ballType","favstatus","originUrl","openBingoPlayUserDialog","getCasinoGameLaunchUrl","getGameLaunchUrl","launchBingoGames","responseCode","isForcedGameLaunch","requiredMessages","bingoGlobalMessages","preBuyUserDepositMessage","preBuyUserDepositHeader","confirmCloseButton","preBuyUserDepositBtn","playUrlObj","vfBingo","_gameName","openedRooms","activeroom","focus","cozyBingoConfig","enableBingoGameLaunchPostMethod","lastLoginTime","loginDuration","clientLoginDuration","toNumber","enableLastLoginTimeCheck","postObj","themeId","originGameId","isReplaceGameSrc","variantName","SessionStoreService","_BingoGameLaunchService","CategoryManager","lobbyCategoryLookup","parentCategoryLookUpMap","categoryLookUpFilledPublisher","categoryLookUpObservable","defaultCategoryFilledPublisher","defaultCategoryLookUpObservable","gameStickersMap","stickersLookupCompletePublisher","getAllLMTCategories","lmt","defaultCategoryLoadEvent","gymlandRecentfromDefaultCategory","getAllCategories","categoryLookUp","setParentCategoryLookUpMap","tempParentCategories","isNavigationCategory","linkedCategory","category2","lmtSubCategories","parentCategoryid","getDefaultCategoryFromDynacon","defaultyLobbyTypeCategory","getDefaultLMTCategory","getLMTMap","categoryOnAddressBar","getDefaultCategoryInfo","fetchCategoryInfoOnsiteCoreDataCategoryId","sitecoreDataCategoryId","allCategoryLookUpMap","defaultLobbyCategory","defaultCategoryInfo","mapGameStickers","lookUpResponse","_CategoryManager","ToastMessageService","isIconShown","isShown","off","_ToastMessageService","DiscoverFeedService","discoverFeedObject","displayDiscoverSticker","discoverFeedObservable","discoverFeedStickerObservable","GetDiscoverFeedSitecoreData","disjointFeeds","discoverFeedData","expiryDatecal","discoverContainer","getDiscoverFeed","getStickerExpiryTime","discoverData","highlightExpiryDate","remainingTimeInMints","isStickerDisplay","_DiscoverFeedService","DesignSystemEnablerService","_queryParamReader","configProvider","queryParams","activateDesignSystem","isEnabledInQueryParameter","enablerKeyInQueryParam","enablerEntryInQueryParam","_DesignSystemEnablerService","ForceGameLaunchHandlerService","bingoGameLaunchService","onAppInit","gameLaunchObservable","forceGameLaunchObservable","_ForceGameLaunchHandlerService","GamePremiereService","changePromoStatusBehaviourSubject","changePromoStatusObservable","gamePremiereConfig","provideGamePremiereConfig","gamePremiereOptIn","gamePremiereOptInData","getGamePremiereUserStatus","getGamepremiereOptIn","_GamePremiereService","GameSelectorWidgetService","widgetsMap","widgetsMapPublisher","widgetsMapObservable","emptyMap","fetchWidgets","widgetPaths","widgets","getWidgetsMap","getWidget","getGlobaConfig","_GameSelectorWidgetService","GameService","gameDataVar","setOverlayVisibility","fromEmbedPopUp","gameDataInfo","getCategoryGamesFromLocalStorage","dataFromSessionStorage","getDataFromSessionStorage","getCacheKey","findGamesInLocalStorage","getGameDataByGameId","dataFromLocalStorage","getDataFromLocalStorage","gamesInLocalStorage","gamesNotAvailableInLocalStorage","localStorageGames","localStorageGamesNotAvailable","_GameService","GamingStoriesStorageCloseModel","PostUserRequestAPIModel","StoryInfoModel","FetchUserRequestAPIModel","ReqStoryIdsModel","ResponseDataModel","uAvg","StoryInfoData","StoryInfoDataInSessionStorage","OptInStoriesTrack","StoriesLocalStorageModel","GamingStoriesService","pausePlayStory","storyPaused","storyHasVideo","spliceDuplicateStore","storyInfoPostRequestList","storyInfoDataInPreLoginSessionStorageList","storeFetchAPIDataResList","duplicateRecords","uInputUndefinedCheck","videoPresentBehaviourSubject","videoPresentObservable","videoProgressBehaviourSubject","videoProgressObservable","pauseStoryBehaviourSubject","pauseStoryObservable","videoMuteBehaviourSubject","videoMuteObservable","fetchAPIBehaviourSubject","fetchAPIObservable","swipeUpPublisher","postGamingStoriesAPIPublisher","fetchGamingStoriesAPIPublisher","storiesFeedPublisher","gamingStoriesPhase2Config","provideGamingStoriesPhase2Config","swipeUpObservable","postGamingStoriesAPIObservable","fetchGamingStoriesAPIObservable","storiesFeedObservable","getStoryContainerData","storyData","gamingStoryItemOptIn","gamingStoryItemOptInData","swipeUpContentList","swipeUpContentData","fetchGamingStoriesAPIRes","fetchUserAPIResponse","postStoryInfoRequestItemsList","fetchstoryInfoDataInPreLoginSessionStorageList","fetchStoryInfoDataList","getStoryContainerCloseList","storyContainerCloseList","getGamingStories","storyContainerPath","productPath","gamingStories","AfterApiCall","getSwipeUpContent","swipeUpContentPath","swipeUpStoryItemContent","getGamingOptIn","optIn","postGamingStoriesAPI","postUserRequestAPIModel","fetchGamingStoriesAPI","fetchUserRequestAPIModel","fetchDataRes","currentEpocTime","storyInfoDataInSessionStorage","sId","subSId","uInput","expiryTime","round","userId","uId","storeFetchAPIDataRes","trackingGamingStoriesPhase2Event","contentPosition","pauseStory","pauseStoryTrigger","pauseVideo","video","stream","paused","playVideo","storeGamingStoriesCloseContainer","storyInfoRequestItemsList","storyInfo","storingDataInPreLoginSessionStorage","storyApi","videoPresentStatus","isVideoPresent","videoProgressStatus","videoProgress","changePromoStatus","storyStatusObject","writeGamingStoriesPhase2Array","gamingStoriesLocalStorageArray","readGamingStoriesPhase2Array","gamingStoriesArrayFromLocalStorage","_GamingStoriesService","GJackpotConstService","_GJackpotConstService","WelcomeOverlay","ParentCard","WelcomeCard","MainCard","SubCard","main","overlay","sub","DisabledClaimedJackpots","ClaimCardShown","ClearCardShown","JackpotCardsNotToShow","Success","LoginFailed","WinExpired","improperRefId","alreadyInProgress","alreadyInProgressOrDataNotAvilable","ClaimJackpotsDetails","WelcomeOverlayShown","TRIGGER_TIME","tablet","mobile","desktop","ParentCardReveal","MainCardReveal","SubCardReveal","clearContainer","claimContainer","ClaimCard","ClearCard","GlobalJackpotModService","globalJackpotPoolInfoMap","siteCoreData","jackpotConfigData","jackpotTeaserData","jackpotSharedContentData","historyFeedData","defaultTandCData","defaultTandCDataSubject","defaultTandCDataSubjectObservable","setGlobalJackpotPoolInfoMap","pathSegment","jackpotPoolInfo","getGlobalJackpotPoolInfoMap","setSitecoreTemplateMap","getSitecoreTemplateMap","setGlobalJackpotConfigData","getGlobalJackpotConfigData","setJackpotTeaserContentMap","getJackpotTeaserContentMap","setGlobalJackpotSharedContentData","getGlobalJackpotSharedContentData","setGlobalJackpotLobbyTypeMap","getGlobalJackpotLobbyDataFromLocalStorage","setHistoryFeedData","HistoryFeedData","getHistoryFeedData","setDisabledGames","DisabledGames","setDefaultTandCData","getDefaultTandCData","_GlobalJackpotModService","GlobalJackpotService","categoryManager","globalJackpotsSubject","globalJackpotsFeedObservable","globalJackpotsTemplateSubject","globalJackpotsTempslateObservable","wonStatusSubject","userWinStatusObservable","claimStatusSubject","claimStatusObservable","claimStatusErrorResponce","claimStatusErrorResponceObservable","historyFeedMarketingContentSubject","historyFeedTemplateSubjectObservable","gameslobbyfeedcategories","lobbyfeedcategoriesObservable","winnersFeedSubject","winnersFeedContentObservable","RecentGames","seoBoxesRes","seoBoxesPublisher","devicetype","seoBoxesObservable","seoBoxesContent","setGlobalJackpots","activeJackpotGroupId","activeTemplate","configurationType","selectedPhase","folderId","isRefreshLobby","globalJackpots","jackpotGroupId","refreshLobby","globalJackpotObject","setGlobalJackpotObject","getGlobalJackpots","checkIfUserWonGroupJackpot","subJackpotId","userClaimGlobalJackpotStatus","winRefId","clearRevealObservable","userClaimGlobalJackpotStatusClear","getAvailableGames","lobbyfeedcategories","getUILobby","lobbyConfiguration","categoryTitleLangMap","stickerTitleLangMap","languageContent","stickers","bindUILobby","getLobbyCategory","lobbyCategory","engName","getCategoryNameFromLangMap","getNavigationVisibility","getSitecoreInfoForCategoryIdAndLobbyType","getLobbySubCategory","lobbySubCategory","subcategoryid","subcategoryname","hideSubCategory","langArray","langMap","getParentCategoryId","feedCategories","getCategoryNameFromSitecore","fallbackCategoryId","defaultCategoryName","hiddenStatus","setGlobalJackpotCategories","setIsGlobalJackpot","isGlobalJackpot","getIsGlobalJackpot","setHistoryFeedContent","enablePhase2","historyFeedMarketingContent","getHistoryFeedContent","setGJPathSegment","pathsegment","oldPathSegment","setGJWinnerJackpotContent","gjWinnerJackpotData","getSeoboxes","hideCategory","lobbyCategoriesMap","lobbySubCategoriesMap","recentPlayedCategory","favouritesCategory","subcategoryRoute","gamemetadata","_GlobalJackpotService","LiveCasinoService","liveGamesLookUp","liveGamesSubject","liveGamesFeedObservable","liveGameswithSitecoreSubject","liveGameswithSitecoreObservable","liveCasinoApiFeedStarted","liveCasinoData","startLiveCasinoApiTntervalFeed","liveCasinoConfig","provideLiveCasinoConfig","liveCasinoApiFeedIntervalRefresh","getLiveCasinoData","liveCasinoApiFeedInterval","isSitecoreInfoRequired","liveCasino","getLiveCasinoDataSuccess","liveCasinoApiDataItems","seatsTaken","liveCasinoApiItemSitecoreData","liveCasinoApiSitecoreInfo","isSitecoreInfoPublished","getSitecoreInfoPublishedStatus","getLiveGamesLookUp","getLiveGameLookUpInfo","liveGameInfo","vendorName","vendorname","getLiveCasinoApiSitecoreInfo","getFlagIconURL","language","flagUrlPattern","isTableOnline","tableStatus","countdown","timerStartInstance","setLiveCasinoStartVariable","getLiveCasinoStartVariable","clearLiveCasinoDataPoints","secondsToStartTable","_LiveCasinoService","CasinoCoreNpmParams","UserRequestModel","RecommendedGamesFilterModel","answers","RecommendedGameModel","WizardType","NewQuickInfoService","getGameCatalogDetails","vendorId","_NewQuickInfoService","NewsFeedV2Service","newsFeedV2Subject","newsFeedV2Observable","newsFeedMap","newsFeedV2WidgetSubject","newsFeedV2WidgetObservable","setNewsFeedMap","getNewsFeedMap","newsFeedMapItem","isSiteCoreDataFetched","setNewsFeedContent","setNewsFeedResponseArray","newsFeedResponse","tempArr","ele","fields","subHeader","gameID","subTitle","displayLiveStatus","displayDealerImage","_NewsFeedV2Service","NewsFeedService","dslService","_newsFeed","newsFeed$","newsFeedMapper","validateDisplayCondition","setNewsFeed","setNewsFeedResponse","newsFeedData","displayGameNameEvent","newsFeedConfig","provideNewsFeedCasinoConfig","newsFeedPosition","newsFeed","evaluateExpression","DslService","_NewsFeedService","OptimizedTeaserManager","optimizedHeaderTeasers","lMTCategories","setOptimizedTeasers","displayMode","maxRenderedTeasers","provideOptimizedTeaserConfig","maxTeasersToBeRendered","teaserResponse","optimizedTeaserContents","globalTeaserSettings","globalTeaserStyles","showTeasers","optimizedTeasers","optimizedHeader","filteredTeaser","ot","teaserItem","setOptimizedTeasersBasedOnCatery","optimizedSubNavigationTeasers","optimizedEmbeddedBelowTeasers","optimizedEmbeddedAboveTeasers","optimizedTopTeasers","teaserHeaders","optimizedTeasersData","getGlobalTeaserSettings","_OptimizedTeaserManager","CultureDatePipe","enableLocalDateTimeFormat","cultureDate","formatDate","shortTime","_CultureDatePipe","CurrencySymbolPipe","getCurrencySymbol","_CurrencySymbolPipe","CurrencyFormatPipe","decimal","_CurrencyFormatPipe","SafePipe","bypassSecurityTrustStyle","bypassSecurityTrustScript","_SafePipe","SitecoreImageResizePipe","imageLoadOptimizationConfig","provideImageLoadOptimizationClientConfig","isDynamicResizingEnabled","dynamicResizingQueryString","isImageRezied","qs","_SitecoreImageResizePipe","PlayerStatsService","playerstats","playerstatsObservable","fetchPlayerStatsFeed","feedTypeArray","isFeedRequestRecieved","feedtype","feedType","responses","playerStatsFeedInterval","playerstatsconfig","providePlayerStatsWidgetConfig","playerStatsInterval","addMultiplierImpressionTracking","gameImpressions","game_multiplier_impressions","_PlayerStatsService","PromotedGamesService","promotedGames","promotedGamesFromAllLobby","promotedGamesSubject","promotedFeedObservable","promotedGamesFromAllLobbySubject","promotedFeedFromAllLobbyObservable","setPromotedGames","itemName","getPromotedGames","getPromotedGamesFromAllLobby","_PromotedGamesService","PromotionsBannerService","promotionsDataPublisher","promotionsDataObservable","fetchPromotionsBannerData","promotionsBannerData","getPromotionsBannerData","_PromotionsBannerService","QuickInfoModalService","dataSource","gameDataObservable","setQuickInfoModalData","getQuickInfoModalData","_QuickInfoModalService","WinnersService","recentWinners","recentWinnersObservable","fetchRecentWinnersFeed","winnersFeedInterval","recentWinnersConfig","recentWinnersWidgetConfig","recentWinnersInterval","_WinnersService","SignPostingService","getSignPostingCount","categoryGames","signPostingCount","latestStickerGames","signPostedGames","_SignPostingService","SmartBannerService","smartBannerStatus","smartBannersExists","smartBannerStatusObservable","smartBannersExistsObservable","hasSmartBanner","toSignal","smartBannerRect","smartBannerStatusChange","smartBannersExistsChanged","isListExists","getSbClosedCookieValue","sbId","sbName","getSbInstalledCookieValue","sbInstalledName","installSmartBanner","daysReminder","closeSmartBanner","exdays","exdate","setDate","_SmartBannerService","SuperButtonService","findFromCategory","findFromComposition","isDefaultComposition","containerPath","_SuperButtonService","ThumbnailService","thumbnailPublisher","thumbnailDataObservable","setThumbnailData","_ThumbnailService","TimeZoneFormatPipe","timespan","userTimeZoneInfo","userUTCOffsetSecs","userOffsetString","BaseUtcOffset","userUTCOffsetMilliSecs","AdjustmentRules","DaylightDelta","daylightDeltaOffsetSecs","userExpiryTime","_TimeZoneFormatPipe","_WindowRef","SlotRacesTrackingService","coinEconomyFilter","trackPhase2","urlClicked","_SlotRacesTrackingService","FILTER_TYPE_ALL","FILTER_TYPE_COINS_ENTRY","FILTER_TYPE_CASH_ENTRY","FILTER_TYPE_COIN_REWARD","FILTER_TYPE_FREE_ENTRY","LEADERBOARD_COLUMNS_DISPLAYED","LEADERBOARD_COLUMNS_DISPLAYED_PH2","showMore","navigateUrl","winnersFeedShowMoreLinkText","closeCardToster","ToasterMsgComponent_div_0_div_10_Template","ToasterText","displayShowMore","ToasterMsgComponent","pageConfig","showClaimToster","ToasterMsgComponent_div_0_Template","_ToasterMsgComponent","GlobalSearchCustomEvent","GlobalSearchService","hideGlobalSearchBasedOnPath","hideGlobalSearchHeaderAndStickyEntryBasedOnPath","getCurrentPath","globalSearchPathBasedEnabler","pathBasedEnabler","disabledGlobalSearchPaths","disablePaths","enabledGlobalSearchPaths","enablePaths","disablePath","enablePath","hideGlobalSearch","HIDE_HEADER_ENTRY","HIDE_FLOATING_ENTRY","showGlobalSearch","SHOW_HEADER_ENTRY","SHOW_FLOATING_ENTRY","hidingGlobalSearch","_GlobalSearchService","getDropShadow","darkMode","dropShadow","darkmodegametiledropshadow","gametiledropshadow","getBorderRadius","gametileborderradius","isIconSixCategory","getLTileFontFamily","lobbytilefontfamily","getsubCategoryTextColor","subcategorytextcolor","getsubCategoryTitleFontSize","subcategorytitlefontsize","getsubCategorySubTitleFontSize","subcategorysubtitlefontsize","gameIconTheming","theme","_CasinoStylesService","rxEffects","setupFn","assertInInjectionContext","ErrorHandler","destroyRef","DestroyRef","runningEffects","ef","register","obs$","sideEffect","onDestroy","effects","JackpotAndPromotionsService","jackpotGroupSubject","jackpotGroupObservable","postloginfirstJackpotSortCall","promotionsBannerService","setGlobalJackpotPathSegment","globalJackpotPathSegment","initiateJackpotFeedsAndGames","jackpotDataClientConfig","feedCacheConfig","isDisableJackpotCalls","enableJackpotSortGames","getJackpotListFromWidget","jackpotWidget","jp","getGlobalJackpotByLobbyType","isGJLobby","globalJackpotPathSegmentsArray","lobby","initiateJackpotandPromotionBanner","promotionsBannerConfig","providePromotionsBannerConfig","isEnablePromotionsBanner","_JackpotAndPromotionsService","clientConfigService","httpClient","casinoClientConfigLoadedSubject","fillClientConfig","globalSearchConfig","devSettingsClientConfig","videoPreviewConfig","smartLobbyConfig","globalJackpotConfig","liveDealerConfig","nativegamelaunchConfig","widgetConfig","quickInfoConfig","optimizedTeaserConfig","promotionsInfoConfig","discoverFeedConfig","subNavigationConfig","newsFeedCasinoConfig","modularSettingsConfig","promotedGamesConfig","thumbnailConfig","recentlyPlayedConfig","headerTeasersConfig","freeSpinsClientConfig","searchConfig","gamingStoriesClientConfig","promoOfferWidgetConfig","gamificationWidgetConfig","abTestingConfig","gameSelectorWidgetConfig","commonConfig","superButtonConfig","gameLaunchTrackingConfig","modularBingoClientConfig","arcadeLobbyConfig","promoCoinEconomyConfig","minBetGamesConfig","gameImpressionsConfig","playerStatsWidgetConfig","betMGMOriginals","modularization","setClientConfigLoadedObservable","csCasinoConfig","csFeatures","cslmtData","csGlobal","csCasinoGlobalSearch","csDevSettingsConfig","csGlobalJackpot","csGameConfig","csSmartLobbyConfig","csMcPage","csLiveDealerConfig","csJackpotData","csNativeGameLaunch","csGeolocationConfig","csCasinoAsIFrameOverlayConfig","csFeedCacheConfiguration","csAdvanceGameDataModel","csQuickInfo","csWidgetConfig","csOptimizedTeaser","csPromotionsInfo","csDiscoverFeed","csSubNavigationConfig","csModularSettings","csLiveCasinoApi","csNewsFeedConfig","csPromotedGamesConfig","csSlotRaces","csThumbnail","csCozyBingo","csRecentlyPlayed","csHeaderTeasers","csFreeSpins","csClientSideConfig","csImageLoadOptimizationConfig","csApiPathsConfig","csSearchConfig","csNonCriticalFeedConfig","csAbTestingConfig","csDownloadAppFromDevice","csPromoOfferWidget","csGamificationWidget","csGamingStoriesConfig","csPrelogin","csGameSelectorConfig","csGameShowHubConfig","csCommonConfig","csLiveCasinoLoungeConfig","csImmersiveLobbyConfig","csVideoPreviewConfig","csGameLaunchTrackingConfig","csPromotionsBannerConfig","csGamePremiere","csRecentWinnersConfig","csGamingStoriesPhase2Config","csModularBingo","csAracdeLobbyConfig","csPromoCoinEconomyConfig","csMinBetGamesConfig","csPlayerStatsConfig","csGameImpressionsConfig","csBetMGMOriginals","csModularization","setLmtConfig","customLobbyTypes","provideSmartLobbyConfig","provideThumbnailConfig","provideLiveDealerConfig","provideQuickInfoConfig","providewidgetConfig","providePromotionsInfoConfig","provideDiscoverFeedConfig","providePromotedGamesConfig","providePromoOfferWidgetConfig","provideGamificationWidgetConfig","provideHeaderTeasersConfig","provideSearchConfig","provideABTestingConfig","provideGamingStoriesConfig","provideVideoPreviewConfig","provideGameSelectorWidgetConfig","provideCommonConfig","provideSuperButtonConfig","provideRecentWinnersWidgetConfig","provideModularBingoClientConfig","provideMinBetGamesConfig","provideGameImpressionsConfig","provideModularizationConfig","ClientConfigService","_ConfigProviderService","GeoLocationJSPathIdentifier","GeoLocationWindowProp","GeoLocationService","initializeGeolocationCoordinator","bootstrapCoordinationStart","checkGeolocationScript","assetsPath","assetScript","GEOCOMPLYJS","windowProp","GEOCOMPLY","OOBEEJS","GCOOBEE","APPINTEGRATIONJS","GEOLOCATIONCOORDINATOR","appendGeolocationScript","script","_GeoLocationService","lobbyTypeMaps","gJLobbyTypeMaps","lobbyTypeMapsForInvokerProduct","stickersDataSubject","stickersDataObservable","lobbyLoadedSubject","lobbyLoadedSubjectForInvokerProduct","lobbyLoadedObservableForInvokerProduct","forceGameLaunchBehaviourSubject","coinBalancePublisher","coinBalanceObservable","coinStoreDetailsPublisher","coinStoreDetailsObservable","categoryNotFoundSubject","categoryNotFoundObservable","hideSlotRacesTitlePublisher","hideSlotRacesTitleObs","optMiniTeasersSource","postLoginFeedsInitiated","gameSelectorWidgetSource","isNewMoreInfoActive","lobbyLoadEventTracked","postloginfirstTeaserCall","postLoginFirstSlotRaceCall","postloginfirstLiveCasinoCall","discoverFeedService","liveCasinoService","newsFeedService","promotedGamesService","cozybingoService","thumbnailService","gameSelectorWidgetService","CasinoCookieService","jackpotAndPromotionsService","globalSearchService","geoLocationService","disableFullLobbyFetch","setCasinoLobby","setPartialCasinoLobbiesforOtherProducts","targetOverlayLobby","setPartialCasinoLobbiesForOverlay","arcadeCoinExpiry","calculateCoinArcadeExpiry","lobbyLoadEvent","onLobbyLoaded","initiateFeeds","UserLoginEvent","postLoginCalls","rpfavandunfinishedcalled","UserLoggingOutEvent","checkForTouchDevice","initiateDisjointFeeds","initDisjoint","SPORTS_WODR","getThumbnailbasedonroute","gameThumbnail","vipThumail","gt","isVipThumbnail","nonVipThumail","isLobbyLoadEventTracked","setLobbyLoadEventTrackingStatus","initGameSelectorWidget","refreshFeeds","disjointFeedsInitiated","enablePreLoginRecentlyPlayed","enableDynamicSequentialCalls","enableDiscoverFeed","isDisableLiveCasinoCalls","initializeSlotRaces","enableSlotRaces","disableSlotracesCallsOnBootstrap","enableSlotRacesForOtherProducts","slotraceLobbytypeForGamesOrdering","isDisjointFeedsInitiated","fromOnLobbyLoaded","initiatePostLoginDisjointFeeds","enablePostloginPartialCalls","handleForceGameLaunch","forceLoginGameObjectExpirationTime","forceGameLaunchObjData","noGameTraking","forceGameLaunchExecutionTimeOut","checkIfGamePremiereEnabledForCategory","showGamePremiereByLobbyTypeCategory","gamePremiereCurrentLobbyType","initiatePostLoginFeatures","initiatePostLoginRemainingFeed","subscribeCoinBalance","getApplicableLobbyTypes","getApplicableLobbyTypeMapsDynacon","retrieveRawLobbyTypesMapDataFromLocalStorage","respondBack","collectedLobbies","allApplicableLobbyDataPresent","lobbyTypeMapsInCache","feed","checkAndRetrieveAllLobbyTypeMapsOnLocalStorage","UILobby","gameItem","catSitecoreData","displayGameSelectorWidget","gameSelectorWidget","optimisedMiniTeasers","teaserOptimization","enableOptMiniTeasers","checkAndRetrieveAllCustomLobbyTypeMapsOnLocalStorage","checkAndRetrieveAllApplicableLobbyTypeMapsOnLocalStorage","setPartialCasinoLobby","readAndDispatchLobbyDataForGlobalSearch","setCasinoLobbyFromLocalStorage","lmtPartialFeed","setLobbyContent","postLogin","otherProductsLobbyTypeForOdr","fromGlobalJackpotFeedInit","tempLobbyTypeMaps","lmtFeedOfProduct","storeVendorInfoInCache","getAllVendorDetails","coinBalRes","userCoinBalance","coinsEarnedInCurrentMonth","additionalAttribs","getCoinBalance","racesCoinBalance","lobbyTypeMapsFromLocalStorage","userAuthenticated","isPostLogin","publishLobbyLoadedEvent","setCasinoLobbyForInvokerProduct","publishLobbyLoadedEventForInvokerProduct","setLobbyContentForInvokerProduct","initiateCasinoLobby","setSearchCriteriaforCategoryGames","isLoggedIn","raiseLobbyLoadedEvent","setLobbySitecoreData","collectedSitecoreCategory","setLobbyTypeMaps","collectedLobby","setLobbySitecoreDataForInvokerProduct","setLobbyTypeMapsForInvokerProduct","lobbySitecoreData","lobbySitecoreDataForInvokerProduct","getLobbySitecoreData","lobbiesInfo","lobbyMapItem","getLobbyTypeItemMap","checkForLobbyTypeInLobbiesInfo","lobbyContent","getLobbyContent","lobbyFeedJson","lobbyconfiguration","disabledGamesData","categoryTitleLanguageMap","stickerTitleLanguageMap","getGameMetaDataMap","filterRecentlyPlayedGames","isFilterRecentlyPlayedGames","filterCasiaCategory","enableFeatureId","isFilterFeatureIds","getSubtitleFromSitecore","isSubCatVisible","isFilterRPGames","featureIds","gameMetaDataArray","metaLobbyType","categoryGamesConfig","enableCategorySearchCriteria","categoryGamesSearchCriteria","clientDsl","titleAndSubTitle","getTitleAndSubTitle","overridenCategoryname","headerTitle","delimiterForDynamicGameNames","splitArr","allLobbiesSitecoreData","jackpotWidgetIds","getCategoryInfoOnLMTId","linkedLMTCategoryId","odrLobbyType","linkedCategoryInfo","categoryItem","isDefaultCategory","getDefaultOrFirstCategoryInfo","defaultCategoryOnDynacon","getDefaultOrFirstCategoryInfoForInvokerProduct","getNavCategories","getLobby","navCategories","hardProductOverride","addCategory","isSlotRacesCategory","categoryurl","categoryUrl","defaultSitecoreObj","isdefault","isCategoryUnderSubLobby","getParentLobby","enableDefaultLink","defaultProductHomeUrl","appendCultureToDefaultUrl","addCategoryForLivegamesIframe","liveGamesCategories","getNavCategoriesForInvokerProduct","getLobbyForInvokerProduct","getStickerMap","getLinkedToCategory","categoryArray","lobbyLoadedEvent","casinoLobbyData","setMoreInfoComponentStatus","getMoreInfoComponentStatus","currentDay","getMinBetBasedOnGameId","coinArcade_MinBetGames","default","getIconsuppix","getImagePath","gameFloder","imageFormat","fresSpinsConfig","searchGames","filteredGames","fetchFilteredGames","elementsStartingWithQuery","elementsContainingQuery","fGame","serachQuery","setSearchGameIcon","gameProvider","iconTypeMapping","mainLobby","subLobbyType","_CasinoLobbyService","closeSearchIcon","queryChanged","trackInput","showGlobalSearchInRegularSearch","searchInput_r5","ɵɵreference","SearchProduct_r6","ɵɵtwoWayListener","ɵɵtwoWayBindingSet","Vi","showGymlSearch","idSuffix","ɵɵtwoWayProperty","ctx_r7","game_r9","$implicit","gamePos_r10","ctx_r11","game_r13","gamePos_r14","SearchDesktopComponent_div_0_div_2_div_26_li_4_Template","isMsgVisible","SearchDesktopComponent_div_0_div_2_span_6_Template","SearchDesktopComponent_div_0_div_2_Defer_8_Template","SearchDesktopComponent_div_0_div_2_Defer_9_DepsFn","clickGymlHeading","SearchDesktopComponent_div_0_div_2_li_22_Template","SearchDesktopComponent_div_0_div_2_div_26_Template","SearchCloseIcon","hideDisplayGYML","gymlText","GYMLGames","SearchDesktopComponent_div_0_div_2_Template","SearchDesktopComponent","casinoStyles","keypressed","displayValue","appContext","casinoConfiguration","setIdSuffix","enableEnhancedSearch","setGYML","gymlCategory","gymlLimitForSearch","gymlGameIds","getGyMLGames","takeUntilDestroyed","lobbyLoadedObs","displaySearchCloseIcon","gamesModelList","checkGameIconTheming","getRecomendationGames","lmtGameData","isgYml","gamePos","favGamesSubscribe","querySelectorAll","displaySearchResults","docClick","clickInside","wasInside","clickout","clickGymlGames","SearchDesktopComponent_div_0_Template","AsyncPipe","DslPipe","_SearchDesktopComponent"],"mappings":"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","x_google_ignoreList":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,45,146,185,313]}