{"version":3,"file":"static/js/service-header.110dd5db.chunk.js","mappings":"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","sources":["app-react/services/cross-brands/cross-brands-item-config-reader.ts","app-react/components/header/top-header-left/cross-brand/boxes/app-header-cross-brand-item/app-header-cross-brand-item.box.ts","app-react/components/header/top-header-left/cross-brand/boxes/app-header-cross-brand-text/app-header-cross-brand-text.box.ts","app-react/components/header/top-header-left/cross-brand/cross-brands-items/generic-cross-brands-menu-item.component.tsx","app-react/services/header/menu-items/generic-cross-brands-menu-item.renderer.tsx","app-react/services/header/header.service.ts","app-react/services/menu-items-common/menu-item-config-reader/menu-item-config-reader-base.ts"],"sourcesContent":["import {MenuItemsConfiguration} from \"../configurations/config-data-sections/menu-items.configuration\";\r\nimport {MenuItemConfigReaderBase} from \"../menu-items-common/menu-item-config-reader/menu-item-config-reader-base\";\r\nimport {\r\n MenuItemAnalyticsCategoryAndLabel\r\n} from \"../menu-items-common/menu-item-config-reader/menu-item-config-reader.interface\";\r\nimport {OrbitUserFlowAnalyticsCategory, OrbitUserFlowAnalyticsLabel} from \"../analytics/analytics.service.interface\";\r\n\r\n\r\nexport class CrossBrandsMenuItemConfigReader extends MenuItemConfigReaderBase {\r\n\r\n protected _getMenuItemsConfigOverrides(): MenuItemsConfiguration | undefined {\r\n return this.services.configuration.data.header.menuItemsOverride;\r\n }\r\n\r\n protected _getAnalyticsCategoryAndLabel(): MenuItemAnalyticsCategoryAndLabel {\r\n return {\r\n category: OrbitUserFlowAnalyticsCategory.Navigation,\r\n label: OrbitUserFlowAnalyticsLabel.AppHeader\r\n };\r\n }\r\n}\r\n\r\n","import {styledBox} from \"../../../../../../themes/architecture/styled-box\";\r\n\r\nexport const AppHeaderCrossBrandItemBox = styledBox('AppHeaderCrossBrandItemBox');","import {styledBox} from \"../../../../../../themes/architecture/styled-box\";\r\n\r\nexport const AppHeaderCrossBrandTextBox = styledBox('AppHeaderCrossBrandTextBox');","import {Check} from \"@sparkware/app-utils\";\r\nimport {PropsWithChildren} from \"react\";\r\nimport {MenuItemComponentProps} from \"../../../../../services/menu-items-common/menu-item-component-props.interface\";\r\nimport {IMenuItemRenderer} from \"../../../../../services/menu-items-common/renderer/menu-item.renderer.interface\";\r\nimport {OrbitComponent} from \"../../../../base-components/orbit-component/orbit-component\";\r\nimport {AppHeaderCrossBrandItemBox} from \"../boxes/app-header-cross-brand-item/app-header-cross-brand-item.box\";\r\nimport {AppHeaderCrossBrandTextBox} from \"../boxes/app-header-cross-brand-text/app-header-cross-brand-text.box\";\r\n\r\ninterface GenericCrossBrandsMenuLinkComponentProps extends MenuItemComponentProps {\r\n className?: string;\r\n}\r\n\r\nexport class GenericCrossBrandsMenuItemComponent extends OrbitComponent> {\r\n private _onBrandClick = () => {\r\n\r\n const isAuth = this.services.user.isAuthorized;\r\n this.services.analytics.sendOrbitUserFlowEvent(\"Navigation\",\"Header\", \"Cross_\" + (isAuth ? \"Casino_\" : \"\") + this.props.menuItem.text);\r\n \r\n this.props.menuItem.execute();\r\n };\r\n\r\n \r\n private _renderIcon = () => {\r\n const brandConfig: IMenuItemRenderer = this.props.menuItem;\r\n\r\n if (Check.isEmpty(brandConfig?.icon)) {\r\n return null;\r\n }\r\n\r\n const Icon = this.services.theme.currentTheme.icons[brandConfig.icon];\r\n\r\n if (Check.isNullOrUndefined(Icon)) {\r\n return null;\r\n }\r\n\r\n return ;\r\n };\r\n\r\n\r\n render() {\r\n const {key, text} = this.props.menuItem;\r\n return this._onBrandClick()}\r\n >\r\n {this._renderIcon()}\r\n \r\n {text}\r\n \r\n ;\r\n }\r\n}\r\n","import React from 'react';\r\nimport {GenericCrossBrandsMenuItemComponent} from \"../../../components/header/top-header-left/cross-brand/cross-brands-items/generic-cross-brands-menu-item.component\";\r\nimport {MenuItemRendererBase} from \"../../menu-items-common/renderer/menu-item-renderer-base\";\r\nimport {IRenderMenuItemOptions} from \"../../menu-items-common/renderer/menu-item.renderer.interface\";\r\n\r\nexport class GenericCrossBrandsMenuItemRenderer extends MenuItemRendererBase {\r\n protected _createReactElement(options?: IRenderMenuItemOptions): React.ReactElement {\r\n return ();\r\n }\r\n}","import { action, observable, makeObservable } from 'mobx';\r\nimport { ResizeObserver } from '@juggle/resize-observer';\r\n\r\nimport {ServiceBase} from '../ServiceBase';\r\nimport {IHeaderService} from './header.service.interface';\r\nimport {IServiceFactoryExtended} from '../service-factory-extended.interface';\r\nimport { DomEventSubscription } from '../../../utils/event-listener-registration';\r\nimport {IMenuItemRenderer} from '../menu-items-common/renderer/menu-item.renderer.interface';\r\nimport {CrossBrandsMenuItemConfigReader} from '../cross-brands/cross-brands-item-config-reader';\r\nimport {GenericCrossBrandsMenuItemRenderer} from './menu-items/generic-cross-brands-menu-item.renderer';\r\nimport {MenuItemKey} from '../configurations/config-data-sections/generated-config-const';\r\nimport {IMenuItemActionFactoryService} from \"../menu-item-action-factory/menu-item-action-factory.service.interface\";\r\n\r\nexport class HeaderService extends ServiceBase implements IHeaderService {\r\n private _headerResizeObserver: ResizeObserver | null = null;\r\n private _onScrollSubscription: DomEventSubscription | null = null;\r\n private _headerElement: HTMLElement | null = null;\r\n private _headerRegulationDataElement: HTMLElement | null = null;\r\n\r\n @observable.ref\r\n _headerHeight: number = 0;\r\n @observable.ref\r\n headerRegulationHeight: number = 0;\r\n\r\n @observable.ref\r\n public skeleton: boolean = true;\r\n @action.bound\r\n public deactivateSkeleton(): void {\r\n this.skeleton = false;\r\n }\r\n\r\n private readonly menuItemConfigReader: CrossBrandsMenuItemConfigReader;\r\n \r\n constructor(services: IServiceFactoryExtended, private readonly menuItemActionFactory: IMenuItemActionFactoryService) {\r\n super(services);\r\n makeObservable(this);\r\n this._headerResizeObserver = new ResizeObserver(this._onHeaderResize);\r\n this._onScrollSubscription = this.services.window.subscribeTo.scroll(this._onWindowScroll);\r\n\r\n this.menuItemConfigReader = new CrossBrandsMenuItemConfigReader(services);\r\n }\r\n\r\n get headerHeight(): number {\r\n return this._headerHeight + this.headerRegulationHeight;\r\n }\r\n\r\n @action\r\n private computeHeaderHeight() {\r\n this._headerHeight = this._headerElement?.offsetHeight || 0;\r\n }\r\n\r\n @action\r\n private computeRegulationHeaderHeight() {\r\n this.headerRegulationHeight = this._headerRegulationDataElement?.offsetHeight || 0;\r\n }\r\n\r\n private _onHeaderResize = () => {\r\n this.computeHeaderHeight();\r\n this.computeRegulationHeaderHeight();\r\n };\r\n\r\n private _onWindowScroll = () => {\r\n this.computeHeaderHeight();\r\n this.computeRegulationHeaderHeight();\r\n };\r\n\r\n @action\r\n setHeaderElement(headerElement: HTMLElement): void {\r\n if(this._headerElement) {\r\n this._headerResizeObserver.unobserve(this._headerElement);\r\n }\r\n this._headerElement = headerElement;\r\n this.computeHeaderHeight();\r\n if (headerElement){\r\n this._headerResizeObserver.observe(headerElement);\r\n }\r\n }\r\n\r\n @action\r\n setHeaderRegulationDataElement(headerRegulationDataElement: HTMLElement): void {\r\n if(this._headerRegulationDataElement) {\r\n this._headerResizeObserver.unobserve(this._headerRegulationDataElement);\r\n }\r\n this._headerRegulationDataElement = headerRegulationDataElement;\r\n this.computeRegulationHeaderHeight();\r\n if (headerRegulationDataElement){\r\n this._headerResizeObserver.observe(headerRegulationDataElement);\r\n }\r\n }\r\n\r\n getHeaderRegulationDataElement(): HTMLElement | null {\r\n return this._headerRegulationDataElement;\r\n }\r\n\r\n private menuItemKeyIsCrossBrand(k: MenuItemKey): k is \"sportCrossBrandMenuItem\" | \"pokerCrossBrandMenuItem\" {\r\n return k === \"sportCrossBrandMenuItem\" || k === \"pokerCrossBrandMenuItem\";\r\n }\r\n getCrossBrandsMenuItems(): IMenuItemRenderer[] {\r\n return this.services.configuration.data.header.cross_brand.filter(k => {\r\n return this.menuItemKeyIsCrossBrand(k);\r\n }).map(crossBrandKey => {\r\n return this.getCrossBrandItemRenderer(crossBrandKey);\r\n }).filter(menuItem => {\r\n return menuItem.display;\r\n });\r\n }\r\n private getCrossBrandItemRenderer(crossBrandKey: MenuItemKey) {\r\n let menuItemRenderer = this.services.regulation.current.menuItems.getAppHeaderMenuItem(crossBrandKey, this.menuItemConfigReader, this.menuItemActionFactory);\r\n if(menuItemRenderer) {\r\n return menuItemRenderer;\r\n }\r\n return new GenericCrossBrandsMenuItemRenderer(crossBrandKey, this.menuItemConfigReader, this.services, this.menuItemActionFactory);\r\n }\r\n\r\n dispose(): void {\r\n this._headerResizeObserver.disconnect();\r\n this._headerResizeObserver = null;\r\n this._onScrollSubscription.dispose();\r\n this._onScrollSubscription = null;\r\n }\r\n}\r\n","import {\r\n IMenuItemConfigReader,\r\n MenuItemAnalyticsCategoryAndLabel,\r\n MenuItemConfigurationExtended\r\n} from \"./menu-item-config-reader.interface\";\r\nimport {\r\n MenuItemConfiguration,\r\n MenuItemsConfiguration\r\n} from \"../../configurations/config-data-sections/menu-items.configuration\";\r\nimport {IServiceFactoryExtended} from \"../../service-factory-extended.interface\";\r\nimport {Check} from \"@sparkware/app-utils\";\r\nimport {AnalyticsConfiguration} from \"../../configurations/config-data-sections/analytics.configuration\";\r\n\r\nexport abstract class MenuItemConfigReaderBase implements IMenuItemConfigReader {\r\n constructor(protected readonly services: IServiceFactoryExtended) {\r\n }\r\n\r\n protected abstract _getMenuItemsConfigOverrides(): MenuItemsConfiguration | undefined;\r\n protected abstract _getAnalyticsCategoryAndLabel(): MenuItemAnalyticsCategoryAndLabel | null;\r\n\r\n getMenuItemConfig(key: string): MenuItemConfigurationExtended {\r\n const allConfigs = this.services.configuration.data;\r\n const menuItemConfig: MenuItemConfiguration | undefined = allConfigs.menuItems[key];\r\n if(!menuItemConfig) {\r\n throw new Error(`Missing configuration for ${key} menu item`);\r\n }\r\n\r\n const menuItemsOverrides = this._getMenuItemsConfigOverrides();\r\n\r\n const menuItemConfigOverride: MenuItemConfiguration | undefined = menuItemsOverrides && menuItemsOverrides[key];\r\n\r\n\r\n\r\n const menuItemConfigProxyHandler = {\r\n get: (target: any, prop: string) => {\r\n if(prop === 'analytics') {\r\n const categoryAndLabel = this._getAnalyticsCategoryAndLabel();\r\n if(categoryAndLabel) {\r\n const analyticsConfig: AnalyticsConfiguration = {\r\n action: key,\r\n ...categoryAndLabel\r\n }\r\n return analyticsConfig;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n const overridePropValue = menuItemConfigOverride && menuItemConfigOverride[prop];\r\n if(Check.isUndefined(overridePropValue)) {\r\n return target[prop];\r\n } else {\r\n return overridePropValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return new Proxy(menuItemConfig, menuItemConfigProxyHandler);\r\n\r\n\r\n }\r\n}\r\n\r\n"],"names":["CrossBrandsMenuItemConfigReader","this","services","configuration","data","header","menuItemsOverride","category","OrbitUserFlowAnalyticsCategory","label","OrbitUserFlowAnalyticsLabel","MenuItemConfigReaderBase","AppHeaderCrossBrandItemBox","styledBox","AppHeaderCrossBrandTextBox","GenericCrossBrandsMenuItemComponent","_onBrandClick","isAuth","user","isAuthorized","analytics","sendOrbitUserFlowEvent","props","menuItem","text","execute","_renderIcon","brandConfig","Check","icon","Icon","theme","currentTheme","icons","className","size","title","iconAltText","key","menuItemKey","onClick","OrbitComponent","GenericCrossBrandsMenuItemRenderer","options","MenuItemRendererBase","HeaderService","observable","action","menuItemActionFactory","_headerResizeObserver","_onScrollSubscription","_headerElement","_headerRegulationDataElement","menuItemConfigReader","_onHeaderResize","computeHeaderHeight","computeRegulationHeaderHeight","_onWindowScroll","makeObservable","ResizeObserver","window","subscribeTo","scroll","skeleton","_headerHeight","headerRegulationHeight","offsetHeight","headerElement","unobserve","observe","headerRegulationDataElement","k","cross_brand","filter","menuItemKeyIsCrossBrand","map","crossBrandKey","getCrossBrandItemRenderer","display","menuItemRenderer","regulation","current","menuItems","getAppHeaderMenuItem","disconnect","dispose","ServiceBase","menuItemConfig","Error","menuItemsOverrides","_getMenuItemsConfigOverrides","menuItemConfigOverride","Proxy","get","target","prop","categoryAndLabel","_getAnalyticsCategoryAndLabel","overridePropValue"],"sourceRoot":""}