{"version":3,"file":"static/js/service-casinofied-app-launcher.f80306bd.chunk.js","mappings":"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","sources":["app-react/services/casinofied/app-launcher/apps/adapters/casinofied-zoid-application-adapter.ts","app-react/services/casinofied/app-launcher/apps/adapters/casinofied-regular-application-adapter.ts","app-react/services/casinofied/app-launcher/apps/casinofied-application-base.ts","app-react/services/casinofied/app-launcher/apps/casinofied-application.interface.ts","app-react/components/on-error/boxes/on-error.box.tsx","app-react/components/on-error/boxes/on-error-default.box.tsx","app-react/components/on-error/boxes/on-error-icon.box.tsx","app-react/components/on-error/boxes/on-error-title.box.tsx","app-react/components/on-error/boxes/on-error-message.box.tsx","app-react/components/on-error/boxes/on-error-buttons.box.ts","app-react/components/on-error/on-error.component.tsx","app-react/services/casinofied/app-launcher/apps/inside-drawer.application.tsx","app-react/services/casinofied/app-launcher/apps/chat/chat.application.ts","app-react/services/casinofied/app-launcher/casinofied-app-sdk-loader.ts","app-react/services/casinofied/app-launcher/components/casinofied-component-base.ts","app-react/services/casinofied/app-launcher/components/casinofied-bubble.component.tsx","app-react/services/casinofied/app-launcher/apps/adapters/unified-cashier-zoid-adapter.ts","app-react/services/casinofied/app-launcher/apps/deposit-widget/deposit-widget.application.ts","app-react/components/payments-redirect-focus/boxes/payment-redirect-focus-title/payment-redirect-focus-title.box.ts","app-react/components/payments-redirect-focus/boxes/payment-redirect-focus-title/payment-redirect-focus-title.default.box.ts","app-react/components/payments-redirect-focus/boxes/payment-redirect-focus-container/payment-redirect-focus.box.ts","app-react/components/payments-redirect-focus/payments-redirect-focus.component.tsx","app-react/services/casinofied/app-launcher/apps/payments-redirect/payments-redirect.application.tsx","app-react/services/casinofied/app-launcher/apps/full-cashier/full-cashier.application.ts","app-react/services/casinofied/app-launcher/apps/cashout-widget/cashout-widget.application.ts","app-react/services/casinofied/app-launcher/apps/transaction-history/transaction-history.application.ts","app-react/services/casinofied/app-launcher/apps/customer-relations/customer-relations.application.ts","app-react/services/casinofied/app-launcher/apps/free-to-play-bonus-games/free-to-play-bonus-games.application.ts","app-react/services/casinofied/app-launcher/apps/help-centre/help-centre.application.ts","app-react/services/casinofied/app-launcher/apps/control-center/init-params-helper.ts","app-react/services/casinofied/app-launcher/apps/control-center/control-center-full.application.ts","app-react/services/analytics/analytics-data-layer.service.interface.ts","app-react/services/casinofied/app-launcher/apps/control-center/control-center-mini.application.ts","app-react/services/casinofied/app-launcher/apps/control-center/control-center-analytics-helper.ts","app-react/services/casinofied/app-launcher/apps/registration-widget/registration-widget.application.ts","app-react/services/casinofied/app-launcher/casinofied-app-factory.ts","app-react/services/external-links/handlers/registration/registration-marketing-data-builder.ts","app-react/services/casinofied/app-launcher/casinofied-app-launcher.service.ts"],"sourcesContent":["import {\n IAppClosedTopicPayload,\n IAppCloseIntentResultTopicPayload,\n IAppInitFailedTopicPayload,\n IAppInitSucceededTopicPayload,\n IDivHostedAppInitParameters,\n IOpenAppData,\n IPerformActionTopicPayload,\n IZoidHostedAppInitParameters,\n AppIdentifiers\n} from \"@sparkware/uc-sdk-core\";\nimport {ICasinofiedApplicationAdapter} from \"./casinofied-application-adapter.interface\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\n\nexport class CasinofiedZoidApplicationAdapter implements ICasinofiedApplicationAdapter {\n constructor(protected readonly appID: AppIdentifiers,\n protected readonly applicationSdk: any,\n protected readonly services: IServiceFactoryExtended) {\n }\n\n init(initParams: IDivHostedAppInitParameters) {\n const clonedInitParams = {...initParams};\n delete clonedInitParams.messageBrokerChannels\n\n const zoidInitParams: IZoidHostedAppInitParameters = {\n ...clonedInitParams,\n onInitSucceeded: (payload) => this._onInitSucceeded(payload, initParams),\n onInitFailed: (payload) => this._onInitFailed(payload, initParams),\n openApp: payload => this._openApp(payload, initParams),\n onClose: (payload) => this._onClose(payload, initParams),\n performAction: (payload) => this._onPerformAction(payload, initParams),\n closeIntentResult: (payload) => this._onCloseIntentResult(payload, initParams),\n writeLog: (payload) => this._writeLog(payload)\n }\n\n this.applicationSdk.init(zoidInitParams);\n }\n\n focus() {\n if(this.applicationSdk.focus) {\n this.applicationSdk.focus(this.appID);\n }\n }\n\n dispose() {\n //nothing to do here\n }\n\n closeIntent(appID: string, correlationID: string): void {\n this.applicationSdk.closeIntent(appID, correlationID);\n }\n\n protected _openApp(payload: IOpenAppData, initParams: IDivHostedAppInitParameters) {\n initParams.messageBrokerChannels.navigation.topics.openApp.publish({\n publisher: this.appID\n }, payload);\n }\n protected _onInitSucceeded(payload: IAppInitSucceededTopicPayload, initParams: IDivHostedAppInitParameters){\n initParams.messageBrokerChannels.session.topics.appInitSucceeded.publish({\n publisher: this.appID\n }, payload);\n }\n protected _onInitFailed (payload: IAppInitFailedTopicPayload, initParams: IDivHostedAppInitParameters) {\n initParams.messageBrokerChannels.session.topics.appInitFailed.publish({\n publisher: this.appID\n }, payload)\n }\n protected _onClose(payload: IAppClosedTopicPayload, initParams: IDivHostedAppInitParameters) {\n initParams.messageBrokerChannels.session.topics.appClosed.publish({\n publisher: this.appID\n }, payload);\n }\n\n protected _onPerformAction(payload: IPerformActionTopicPayload, initParams: IDivHostedAppInitParameters) {\n initParams.messageBrokerChannels.navigation.topics.performAction.publish({\n publisher: this.appID,\n }, payload);\n }\n\n protected _onCloseIntentResult(payload: IAppCloseIntentResultTopicPayload, initParams: IDivHostedAppInitParameters) {\n initParams.messageBrokerChannels.session.topics.closeIntentResult.publish({\n publisher: this.appID\n }, payload);\n }\n\n protected async _writeLog(payload: any): Promise {\n await this.services.analytics.writeWidgetLogs(payload);\n }\n}","import {ICasinofiedApplicationAdapter} from \"./casinofied-application-adapter.interface\";\nimport {AppIdentifiers, IDivHostedAppInitParameters} from \"@sparkware/uc-sdk-core\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\n\nexport class CasinofiedRegularApplicationAdapter implements ICasinofiedApplicationAdapter {\n constructor(private readonly applicationObject, private readonly services: IServiceFactoryExtended) {\n }\n\n private initParams: IDivHostedAppInitParameters;\n init(initParams: IDivHostedAppInitParameters) {\n this.applicationObject.init(initParams);\n this.initParams = initParams;\n }\n\n closeIntent(appID: AppIdentifiers, correlationID: string): void {\n if(this.initParams) {\n this.services.messageBroker.channels.session.topics.closeIntent.publish({\n publisher: AppIdentifiers.CasinoClient,\n }, {\n appID: appID,\n correlationID: correlationID,\n launchInfo: this.initParams.applicationContext?.launchInfo\n });\n }\n }\n\n focus(): void {\n //nothing to do here\n }\n\n dispose() {\n //nothing to do here\n }\n}","import { action, observable, makeObservable } from 'mobx';\nimport {IServiceFactoryExtended} from '../../../service-factory-extended.interface';\nimport {CASINOFIED_APP_INIT_TIMEOUT_MS, ICasinofiedApplication, IAppCloseParams} from './casinofied-application.interface';\nimport {\n AppIdentifiers, ComponentID,\n IDivHostedAppInitParameters, IOpenAppData,\n ITopicSubscription,\n IUserInfoParameters\n} from '@sparkware/uc-sdk-core';\nimport {STANDARD_TOPIC_HEADER} from '../../message-broker/message-broker.consts';\nimport {ICasinofiedComponent} from '../components/casinofied-component.interface';\nimport {ICasinofiedComponentFactory} from '../casinofied-app-factory.interfaces';\nimport {CasinofiedAppSdkLoader} from '../casinofied-app-sdk-loader';\nimport {\n getCasinofiedCommonAppContextParams, getCasinofiedCommonUserInfo,\n getCasinofiedDeviceInfo,\n getCasinofiedGeoInfoParams\n} from '../../casinofied-helper-functions';\nimport {CasinofiedZoidApplicationAdapter} from \"./adapters/casinofied-zoid-application-adapter\";\nimport {ICasinofiedApplicationAdapter} from \"./adapters/casinofied-application-adapter.interface\";\nimport {CasinofiedRegularApplicationAdapter} from \"./adapters/casinofied-regular-application-adapter\";\nimport {IAppInitResultReportingDetails} from '../../analytics-publisher/casinofied-analytics.service';\nimport {Check, TimeSpan} from '@sparkware/app-utils';\n\n\n\nexport abstract class CasinofiedApplicationBase implements ICasinofiedApplication {\n public constructor(openAppData: IOpenAppData,\n private _componentFactory: ICasinofiedComponentFactory,\n private readonly appSdkLoader: CasinofiedAppSdkLoader,\n protected readonly services: IServiceFactoryExtended,\n protected readonly useZoidIntegration: boolean) {\n makeObservable(this);\n\n this._openAppData = {\n ...openAppData,\n launchInfo: {\n ...openAppData.launchInfo\n }\n };\n\n this.appId = this._openAppData.appID;\n\n //ZOID doesn't like minus sign in the containerID\n this._openAppData.launchInfo.containerID = this.appId + '_' + services.tools.getGuid().replace(/-/g, '_');\n }\n\n public readonly appId: AppIdentifiers;\n protected readonly _openAppData: IOpenAppData;\n protected _sessionID: string;\n\n @observable.ref\n isLoading = false;\n\n @action.bound\n private _setIsLoading(value: boolean): void {\n this.isLoading = value;\n }\n\n protected _isAnonymousModeAllowed(): boolean {\n return false;\n }\n\n\n protected _topicsSubscriptions: ITopicSubscription[] = [];\n\n protected _getInitAppParams(initParams: IDivHostedAppInitParameters): IDivHostedAppInitParameters {\n return initParams;\n }\n\n @observable.ref\n protected _appInitFailed = false;\n\n get shouldPreserveStateUponOAuthStateChange(): boolean {\n return false;\n }\n\n @action.bound\n protected _setAppInitFailed(): void {\n const rootElement = this.services.dom.getElementById(this._openAppData.launchInfo.containerID)\n if(rootElement) {\n // in case the widget rendered something on the screen but still failed to initialize\n // we want to clean up everything so we can show our own error message\n while(rootElement.firstChild) {\n rootElement.firstChild.remove();\n }\n }\n this._appInitFailed = true;\n }\n\n get openAppData(): IOpenAppData {\n return this._openAppData;\n }\n\n private _openPromise = Promise.resolve();\n open(): Promise {\n if(!this._isAnonymousModeAllowed() && !this.services.user.isAuthorized) {\n return Promise.reject(`${this.appId} is not allowed in anonymous mode`);\n }\n\n this._setIsLoading(true);\n this._openPromise = this.appSdkLoader.loadAppSdk(this.appId).then((widgetUrl) => {\n let appShowStartTime;\n if(this.isDisposed) {\n return Promise.reject(`${this.appId} was disposed`);\n }\n\n const timeoutValue = this.services.configuration.servicesConfigs.AppLauncher.widgetLoadTimeoutMS || CASINOFIED_APP_INIT_TIMEOUT_MS;\n\n return new Promise((resolve, reject) => {\n const openTimeout = setTimeout(() => {\n if(this.isDisposed) {\n return;\n }\n this._setAppInitFailed();\n this._unsubscribeFromTopics();\n this.onAppInitTimeout(appInitParams, {errorCode:1, errorDescription: 'Timeout'});\n reject(`Initializing ${this.appId} application timeout out`);\n }, timeoutValue);\n\n\n const {appInitFailed, appInitSucceeded} = this.services.messageBroker.channels.session.topics;\n let appInitParams: IDivHostedAppInitParameters = null;\n const cleanUp = () => {\n clearTimeout(openTimeout);\n this._unsubscribeFromTopics();\n }\n\n this._topicsSubscriptions.push(appInitSucceeded.subscribe((payload) => {\n if(this._isCurrentApp(payload.appID)) {\n if(this.isDisposed) {\n return;\n }\n this._sessionID = payload.sessionID;\n cleanUp();\n this.onAppInitSuccess(appInitParams, {loadingTime: Date.now() - appShowStartTime});\n resolve();\n }\n }));\n\n this._topicsSubscriptions.push(appInitFailed.subscribe((payload) => {\n if(this._isCurrentApp(payload.appID)) {\n if(this.isDisposed) {\n return;\n }\n this._setAppInitFailed();\n cleanUp();\n this.onAppInitFailed(appInitParams, {errorCode: Check.isNumber(payload.errorCode) ? payload.errorCode : parseInt(payload.errorCode), errorDescription: payload.errorDescription, loadingTime: (Date.now() - appShowStartTime)});\n reject(`Failed to open application ${this.appId}; errorCode: ${payload.errorCode}; errorDescription: ${payload.errorDescription}`);\n }\n }));\n let getAppInitParamsStartTime = Date.now();\n this._getAppInitCommonParams(this._openAppData, widgetUrl).then(commonParams => {\n this.onGetAppInitParams(commonParams, {loadSubject: \"getAppInitParams\", duration: Date.now()-getAppInitParamsStartTime, appId: this.appId});\n if(this._isDisposed) {\n return Promise.reject(`${this.appId} was disposed`);\n }\n appInitParams = commonParams;\n appShowStartTime = Date.now();\n return this._showApp(commonParams);\n }).catch(err => {\n this._setAppInitFailed();\n cleanUp();\n this.onAppInitFailed(appInitParams, {errorCode:1, errorDescription: err?.toString()});\n reject(err);\n });\n });\n }).finally(() => {\n this._openPromise = Promise.resolve();\n this._setIsLoading(false);\n });\n\n return this._openPromise;\n\n }\n\n protected _getAppSdkObjectName(): string {\n const sdkObjectName = this.services.configuration.servicesConfigs.AppLauncher.apps[this.appId].sdk;\n if(sdkObjectName) {\n return sdkObjectName;\n }\n return this.appId;\n }\n\n waitForAppToOpen() {\n return this._openPromise;\n }\n\n private _waitForContainerIdToBeInTheDOM(): Promise {\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n const interval = setInterval(() => {\n if(this.services.dom.getElementById(this._openAppData.launchInfo.containerID)) {\n clearInterval(interval);\n resolve();\n } else if(Date.now() - startTime > TimeSpan.fromSeconds(3).totalMilliseconds) {\n clearInterval(interval);\n reject(`containerID creation for widget ${this.appId} timeout`);\n }\n }, 10);\n })\n }\n\n protected _applicationAdapter: ICasinofiedApplicationAdapter;\n protected async _showApp(initParams: IDivHostedAppInitParameters): Promise {\n\n const appObject = this.services.window.getGlobalProperty(this._getAppSdkObjectName());\n if(!appObject) {\n throw new Error(`Couldn't find an object for ${this.appId} application`);\n }\n\n if(!appObject.init) {\n throw new Error(`${this.appId} application doesn't have an init function`);\n }\n\n this._applicationAdapter = this._createApplicationAdapter(appObject);\n\n this.onAppInitRequest(initParams);\n\n await this._waitForContainerIdToBeInTheDOM();\n this._applicationAdapter.init(this._getInitAppParams(initParams));\n }\n\n protected _createApplicationAdapter(appObject: any): ICasinofiedApplicationAdapter {\n if(this.useZoidIntegration) {\n return new CasinofiedZoidApplicationAdapter(this.appId, appObject, this.services);\n } else {\n return new CasinofiedRegularApplicationAdapter(appObject, this.services);\n }\n\n }\n\n private _getUserInfo(): Promise {\n let userInfo: IUserInfoParameters = {\n ...getCasinofiedCommonUserInfo(this.services)\n };\n\n if(!this.services.user.isAuthorized) {\n return Promise.resolve(userInfo);\n }\n\n return this.services.user.getPlatformToken().then(({token}) => {\n return {...userInfo, token: token, userMode: 'authenticated'};\n });\n }\n\n private async _getAppInitCommonParams(openAppData: IOpenAppData, widgetUrl: string): Promise {\n let correlationId = openAppData.correlationID || openAppData.launchInfo?.businessCorrelationID || this.services.tools.getGuid()\n const userInfo = await this._getUserInfo();\n const geoInfo = await getCasinofiedGeoInfoParams(this.services);\n\n const result: IDivHostedAppInitParameters = {\n correlationID: correlationId,\n applicationContext: {\n appID: this.appId,\n launchInfo: {\n ...openAppData.launchInfo\n },\n productPackageToID: this.services.configuration.servicesConfigs.AppLauncher.apps[this.appId].productPackageID,\n widgetUrl: widgetUrl,\n ...getCasinofiedCommonAppContextParams(this.services)\n },\n messageBrokerChannels: this.services.messageBroker.channels,\n deviceInfo: getCasinofiedDeviceInfo(this.services),\n geoInfo: geoInfo,\n userInfo: userInfo,\n\n };\n\n return result;\n }\n\n private _unsubscribeFromTopics() {\n this._topicsSubscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n\n this._topicsSubscriptions = [];\n }\n\n private _isDisposed = false;\n public get isDisposed(): boolean {\n return this._isDisposed;\n }\n\n dispose() {\n this._isDisposed = true;\n this._unsubscribeFromTopics();\n this._miniatureComponent?.remove();\n this._applicationAdapter?.dispose();\n }\n\n protected _isCurrentApp(appId: string) {\n return this.appId === appId;\n }\n\n @observable.ref\n private _isMinimized: boolean = false;\n\n get isMinimized() {\n return this._isMinimized;\n }\n\n @action.bound\n protected _setIsMinimized(value: boolean): void {\n this._isMinimized = value;\n }\n\n protected _getMiniatureComponentID(): ComponentID {\n return null;\n }\n\n private _miniatureComponent: ICasinofiedComponent = null;\n minimize(componentData: any): void {\n if (this._miniatureComponent?.isLoading) {\n return;\n }\n const componentID = this._getMiniatureComponentID();\n if (!componentID) {\n throw new Error(`Application ${this.appId} doesn't have configured the minimization support`);\n }\n this._setIsMinimized(true);\n\n this.waitForAppToOpen().then(() => {\n this._miniatureComponent = this._componentFactory.createComponent(componentID);\n this._miniatureComponent.show(componentData)\n .catch((err) => {\n this._miniatureComponent = null;\n this.services.logger.error(`Failed to show miniature component ${componentID}`, err);\n }).finally(() => {\n if (this.isDisposed) { // if the application was closed meanwhile then we need to remove the bubble.\n this._miniatureComponent?.remove();\n }\n });\n });\n }\n\n async maximize(): Promise {\n this._setIsMinimized(false);\n if(this._miniatureComponent) {\n this._miniatureComponent.remove();\n this._miniatureComponent = null;\n }\n }\n\n protected _publishMinimizeApp() {\n this.services.messageBroker.channels.session.topics.minimizeApp.publish(STANDARD_TOPIC_HEADER, {\n appID: this.appId\n });\n }\n\n public close(appCloseParams: IAppCloseParams) {\n this.services.messageBroker.channels.session.topics.appClosed.publish(STANDARD_TOPIC_HEADER, {\n appID: this.appId,\n closeReason: appCloseParams.reason,\n launchInfo: {\n ...this._openAppData.launchInfo,\n channel: appCloseParams.channel\n }\n });\n }\n\n isOpeningInNewWindow(): boolean {\n return false;\n }\n\n protected onAppInitTimeout(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n this.services.casinofiedAnalytics.appInitResult(appInitParams, appInitResultReportingDetails);\n }\n protected onAppInitSuccess(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n this.services.casinofiedAnalytics.appInitResult(appInitParams, appInitResultReportingDetails);\n }\n protected onAppInitFailed(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n this.services.casinofiedAnalytics.appInitResult(appInitParams, appInitResultReportingDetails);\n }\n protected onGetAppInitParams(commonParams: IDivHostedAppInitParameters, reportData: {loadSubject: string; duration: number; appId: string;}) {\n this.services.casinofiedAnalytics.reportDuration(reportData.loadSubject, reportData.duration, reportData.appId);\n }\n protected onAppInitRequest(appInitParams: IDivHostedAppInitParameters) {\n this.services.casinofiedAnalytics.appInitRequest(appInitParams);\n }\n}\n","import {AppIdentifiers, IOpenAppData, IChannel} from '@sparkware/uc-sdk-core';\n\nexport const CASINOFIED_APP_INIT_TIMEOUT_MS = 10000;\n\nexport interface IAppCloseParams {\n reason?: string;\n channel: IChannel;\n}\n\nexport interface ICasinofiedApplication {\n readonly appId: AppIdentifiers;\n readonly isMinimized: boolean;\n readonly isLoading: boolean;\n readonly openAppData: IOpenAppData;\n readonly shouldPreserveStateUponOAuthStateChange: boolean;\n open(): Promise;\n minimize(appData: any): void;\n maximize(): Promise;\n dispose(): void;\n readonly isDisposed: boolean;\n waitForAppToOpen(): Promise;\n isOpeningInNewWindow(): boolean;\n close(appCloseParams: IAppCloseParams): void;\n}\n","import {OnErrorDefaultBox} from \"./on-error-default.box\";\n\nexport const OnErrorBox = OnErrorDefaultBox;\n","import styled from \"styled-components\";\n\nexport const OnErrorDefaultBox = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n margin: auto 0;\n padding: 2rem;\n`;\n","import styled from \"styled-components\";\n\nexport const OnErrorIconBox = styled.div`\n margin: 1rem;\n`;\n","import styled from \"styled-components\";\n\nexport const OnErrorTitleBox = styled.div`\n width: 100%;\n padding: 1rem;\n font-size: 1.8rem;\n ${({theme}) => theme.font.presets.medium};\n text-align: center;\n color: ${props => props.theme.colors.textLight};\n`;\n","import styled from \"styled-components\";\n\nexport const OnErrorMessageBox = styled.div`\n width: 100%;\n padding: 0 5rem 5rem 5rem;\n font-size: 1.6rem;\n ${({theme}) => theme.font.presets.regular};\n color: ${({theme}) => theme.colors.textLight.toString()};\n text-align: center;\n line-height: 1.2;\n`;\n","import styled from 'styled-components';\n\nexport const OnErrorButtonsBox = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n width: 100%;\n`\n","import React from \"react\";\nimport {Button} from \"../../basic-ui-components/button/base/button.component\";\nimport {OnErrorBox} from \"./boxes/on-error.box\";\nimport {OnErrorIconBox} from \"./boxes/on-error-icon.box\";\nimport {OnErrorTitleBox} from \"./boxes/on-error-title.box\";\nimport {OnErrorMessageBox} from \"./boxes/on-error-message.box\";\nimport {OrbitComponent} from \"../base-components/orbit-component/orbit-component\";\nimport {OnErrorButtonsBox} from './boxes/on-error-buttons.box';\n\n\n\nexport interface OnErrorComponentProps{\n title?: string;\n message?: string;\n onRetryButtonClick: () => void;\n onCloseButtonClick: () => void;\n}\n\nexport class OnErrorComponent extends OrbitComponent {\n\n\n render() {\n const title = this.props.title || this.services.translation.translate(\"CANT_CONNECT_ERROR_TITLE\");\n const message = this.props.message || this.services.translation.translate(\"CANT_CONNECT_ERROR_MESSAGE\");\n return (\n \n \n {message}/\n \n {title}\n {message}\n \n this.props.onCloseButtonClick()}\n sizeVariant=\"xs\"\n noRemUnits\n >\n {this.services.translation.translate(\"CLOSE\")}\n \n this.props.onRetryButtonClick()}\n sizeVariant=\"xs\"\n noRemUnits\n >\n {this.services.translation.translate(\"RETRY\")}\n \n \n\n \n );\n }\n}\n","import React from 'react';\nimport {\n IDrawerContent,\n IDrawerContentHandler\n} from '../../../drawer/drawer.service.interface';\nimport {CasinofiedApplicationBase} from './casinofied-application-base';\nimport {AreaType, IDivHostedAppInitParameters} from '@sparkware/uc-sdk-core';\nimport {OnErrorComponent} from '../../../../components/on-error/on-error.component';\nimport {STANDARD_TOPIC_HEADER} from '../../message-broker/message-broker.consts';\nimport {\n CHANNEL_ELEMENTS,\n CHANNEL_SOURCE,\n DISPLAY_MESSAGE_IDS\n} from '../../../../../common/const/casinofied-analytics-consts';\nimport {Undefined} from '../../../../../common/types/nullable-types';\n\nexport class InsideDrawerApplication extends CasinofiedApplicationBase implements IDrawerContent {\n /**\n * IDrawerContent.id\n * Used by drawer to uniquely identify the content\n */\n get id() {\n return this._openAppData.launchInfo.containerID;\n }\n\n /**\n * IDrawerContent.id\n * Used by drawer to decide the z-index\n */\n get minOverlayZIndex(): number | null {\n return this.services.sdk.overlayZIndex.OMG + 1;\n }\n\n /**\n * IDrawerContent.render\n * Called by drawer to render the content\n */\n render(): React.ReactNode {\n if(this._appInitFailed) {\n return ( this._retryOpen()}\n onCloseButtonClick={() => this.dispose()} />);\n }\n return (\n // We just render an empty React fragment.\n // The Drawer will create a div with an id equal to _launchInfo.containerID returned by IDrawerContent.id getter\n // and the app will render itself inside that div.\n <>\n );\n }\n\n private _retryOpen() {\n this.dispose();\n this.services.messageBroker.channels.navigation.topics.openApp.publish(STANDARD_TOPIC_HEADER, {\n ...this._openAppData,\n launchInfo: {\n ...this._openAppData.launchInfo,\n businessCorrelationID: this.services.tools.getGuid(),\n channel: {\n source: CHANNEL_SOURCE.casinoClient,\n area: AreaType.Message,\n element: CHANNEL_ELEMENTS.retryButton\n }\n }\n });\n }\n\n onOverlayClicked(): void {\n if(this.supportsCloseIntent) {\n this._applicationAdapter.closeIntent(this._openAppData.appID, this._openAppData.correlationID);\n }\n }\n\n /**\n * IDrawerContent.onClose\n * Called by drawer when is closed (click on the overlay, user login/logout etc.\n */\n onClose(): void {\n if(this.supportsCloseIntent) {\n return;\n }\n if (this._shouldMinimizeOnDrawerClose()) {\n if (!this.isMinimized) {\n this._setIsMinimized(true);\n this._publishMinimizeApp();\n }\n } else {\n this.close({channel: {\n source: CHANNEL_SOURCE.casinoClient,\n area: AreaType.Overlay,\n element: \"\"\n }, reason: this._getOnCloseReason()});\n }\n\n }\n /**\n * IDrawerContent.supportsCloseIntent\n */\n get supportsCloseIntent(): boolean {\n return false;\n }\n\n protected _getOnCloseReason(): Undefined {\n return \"OVERLAY_CLICKED\";\n }\n\n protected _setAppInitFailed() {\n super._setAppInitFailed();\n this.services.casinofiedAnalytics.messageDisplay({\n businessCorrelationID: this._openAppData.launchInfo?.businessCorrelationID,\n displayMessageID: DISPLAY_MESSAGE_IDS.retryCloseDrawerMessage\n });\n }\n\n\n async open(): Promise {\n (await this.services.drawer).right.showSpinner();\n try {\n await super.open();\n } finally {\n (await this.services.drawer).right.hideSpinner();\n }\n }\n\n protected _shouldMinimizeOnDrawerClose(): boolean {\n return false;\n }\n\n dispose(reportToIndex?:string) {\n super.dispose();\n this._drawerContentHandler?.remove();\n try {\n if(reportToIndex){\n this.services.casinofiedAnalytics.appDisposed(this._openAppData.appID, this._openAppData.launchInfo.businessCorrelationID, reportToIndex);\n }\n }\n catch (err){\n this.services.logger.error(\"Drawer application dispose error: \"+err);\n }\n }\n\n private _drawerContentHandler: IDrawerContentHandler;\n protected async _showApp(initParams: IDivHostedAppInitParameters): Promise {\n this._drawerContentHandler = (await this.services.drawer).right.push(this);\n await super._showApp(initParams);\n }\n\n async maximize(): Promise {\n await super.maximize();\n this._drawerContentHandler = (await this.services.drawer).right.push(this);\n }\n}\n","import {InsideDrawerApplication} from '../inside-drawer.application';\nimport {ComponentID, IChatSpecificParams, ChatOpenMode} from '@sparkware/uc-sdk-core';\n\n\nexport class ChatApplication extends InsideDrawerApplication {\n\n protected _shouldMinimizeOnDrawerClose(): boolean {\n return !(this.isDisposed || this._appInitFailed);\n }\n\n get shouldPreserveStateUponOAuthStateChange(): boolean {\n return true;\n }\n\n protected _getMiniatureComponentID(): ComponentID {\n return 'CR_CHAT_BUBBLE';\n }\n\n get minOverlayZIndex(): number | null {\n const chatSpecificParams = this._openAppData.launchInfo.appSpecificParameters as IChatSpecificParams;\n if(chatSpecificParams?.openMode === ChatOpenMode.SOF) {\n return this.services.sdk.overlayZIndex.OMG + 1\n }\n return null;\n }\n\n protected _isAnonymousModeAllowed(): boolean {\n return true;\n }\n}\n\n\n","import {IServiceFactoryExtended} from '../../service-factory-extended.interface';\n\nexport class CasinofiedAppSdkLoader {\n constructor(private readonly _services: IServiceFactoryExtended) {\n }\n\n\n\n private _loadedAppsSDKs: Record> = {};\n\n loadAppSdk(appId: string): Promise {\n\n const appLauncherConfigs = this._services.configuration.servicesConfigs.AppLauncher;\n const appConfigs = appLauncherConfigs.apps[appId];\n\n let url = appConfigs?.url;\n\n if(!url && appConfigs.sdk) {\n url = appLauncherConfigs.sdks[appConfigs.sdk]?.url;\n }\n\n if(!url) {\n return Promise.reject(`There is no component or application with ID ${appId} configured in the catalog`);\n }\n\n if(this._loadedAppsSDKs[url]) {\n return this._loadedAppsSDKs[url];\n }\n\n let sdkloadStartTime = Date.now();\n const loadScripPromise = this._services.sdk.loadScript({\n url: url,\n tagId: appId + \"_APPLICATION\",\n scriptType: appConfigs.scriptType\n });\n\n return loadScripPromise.then(() => {\n this._loadedAppsSDKs[url] = loadScripPromise.then(() => url);\n this._services.casinofiedAnalytics.reportDuration(\"loadAppSdkOk\", Date.now() - sdkloadStartTime, appConfigs.sdk || appId);\n return url;\n }).catch(err => {\n this._services.casinofiedAnalytics.reportDuration(\"loadAppSdkError\", Date.now() - sdkloadStartTime, appConfigs.sdk || appId);\n this._services.logger.error(`Failed to load SDK for ${appId} from url ${url}`, err);\n throw err;\n });\n }\n}\n","import {ICasinofiedComponent} from './casinofied-component.interface';\nimport {IServiceFactoryExtended} from '../../../service-factory-extended.interface';\nimport {CasinofiedAppSdkLoader} from '../casinofied-app-sdk-loader';\nimport {IComponentController} from '@sparkware/uc-sdk-core';\nimport { action, observable, makeObservable } from 'mobx';\nimport {TimeSpan} from '@sparkware/app-utils';\n\nexport abstract class CasinofiedComponentBase implements ICasinofiedComponent {\n protected readonly _containerID: string;\n\n constructor(protected readonly _componentID: string,\n private readonly _appSdkLoader: CasinofiedAppSdkLoader,\n protected readonly services: IServiceFactoryExtended) {\n makeObservable(this);\n\n this._containerID = services.tools.getGuid();\n }\n\n\n private _waitForContainerIdToBeInTheDOM(): Promise {\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n const interval = setInterval(() => {\n if(this.services.dom.getElementById(this._containerID)) {\n clearInterval(interval);\n resolve();\n } else if(Date.now() - startTime > TimeSpan.fromSeconds(3).totalMilliseconds) {\n clearInterval(interval);\n reject(`containerID creation for component ${this._componentID} timeout`);\n }\n }, 10);\n })\n }\n\n @observable.ref\n isLoading: boolean = false;\n\n @action.bound\n private _setIsLoading(value: boolean): void {\n this.isLoading = value;\n }\n async show(componentData: any): Promise {\n this._setIsLoading(true);\n try {\n await this._appSdkLoader.loadAppSdk(this._componentID);\n this._displayComponent(componentData);\n } finally {\n this._setIsLoading(false);\n }\n }\n\n private _componentController(): IComponentController {\n const componentController: IComponentController = this.services.window.getGlobalProperty(this._componentID);\n\n if(!componentController) {\n throw new Error(`Couldn't find a controller for ${this._componentID} component`);\n }\n\n if(!componentController.show) {\n throw new Error(`${this._componentID} component doesn't implement show method`);\n }\n\n if(!componentController.remove) {\n throw new Error(`${this._componentID} component doesn't implement remove method`);\n }\n\n return componentController;\n }\n\n protected async _displayComponent(componentData: any): Promise {\n await this._waitForContainerIdToBeInTheDOM();\n this._componentController().show({\n containerID: this._containerID,\n messageBrokerChannels: this.services.messageBroker.channels,\n componentData: componentData\n });\n }\n\n remove() {\n this._componentController().remove();\n }\n}\n","import React from 'react';\nimport {\n IFloatingBubbleContent,\n IFloatingBubbleHandler\n} from '../../../floating-bubbles/floating-bubbles.service.interface';\nimport {CasinofiedComponentBase} from './casinofied-component-base';\n\nexport class CasinofiedBubbleComponent extends CasinofiedComponentBase implements IFloatingBubbleContent {\n\n private _floatingBubbleHandler: IFloatingBubbleHandler = null;\n\n protected async _displayComponent(componentData: any): Promise {\n this._floatingBubbleHandler = this.services.floatingBubbles.addBubble(this);\n await super._displayComponent(componentData);\n\n }\n\n /**\n * IFloatingBubbleContent.id\n */\n get id(): string {\n return this._containerID;\n }\n\n /**\n * IFloatingBubbleContent.visible\n */\n get isVisible(): boolean {\n return true;\n }\n\n /**\n * IFloatingBubbleContent.render\n */\n render(): React.ReactNode {\n return (<>); // we only need to render an empty fragment. The FloatingBubblesComponent will render a div for us\n }\n\n remove() {\n try {\n super.remove();\n }\n finally {\n this._floatingBubbleHandler?.remove();\n }\n }\n}\n","import {CasinofiedZoidApplicationAdapter} from \"./casinofied-zoid-application-adapter\";\nimport {IAppClosedTopicPayload, IDivHostedAppInitParameters} from \"@sparkware/uc-sdk-core\";\n\nexport class UnifiedCashierZoidAdapter extends CasinofiedZoidApplicationAdapter {\n\n private _onCloseAlreadyCalled: Record = {};\n protected _onClose(payload: IAppClosedTopicPayload, initParams: IDivHostedAppInitParameters) {\n const appID = payload?.appID || this.appID;\n\n if(this._onCloseAlreadyCalled[appID]) { // unified cashier is calling twice this method. The second time is without payload. Adrian Parsan is saying that is something related to zoid\n this._onCloseAlreadyCalled[appID] = false;\n } else {\n this._onCloseAlreadyCalled[appID] = true;\n try {\n this.applicationSdk.close(appID);\n } catch (err) {\n this.services.logger.debug(`Calling applicationSdk.close on _onClose failed for app ${this.appID}`, err);\n }\n\n super._onClose({\n ...payload,\n appID: appID\n }, initParams);\n }\n }\n\n dispose() {\n if(this.applicationSdk.close && !this._onCloseAlreadyCalled[this.appID]) {\n try {\n this.applicationSdk.close(this.appID);\n } catch (err) {\n this.services.logger.debug(`Calling applicationSdk.close on dispose failed for app ${this.appID}`, err);\n }\n\n }\n }\n}","import {InsideDrawerApplication} from \"../inside-drawer.application\";\nimport {IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {ICasinofiedComponentFactory} from \"../../casinofied-app-factory.interfaces\";\nimport {CasinofiedAppSdkLoader} from \"../../casinofied-app-sdk-loader\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {ICasinofiedApplicationAdapter} from \"../adapters/casinofied-application-adapter.interface\";\nimport {UnifiedCashierZoidAdapter} from \"../adapters/unified-cashier-zoid-adapter\";\n\nexport class DepositWidgetApplication extends InsideDrawerApplication {\n public constructor(openAppData: IOpenAppData,\n componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended) {\n super(openAppData, componentFactory, appSdkLoader, services, true);\n }\n\n open(): Promise {\n if (this.services.miniOrbit.isEnabled) {\n return this.services.miniOrbit.openDeposit(this._openAppData.launchInfo);\n } else {\n return super.open();\n }\n }\n\n isOpeningInNewWindow(): boolean {\n return this.services.miniOrbit.isEnabled;\n }\n\n get supportsCloseIntent(): boolean {\n if(this.isLoading) {\n return false;\n }\n\n return true;\n }\n\n dispose() {\n super.dispose(\"nts-deposit-logs\");\n this.services.sdk.fireDepositWidgetClosed();\n }\n\n protected _createApplicationAdapter(appObject: any): ICasinofiedApplicationAdapter {\n return new UnifiedCashierZoidAdapter(this.appId, appObject, this.services);\n }\n}","import {PaymentRedirectFocusTitleDefaultBox} from \"./payment-redirect-focus-title.default.box\";\n\nexport const PaymentRedirectFocusTitleBox = PaymentRedirectFocusTitleDefaultBox;\n","import styled from \"styled-components\";\nimport { DialogTextBox } from \"../../../modal-dialog/boxes/text/dialog-text.box\";\n\nexport const PaymentRedirectFocusTitleDefaultBox = styled(DialogTextBox)`\n padding-bottom: 4rem;\n`;\n","import styled from \"styled-components\";\nimport {styledByDevice} from \"../../../../themes/architecture/styled-by-device\";\n\nconst PaymentRedirectFocusDefaultBox = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n font-size: 1.5rem;\n ${({theme}) => theme.font.presets.body};\n margin: 2.5rem 0 0 0;\n padding: 0;\n`;\n\nconst PcBox = styled(PaymentRedirectFocusDefaultBox)`\n width: 25vw;\n`;\n\nconst MobileBox = styled(PaymentRedirectFocusDefaultBox)`\n width: 80vw;\n @media ${({theme}) => `${theme.mediaQuery.landscape}`} {\n width: 56vw;\n }\n`;\n\n\nexport const PaymentRedirectFocusBox = styledByDevice(PcBox, MobileBox);","import React from \"react\";\nimport {OrbitComponent} from \"../base-components/orbit-component/orbit-component\";\nimport {PaymentsRedirectApplication} from \"../../services/casinofied/app-launcher/apps/payments-redirect/payments-redirect.application\";\nimport {CyClass} from \"../../../common/cy-classes\";\nimport {PaymentRedirectFocusTitleBox} from \"./boxes/payment-redirect-focus-title/payment-redirect-focus-title.box\";\nimport {PaymentRedirectFocusBox} from \"./boxes/payment-redirect-focus-container/payment-redirect-focus.box\";\nimport { ModalDialogActionsComponent } from \"../modal-dialog/modal-dialog-actions.component\";\n\ninterface PaymentsRedirectFocusComponentProps {\n redirectApp: PaymentsRedirectApplication;\n}\n\nexport class PaymentsRedirectFocusComponent extends OrbitComponent {\n\n private _renderButtonContainer(): React.ReactNode {\n return (\n {}\n }} />\n );\n }\n\n render() {\n return (\n this.props.redirectApp.focus()}\n >\n \n {this.services.translation.translate(\"PAYMENTS_REDIRECT_FOCUS_TEXT\", {mftName: this.props.redirectApp.mftName})}\n \n {this._renderButtonContainer()}\n \n );\n }\n}\n","import React from 'react';\nimport {CasinofiedApplicationBase} from \"../casinofied-application-base\";\nimport {IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {ICasinofiedComponentFactory} from \"../../casinofied-app-factory.interfaces\";\nimport {CasinofiedAppSdkLoader} from \"../../casinofied-app-sdk-loader\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {PaymentsRedirectFocusComponent} from \"../../../../../components/payments-redirect-focus/payments-redirect-focus.component\";\nimport {IModalDialogHandler} from \"../../../../dialog/dialog.service.interface\";\nimport {ICasinofiedApplicationAdapter} from \"../adapters/casinofied-application-adapter.interface\";\nimport {DISPLAY_MESSAGE_IDS} from \"../../../../../../common/const/casinofied-analytics-consts\";\nimport {Check} from \"@sparkware/app-utils\";\nimport {UnifiedCashierZoidAdapter} from \"../adapters/unified-cashier-zoid-adapter\";\n\nexport class PaymentsRedirectApplication extends CasinofiedApplicationBase {\n public constructor(openAppData: IOpenAppData,\n componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended) {\n super(openAppData, componentFactory, appSdkLoader, services, true);\n }\n\n private _focusDialogHandler: IModalDialogHandler = null;\n private _containerElement: Element = null;\n open(): Promise {\n this._containerElement = this.services.dom.createElement('div');\n this._containerElement.id = this.openAppData.launchInfo.containerID;\n this.services.dom.body.appendChild(this._containerElement);\n return super.open().then(() => {\n this.services.casinofiedAnalytics.messageDisplay({\n displayMessageID: DISPLAY_MESSAGE_IDS.psRedirectFocusDialog,\n businessCorrelationID: this._openAppData.launchInfo.businessCorrelationID\n });\n\n this._focusDialogHandler = this.services.dialog.showModal(() => {\n return ()\n }, {\n title: this.services.translation.translate(\"PAYMENTS_REDIRECT_FOCUS_TITLE\"),\n icon: this.services.theme.currentTheme.icons.paymentsRedirectIcon,\n hideCloseButton: true,\n isHighPriority: true,\n forceCentralization: true,\n mobileCenterHeader: true,\n forceTransparentBackground: true,\n disableFullscreenMobile: true\n });\n });\n }\n\n focus() {\n this.services.casinofiedAnalytics.messageActionTaken({\n businessCorrelationID: this._openAppData.launchInfo.businessCorrelationID,\n actionType: 'focus',\n sendLogLevelOnly: true\n });\n\n this._applicationAdapter.focus();\n }\n\n dispose() {\n super.dispose();\n this._containerElement?.remove();\n this._focusDialogHandler?.close();\n }\n\n get mftName(): string {\n const mftName = this._openAppData.launchInfo.appSpecificParameters[\"mft\"];\n\n return Check.isNullOrUndefined(mftName) ? \"\" : mftName;\n }\n\n protected _createApplicationAdapter(appObject: any): ICasinofiedApplicationAdapter {\n return new UnifiedCashierZoidAdapter(this.appId, appObject, this.services);\n }\n}","import {OpenCashierOptions} from \"../../../../../../common/interfaces/cashier.service.interface\";\nimport {ICasinofiedApplication, IAppCloseParams} from \"../casinofied-application.interface\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {AppIdentifiers, IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {\n getCasinofiedCommonAppContextParams, getCasinofiedCommonUserInfo,\n getCasinofiedDeviceInfo,\n getCasinofiedGeoInfoParams\n} from \"../../../casinofied-helper-functions\";\nimport {CGPEventSubscription} from \"../../../../sdk/cgp-sdk.interface\";\nimport {STANDARD_TOPIC_HEADER} from \"../../../message-broker/message-broker.consts\";\nimport {GNWP_SOURCES} from \"../../../../gnwp/gnwp-consts\";\n\n\nexport class FullCashierApplication implements ICasinofiedApplication {\n constructor(public readonly openAppData: IOpenAppData, private readonly services: IServiceFactoryExtended) {\n }\n\n readonly shouldPreserveStateUponOAuthStateChange = false;\n async open(): Promise {\n this.isLoading = true;\n\n try {\n const options: OpenCashierOptions = {};\n if(this.openAppData.launchInfo.appSpecificParameters?.SessionType) {\n options.sessionType = this.openAppData.launchInfo.appSpecificParameters.SessionType;\n }\n\n const geoInfo = await getCasinofiedGeoInfoParams(this.services);\n\n this.services.casinofiedAnalytics.appInitRequest({\n correlationID: this.openAppData.correlationID,\n applicationContext: {\n appID: this.openAppData.appID,\n launchInfo: this.openAppData.launchInfo,\n ...getCasinofiedCommonAppContextParams(this.services),\n productPackageToID: this.services.cashier.getProductPackage()\n },\n deviceInfo: getCasinofiedDeviceInfo(this.services),\n geoInfo: geoInfo,\n userInfo: {\n ...getCasinofiedCommonUserInfo(this.services),\n userMode: 'authenticated'\n },\n messageBrokerChannels: this.services.messageBroker.channels\n });\n\n this._onExternalLinkClosedSubscription = this.services.sdk.events.onExternalLinkClosed(this._onExternalLinkClosed);\n\n try {\n await this.services.cashier.openOldCashier(options);\n } catch (err) {\n this._onExternalLinkClosedSubscription.off();\n throw err;\n }\n\n } finally {\n this.isLoading = false;\n }\n\n }\n\n get appId(): AppIdentifiers {\n return AppIdentifiers.FullCashier;\n }\n isDisposed: boolean = false;\n\n isLoading: boolean = false;\n\n get isMinimized(): boolean {\n return false;\n }\n\n dispose(): void {\n this.isDisposed = true;\n this._onExternalLinkClosedSubscription?.off();\n }\n\n async maximize(): Promise {\n }\n\n minimize(appData: any): void {\n }\n\n waitForAppToOpen(): Promise {\n return Promise.resolve();\n }\n\n private _onExternalLinkClosedSubscription: CGPEventSubscription = null;\n private _onExternalLinkClosed = (linkSource: string) => {\n if(linkSource === GNWP_SOURCES.CASHIER) {\n this.services.messageBroker.channels.session.topics.appClosed.publish(STANDARD_TOPIC_HEADER, {\n appID: this.appId\n });\n }\n }\n\n isOpeningInNewWindow(): boolean {\n return false;\n }\n\n close(params: IAppCloseParams): void {\n // not used at the moment, implemented to respect the interface constraints\n // if needed, check implementation in casinofied-application-base\n }\n}","import {InsideDrawerApplication} from \"../inside-drawer.application\";\nimport {IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {ICasinofiedComponentFactory} from \"../../casinofied-app-factory.interfaces\";\nimport {CasinofiedAppSdkLoader} from \"../../casinofied-app-sdk-loader\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {ICasinofiedApplicationAdapter} from \"../adapters/casinofied-application-adapter.interface\";\nimport {UnifiedCashierZoidAdapter} from \"../adapters/unified-cashier-zoid-adapter\";\n\nexport class CashoutWidgetApplication extends InsideDrawerApplication {\n public constructor(openAppData: IOpenAppData,\n componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended) {\n super(openAppData, componentFactory, appSdkLoader, services, true);\n }\n\n protected _createApplicationAdapter(appObject: any): ICasinofiedApplicationAdapter {\n return new UnifiedCashierZoidAdapter(this.appId, appObject, this.services);\n }\n\n dispose() {\n super.dispose(\"nts-cashout-logs\");\n }\n}","import {InsideDrawerApplication} from \"../inside-drawer.application\";\nimport {IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {ICasinofiedComponentFactory} from \"../../casinofied-app-factory.interfaces\";\nimport {CasinofiedAppSdkLoader} from \"../../casinofied-app-sdk-loader\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {ICasinofiedApplicationAdapter} from \"../adapters/casinofied-application-adapter.interface\";\nimport {UnifiedCashierZoidAdapter} from \"../adapters/unified-cashier-zoid-adapter\";\n\nexport class TransactionHistoryApplication extends InsideDrawerApplication {\n public constructor(openAppData: IOpenAppData,\n componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended) {\n super(openAppData, componentFactory, appSdkLoader, services, true);\n }\n\n protected _createApplicationAdapter(appObject: any): ICasinofiedApplicationAdapter {\n return new UnifiedCashierZoidAdapter(this.appId, appObject, this.services);\n }\n\n dispose() {\n super.dispose(\"nts-transaction-history-logs\");\n }\n}","import {AppIdentifiers, IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {ICasinofiedApplication, IAppCloseParams} from \"../casinofied-application.interface\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {OpenCashierOptions} from \"../../../../../../common/interfaces/cashier.service.interface\";\nimport {\n getCasinofiedCommonAppContextParams, getCasinofiedCommonUserInfo,\n getCasinofiedDeviceInfo,\n getCasinofiedGeoInfoParams\n} from \"../../../casinofied-helper-functions\";\n\nexport class CustomerRelationsApplication implements ICasinofiedApplication {\n constructor(public readonly openAppData: IOpenAppData, private readonly services: IServiceFactoryExtended) {\n }\n\n readonly shouldPreserveStateUponOAuthStateChange = false;\n\n async open(): Promise {\n this.isLoading = true;\n\n try {\n const options: OpenCashierOptions = {};\n if(this.openAppData.launchInfo.appSpecificParameters?.SessionType) {\n options.sessionType = this.openAppData.launchInfo.appSpecificParameters.SessionType;\n }\n\n const geoInfo = await getCasinofiedGeoInfoParams(this.services);\n\n this.services.casinofiedAnalytics.appInitRequest({\n correlationID: this.openAppData.correlationID,\n applicationContext: {\n appID: this.openAppData.appID,\n launchInfo: this.openAppData.launchInfo,\n ...getCasinofiedCommonAppContextParams(this.services),\n productPackageToID: this.services.cashier.getProductPackage()\n },\n deviceInfo: getCasinofiedDeviceInfo(this.services),\n geoInfo: geoInfo,\n userInfo: {\n ...getCasinofiedCommonUserInfo(this.services),\n userMode: 'authenticated'\n },\n messageBrokerChannels: this.services.messageBroker.channels\n });\n const featureType = this.openAppData.launchInfo.appSpecificParameters?.featureType;\n const externalLinks = await this.services.externalLinks;\n switch (featureType) {\n case 1:\n await externalLinks.openOldChat();\n break;\n case 2:\n await externalLinks.openContactUs();\n break;\n case 3:\n await externalLinks.openHelpPage();\n break;\n default:\n await externalLinks.openHelpPage();\n this.services.logger.error(`App ${this.openAppData.launchInfo?.sourceAppID} sent wrong featureType paramenter ${featureType}`);\n }\n\n } finally {\n this.isLoading = false;\n }\n }\n\n isOpeningInNewWindow(): boolean {\n return true;\n }\n\n get appId(): AppIdentifiers {\n return AppIdentifiers.CustomerRelations;\n }\n isDisposed: boolean = false;\n\n isLoading: boolean = false;\n\n get isMinimized(): boolean {\n return false;\n }\n\n dispose(): void {\n this.isDisposed = true;\n }\n\n async maximize(): Promise {\n }\n\n minimize(appData: any): void {\n }\n\n waitForAppToOpen(): Promise {\n return Promise.resolve();\n }\n\n close(params: IAppCloseParams): void {\n // not used at the moment, implemented to respect the interface constraints\n // if needed, check implementation in casinofied-application-base\n }\n}","import {CasinofiedApplicationBase} from \"../casinofied-application-base\";\nimport {IDivHostedAppInitParameters} from \"@sparkware/uc-sdk-core\";\nimport {IAppCloseParams} from \"../casinofied-application.interface\";\n\nexport class FreeToPlayBonusGamesApplication extends CasinofiedApplicationBase {\n private _bonusWheelContainerElement: HTMLElement | null = null;\n protected async _showApp(initParams: IDivHostedAppInitParameters): Promise {\n this._bonusWheelContainerElement = this.services.dom.createElement('div');\n this._bonusWheelContainerElement.id = this._openAppData.launchInfo.containerID;\n this.services.dom.body.appendChild(this._bonusWheelContainerElement);\n await super._showApp(initParams);\n }\n\n async open(): Promise {\n this.services.freeToPlay.setIsPromotionOpened(true);\n try {\n await super.open().then(() => {\n this.services.dom.disableScrolling();\n });\n } catch (err) {\n this.services.freeToPlay.setIsPromotionOpened(false);\n throw err;\n }\n }\n\n public close(appCloseParams: IAppCloseParams) {\n this.services.dom.enableScrolling();\n super.close(appCloseParams);\n }\n\n dispose() {\n super.dispose();\n this.services.freeToPlay.setIsPromotionOpened(false);\n this.services.sdk.fireFreeToPlayWidgetClosed();\n this.services.dom.enableScrolling();\n\n try {\n this._bonusWheelContainerElement?.remove();\n } catch (err) {\n this.services.logger.error('Failed to remove bonus wheel container element', err);\n }\n }\n}","import {InsideDrawerApplication} from '../inside-drawer.application';\n\nexport class HelpCentreApplication extends InsideDrawerApplication {\n protected _isAnonymousModeAllowed(): boolean {\n return true;\n }\n}\n\n\n","import {\n ControlCenterOpenSource,\n Enviroments,\n IControlCenterBaseSpecificParams,\n IDivHostedAppInitParameters,\n} from '@sparkware/uc-sdk-core';\nimport {IServiceFactoryExtended} from '../../../../service-factory-extended.interface';\n\nexport function getInitAppParamsForControlCenter(initParams: IDivHostedAppInitParameters, services: IServiceFactoryExtended): IDivHostedAppInitParameters {\n initParams.applicationContext.launchInfo.appSpecificParameters = getAppSpecificParamsForControlCenter(initParams.applicationContext.launchInfo.appSpecificParameters, services);\n\n // The env property should be sent for all applications and setting it should be in CasinofiedApplicationBase (casinofied-application-base.ts) nethod _getAppInitCommonParams\n // But because we did not sent it to other applications and we don't have the exact values to send, we only send it to control center\n initParams[\"env\"] = services.configuration.startupConfiguration.sdk.config.ExtraProperties.env as Enviroments;\n\n return initParams;\n}\n\nexport function getAppSpecificParamsForControlCenter(appSpecificParameters: T, services: IServiceFactoryExtended) {\n let source = appSpecificParameters?.source ?? ControlCenterOpenSource.Lobby;\n\n return {\n clientPlatform: parseInt(services.sdk.getSkin().getClientPlatform()),\n ...appSpecificParameters,\n source\n };\n\n}\n","import {InsideDrawerApplication} from '../inside-drawer.application';\nimport {IDivHostedAppInitParameters, IOpenAppData} from '@sparkware/uc-sdk-core';\nimport {getInitAppParamsForControlCenter} from './init-params-helper';\nimport {IAppInitResultReportingDetails} from '../../../analytics-publisher/casinofied-analytics.service';\nimport {ICasinofiedComponentFactory} from '../../casinofied-app-factory.interfaces';\nimport {CasinofiedAppSdkLoader} from '../../casinofied-app-sdk-loader';\nimport {IServiceFactoryExtended} from '../../../../service-factory-extended.interface';\nimport {IAppCloseParams} from '../casinofied-application.interface';\nimport {ControlCenterAnalyticsHelper} from './control-center-analytics-helper';\n\nexport class ControlCenterFullApplication extends InsideDrawerApplication {\n // private appClosedSubscription: ITopicSubscription | null = null;\n\n constructor(openAppData: IOpenAppData,\n _componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended,\n private analyticsHelper: ControlCenterAnalyticsHelper\n ) {\n super(openAppData, _componentFactory, appSdkLoader, services, false);\n // In the old implementation of safezone the close internal was not reported by us, if we have to then we have to use this subscription\n // this.appClosedSubscription = this.services.messageBroker.channels.session.topics.appClosed.subscribe((payload) => {\n // if (this._isCurrentApp(payload.appID)) {\n // if (payload.closeReason === this._getOnCloseReason()) {\n // // report full close external (overlay click)\n // } else {\n // // report full close internal (X button, links)\n // }\n // this.appClosedSubscription.unsubscribe();\n // }\n // });\n\n // at this moment we dont have appInitParams so we have to rely on IOpenAppData\n this.analyticsHelper.setCorrelationID(openAppData.correlationID).setSource(openAppData.launchInfo.appSpecificParameters.source).trackAppOpen();\n }\n protected _getInitAppParams(initParams: IDivHostedAppInitParameters): IDivHostedAppInitParameters {\n let result = super._getInitAppParams(initParams);\n result = getInitAppParamsForControlCenter(result, this.services);\n /* save here the correlationId and the source for analytics */\n this.analyticsHelper.setCorrelationID(result.correlationID).setSource(result.applicationContext.launchInfo.appSpecificParameters.source);\n return result;\n }\n\n close(params: IAppCloseParams) {\n super.close(params);\n if (params.reason === this._getOnCloseReason()) {\n this.analyticsHelper.trackCloseExternal();\n }\n }\n\n protected onAppInitSuccess(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n super.onAppInitSuccess(appInitParams, appInitResultReportingDetails);\n this.analyticsHelper.trackAppInitSuccess();\n }\n\n protected onAppInitTimeout(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n super.onAppInitTimeout(appInitParams, appInitResultReportingDetails);\n this.analyticsHelper.trackAppInitFailed();\n }\n\n protected onAppInitFailed(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n super.onAppInitFailed(appInitParams, appInitResultReportingDetails);\n this.analyticsHelper.trackAppInitFailed();\n }\n}\n","export interface IAnalyticsDataLayerService{\n pushControlCenterEvent(eventParams:IControlCenterEventParams): void;\n}\n\nexport interface IControlCenterDataLayerParams {\n intent: string,\n login_session_id: string,\n user_type: string,\n rm_status: number,\n rg_risk_level: number,\n local_time: string,\n sub_brand_name: number,\n sub_brand_id: number,\n registration_country: string,\n context: string,\n registration_date: string,\n cid: string,\n env: string,\n product_package: number\n}\n\nexport interface IControlCenterEventParams {\n action: string,\n category: string,\n event: string,\n correlation_id?: string,\n channel: string,\n label: string,\n local_time: string,\n session_status?: SESSION_STATUS\n}\n\nexport enum SESSION_STATUS {\n Failure = 0,\n Success = 1,\n Partial = 2\n};\n\n","import {CasinofiedApplicationBase} from '../casinofied-application-base';\nimport {IOpenAppData, IDivHostedAppInitParameters, ControlCenterCloseSource} from '@sparkware/uc-sdk-core';\nimport {ICasinofiedComponentFactory} from '../../casinofied-app-factory.interfaces';\nimport {CasinofiedAppSdkLoader} from '../../casinofied-app-sdk-loader';\nimport {IServiceFactoryExtended} from '../../../../service-factory-extended.interface';\nimport {CONTROL_CENTER_CONTAINERS_ID} from '../../../../control-center/control-center.service.interface';\nimport {getInitAppParamsForControlCenter} from './init-params-helper';\nimport {IAppInitResultReportingDetails} from '../../../analytics-publisher/casinofied-analytics.service';\nimport {IAppCloseParams} from '../casinofied-application.interface';\nimport {ControlCenterAnalyticsHelper} from \"./control-center-analytics-helper\";\n\nexport class ControlCenterMiniApplication extends CasinofiedApplicationBase {\n\n constructor(openAppData: IOpenAppData,\n _componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended,\n private analyticsHelper: ControlCenterAnalyticsHelper\n ) {\n super(openAppData, _componentFactory, appSdkLoader, services, false);\n this._openAppData.launchInfo.containerID = CONTROL_CENTER_CONTAINERS_ID.CONTROL_CENTER_MINI_CONTAINER_ID;\n // at this moment we dont have appInitParams so we have to rely on IOpenAppData\n this.analyticsHelper.setCorrelationID(openAppData.correlationID).setSource(openAppData.launchInfo.appSpecificParameters.source).trackAppOpen();\n }\n\n protected _getInitAppParams(initParams: IDivHostedAppInitParameters): IDivHostedAppInitParameters {\n let result = super._getInitAppParams(initParams);\n result = getInitAppParamsForControlCenter(result, this.services);\n /* save here the correlationId and the source for analytics */\n this.analyticsHelper.setCorrelationID(result.correlationID).setSource(result.applicationContext.launchInfo.appSpecificParameters.source);\n return result;\n }\n\n public close(params: IAppCloseParams) {\n super.close(params);\n // If you wonder why I do analytics here and not using services.messageBroker.channels.session.topics.appClosed.subscribe\n // it is because appClosed is not triggered by control center when clicking on the mini widget to open the full. It is triggered by me also here.\n // So no point subscribing. If in the future others will trigger appClosed will reconsider this\n if (params.reason === ControlCenterCloseSource.MiniSafeZone) {\n this.analyticsHelper.trackCloseInternal();\n } else if (params.reason === ControlCenterCloseSource.ClientPage) {\n this.analyticsHelper.trackCloseExternal();\n }\n }\n\n protected onAppInitSuccess(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n super.onAppInitSuccess(appInitParams, appInitResultReportingDetails);\n this.analyticsHelper.trackAppInitSuccess();\n }\n\n protected onAppInitTimeout(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n super.onAppInitTimeout(appInitParams, appInitResultReportingDetails);\n this.analyticsHelper.trackAppInitFailed()\n }\n\n protected onAppInitFailed(appInitParams: IDivHostedAppInitParameters, appInitResultReportingDetails?: IAppInitResultReportingDetails) {\n super.onAppInitFailed(appInitParams, appInitResultReportingDetails);\n this.analyticsHelper.trackAppInitFailed()\n }\n\n}\n\n\n","import {SESSION_STATUS, IControlCenterEventParams} from \"../../../../analytics/analytics-data-layer.service.interface\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\n\ninterface IControlCenterEventNames {\n category: string;\n open: string;\n ready: string;\n closeExternal: string;\n closeInternal?: string;\n}\n\nexport class ControlCenterAnalyticsHelper {\n private correlationID: string | null = null;\n private source: string | null = null;\n private sessionStatus: SESSION_STATUS = SESSION_STATUS.Partial;\n\n constructor(\n private eventNames: IControlCenterEventNames,\n private services: IServiceFactoryExtended\n ) {\n\n }\n\n setCorrelationID(c: string) {\n this.correlationID = c;\n return this;\n }\n\n setSource(s: string) {\n this.source = s;\n return this;\n }\n\n trackAppOpen() {\n this._pushControlCenterEvent(this.eventNames.open);\n }\n\n trackAppInitSuccess() {\n this.sessionStatus = SESSION_STATUS.Success;\n this._pushControlCenterEvent(this.eventNames.ready);\n }\n\n trackAppInitFailed() {\n this.sessionStatus = SESSION_STATUS.Failure;\n this._pushControlCenterEvent(this.eventNames.ready);\n }\n\n trackCloseExternal() {\n this._pushControlCenterEvent(this.eventNames.closeExternal);\n }\n\n trackCloseInternal() {\n if (this.eventNames.closeInternal) {\n this._pushControlCenterEvent(this.eventNames.closeInternal);\n }\n }\n\n private async _pushControlCenterEvent(controlCenterEvent: string): Promise {\n (await this.services.analyticsDataLayer).pushControlCenterEvent({\n ...this._getEventParams(controlCenterEvent, this.correlationID, this.source),\n session_status: this.sessionStatus\n });\n }\n protected _getEventParams(name: string, correlation_id: string, source: string): IControlCenterEventParams {\n return {\n action: name,\n category: this.eventNames.category,\n event: name,\n correlation_id: correlation_id,\n channel: source,\n label: undefined,\n local_time: (new Date()).toString()\n };\n }\n\n}","import {IOpenAppData} from \"@sparkware/uc-sdk-core\";\nimport {IServiceFactoryExtended} from \"../../../../service-factory-extended.interface\";\nimport {ICasinofiedComponentFactory} from \"../../casinofied-app-factory.interfaces\";\nimport {CasinofiedAppSdkLoader} from \"../../casinofied-app-sdk-loader\";\nimport {InsideDrawerApplication} from \"../inside-drawer.application\";\n\nexport class RegistrationWidget extends InsideDrawerApplication {\n public constructor(openAppData: IOpenAppData,\n componentFactory: ICasinofiedComponentFactory,\n appSdkLoader: CasinofiedAppSdkLoader,\n services: IServiceFactoryExtended) {\n super(openAppData, componentFactory, appSdkLoader, services, false);\n }\n\n protected _isAnonymousModeAllowed(): boolean {\n return true;\n }\n\n get supportsCloseIntent(): boolean {\n if(this.isLoading) {\n return false;\n }\n\n return true;\n }\n}","import {ICasinofiedApplication} from './apps/casinofied-application.interface';\nimport {AppIdentifiers, ComponentID, IOpenAppData} from '@sparkware/uc-sdk-core';\nimport {ChatApplication} from './apps/chat/chat.application';\nimport {IServiceFactoryExtended} from '../../service-factory-extended.interface';\nimport {CasinofiedAppSdkLoader} from './casinofied-app-sdk-loader';\nimport {ICasinofiedComponent} from './components/casinofied-component.interface';\nimport {CasinofiedBubbleComponent} from './components/casinofied-bubble.component';\nimport {InsideDrawerApplication} from './apps/inside-drawer.application';\nimport {ICasinofiedAppFactory, ICasinofiedComponentFactory} from './casinofied-app-factory.interfaces';\nimport {DepositWidgetApplication} from \"./apps/deposit-widget/deposit-widget.application\";\nimport {PaymentsRedirectApplication} from \"./apps/payments-redirect/payments-redirect.application\";\nimport {FullCashierApplication} from \"./apps/full-cashier/full-cashier.application\";\nimport {CashoutWidgetApplication} from './apps/cashout-widget/cashout-widget.application';\nimport {TransactionHistoryApplication} from './apps/transaction-history/transaction-history.application';\nimport {CustomerRelationsApplication} from \"./apps/customer-relations/customer-relations.application\";\nimport {FreeToPlayBonusGamesApplication} from \"./apps/free-to-play-bonus-games/free-to-play-bonus-games.application\";\nimport {HelpCentreApplication} from \"./apps/help-centre/help-centre.application\";\nimport {ControlCenterFullApplication} from \"./apps/control-center/control-center-full.application\";\nimport {ControlCenterMiniApplication} from \"./apps/control-center/control-center-mini.application\";\nimport {ControlCenterAnalyticsHelper} from './apps/control-center/control-center-analytics-helper';\nimport {CONTROL_CENTER_BI_EVENTS} from '../../control-center/control-center.service.interface';\nimport {RegistrationWidget} from './apps/registration-widget/registration-widget.application';\n\nexport class CasinofiedAppFactory implements ICasinofiedAppFactory, ICasinofiedComponentFactory {\n constructor(private readonly _services: IServiceFactoryExtended) {\n this._appSdkLoader = new CasinofiedAppSdkLoader(_services);\n }\n\n private readonly _appSdkLoader: CasinofiedAppSdkLoader;\n\n createApplication(openAppData: IOpenAppData): ICasinofiedApplication {\n switch (openAppData.appID) {\n case AppIdentifiers.CRChat:\n return new ChatApplication(openAppData, this, this._appSdkLoader, this._services, false);\n case AppIdentifiers.OpenBanking:\n return new InsideDrawerApplication(openAppData, this, this._appSdkLoader, this._services, false);\n case AppIdentifiers.UnifiedCashier:\n return new DepositWidgetApplication(openAppData, this, this._appSdkLoader, this._services);\n case AppIdentifiers.Redirect:\n return new PaymentsRedirectApplication(openAppData, this, this._appSdkLoader, this._services);\n case AppIdentifiers.FullCashier:\n return new FullCashierApplication(openAppData, this._services);\n case AppIdentifiers.UnifiedCashout:\n return new CashoutWidgetApplication(openAppData, this, this._appSdkLoader, this._services);\n case AppIdentifiers.TransactionHistory:\n return new TransactionHistoryApplication(openAppData, this, this._appSdkLoader, this._services);\n case AppIdentifiers.CustomerRelations:\n return new CustomerRelationsApplication(openAppData, this._services);\n case AppIdentifiers.CasinoBonusGameWidget:\n return new FreeToPlayBonusGamesApplication(openAppData, this, this._appSdkLoader, this._services, false);\n case AppIdentifiers.Registration:\n return new RegistrationWidget(openAppData, this, this._appSdkLoader, this._services)\n case AppIdentifiers.CRHelpCenter:\n return new HelpCentreApplication(openAppData, this, this._appSdkLoader, this._services, false);\n case AppIdentifiers.ControlCenterFull:\n return new ControlCenterFullApplication(openAppData, this, this._appSdkLoader, this._services, new ControlCenterAnalyticsHelper(\n {\n category: CONTROL_CENTER_BI_EVENTS.CATEGORY_FULL,\n open: CONTROL_CENTER_BI_EVENTS.FULL_OPEN,\n ready: CONTROL_CENTER_BI_EVENTS.FULL_READY,\n closeExternal: CONTROL_CENTER_BI_EVENTS.FULL_CLOSE_EXTERNAL\n }, this._services\n ));\n case AppIdentifiers.ControlCenterMini:\n return new ControlCenterMiniApplication(openAppData, this, this._appSdkLoader, this._services, new ControlCenterAnalyticsHelper(\n {\n category: CONTROL_CENTER_BI_EVENTS.CATEGORY_MINI,\n open: CONTROL_CENTER_BI_EVENTS.MINI_OPEN,\n ready: CONTROL_CENTER_BI_EVENTS.MINI_READY,\n closeExternal: CONTROL_CENTER_BI_EVENTS.MINI_CLOSE_EXTERNAL,\n closeInternal: CONTROL_CENTER_BI_EVENTS.MINI_CLOSE_INTERNAL\n }, this._services\n ));\n default:\n throw new Error(`Application with ID ${openAppData.appID} is not supported`);\n }\n }\n\n createComponent(componentId: ComponentID): ICasinofiedComponent {\n switch (componentId) {\n case 'CR_CHAT_BUBBLE':\n return new CasinofiedBubbleComponent(componentId, this._appSdkLoader, this._services);\n default:\n throw new Error(`Component with ID ${componentId} is not supported`);\n }\n }\n}\n","import {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\nimport {MarketingParams} from \"../../../../../common/interfaces/marketing-params.interface\";\n\nexport interface IRegistrationMarketingData {\n TestData: {\n dl: string;\n dlp: string;\n \"orig-lp\": string;\n referrer: string;\n //FirebaseAppInstanceID?: string; //this is will be added from IDeviceInfoParameters in additionalParams\n //FirebaseAppID?: string; //this is will be added from IDeviceInfoParameters in additionalParams\n //AppsFlyerID?: string; //this is will be added from IDeviceInfoParameters in additionalParams\n //AppID?: string; //this is will be added from IDeviceInfoParameters in additionalParams\n //DeviceID?: string; //this is will be added from IDeviceInfoParameters in additionalParams\n IDFV?: string;\n [key: string]: any;\n };\n additionalParams?: {\n campaignid: string;\n [key: string]: any;\n };\n sr: string; //this is actually the defaultSerial\n}\n\nexport class RegistrationMarketingDataBuilder {\n constructor(private readonly services: IServiceFactoryExtended) {\n }\n\n async buildMarketingData(options?: MarketingParams): Promise {\n let marketingData = (await this.services.marketing).getMarketingData(options);\n marketingData = await this.services.sdk.getSkin().getSerialData(marketingData);\n\n marketingData = await this._appendHybridMarketingTestData(marketingData);\n\n marketingData = await this.services.hybrid.getLexisNexisSession(marketingData);\n\n return marketingData;\n\n /*\n const result: any = {};\n\n Object.keys(marketingData).forEach((key) => {\n if (_.isString(marketingData[key])) {\n result[key] = marketingData[key];\n } else {\n result[key] = JSON.stringify(marketingData[key]);\n }\n });\n\n return result;\n */\n }\n\n private async _appendHybridMarketingTestData(marketingData: any): Promise {\n if(!this.services.device.hybrid.inCasino) {\n return marketingData;\n }\n\n let testData = marketingData.TestData ?? {};\n const hybridTestData = this.services.hybrid.getAppMareketingData();\n\n marketingData.TestData = {\n ...testData,\n ...hybridTestData\n };\n return marketingData;\n }\n\n}","import {ICasinofiedAppLauncherService, ILaunchAppData} from './casinofied-app-launcher.service.interface';\nimport {ServiceBase} from '../../ServiceBase';\nimport {IServiceFactoryExtended} from '../../service-factory-extended.interface';\nimport {\n ActionID,\n AppIdentifiers,\n ControlCenterOpenSource,\n IAppClosedTopicPayload,\n IAppMaximizedTopicPayload,\n IAppMinimizedTopicPayload, ICasinoFreeToPlaySpecificParameters,\n IChatSpecificParams,\n IControlCenterBaseSpecificParams,\n IControlCenterFullSpecificParams,\n IOpenAppData, IRegistrationSpecificParams,\n SequentialCorrelationIdHandler,\n TriggerType\n} from '@sparkware/uc-sdk-core';\nimport {CasinofiedAppFactory} from './casinofied-app-factory';\nimport {ICasinofiedApplication} from './apps/casinofied-application.interface';\nimport {STANDARD_TOPIC_HEADER} from '../message-broker/message-broker.consts';\nimport {Check} from \"@sparkware/app-utils\";\nimport {makeObservable, observable, runInAction} from \"mobx\";\nimport {getAppSpecificParamsForControlCenter} from './apps/control-center/init-params-helper';\nimport {IOpenRegistrationOptions} from '../../external-links/handlers/registration/registration.external-link-handler.interface';\nimport {\n RegistrationMarketingDataBuilder\n} from \"../../external-links/handlers/registration/registration-marketing-data-builder\";\n\n\nexport class CasinofiedAppLauncherService extends ServiceBase implements ICasinofiedAppLauncherService {\n\n private readonly _appFactory: CasinofiedAppFactory;\n @observable\n private _runningApps: Record = {};\n\n constructor(services: IServiceFactoryExtended) {\n super(services);\n\n makeObservable(this);\n\n this._appFactory = new CasinofiedAppFactory(services);\n\n this._subscribeToTopics();\n this._subscribeToSdkEvents();\n this._subscribeToBrowserEvents();\n }\n\n private _subscribeToTopics() {\n const {openApp} = this.services.messageBroker.channels.navigation.topics;\n openApp.subscribe(this._openAppHandler);\n\n const {appClosed, appMaximized, appMinimized, closeIntentResult} = this.services.messageBroker.channels.session.topics;\n appClosed.subscribe(this._appClosedHandler);\n appMinimized.subscribe(this._appMinimizedHandler);\n appMaximized.subscribe(this._appMaximizedHandler);\n closeIntentResult.subscribe((payload) => {\n if (payload.canClose) {\n const app = this._runningApps[payload.appID];\n if (!app) {\n return;\n }\n\n this._appClosedHandler({\n appID: payload.appID,\n correlationID: payload.correlationID,\n launchInfo: app.openAppData.launchInfo,\n closeReason: 'closeIntentResult'\n })\n }\n });\n }\n\n private _subscribeToSdkEvents() {\n this.services.sdk.events.onBeforeOAuthStateChanged(this._onBeforeOAuthStateChangedHandler);\n }\n\n private _onBeforeOAuthStateChangedHandler = () => {\n if (this.services.user.isAuthorized) {\n //if the user isAuthorized it means that is about to be logged out\n this.services.messageBroker.channels.identity.topics.logout.publish(STANDARD_TOPIC_HEADER, {} as any);\n }\n\n this._closeAllApps(\"automatic_closure\", {shouldPreserveAppsState: true});\n }\n\n private _subscribeToBrowserEvents() {\n this.services.window.subscribeTo.unload(this._onBrowserUnload);\n }\n\n private _openAppHandler = async (payload: IOpenAppData): Promise => {\n await this._openApp(payload, true);\n }\n\n private _onBrowserUnload = () => {\n this._closeAllApps(\"user_closed_app\", {shouldPreserveAppsState: false});\n }\n\n private _sequentialCorrelationIdHandlers: Record = {};\n\n getSequentialCorrelationIdHandler(bussinesCorrelationId: string) {\n if (!this._sequentialCorrelationIdHandlers[bussinesCorrelationId]) {\n this._sequentialCorrelationIdHandlers[bussinesCorrelationId] = new SequentialCorrelationIdHandler();\n }\n return this._sequentialCorrelationIdHandlers[bussinesCorrelationId];\n }\n\n private async _openApp(payload: IOpenAppData, shouldReportOpenAppEvent: boolean): Promise {\n const runningApp = this._runningApps[payload.appID];\n if (runningApp) {\n\n if (runningApp.isMinimized) {\n await runningApp.waitForAppToOpen();\n this.services.messageBroker.channels.session.topics.appMaximized.publish(STANDARD_TOPIC_HEADER, {\n appID: runningApp.appId\n });\n }\n this.services.logger.info(`App ${payload.appID} is already open. Running apps: ${this._runningApps}`);\n return;\n }\n\n try {\n\n this.getSequentialCorrelationIdHandler(payload.launchInfo.businessCorrelationID).increment();\n\n if (shouldReportOpenAppEvent) {\n this.services.casinofiedAnalytics.openAppRequest(payload);\n }\n\n const app = await this._appFactory.createApplication(payload);\n if (!app.isOpeningInNewWindow()) {\n // we keep running apps in memory to dispose them later, when they are closed\n // only for the apps that are not opened in another window\n runInAction(() => {\n this._runningApps[payload.appID] = app;\n });\n\n }\n await app.open();\n\n return app;\n } catch (err) {\n const app = this._runningApps[payload.appID];\n if (app) {\n runInAction(() => {\n delete this._runningApps[payload.appID];\n });\n\n if (app.isMinimized) {\n app.dispose();\n }\n }\n\n this.services.logger.error(`Failed to load app: ${payload.appID}`, err);\n }\n return null;\n }\n\n private _appClosedHandler = (payload: IAppClosedTopicPayload) => {\n const runningApp = this._runningApps[payload.appID];\n if (runningApp) {\n runInAction(() => {\n delete this._runningApps[payload.appID];\n\n });\n\n this._cleanUpBusinessCorrelationIdHandler();\n\n runningApp.dispose();\n if (!runningApp.isLoading) {\n this.services.casinofiedAnalytics.appClosed(payload);\n }\n }\n }\n\n private _cleanUpBusinessCorrelationIdHandler = () => {\n const runningAppsGroupedByBusinessCorrelationId = Object.values(this._runningApps)\n .filter(runningApp => runningApp.openAppData.launchInfo?.businessCorrelationID)\n .groupByKey(runningApp => runningApp.openAppData.launchInfo.businessCorrelationID);\n\n for (let businessCorrelationId of Object.keys(this._sequentialCorrelationIdHandlers)) {\n if (!runningAppsGroupedByBusinessCorrelationId[businessCorrelationId]) {\n delete this._sequentialCorrelationIdHandlers[businessCorrelationId];\n }\n }\n }\n\n private _appMinimizedHandler = (payload: IAppMinimizedTopicPayload): void => {\n const app = this._runningApps[payload.appID];\n if (app) {\n app.minimize(payload.appData);\n }\n }\n\n private _appMaximizedHandler = (payload: IAppMaximizedTopicPayload): void => {\n this._runningApps[payload.appID]?.maximize();\n }\n\n private _closeAllApps(closeReason: string, options: {shouldPreserveAppsState: boolean}) {\n\n const preservedApps: Record = {}\n Object.values(this._runningApps).forEach(app => {\n if (app.shouldPreserveStateUponOAuthStateChange && options.shouldPreserveAppsState && !app.isLoading) {\n preservedApps[app.appId] = app;\n } else {\n this.services.messageBroker.channels.session.topics.appClosed.publish(STANDARD_TOPIC_HEADER, {\n appID: app.appId,\n closeReason: closeReason,\n launchInfo: {\n appSpecificParameters: app.openAppData.launchInfo?.appSpecificParameters,\n businessCorrelationID: app.openAppData.launchInfo?.businessCorrelationID,\n trigger: TriggerType.automaticFlow,\n sourceAppID: app.appId,\n sourceAppVersion: \"\",\n channel: null\n }\n });\n }\n\n });\n runInAction(() => {\n this._runningApps = preservedApps;\n });\n }\n\n private _launchApp(params: ILaunchAppData, appIdentifier: AppIdentifiers): Promise {\n const correlationId = params.businessCorrelationID || this.services.tools.getGuid();\n const clientVersion = this.services.sdk.getSkin().getVersion();\n return this._openApp({\n correlationID: correlationId,\n appID: appIdentifier,\n launchInfo: {\n sequentialCorrelationID: 1, //TODO - remove sequenceId after all widget removes its usage\n containerID: this.services.tools.getGuid(),\n trigger: TriggerType.userSelection,\n appSpecificParameters: params.appSpecificParameters,\n businessCorrelationID: correlationId,\n channel: params.channel,\n sourceAppID: AppIdentifiers.CasinoClient,\n sourceAppVersion: clientVersion,\n clientVersion: clientVersion\n }\n }, false);\n }\n\n get isThereRunningApps(): boolean {\n return !Check.isEmpty(Object.values(this._runningApps).filter(app => !app.isMinimized));\n }\n\n async openChat(params: ILaunchAppData): Promise {\n if (this.services.configuration.servicesConfigs.AppLauncher.apps.CR_CHAT.enabled\n && !this.services.language.isRTLLanguage) {\n return this._launchApp(params, AppIdentifiers.CRChat);\n } else {\n await (await this.services.externalLinks).openOldChat();\n return null;\n }\n\n }\n\n openDepositWidget(params: ILaunchAppData): Promise {\n return this._launchApp(params, AppIdentifiers.UnifiedCashier);\n }\n\n openCashoutWidget(params: ILaunchAppData): Promise {\n return this._launchApp(params, AppIdentifiers.UnifiedCashout);\n }\n\n openTransactionHistoryWidget(params: ILaunchAppData): Promise {\n return this._launchApp(params, AppIdentifiers.TransactionHistory);\n }\n\n\n async openRegistrationWidget(options: IOpenRegistrationOptions): Promise {\n const marketingData = await new RegistrationMarketingDataBuilder(this.services).buildMarketingData(options.marketingParams);\n\n let serial = marketingData.sr;\n if (this.services.device.hybrid.inCasino) {\n const defaultHybridSerial = this.services.sdk.getSkin().getDefaultHybridSerial();\n if (defaultHybridSerial) {\n serial = defaultHybridSerial;\n }\n }\n\n const params: ILaunchAppData = {\n channel: options.channel,\n businessCorrelationID: options.businessCorrelationID ?? this.services.tools.getGuid(),\n appSpecificParameters: {\n testData: JSON.stringify(marketingData.TestData ?? \"\"),\n campaignId: marketingData.additionalParams?.campaignId,\n serial: serial, // ??? should marketingData.sr be used for serial or for defaultSerial\n hardwareId: 0,\n aBTestFeatures: {},\n promoCode: options.promoCode\n //defaultSerial: marketingData.sr // ????\n }\n }\n return this._launchApp(params, AppIdentifiers.Registration);\n }\n\n openFreeToPlayBonusGames(params: ILaunchAppData): Promise {\n return this._launchApp(params, AppIdentifiers.CasinoBonusGameWidget);\n }\n\n async openHelpCenter(params: ILaunchAppData): Promise {\n if (this.services.configuration.servicesConfigs.AppLauncher.apps.CR_HELP_CENTER.enabled) {\n return await this._launchApp(params, AppIdentifiers.CRHelpCenter);\n } else {\n await (await this.services.externalLinks).openHelpPage();\n return null;\n }\n\n }\n async openContactUs(params: ILaunchAppData): Promise {\n if (this.services.configuration.servicesConfigs.AppLauncher.apps.CR_HELP_CENTER.enabled) {\n return await this._launchApp(params, AppIdentifiers.CRHelpCenter);\n } else {\n await (await this.services.externalLinks).openContactUs();\n return null;\n }\n\n }\n\n async openControlCenterFull(params: ILaunchAppData): Promise {\n if (this.services.miniOrbit.isEnabled) {\n let appSpecificParameters = getAppSpecificParamsForControlCenter(params.appSpecificParameters, this.services);\n this.services.miniOrbit.openControlCenter({\n actionID: ActionID.openControlCenterFull,\n correlationID: params.businessCorrelationID,\n launchInfo: {\n ...params,\n trigger: TriggerType.userSelection,\n appSpecificParameters\n }\n });\n return null;\n } else {\n if (await this.services.user.ensureUserIsLoggedIn('Control Center')) {\n if (!this.services.controlCenter.isEnabled) {\n throw new Error(\"Control center is not enabled, and an open attempt was performed.\");\n }\n params.appSpecificParameters = {\n source: ControlCenterOpenSource.Lobby,\n ...params.appSpecificParameters\n };\n\n return await this._launchApp(params, AppIdentifiers.ControlCenterFull);\n }\n else {\n return null;\n }\n }\n }\n\n openControlCenterMini(params: ILaunchAppData): Promise {\n return this._launchApp(params, AppIdentifiers.ControlCenterMini);\n }\n\n}\n"],"names":["CasinofiedZoidApplicationAdapter","appID","applicationSdk","services","initParams","clonedInitParams","messageBrokerChannels","zoidInitParams","onInitSucceeded","payload","_onInitSucceeded","onInitFailed","_onInitFailed","openApp","_openApp","onClose","_onClose","performAction","_onPerformAction","closeIntentResult","_onCloseIntentResult","writeLog","_writeLog","this","init","focus","correlationID","closeIntent","navigation","topics","publish","publisher","session","appInitSucceeded","appInitFailed","appClosed","analytics","writeWidgetLogs","CasinofiedRegularApplicationAdapter","applicationObject","messageBroker","channels","AppIdentifiers","launchInfo","applicationContext","CasinofiedApplicationBase","observable","action","openAppData","_componentFactory","appSdkLoader","useZoidIntegration","appId","_openAppData","_sessionID","_topicsSubscriptions","_openPromise","Promise","resolve","_applicationAdapter","_isDisposed","_miniatureComponent","makeObservable","containerID","tools","getGuid","replace","value","isLoading","rootElement","dom","getElementById","firstChild","remove","_appInitFailed","_isAnonymousModeAllowed","user","isAuthorized","_setIsLoading","loadAppSdk","then","widgetUrl","appShowStartTime","isDisposed","reject","timeoutValue","configuration","servicesConfigs","AppLauncher","widgetLoadTimeoutMS","openTimeout","setTimeout","_setAppInitFailed","_unsubscribeFromTopics","onAppInitTimeout","appInitParams","errorCode","errorDescription","cleanUp","clearTimeout","push","subscribe","_isCurrentApp","sessionID","onAppInitSuccess","loadingTime","Date","now","onAppInitFailed","Check","parseInt","getAppInitParamsStartTime","_getAppInitCommonParams","commonParams","onGetAppInitParams","loadSubject","duration","_showApp","catch","err","toString","finally","sdkObjectName","apps","sdk","startTime","interval","setInterval","clearInterval","TimeSpan","totalMilliseconds","appObject","window","getGlobalProperty","_getAppSdkObjectName","Error","_createApplicationAdapter","onAppInitRequest","_waitForContainerIdToBeInTheDOM","_getInitAppParams","userInfo","getCasinofiedCommonUserInfo","getPlatformToken","token","userMode","correlationId","businessCorrelationID","_getUserInfo","getCasinofiedGeoInfoParams","geoInfo","result","productPackageToID","productPackageID","getCasinofiedCommonAppContextParams","deviceInfo","getCasinofiedDeviceInfo","forEach","subscription","unsubscribe","dispose","_isMinimized","componentData","componentID","_getMiniatureComponentID","_setIsMinimized","waitForAppToOpen","createComponent","show","logger","error","minimizeApp","STANDARD_TOPIC_HEADER","appCloseParams","closeReason","reason","channel","appInitResultReportingDetails","casinofiedAnalytics","appInitResult","reportData","reportDuration","appInitRequest","OnErrorBox","styled","OnErrorIconBox","OnErrorTitleBox","theme","font","presets","medium","props","colors","textLight","OnErrorMessageBox","regular","OnErrorButtonsBox","OnErrorComponent","title","translation","translate","message","src","currentTheme","images","brokenLinkIcon","alt","preset","className","onClick","onCloseButtonClick","sizeVariant","noRemUnits","onRetryButtonClick","OrbitComponent","InsideDrawerApplication","_drawerContentHandler","overlayZIndex","OMG","_retryOpen","source","CHANNEL_SOURCE","area","AreaType","element","CHANNEL_ELEMENTS","supportsCloseIntent","_shouldMinimizeOnDrawerClose","isMinimized","_publishMinimizeApp","close","_getOnCloseReason","messageDisplay","displayMessageID","DISPLAY_MESSAGE_IDS","drawer","right","showSpinner","hideSpinner","reportToIndex","appDisposed","ChatApplication","chatSpecificParams","appSpecificParameters","openMode","ChatOpenMode","CasinofiedAppSdkLoader","_services","_loadedAppsSDKs","appLauncherConfigs","appConfigs","url","sdks","sdkloadStartTime","loadScripPromise","loadScript","tagId","scriptType","CasinofiedComponentBase","_componentID","_appSdkLoader","_containerID","_displayComponent","componentController","_componentController","CasinofiedBubbleComponent","_floatingBubbleHandler","floatingBubbles","addBubble","UnifiedCashierZoidAdapter","_onCloseAlreadyCalled","debug","DepositWidgetApplication","componentFactory","miniOrbit","isEnabled","openDeposit","fireDepositWidgetClosed","PaymentRedirectFocusTitleBox","DialogTextBox","PaymentRedirectFocusDefaultBox","body","PcBox","MobileBox","mediaQuery","landscape","PaymentRedirectFocusBox","styledByDevice","PaymentsRedirectFocusComponent","primaryAction","text","CyClass","redirectApp","mftName","_renderButtonContainer","PaymentsRedirectApplication","_focusDialogHandler","_containerElement","createElement","id","appendChild","dialog","showModal","icon","icons","paymentsRedirectIcon","hideCloseButton","isHighPriority","forceCentralization","mobileCenterHeader","forceTransparentBackground","disableFullscreenMobile","messageActionTaken","actionType","sendLogLevelOnly","FullCashierApplication","shouldPreserveStateUponOAuthStateChange","_onExternalLinkClosedSubscription","_onExternalLinkClosed","linkSource","GNWP_SOURCES","options","SessionType","sessionType","cashier","getProductPackage","events","onExternalLinkClosed","openOldCashier","off","appData","params","CashoutWidgetApplication","TransactionHistoryApplication","CustomerRelationsApplication","featureType","externalLinks","openOldChat","openContactUs","openHelpPage","sourceAppID","FreeToPlayBonusGamesApplication","_bonusWheelContainerElement","freeToPlay","setIsPromotionOpened","disableScrolling","enableScrolling","fireFreeToPlayWidgetClosed","HelpCentreApplication","getInitAppParamsForControlCenter","getAppSpecificParamsForControlCenter","startupConfiguration","config","ExtraProperties","env","ControlCenterOpenSource","clientPlatform","getSkin","getClientPlatform","SESSION_STATUS","ControlCenterFullApplication","analyticsHelper","setCorrelationID","setSource","trackAppOpen","trackCloseExternal","trackAppInitSuccess","trackAppInitFailed","ControlCenterMiniApplication","CONTROL_CENTER_CONTAINERS_ID","ControlCenterCloseSource","trackCloseInternal","ControlCenterAnalyticsHelper","eventNames","sessionStatus","Partial","c","s","_pushControlCenterEvent","open","Success","ready","Failure","closeExternal","closeInternal","controlCenterEvent","analyticsDataLayer","pushControlCenterEvent","_getEventParams","session_status","name","correlation_id","category","event","label","undefined","local_time","RegistrationWidget","CasinofiedAppFactory","CONTROL_CENTER_BI_EVENTS","componentId","RegistrationMarketingDataBuilder","marketing","marketingData","getMarketingData","getSerialData","_appendHybridMarketingTestData","hybrid","getLexisNexisSession","device","inCasino","testData","TestData","hybridTestData","getAppMareketingData","CasinofiedAppLauncherService","_appFactory","_onBeforeOAuthStateChangedHandler","identity","logout","_closeAllApps","shouldPreserveAppsState","_openAppHandler","_onBrowserUnload","_sequentialCorrelationIdHandlers","_appClosedHandler","runningApp","_runningApps","runInAction","_cleanUpBusinessCorrelationIdHandler","runningAppsGroupedByBusinessCorrelationId","Object","values","filter","groupByKey","keys","businessCorrelationId","_appMinimizedHandler","app","minimize","_appMaximizedHandler","maximize","_subscribeToTopics","_subscribeToSdkEvents","_subscribeToBrowserEvents","appMaximized","appMinimized","canClose","onBeforeOAuthStateChanged","subscribeTo","unload","bussinesCorrelationId","SequentialCorrelationIdHandler","shouldReportOpenAppEvent","info","getSequentialCorrelationIdHandler","increment","openAppRequest","createApplication","isOpeningInNewWindow","preservedApps","trigger","TriggerType","sourceAppVersion","appIdentifier","clientVersion","getVersion","sequentialCorrelationID","CR_CHAT","enabled","language","isRTLLanguage","_launchApp","buildMarketingData","marketingParams","serial","sr","defaultHybridSerial","getDefaultHybridSerial","JSON","stringify","campaignId","additionalParams","hardwareId","aBTestFeatures","promoCode","CR_HELP_CENTER","openControlCenter","actionID","ActionID","ensureUserIsLoggedIn","controlCenter","ServiceBase"],"sourceRoot":""}