{\n\n private _onCloseButtonClick = () => {\n this.props.viewModel.closeLoadingIndicator();\n }\n\n private _renderPackageDownloadStatusLabel() {\n if(this.props.viewModel.totalPackages > 1) {\n return (\n \n {this.services.translation.translate('HYBRID_EMBEDDED_GAME_LOADING_PACKAGES_PROGRESS', {packagesStatus: `${this.props.viewModel.currentPackage}/${this.props.viewModel.totalPackages}`})}\n
\n );\n }\n\n return null;\n }\n\n private _renderConnectingSpinner() {\n return (\n <>\n \n {this.services.translation.translate('HYBRID_EMBEDDED_GAME_LOADING_SPINNER_LABEL')}\n
\n \n \n \n >\n );\n }\n\n private _renderProgressIndicator() {\n return (\n <>\n {this._renderPackageDownloadStatusLabel()}\n \n \n \n {`${this.props.viewModel.downloadPercentage}%`}\n \n \n \n >\n\n )\n }\n\n private _renderContent() {\n if(this.props.viewModel.downloadPercentage === 0 && this.props.viewModel.currentPackage === 1) {\n return this._renderConnectingSpinner();\n } else {\n return this._renderProgressIndicator();\n }\n }\n\n render() {\n return (\n \n \n \n \n \n {this._renderContent()}\n \n \n )\n }\n }\n);","import React from \"react\";\nimport {GameLoadingIndicatorBaseModel} from \"./game-loading-indicator-base.model\";\nimport {\n HybridEmbeddedGameLoadingIndicatorComponent\n} from \"../../../components/game-window/loading-indicators/hybrid-embedded/hybrid-embedded-game-loading-indicator.component\";\nimport {\n IHybridEmbeddedGameLoadingIndicatorViewModel\n} from \"./hybrid-embedded-game-loading-indicator-view-model.interface\";\nimport {IServiceFactoryExtended} from \"../../service-factory-extended.interface\";\nimport {CGPEventSubscription} from \"../../sdk/cgp-sdk.interface\";\nimport { observable, runInAction, makeObservable } from \"mobx\";\nimport {GameRunnerService} from \"../game-runner.service\";\nimport {ON_DEMAND} from \"../../../../sdk/src/services/hybrid/native/native_const\";\nimport {Check, TimeSpan} from \"@sparkware/app-utils\";\n\n\nconst TOASTER_TIMEOUT = TimeSpan.fromSeconds(15);\n\nexport class HybridEmbeddedGameLoadingIndicatorModel extends GameLoadingIndicatorBaseModel implements IHybridEmbeddedGameLoadingIndicatorViewModel {\n constructor(services: IServiceFactoryExtended, private readonly gameRunner: GameRunnerService) {\n super(services);\n\n makeObservable(this, {\n downloadPercentage: observable.ref,\n currentPackage: observable.ref,\n totalPackages: observable.ref\n });\n\n this._sdkEventsSubscriptions.push(services.sdk.events.onHybridEmbeddedGameLoadingIndicatorUpdateV1(percentage => {\n this._updateProgress({\n percentage: percentage,\n numberOfPackages: '1/1'\n });\n }));\n\n this._sdkEventsSubscriptions.push(services.sdk.events.onHybridEmbeddedGameLoadingIndicatorUpdateV2(data => {\n this._updateProgress({\n percentage: data.statusBar,\n numberOfPackages: data.numberOfPackages\n });\n }));\n\n\n this._slowConnectionToasterTimer = setTimeout(this._showToaster, TOASTER_TIMEOUT.totalMilliseconds);\n\n this.services.analytics.sendAnalytics(ON_DEMAND.ON_DEMAND_CATEGORY, 'show_hybrid_loader');\n }\n\n\n private _sdkEventsSubscriptions: CGPEventSubscription[] = [];\n private _slowConnectionToasterTimer: any = null;\n\n private _showToaster = () => {\n this.services.toaster.showStandardToast({\n id: 'hybrid_embedded_game_loading_indicator_toaster',\n toastOptions: {\n timeout: TimeSpan.fromSeconds(10)\n },\n contentProps: {\n title: this.services.translation.translate('HYBRID_EMBEDDED_GAME_LOADING_SLOW_CONNECTION_TOASTER_TITLE'),\n message: this.services.translation.translate('HYBRID_EMBEDDED_GAME_LOADING_SLOW_CONNECTION_TOASTER_SUBTITLE'),\n },\n onToastShown: () => {\n this.services.analytics.sendAnalytics(ON_DEMAND.ON_DEMAND_CATEGORY, 'slow_internet_toaster', TOASTER_TIMEOUT.totalSeconds.toString(), this.downloadPercentage);\n }\n })\n\n }\n\n private _clearToasterTimer(): void {\n if(this._slowConnectionToasterTimer) {\n clearTimeout(this._slowConnectionToasterTimer);\n this._slowConnectionToasterTimer = null;\n }\n }\n\n private _updateProgress = (data: {percentage: number | string; numberOfPackages: string}) => {\n runInAction(() => {\n if(Check.isNumber(data.percentage)) {\n this.downloadPercentage = data.percentage\n } else {\n const percentage = parseInt(data.percentage);\n if(!Check.isNumber(percentage)) {\n this.services.logger.error('Hybrid embedded game download percentage is not a number!');\n this.downloadPercentage = 50; // just put something there\n } else {\n this.downloadPercentage = percentage;\n }\n }\n\n const parts = data.numberOfPackages.split('/');\n this.currentPackage = parseInt(parts[0]?.trim());\n this.totalPackages = parseInt(parts[1]?.trim());\n\n if(!Check.isNumber(this.currentPackage)) {\n this.currentPackage = 1;\n }\n\n if(!Check.isNumber(this.totalPackages)) {\n this.totalPackages = this.currentPackage;\n }\n\n //if download percentage is more than 10% then we don't show the slow connection toaster anymore\n if(this.downloadPercentage >= 10) {\n this._clearToasterTimer();\n }\n });\n }\n\n downloadPercentage: number = 0;\n\n currentPackage: number = 1;\n\n totalPackages: number = 1;\n\n\n dispose() {\n super.dispose();\n this._sdkEventsSubscriptions.forEach(s => s.off());\n this._sdkEventsSubscriptions = [];\n this._clearToasterTimer();\n }\n\n render(): React.ReactElement {\n return (\n \n );\n }\n\n closeLoadingIndicator(): void {\n\n this.gameRunner.closeGameLoadingIndicator();\n this.services.sdk.eventsTrigger.hybridGameLoadingIndicatorClosed();\n\n }\n}","import React from \"react\";\nimport {OrbitComponent} from \"../../../base-components/orbit-component/orbit-component\";\nimport {LoadingDotsComponent} from \"../../../../basic-components/loading-dots/loading-dots.component\";\nimport {observer} from \"mobx-react\";\n\nexport const WebAppGameLoadingIndicatorComponent = observer(class WebAppGameLoadingIndicatorComponent extends OrbitComponent {\n render() {\n return (\n \n );\n }\n});","import React from \"react\";\nimport {GameLoadingIndicatorBaseModel} from \"./game-loading-indicator-base.model\";\nimport {\n WebAppGameLoadingIndicatorComponent\n} from \"../../../components/game-window/loading-indicators/web-app/web-app-game-loading-indicator.component\";\n\nexport class WebAppGameLoadingIndicatorModel extends GameLoadingIndicatorBaseModel {\n render(): React.ReactElement {\n return (\n \n );\n }\n}","import {IServiceFactoryExtended} from \"../service-factory-extended.interface\";\nimport {ILastGamePlayedViewModel} from \"./last-game-played.view-model.interface\";\nimport {action, makeObservable, observable} from \"mobx\";\nimport {GameInfo} from \"../games/game-info\";\nimport {OnGameCloseParams, OnGameOpenParams} from \"../sdk/sdk-events\";\n\nexport class LastGamePlayedModel implements ILastGamePlayedViewModel{\n constructor(private readonly services: IServiceFactoryExtended) {\n makeObservable(this);\n }\n\n @observable.ref\n lastPlayedRealGame: GameInfo = null;\n\n @observable.ref\n correlatedGamesForLastPlayedRealGame: GameInfo[] = [];\n\n private _listenForLastRealGame = false;\n\n @action.bound\n _setLastPlayedRealGame(lastGameInfo: GameInfo) {\n this.lastPlayedRealGame = lastGameInfo;\n }\n\n @action.bound\n _setCorrelatedGamesForLastPlayedRealGame(gameInfos: GameInfo[]) {\n this.correlatedGamesForLastPlayedRealGame = gameInfos;\n }\n\n listenForLastPlayedRealGame() {\n if (this._listenForLastRealGame) {\n return;\n }\n\n this.services.sdk.events.onGameClose((closeOptions: OnGameCloseParams) => {\n // showNextGameSuggestion should be filled as true when player itself closes the game (press on X button)\n if (closeOptions.isReal && closeOptions.isGamePlayed && closeOptions.showNextGameSuggestion) {\n this.setLastPlayedRealGame(closeOptions.gameType);\n }\n });\n\n this._listenForLastRealGame = true;\n }\n\n async setLastPlayedRealGame(gameType: number): Promise {\n const lastGameInfo = await this.services.games.getGameInfo(gameType);\n const correlatedGames = await this.services.games.getCorrelatedGames(gameType, 50);\n let gameInfosArray = (await this.services.games.getGamesInfoArray(correlatedGames)) || [];\n\n this._setLastPlayedRealGame(lastGameInfo);\n this._setCorrelatedGamesForLastPlayedRealGame(gameInfosArray);\n }\n\n private _listenForLastOpenDemoGame = false;\n\n @observable.ref\n lastOpenDemoGame: GameInfo = null;\n\n listenForLastOpenDemoGame() {\n if (this._listenForLastOpenDemoGame) {\n return;\n }\n\n this.services.sdk.events.onGameOpen((options: OnGameOpenParams) => {\n if (!options.isReal) {\n this.setLastOpenDemoGame(options.gameType);\n }\n });\n\n this._listenForLastOpenDemoGame = true;\n }\n\n async setLastOpenDemoGame(gameType: number): Promise {\n const gameInfo = await this.services.games.getGameInfo(gameType);\n this._setLastOpenDemoGame(gameInfo);\n }\n\n @action.bound\n _setLastOpenDemoGame(lastGameInfo: GameInfo) {\n this.lastOpenDemoGame = lastGameInfo;\n }\n}","import {\n IGameRunnerService,\n IInitialOpenGameParams,\n IPersistedInitialOpenGameParams\n} from \"./game-runner.service.interface\";\nimport {ServiceBase} from \"../ServiceBase\";\nimport {\n ICloseGameParams,\n IRunningGameController,\n IRunningGameControllerViewModel\n} from \"./interfaces/game-controller/running-game-controller.interface\";\nimport { observable, runInAction, makeObservable } from \"mobx\";\nimport {IRegulatedCompanyModel} from \"../companies/regulated-company-model.interface\";\nimport {GameModeEnum} from \"./interfaces/game-context/game-context-view-model.interface\";\nimport {IServiceFactoryExtended} from \"../service-factory-extended.interface\";\nimport {SessionStorageKeys} from \"../storage/session-storage-keys\";\nimport {GNWP_SOURCES} from \"../gnwp/gnwp-consts\";\nimport {IGameRunnerProxy} from \"../../../common/interfaces/game-runner-proxy.interface\";\nimport {Check} from \"@sparkware/app-utils\";\nimport {DialogButtonClickHandleResultEnum} from \"../dialog/dialog.service.interface\";\nimport {UndefinedString} from \"../../../common/types/nullable-types\";\nimport {RunningGameBrowserTabController} from \"./running-game-browser-tab-controller\";\nimport {\n HybridEmbeddedGameLoadingIndicatorModel\n} from \"./loading-indicators/hybrid-embedded-game-loading-indicator.model\";\nimport {WebAppGameLoadingIndicatorModel} from \"./loading-indicators/web-app-game-loading-indicator.model\";\nimport {IGameLoadingIndicatorModel} from \"./loading-indicators/game-loading-indicator-model.interface\";\nimport {GameStepsExecutionResultEnum} from \"./interfaces/game-step/game-run-step.interface\";\nimport {OpenGameParameters} from \"../games/game-info\";\nimport {LastGamePlayedModel} from \"./last-game-played.model\";\n\nexport class GameRunnerService extends ServiceBase implements IGameRunnerService, IGameRunnerProxy {\n constructor(services: IServiceFactoryExtended) {\n super(services);\n\n makeObservable(this);\n\n this.gameTabController = new RunningGameBrowserTabController(this, this.services);\n\n this._reOpenPendingGame();\n\n this._subscribeToSdkEvents();\n\n this.reaction(() => this.services.user.isAuthorized,\n async () => {\n await this.currentRunningGame?.closeGame({\n shouldSuggestNextGame: false\n });\n });\n\n this.lastPlayedGame = new LastGamePlayedModel(this.services);\n }\n\n readonly gameTabController: RunningGameBrowserTabController;\n\n readonly lastPlayedGame: LastGamePlayedModel;\n\n get gameFrameZIndex(): number {\n return this.services.sdk.overlayZIndex.GAME_FRAME;\n }\n\n private async _reOpenPendingGame(): Promise {\n const persistedGameParams = this.services.sessionStorage.getJson(SessionStorageKeys.currentGameParams);\n if (!persistedGameParams) {\n return;\n }\n\n try {\n const {gameType, ...initialGameParams} = persistedGameParams;\n\n const gameInfo = await this.services.games.getGameInfo(gameType);\n\n if (!gameInfo) {\n return;\n }\n\n await this.openGame({\n ...initialGameParams,\n gameInfo: gameInfo\n });\n } finally {\n this.services.sessionStorage.removeItem(SessionStorageKeys.currentGameParams);\n }\n\n }\n\n private _subscribeToSdkEvents(): void {\n this.services.sdk.events.onDepositWidgetClosed(() => {\n this._refreshCurrentGameBalance();\n });\n\n this.services.sdk.events.onExternalLinkClosed((linkSource) => {\n if (GNWP_SOURCES.CASHIER === linkSource) {\n this._refreshCurrentGameBalance();\n }\n });\n }\n\n private _refreshCurrentGameBalance(): void {\n if (this.currentRunningGame && this.currentRunningGame.gameCommunicationChannel.supportsBalanceRefresh) {\n this.currentRunningGame.gameCommunicationChannel.refreshBalance();\n }\n }\n\n\n async openGame(initialRunGameParams: IInitialOpenGameParams): Promise {\n\n\n try {\n switch (initialRunGameParams.gameMode) {\n case GameModeEnum.Real:\n return await this._openRealGame(initialRunGameParams);\n case GameModeEnum.Demo:\n return await this._openDemoGame(initialRunGameParams);\n case GameModeEnum.History:\n return await this._openHistoryGame(initialRunGameParams);\n default:\n throw new Error(`Invalid gameMode ${initialRunGameParams.gameInfo}`);\n }\n } catch (err) {\n this.services.logger.error(`Failed to open game ${initialRunGameParams.gameInfo.gameType} in mode ${initialRunGameParams.gameMode}`, err);\n this._logOpenGameError(err, initialRunGameParams);\n this._showGameOpenError(err);\n }\n }\n\n async closeCurrentGame(params: ICloseGameParams): Promise {\n if(this.currentRunningGame) {\n await this.currentRunningGame.closeGame(params);\n }\n }\n private _showGameOpenError(err: any): void {\n let messageText = null;\n if (err?.error_code) {\n messageText = this.services.regulation.getErrorMessage(err.error_code);\n }\n\n if (!messageText) {\n messageText = this.services.regulation.getGeneralErrorMessage();\n }\n\n this.services.dialog.showSimpleTextModal({\n text: messageText,\n showEmptyTitle: true,\n buttons: [\n {\n text: this.services.translation.translate('OK'),\n buttonPreset: 'primary',\n onClick: async () => DialogButtonClickHandleResultEnum.CloseDialogAndContinue\n }\n ]\n });\n\n }\n\n private _logOpenGameError(err: any, initialRunGameParams: IInitialOpenGameParams): void {\n try {\n let errMsgToLog: string;\n if (Check.isObject(err)) {\n errMsgToLog = JSON.stringify(err);\n } else {\n errMsgToLog = err?.toString();\n }\n this.services.analytics.sendAnalytics(\"game_load_error\", errMsgToLog, initialRunGameParams.gameInfo.gameType.toString());\n } catch (logError) {\n this.services.logger.error('Failed to log game error', logError);\n }\n\n }\n\n private async _openRealGame(initialRunGameParams: IInitialOpenGameParams): Promise {\n return await this._runGame(initialRunGameParams, company => company.openRealGame(initialRunGameParams));\n }\n\n private async _openDemoGame(initialRunGameParams: IInitialOpenGameParams): Promise {\n return await this._runGame(initialRunGameParams, company => company.openDemoGame(initialRunGameParams));\n }\n\n private async _openHistoryGame(initialRunGameParams: IInitialOpenGameParams): Promise {\n if (!initialRunGameParams.historyGameParams) {\n throw new Error('Missing history game params');\n }\n return await this._runGame(initialRunGameParams, company => company.openHistoryGame(initialRunGameParams));\n }\n\n @observable.ref\n gameLoadingIndicator: IGameLoadingIndicatorModel | null = null;\n\n private _setGameLoadingIndicator(loadingIndicator: IGameLoadingIndicatorModel | null): void {\n runInAction(() => {\n this.gameLoadingIndicator?.dispose();\n this.gameLoadingIndicator = loadingIndicator;\n })\n }\n\n private _createGameLoadingIndicator(): IGameLoadingIndicatorModel {\n if (this.services.device.hybrid.isEmbedded) {\n return new HybridEmbeddedGameLoadingIndicatorModel(this.services, this);\n } else {\n return new WebAppGameLoadingIndicatorModel(this.services);\n }\n }\n\n private async _closeCurrentRunningGame(): Promise {\n if(this.currentRunningGame) {\n return await this.currentRunningGame.closeGame({\n shouldSuggestNextGame: false\n });\n }\n\n return GameStepsExecutionResultEnum.Continue;\n }\n\n private _runGameStarted = false;\n private async _runGame(initialRunGameParams: IInitialOpenGameParams, openGame: (company: IRegulatedCompanyModel) => Promise): Promise {\n if (this._runGameStarted) { //to prevent the case when the user double-click on the game\n return;\n }\n\n try {\n this._runGameStarted = true;\n const closeCurrentGameResult = await this._closeCurrentRunningGame()\n\n if (closeCurrentGameResult !== GameStepsExecutionResultEnum.Continue) {\n return;\n }\n\n this._setGameLoadingIndicator(this._createGameLoadingIndicator());\n\n\n const company = await (await this.services.companies).getRegulatedCompany(initialRunGameParams.gameInfo.companyName);\n const gameController = await openGame(company);\n\n if (!gameController) {\n return null;\n }\n this._setCurrentRunningGame(gameController);\n return gameController;\n } finally {\n this._runGameStarted = false;\n this._setGameLoadingIndicator(null);\n }\n }\n\n @observable.ref\n currentRunningGame: IRunningGameController | null = null;\n\n private _setCurrentRunningGame(gameController: IRunningGameController): void {\n gameController.createWaitForClosePromise();\n\n runInAction(() => {\n this.currentRunningGame = gameController;\n });\n\n gameController.triggerLegacyGameOpenEvent();\n this.services.overlay.disableScrolling();\n gameController.waitForGameToClose().then(() => {\n runInAction(() => {\n this.currentRunningGame = null\n });\n gameController.triggerLegacyGameCloseEvent();\n this.services.overlay.enableScrolling();\n });\n }\n\n closeGameLoadingIndicator(): void {\n this._setGameLoadingIndicator(null);\n }\n\n\n /**\n * Legacy adapter implementations\n */\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async closeRunningGame(): Promise {\n if (this.currentRunningGame) {\n await this.currentRunningGame.closeGame({\n shouldSuggestNextGame: false\n });\n }\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n get isGameRunningLegacy(): Promise {\n return Promise.resolve(Boolean(this.currentRunningGame) && this.currentRunningGame.gameContext.gameMode !== GameModeEnum.History);\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n get isGameRunningInFreePlayModeLegacy(): Promise {\n return Promise.resolve(Boolean(this.currentRunningGame?.gameContext.freePlayContext.isFreePlay));\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n get currentRunningGameCompanyNameLegacy(): Promise {\n return Promise.resolve(this.currentRunningGame?.gameContext.company.companyName);\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async stopCurrentGameAutoplayLegacy(): Promise {\n await this.currentRunningGame?.gameCommunicationChannel.stopAutoplay();\n }\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async continuePlayCurrentGameLegacy(): Promise {\n await this.currentRunningGame?.gameCommunicationChannel.resumeGamePlay();\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async shouldShowRealityCheckMessageWhileGameIsOpenLegacy(): Promise {\n if(this.currentRunningGame) {\n return (this.currentRunningGame.gameContext.gameInternalRealityCheckInterval.getRealityCheckExpectedByTheGame().expectedValueByTheGame === 0\n || this.currentRunningGame.company.shouldShowRealityCheckMessageWhileGameIsOpen());\n }\n return false;\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async shouldShowTimeLimitMessageWhileGameIsOpenLegacy(): Promise {\n return Boolean(this.currentRunningGame?.company.shouldShowTimeLimitMessageWhileGameIsOpen());\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n get isOpenGameInProgress(): Promise\n {\n return Promise.resolve(Boolean(this.gameLoadingIndicator));\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async openRealGameFromSdkRequest(gameType: number, options?: OpenGameParameters): Promise {\n const gameInfo = await this.services.games.getGameInfo(gameType);\n if(!gameInfo) {\n throw new Error(`There is no game in layout with gameType ${gameType}`);\n }\n\n await gameInfo.open({\n isRealMode: true,\n ...options\n });\n }\n\n /**\n * This should not be used in Orbit code it is only for old SDK use\n * @deprecated\n */\n async openDemoGameFromSdkRequest(gameType: number, options?: OpenGameParameters): Promise {\n const gameInfo = await this.services.games.getGameInfo(gameType);\n if(!gameInfo) {\n throw new Error(`There is no game in layout with gameType ${gameType}`);\n }\n\n await gameInfo.open({\n isRealMode: false,\n ...options\n });\n }\n}\n","export enum SessionStorageKeys {\n currentGameParams = 'OrbitCurrentGameParams',\n retryGeoOnLoad = \"OrbitRetryGeoOnLoad\"\n}"],"names":["Load","keyframes","LoadingDotBox","styled","props","animationDelay","LoadingDotsBox","LoadingDotsComponent","observer","OrbitComponent","GAME_PC_BUTTON_WIDTH","GAME_PC_BUTTON_HEIGHT","GAME_MOBILE_BUTTON_WIDTH","GAME_MOBILE_BUTTON_HEIGHT","GameHeaderBarCloseButtonBox","XCloseButtonBox","theme","mediaQuery","sAndBelow","RunningGameBrowserTabController","gameRunner","services","_activeGameInAnotherTabDetectionTimer","_detectActiveGameInAnotherTab","isGameRunningInAnotherTab","currentRunningGame","closeGame","shouldSuggestNextGame","reaction","runningGame","_setActiveGame","gameContext","gameInfo","gameType","setInterval","clearTimeout","_onGameClosed","fireImmediately","this","activeGame","_currentBrowserTabId","_activeGameTabId","sdk","getCurrentBrowserTabId","localStorage","getItem","LocalStorageKeys","setItem","removeItem","parseInt","Check","games","gamesMap","GameLoadingIndicatorBaseModel","dialog","hasOpenDialogs","hasOpenOverlays","HybridEmbeddedGameLoadingIndicatorRootBox","HybridEmbeddedGameLoadingIndicatorHeaderBox","PC_HORIZONTAL_SPACE_BETWEEN_ITEMS","HybridEmbeddedGameLoadingIndicatorContentBox","HybridEmbeddedGameLoadingIndicatorSpinnerBox","HybridEmbeddedGameLoadingIndicatorProgressCircle1Box","colors","boxBorderContrast","HybridEmbeddedGameLoadingIndicatorProgressCircle2Box","brandPrimary","angle","HybridEmbeddedGameLoadingIndicatorProgressCircle3Box","backgroundDark","LoadingCircleLargeIcon","viewBox","d","id","gradientUnits","x1","y1","x2","y2","gradientTransform","offset","stopColor","stopOpacity","className","fill","accumulate","additive","attributeName","attributeType","calcMode","dur","from","repeatCount","restart","to","type","React","HybridEmbeddedGameLoadingIndicatorComponent","_onCloseButtonClick","viewModel","closeLoadingIndicator","totalPackages","translation","translate","packagesStatus","currentPackage","size","_renderPackageDownloadStatusLabel","downloadPercentage","_renderConnectingSpinner","_renderProgressIndicator","onClick","_renderContent","TOASTER_TIMEOUT","TimeSpan","HybridEmbeddedGameLoadingIndicatorModel","_sdkEventsSubscriptions","_slowConnectionToasterTimer","_showToaster","toaster","showStandardToast","toastOptions","timeout","contentProps","title","message","onToastShown","analytics","sendAnalytics","ON_DEMAND","totalSeconds","toString","_updateProgress","data","runInAction","percentage","logger","error","parts","numberOfPackages","split","trim","_clearToasterTimer","makeObservable","observable","push","events","onHybridEmbeddedGameLoadingIndicatorUpdateV1","onHybridEmbeddedGameLoadingIndicatorUpdateV2","statusBar","setTimeout","totalMilliseconds","forEach","s","off","closeGameLoadingIndicator","eventsTrigger","hybridGameLoadingIndicatorClosed","WebAppGameLoadingIndicatorComponent","WebAppGameLoadingIndicatorModel","LastGamePlayedModel","action","_listenForLastRealGame","_listenForLastOpenDemoGame","lastGameInfo","lastPlayedRealGame","gameInfos","correlatedGamesForLastPlayedRealGame","onGameClose","closeOptions","isReal","isGamePlayed","showNextGameSuggestion","setLastPlayedRealGame","getGameInfo","getCorrelatedGames","correlatedGames","getGamesInfoArray","gameInfosArray","_setLastPlayedRealGame","_setCorrelatedGamesForLastPlayedRealGame","onGameOpen","options","setLastOpenDemoGame","_setLastOpenDemoGame","lastOpenDemoGame","GameRunnerService","gameTabController","lastPlayedGame","_runGameStarted","_reOpenPendingGame","_subscribeToSdkEvents","user","isAuthorized","overlayZIndex","GAME_FRAME","persistedGameParams","sessionStorage","getJson","SessionStorageKeys","initialGameParams","openGame","onDepositWidgetClosed","_refreshCurrentGameBalance","onExternalLinkClosed","linkSource","GNWP_SOURCES","gameCommunicationChannel","supportsBalanceRefresh","refreshBalance","initialRunGameParams","gameMode","GameModeEnum","_openRealGame","_openDemoGame","_openHistoryGame","Error","_logOpenGameError","_showGameOpenError","params","err","messageText","error_code","regulation","getErrorMessage","getGeneralErrorMessage","showSimpleTextModal","text","showEmptyTitle","buttons","buttonPreset","DialogButtonClickHandleResultEnum","errMsgToLog","JSON","stringify","logError","_runGame","company","openRealGame","openDemoGame","historyGameParams","openHistoryGame","loadingIndicator","gameLoadingIndicator","dispose","device","hybrid","isEmbedded","GameStepsExecutionResultEnum","_closeCurrentRunningGame","_setGameLoadingIndicator","_createGameLoadingIndicator","companies","getRegulatedCompany","companyName","gameController","_setCurrentRunningGame","createWaitForClosePromise","triggerLegacyGameOpenEvent","overlay","disableScrolling","waitForGameToClose","then","triggerLegacyGameCloseEvent","enableScrolling","Promise","resolve","Boolean","freePlayContext","isFreePlay","stopAutoplay","resumeGamePlay","gameInternalRealityCheckInterval","getRealityCheckExpectedByTheGame","expectedValueByTheGame","shouldShowRealityCheckMessageWhileGameIsOpen","shouldShowTimeLimitMessageWhileGameIsOpen","open","isRealMode","ServiceBase"],"sourceRoot":""}