{"version":3,"file":"./content/js/front-end.app.js","mappings":"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","sources":["webpack:///./ts/front-end/mixins/event-emitter.mixin.ts","webpack:///./ts/front-end/components/search-textbox.component.ts","webpack:///./ts/front-end/components/quick-search/quick-search.service.ts","webpack:///./ts/front-end/components/homeslick.component.ts","webpack:///./ts/front-end/components/video-box/factories/video-player.factory.base.ts","webpack:///./ts/front-end/components/video-box/factories/video-player.component.base.ts","webpack:///./ts/front-end/components/video-box/factories/youtube/youtube-player.component.ts","webpack:///./ts/front-end/services/scripts-loader.service.ts","webpack:///./ts/front-end/components/video-box/factories/youtube/youtube-video-player.factory.ts","webpack:///./ts/front-end/components/video-box/factories/vimeo/vimeo-player.component.ts","webpack:///./ts/front-end/components/video-box/factories/vimeo/vimeo-video-player.factory.ts","webpack:///./ts/front-end/components/video-box/factories/umbraco/umbraco-player.component.ts","webpack:///./ts/front-end/components/video-box/factories/umbraco/umbraco-video-player.factory.ts","webpack:///./ts/front-end/components/video-box/video-box.component.ts","webpack:///./ts/core/features/device/device.service.ts","webpack:///./ts/front-end/components/video-box/video-box.service.ts","webpack:///./ts/front-end/components/emergency-message/emergency-message.component.ts","webpack:///./ts/front-end/components/emergency-message/emergency-message.service.ts","webpack:///./ts/front-end/components/page/page-footer.component.ts","webpack:///./ts/front-end/components/page/page-header.component.ts","webpack:///./ts/front-end/components/page/page.service.ts","webpack:///./ts/front-end/components/news-filter/components/filter-parameters/filter-dropdown-parameter.component.ts","webpack:///./ts/front-end/components/news-filter/components/filter-parameters/filter-multichoice-list.parameter.component.ts","webpack:///./ts/front-end/components/news-filter/components/parameters-panel/parameters-panel.component.ts","webpack:///./ts/front-end/components/news-filter/news-filter.component.ts","webpack:///./ts/front-end/components/news-filter/news-filter.service.ts","webpack:///./ts/front-end/components/banners/banner-filters-area.component.ts","webpack:///./ts/front-end/components/banners/banner-filter.component.ts","webpack:///./ts/front-end/components/banners/media/elements/images-slider.component.ts","webpack:///./ts/front-end/components/banners/media/elements/static-image.component.ts","webpack:///./ts/front-end/components/banners/media/elements/video.component.ts","webpack:///./ts/front-end/components/banners/media/banner-details-media.factory.ts","webpack:///./ts/front-end/components/banners/banner-area.component.ts","webpack:///./ts/front-end/components/banners/banners-details.component.ts","webpack:///./ts/front-end/components/banners/banners.service.ts","webpack:///./ts/front-end/services/geolocation/models/lat-lng.model.ts","webpack:///./ts/front-end/services/geolocation/user-geo-location.service.ts","webpack:///./ts/front-end/services/geolocation/geo-distance.service.ts","webpack:///./ts/front-end/components/team-members-profiles/team-members-profile-modal.component.ts","webpack:///./ts/front-end/components/team-members-profiles/team-members-profile.component.ts","webpack:///./ts/front-end/components/team-members-profiles/team-members-profiles.service.ts","webpack:///./ts/front-end/components/cookiebot/cookiebot-preferences-link.component.ts","webpack:///./ts/front-end/components/cookiebot/cookiebot.service.ts","webpack:///./ts/front-end/components/sections/forms-section/form-scroll.service.ts","webpack:///./ts/front-end/components/heading.component.ts","webpack:///./ts/front-end/components/sections/forms-section/forms-tab-button.component.ts","webpack:///./ts/front-end/components/sections/forms-section/forms-tab.service.ts","webpack:///./ts/front-end/components/sections/forms-section/forms-section.service.ts","webpack:///./ts/front-end/components/sites-info-banner-media/sites-info-banner-media.service.ts","webpack:///./ts/front-end/app.ts","webpack:///./ts/front-end/entry.ts","webpack:///./ts/front-end/extensions/jquery.extensions.ts","webpack:///./ts/front-end/extensions/string.extensions.ts"],"sourcesContent":["import { Constructor } from \"core/features/components/types/constructor\";\r\nimport { EventArg } from \"front-end/types/event-arg\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\nexport interface IEventEmitter {\r\n on(event: string): Observable;\r\n emit(event: string, arg?: EventArg): void;\r\n}\r\n\r\nexport const EventEmitterMixin = > (\r\n BaseClass: TBaseClass\r\n): TBaseClass & Constructor => {\r\n\r\n return class EventEmitterExtension extends BaseClass implements IEventEmitter {\r\n protected _subjects: Map> = new Map>();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public constructor(...args: Array) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n super(...args);\r\n }\r\n\r\n public on(event: string): Observable {\r\n if (!this._subjects.has(event)) {\r\n this._subjects.set(event, new Subject());\r\n }\r\n\r\n return this._subjects.get(event).asObservable();\r\n }\r\n\r\n public emit(event: string, arg?: EventArg): void {\r\n const subject = this.getSubject(event);\r\n\r\n subject.next(arg);\r\n }\r\n\r\n public complete(event: string): void {\r\n const subject = this.getSubject(event);\r\n subject.complete();\r\n\r\n this._subjects.delete(event);\r\n }\r\n\r\n private getSubject(event: string): Subject {\r\n const subject = this._subjects.get(event);\r\n\r\n if(!subject) {\r\n throw new Error(`Unknown subject ${event}`);\r\n }\r\n\r\n return subject;\r\n }\r\n };\r\n};\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class SearchTextbox extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR = \".js-ina-search-textbox\";\r\n\r\n private _classMap = {\r\n css: {\r\n show: \"show\",\r\n hidden: \"hidden\"\r\n },\r\n js: {\r\n input: `${SearchTextbox.SELECTOR}__input`,\r\n submitBtn: `${SearchTextbox.SELECTOR}__submit-btn`\r\n }\r\n };\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _input: JQuery = null;\r\n private _submitBtn: JQuery = null;\r\n\r\n public getValue(): string {\r\n return this._input.val() as string;\r\n }\r\n\r\n public getName(): string {\r\n return this._input.attr(\"name\");\r\n }\r\n\r\n public get isOpened(): boolean {\r\n return this._currentContext.hasClass(this._classMap.css.show);\r\n }\r\n\r\n public open(): void {\r\n this._currentContext.removeClass(this._classMap.css.hidden);\r\n this._currentContext.addClass(this._classMap.css.show);\r\n this._input.focus();\r\n }\r\n\r\n public close(): void {\r\n this._input.removeClass(this._classMap.css.show);\r\n }\r\n\r\n public show(): void {\r\n this._currentContext.show();\r\n }\r\n\r\n public hide(): void {\r\n this._currentContext.hide();\r\n }\r\n\r\n private bindEvents(): void {\r\n this._submitBtn.on(\"click\", e => {\r\n e.preventDefault();\r\n this.emit(\"submit\", this.getValue());\r\n });\r\n this._input.on(\"keypress\", e => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n this.emit(\"submit\", this.getValue());\r\n }\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n this._input = $(this._classMap.js.input, this._currentContext);\r\n this._submitBtn = $(this._classMap.js.submitBtn, this._currentContext);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { SearchTextbox } from \"front-end/components/search-textbox.component\";\r\n\r\nexport class QuickSearchService {\r\n private _currentContext: JQuery = $();\r\n\r\n private _searchTextBox: SearchTextbox = null;\r\n\r\n private _classMap = {\r\n js: {\r\n toggle: \".js-ina-quick-search__btn\"\r\n }\r\n };\r\n\r\n private _toggle: JQuery = null;\r\n\r\n private handleSubmit(): void {\r\n if(!this._searchTextBox.isOpened) {\r\n this._searchTextBox.open();\r\n } else {\r\n const searchForm = this._currentContext.get(0) as HTMLFormElement;\r\n searchForm.submit();\r\n }\r\n }\r\n\r\n private handleToggle(): void {\r\n if (!this._searchTextBox.isOpened) {\r\n this._toggle.addClass(\"hidden\");\r\n this._searchTextBox.open();\r\n }\r\n }\r\n\r\n private bindEvents(): void {\r\n this._toggle.on(\"click\", (e) =>\r\n {\r\n e.preventDefault();\r\n this.handleToggle();\r\n });\r\n this._searchTextBox.on(\"submit\")\r\n .subscribe(() => this.handleSubmit());\r\n }\r\n\r\n private parseContext(): void {\r\n this._toggle = $(this._classMap.js.toggle, this._currentContext);\r\n const searchTextBoxContext = $(SearchTextbox.SELECTOR, this._currentContext);\r\n const searchTextBox = new SearchTextbox();\r\n searchTextBox.init(searchTextBoxContext);\r\n this._searchTextBox = searchTextBox;\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","export class HomeSlickComponent {\r\n protected _currentContext: JQuery = $();\r\n\r\n private classMap = {\r\n js: {\r\n slickArrow: \".slick-arrow\"\r\n }\r\n };\r\n\r\n protected moduleOptions: JQuerySlickOptions = {};\r\n\r\n private _window: JQuery = $(window);\r\n\r\n public getSlick(): JQuerySlick {\r\n return this._currentContext.slick(\"getSlick\");\r\n }\r\n\r\n public destroy(): void {\r\n this._currentContext.slick(\"unslick\");\r\n }\r\n\r\n private isInitialized(): boolean {\r\n return this._currentContext.hasClass(\"slick-initialized\");\r\n }\r\n\r\n protected bindEvents(): void {\r\n this._window.on(\"orientationchange resize\", () => {\r\n if (!this.isInitialized()) {\r\n this._currentContext.slick(this.moduleOptions);\r\n } else {\r\n this._currentContext.slick(\"resize\");\r\n }\r\n });\r\n\r\n if (this.moduleOptions.autoplay) {\r\n $(this.classMap.js.slickArrow, this._currentContext).on({\r\n mouseenter: () => {\r\n this._currentContext.slick(\"slickPause\");\r\n },\r\n mouseleave: () => {\r\n this._currentContext.slick(\"slickPlay\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n public init(context: JQuery, options: JQuerySlickOptions): void {\r\n this._currentContext = context || this._currentContext;\r\n this.moduleOptions = $.extend({}, options);\r\n\r\n this._currentContext.slick(this.moduleOptions);\r\n\r\n this.bindEvents();\r\n }\r\n\r\n public static init(context: JQuery, options: JQuerySlickOptions): HomeSlickComponent {\r\n const slider = new HomeSlickComponent();\r\n slider.init(context, options);\r\n return slider;\r\n }\r\n}\r\n","export abstract class VideoPlayerFactoryBase {\r\n protected setupFrame(frameId: string): JQuery {\r\n const videoFrameElement = $(`#${frameId}`);\r\n const src = videoFrameElement.data(\"src\") as string;\r\n videoFrameElement.attr(\"src\", src);\r\n\r\n return videoFrameElement;\r\n }\r\n}\r\n","import { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\nexport abstract class VideoPlayerComponentBase {\r\n protected _isPlaying: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n public get isPlaying(): boolean {\r\n return this._isPlaying.value;\r\n }\r\n\r\n public playingState(): Observable {\r\n return this._isPlaying.asObservable();\r\n }\r\n}\r\n","import { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { VideoPlayerComponentBase } from \"front-end/components/video-box/factories/video-player.component.base\";\r\n\r\nexport class YoutubePlayerComponent extends VideoPlayerComponentBase implements IVideoPlayerComponent {\r\n private _internalPlayer: YT.Player = null;\r\n\r\n private _loopVideo: boolean;\r\n\r\n public play(): void {\r\n this._internalPlayer.playVideo();\r\n }\r\n\r\n public pause(): void {\r\n this._internalPlayer.pauseVideo();\r\n }\r\n\r\n public loop(state: boolean): void {\r\n this._loopVideo = state;\r\n }\r\n\r\n public mute(): void {\r\n this._internalPlayer.mute();\r\n }\r\n\r\n public destroy(): void {\r\n this._internalPlayer.destroy();\r\n }\r\n\r\n private bindEvents(): void {\r\n this._internalPlayer.addEventListener(\"onStateChange\", (event: YT.OnStateChangeEvent) => {\r\n this.setState(event.data);\r\n });\r\n }\r\n\r\n public init(internalPlayer: YT.Player): void {\r\n this._internalPlayer = internalPlayer;\r\n this.bindEvents();\r\n }\r\n\r\n private setState(state: YT.PlayerState): void {\r\n const isPlaying = state === YT.PlayerState.PLAYING;\r\n this._isPlaying.next(isPlaying);\r\n\r\n if(this._loopVideo) {\r\n if (state === YT.PlayerState.ENDED) {\r\n this.play();\r\n }\r\n }\r\n }\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { take, shareReplay } from \"rxjs/operators\";\r\n\r\nclass ScriptLoaderService {\r\n private _scriptsLoaders: { [url: string]: Observable } = {};\r\n\r\n private doLoadScript(url: string, onBeforeLoad: () => void = null): Observable {\r\n return new Observable((observer) => {\r\n if(onBeforeLoad) {\r\n onBeforeLoad();\r\n }\r\n\r\n const script: HTMLScriptElement = document.createElement(\"script\");\r\n\r\n script.onload = (event: Event): void => {\r\n observer.next(event);\r\n observer.complete();\r\n };\r\n\r\n script.onerror = (err): void => {\r\n observer.error(err);\r\n };\r\n\r\n script.src = url;\r\n\r\n const targetElement: HTMLElement = document.querySelector(\"head\");\r\n targetElement.appendChild(script);\r\n });\r\n }\r\n\r\n public loadScript(url: string, onBeforeLoad: () => void = null): Observable {\r\n let targetLoader = this._scriptsLoaders[url];\r\n\r\n if(!targetLoader) {\r\n targetLoader = this.doLoadScript(url, onBeforeLoad).pipe(take(1), shareReplay(1));\r\n this._scriptsLoaders[url] = targetLoader;\r\n }\r\n\r\n return targetLoader;\r\n }\r\n}\r\n\r\nexport const scriptLoaderService = new ScriptLoaderService();\r\n","import { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { IVideoPlayerFactory } from \"front-end/components/video-box/factories/video-player.factory\";\r\nimport { VideoPlayerFactoryBase } from \"front-end/components/video-box/factories/video-player.factory.base\";\r\nimport { YoutubePlayerComponent } from \"front-end/components/video-box/factories/youtube/youtube-player.component\";\r\nimport { scriptLoaderService } from \"front-end/services/scripts-loader.service\";\r\nimport { BehaviorSubject, filter, mergeMap, Observable, Subject } from \"rxjs\";\r\n\r\nclass YoutubeVideoPlayerFactory extends VideoPlayerFactoryBase implements IVideoPlayerFactory {\r\n private _apiReadySubject: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n public constructor() {\r\n window.onYouTubePlayerAPIReady = (): void => {\r\n this._apiReadySubject.next(true);\r\n };\r\n\r\n super();\r\n }\r\n\r\n public createPlayer(frameId: string): Observable {\r\n const videoFrameElement = this.setupFrame(frameId);\r\n\r\n return scriptLoaderService.loadScript(\"https://www.youtube.com/player_api\")\r\n .pipe(\r\n mergeMap(() => this._apiReadySubject),\r\n filter(isApiReady => isApiReady),\r\n mergeMap(() => {\r\n const player = new YoutubePlayerComponent();\r\n\r\n const playerReadySubject = new Subject();\r\n\r\n const internalPlayer = new YT.Player(videoFrameElement.attr(\"id\"), {\r\n events: {\r\n onReady: (): void => {\r\n player.init(internalPlayer);\r\n playerReadySubject.next(player);\r\n playerReadySubject.complete();\r\n }\r\n }\r\n });\r\n\r\n return playerReadySubject.asObservable();\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport const youtubeVideoPlayerFactory = new YoutubeVideoPlayerFactory();\r\n","import { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { VideoPlayerComponentBase } from \"front-end/components/video-box/factories/video-player.component.base\";\r\nimport * as Vimeo from \"vimeo__player\";\r\n\r\nexport class VimeoPlayerComponent extends VideoPlayerComponentBase implements IVideoPlayerComponent {\r\n private _internalPlayer: Vimeo.Player = null;\r\n\r\n public play(): void {\r\n void this._internalPlayer.play();\r\n }\r\n\r\n public pause(): void {\r\n void this._internalPlayer.pause();\r\n }\r\n\r\n public loop(state: boolean): void {\r\n void this._internalPlayer.setLoop(state);\r\n }\r\n\r\n public mute(): void {\r\n void this._internalPlayer.setVolume(0);\r\n }\r\n\r\n public destroy(): void {\r\n void this._internalPlayer.destroy();\r\n }\r\n\r\n private bindEvents(): void {\r\n this._internalPlayer.on(\"play\", () => this.setState(true));\r\n this._internalPlayer.on(\"pause\", () => this.setState(false));\r\n }\r\n\r\n public init(internalPlayer: Vimeo.Player): void {\r\n this._internalPlayer = internalPlayer;\r\n this.bindEvents();\r\n }\r\n\r\n private setState(isPlaying: boolean): void {\r\n this._isPlaying.next(isPlaying);\r\n }\r\n}\r\n","import { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { IVideoPlayerFactory } from \"front-end/components/video-box/factories/video-player.factory\";\r\nimport { VideoPlayerFactoryBase } from \"front-end/components/video-box/factories/video-player.factory.base\";\r\nimport { VimeoPlayerComponent } from \"front-end/components/video-box/factories/vimeo/vimeo-player.component\";\r\nimport { scriptLoaderService } from \"front-end/services/scripts-loader.service\";\r\nimport { mergeMap, Observable, Subject } from \"rxjs\";\r\nimport * as Vimeo from \"vimeo__player\";\r\n\r\nclass VimeoVideoPlayerFactory extends VideoPlayerFactoryBase implements IVideoPlayerFactory {\r\n public createPlayer(frameId: string): Observable {\r\n const videoFrameElement = this.setupFrame(frameId);\r\n\r\n return scriptLoaderService.loadScript(\"https://player.vimeo.com/api/player.js\")\r\n .pipe(\r\n mergeMap(() => {\r\n const player = new VimeoPlayerComponent();\r\n\r\n const playerReadySubject = new Subject();\r\n\r\n // eslint-disable-next-line\r\n const internalPlayer = new (window).Vimeo.Player(videoFrameElement.attr(\"id\")) as Vimeo.Player;\r\n\r\n internalPlayer.ready()\r\n .then(() => {\r\n player.init(internalPlayer);\r\n playerReadySubject.next(player);\r\n playerReadySubject.complete();\r\n })\r\n .catch(() => {\r\n throw new Error(`Failed to initialize Vimeo player ${frameId}`);\r\n });\r\n\r\n return playerReadySubject.asObservable();\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport const vimeoVideoPlayerFactory = new VimeoVideoPlayerFactory();\r\n","import { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { VideoPlayerComponentBase } from \"front-end/components/video-box/factories/video-player.component.base\";\r\n\r\nexport class UmbracoPlayerComponent extends VideoPlayerComponentBase implements IVideoPlayerComponent {\r\n private _internalPlayer: HTMLVideoElement = null;\r\n\r\n public play(): void {\r\n void this._internalPlayer.play();\r\n }\r\n\r\n public pause(): void {\r\n void this._internalPlayer.pause();\r\n }\r\n\r\n public loop(state: boolean): void {\r\n this._internalPlayer.loop = state;\r\n }\r\n\r\n public mute(): void {\r\n this._internalPlayer.muted = true;\r\n }\r\n\r\n public destroy(): void {\r\n this._internalPlayer.pause();\r\n this._internalPlayer.currentTime = 0;\r\n }\r\n\r\n private bindEvents(): void {\r\n $(this._internalPlayer)\r\n .on(\"playing\", () => this.setState(true))\r\n .on(\"pause\", () => this.setState(false));\r\n }\r\n\r\n public init(internalPlayer: HTMLVideoElement): void {\r\n this._internalPlayer = internalPlayer;\r\n this.bindEvents();\r\n }\r\n\r\n private setState(isPlaying: boolean): void {\r\n this._isPlaying.next(isPlaying);\r\n }\r\n}\r\n","import { UmbracoPlayerComponent } from \"front-end/components/video-box/factories/umbraco/umbraco-player.component\";\r\nimport { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { IVideoPlayerFactory } from \"front-end/components/video-box/factories/video-player.factory\";\r\nimport { VideoPlayerFactoryBase } from \"front-end/components/video-box/factories/video-player.factory.base\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\nclass UmbracoVideoPlayerFactory extends VideoPlayerFactoryBase implements IVideoPlayerFactory {\r\n public createPlayer(frameId: string): Observable {\r\n const videoFrameElement = this.setupFrame(frameId).get(0) as HTMLVideoElement;\r\n\r\n const player = new UmbracoPlayerComponent();\r\n player.init(videoFrameElement);\r\n\r\n return of(player);\r\n }\r\n}\r\n\r\nexport const umbracoVideoPlayerFactory = new UmbracoVideoPlayerFactory();\r\n","import { VideoProviderType } from \"front-end/components/video-box/types/video-provider.type\";\r\nimport { youtubeVideoPlayerFactory } from \"front-end/components/video-box/factories/youtube/youtube-video-player.factory\";\r\nimport { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { IVideoPlayerComponent } from \"front-end/components/video-box/factories/video-player.component\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { IVideoPlayerFactory } from \"front-end/components/video-box/factories/video-player.factory\";\r\nimport { vimeoVideoPlayerFactory } from \"front-end/components/video-box/factories/vimeo/vimeo-video-player.factory\";\r\nimport { umbracoVideoPlayerFactory } from \"front-end/components/video-box/factories/umbraco/umbraco-video-player.factory\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class VideoBoxComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR = \".js-video-box\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n css: {\r\n currentContext: {\r\n show: \"show\",\r\n hide: \"hide\"\r\n },\r\n playButton: {\r\n play: \"play\",\r\n pause: \"pause\"\r\n }\r\n },\r\n js: {\r\n playButton: `${VideoBoxComponent.SELECTOR}__play-button`\r\n }\r\n };\r\n\r\n private _playButton: JQuery = $();\r\n\r\n private _videoPlayerFactory: IVideoPlayerFactory = null;\r\n private _videoPlayer: IVideoPlayerComponent = null;\r\n\r\n private _onPlayingStateChanged: Subscription = null;\r\n private _playerCreated: Subscription = null;\r\n\r\n private get videoFrameId() : string {\r\n return this._currentContext.attr(\"data-video-frame-id\");\r\n }\r\n\r\n private get providerType() : VideoProviderType {\r\n return this._currentContext.data(\"provider\") as VideoProviderType;\r\n }\r\n\r\n private resolveVideoProvider(): IVideoPlayerFactory {\r\n switch (this.providerType) {\r\n case \"youtube\":\r\n return youtubeVideoPlayerFactory;\r\n case \"vimeo\":\r\n return vimeoVideoPlayerFactory;\r\n case \"umbraco\":\r\n return umbracoVideoPlayerFactory;\r\n }\r\n }\r\n\r\n public playVideo(): void {\r\n this._videoPlayer.play();\r\n }\r\n\r\n public pauseVideo(): void {\r\n this._videoPlayer.pause();\r\n }\r\n\r\n private handlePlayButtonClick(): void {\r\n if(this._videoPlayer.isPlaying) {\r\n this._videoPlayer.pause();\r\n } else {\r\n this._videoPlayer.play();\r\n }\r\n }\r\n\r\n private handlePlayingState(isPlaying: boolean): void {\r\n if(isPlaying) {\r\n this._playButton\r\n .addClass(this._classMap.css.playButton.pause)\r\n .removeClass(this._classMap.css.playButton.play);\r\n } else {\r\n this._playButton\r\n .addClass(this._classMap.css.playButton.play)\r\n .removeClass(this._classMap.css.playButton.pause);\r\n }\r\n }\r\n\r\n private bindEvents(): void {\r\n this._playButton\r\n .on(\"click\", () => this.handlePlayButtonClick());\r\n\r\n this._onPlayingStateChanged = this._videoPlayer.playingState()\r\n .subscribe(isPlaying => this.handlePlayingState(isPlaying));\r\n }\r\n\r\n private parseContext(): void {\r\n this._playButton = $(this._classMap.js.playButton, this._currentContext);\r\n }\r\n\r\n public show(): void {\r\n this._currentContext\r\n .addClass(this._classMap.css.currentContext.show)\r\n .removeClass(this._classMap.css.currentContext.hide);\r\n this.playVideo();\r\n }\r\n\r\n public hide(): void {\r\n this._currentContext\r\n .addClass(this._classMap.css.currentContext.hide)\r\n .removeClass(this._classMap.css.currentContext.show);\r\n this.pauseVideo();\r\n }\r\n\r\n public destroy(): void {\r\n if (this._videoPlayer) {\r\n this._videoPlayer.destroy();\r\n }\r\n\r\n if (this._onPlayingStateChanged) {\r\n this._onPlayingStateChanged.unsubscribe();\r\n }\r\n\r\n if (this._playerCreated) {\r\n this._playerCreated.unsubscribe();\r\n }\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n this.parseContext();\r\n\r\n this._videoPlayerFactory = this.resolveVideoProvider();\r\n\r\n this._playerCreated = this._videoPlayerFactory.createPlayer(this.videoFrameId)\r\n .subscribe(player => {\r\n this._videoPlayer = player;\r\n this._videoPlayer.mute();\r\n this._videoPlayer.loop(true);\r\n this.bindEvents();\r\n this.emit(\"ready\");\r\n });\r\n }\r\n}\r\n","import { DeviceType } from \"core/features/device/enums/device-type.enum\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\n\r\nclass DeviceService {\r\n private static MOBILE_DEVICE_WIDTH: number = 767.98;\r\n private static TABLET_DEVICE_WIDTH: number = 991.98;\r\n\r\n private _window: JQuery;\r\n\r\n private _deviceType: BehaviorSubject;\r\n\r\n public get deviceType(): Subject {\r\n return this._deviceType;\r\n }\r\n\r\n public checkDeviceType(): DeviceType {\r\n if ($(window).get(0).matchMedia(`(max-width: ${DeviceService.MOBILE_DEVICE_WIDTH}px)`).matches) {\r\n return DeviceType.Mobile;\r\n } else if ($(window).get(0).matchMedia(`(max-width: ${DeviceService.TABLET_DEVICE_WIDTH}px)`).matches) {\r\n return DeviceType.Tablet;\r\n } else {\r\n return DeviceType.Desktop;\r\n }\r\n }\r\n\r\n private handleResize(): void {\r\n this._deviceType.next(this.checkDeviceType());\r\n }\r\n\r\n private bindEvents(): void {\r\n this._window.on(\"orientationchange resize\", () => this.handleResize());\r\n }\r\n\r\n private initContext(): void {\r\n this._window = $(window);\r\n\r\n this._deviceType = new BehaviorSubject(this.checkDeviceType());\r\n }\r\n\r\n public init(): void {\r\n this.initContext();\r\n this.bindEvents();\r\n }\r\n}\r\n\r\nexport const deviceService = new DeviceService();\r\n","import { VideoBoxComponent } from \"front-end/components/video-box/video-box.component\";\r\nimport { deviceService } from \"core/features/device/device.service\";\r\nimport { DeviceType } from \"core/features/device/enums/device-type.enum\";\r\n\r\nexport class VideoBoxService {\r\n private _currentContext: JQuery = $();\r\n\r\n private _videoBox: VideoBoxComponent = null;\r\n\r\n private handleDeviceUpdate(isMobile: boolean): void {\r\n if(this._videoBox) {\r\n if(isMobile) {\r\n this._videoBox.hide();\r\n } else {\r\n this._videoBox.show();\r\n }\r\n } else if(!isMobile) {\r\n this.parseContext();\r\n }\r\n }\r\n\r\n private bindEvents(): void {\r\n deviceService.deviceType\r\n .subscribe((deviceType: DeviceType) => this.handleDeviceUpdate(deviceType === DeviceType.Mobile));\r\n }\r\n\r\n private parseContext(): void {\r\n const videoBox = $(VideoBoxComponent.SELECTOR, this._currentContext);\r\n this._videoBox = new VideoBoxComponent();\r\n this._videoBox.on(\"ready\")\r\n .subscribe(() => this._videoBox.playVideo());\r\n this._videoBox.init(videoBox);\r\n }\r\n\r\n public destroy(): void {\r\n if (this._videoBox) {\r\n this._videoBox.destroy();\r\n }\r\n }\r\n\r\n public init = (context: JQuery): void => {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.bindEvents();\r\n };\r\n\r\n public static init(context: JQuery): VideoBoxService {\r\n const service = new VideoBoxService();\r\n service.init(context);\r\n\r\n return service;\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class EmergencyMessageComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR = \".js-ina-emergency-message\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _body: JQuery = null;\r\n\r\n private _closeBtn: JQuery = null;\r\n\r\n private _title: JQuery = null;\r\n private _link: JQuery = null;\r\n\r\n private _classMap = {\r\n css: {\r\n hide: \"hide\",\r\n bodyOverflow: \"body-overflow\"\r\n },\r\n js: {\r\n closeBtn: `${EmergencyMessageComponent.SELECTOR}__close-button`,\r\n title: `${EmergencyMessageComponent.SELECTOR}__title`,\r\n link: `${EmergencyMessageComponent.SELECTOR}__cta-link`\r\n }\r\n };\r\n\r\n public show(): void {\r\n this._body.addClass(this._classMap.css.bodyOverflow);\r\n this._currentContext.removeClass(this._classMap.css.hide);\r\n }\r\n\r\n public hide(): void {\r\n this._body.removeClass(this._classMap.css.bodyOverflow);\r\n this._currentContext.addClass(this._classMap.css.hide);\r\n }\r\n\r\n private get title(): string {\r\n return this._title.text()?.trim() ?? \"\";\r\n }\r\n\r\n private get link(): string {\r\n return this._link.attr(\"href\")?.trim() ?? \"\";\r\n }\r\n\r\n public getHash(): string {\r\n return `${this.title}${this.link}`.getHash();\r\n }\r\n\r\n private bindEvents(): void {\r\n this._closeBtn.on(\"click\", e => {\r\n e.preventDefault();\r\n this.emit(\"close\");\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n this._title = $(this._classMap.js.title, this._currentContext);\r\n this._link = $(this._classMap.js.link, this._currentContext);\r\n this._closeBtn = $(this._classMap.js.closeBtn, this._currentContext);\r\n this._body = $(\"body\");\r\n }\r\n\r\n public init(currentContext: JQuery): void {\r\n this._currentContext = currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { EmergencyMessageComponent } from \"front-end/components/emergency-message/emergency-message.component\";\r\n\r\nexport class EmergencyMessageService {\r\n private _currentContext: JQuery = $();\r\n\r\n private LOCAL_STORAGE_EMERGENCY_MESSAGE_HASH: string = \"EmergencyMeccage.Hash\";\r\n\r\n private _emergencyMessageComponent: EmergencyMessageComponent = null;\r\n\r\n private handleClose(): void {\r\n this._emergencyMessageComponent.hide();\r\n localStorage.setItem(this.LOCAL_STORAGE_EMERGENCY_MESSAGE_HASH, this._emergencyMessageComponent.getHash());\r\n }\r\n\r\n private bindEvents(): void {\r\n const emergencyMessageStoredHashValue = localStorage.getItem(this.LOCAL_STORAGE_EMERGENCY_MESSAGE_HASH);\r\n const emergencyMessageCurrentHashValue = this._emergencyMessageComponent.getHash();\r\n\r\n if (emergencyMessageStoredHashValue !== emergencyMessageCurrentHashValue) {\r\n this._emergencyMessageComponent.show();\r\n }\r\n\r\n this._emergencyMessageComponent.on(\"close\")\r\n .subscribe(() => this.handleClose());\r\n }\r\n\r\n private clearEmergencyMessageStorage(): void {\r\n localStorage.removeItem(this.LOCAL_STORAGE_EMERGENCY_MESSAGE_HASH);\r\n }\r\n\r\n private parseContext(): void {\r\n const emergencyMessageContext = $(EmergencyMessageComponent.SELECTOR, this._currentContext);\r\n\r\n const emergencyMessageComponent = new EmergencyMessageComponent();\r\n emergencyMessageComponent.init(emergencyMessageContext);\r\n this._emergencyMessageComponent = emergencyMessageComponent;\r\n }\r\n\r\n public init(context: JQuery, isEmergencyMessageActive: boolean): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n if (!isEmergencyMessageActive) {\r\n this.clearEmergencyMessageStorage();\r\n return;\r\n }\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class PageFooterComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR: string = \".js-ina-footer\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n public updateStyles(): void {\r\n const navigation = $(\".js-ina-navigation\");\r\n if (navigation.hasClass(\"show\"))\r\n {\r\n this._currentContext.css(\"z-index\", \"-1\");\r\n }\r\n else {\r\n this._currentContext.css(\"z-index\", \"0\");\r\n }\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class PageHeaderComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR: string = \".js-ina-header\";\r\n\r\n private _classMap = {\r\n js: {\r\n icons: \".js-ina-header__icons\",\r\n burger: \".js-ina-header__burger\",\r\n navigation: \".js-ina-navigation\"\r\n }\r\n };\r\n\r\n private _currentContext: JQuery = $();\r\n private _isMobile: boolean;\r\n private _window: JQuery = $(window);\r\n\r\n private _pageScroll = (): void => {\r\n $(\"body\").css(\"--page-scroll\", this._window[0].scrollY.toString() + \"px\");\r\n };\r\n\r\n public set IsMobile(isMobile: boolean) {\r\n this._isMobile = isMobile;\r\n }\r\n\r\n public updateStyles(): void {\r\n let iconsHeight = \"0\";\r\n const headerIconsHeight = $(this._classMap.js.icons, this._currentContext).outerHeight();\r\n if(headerIconsHeight)\r\n {\r\n iconsHeight = headerIconsHeight.toFixed(0);\r\n }\r\n $(\"body\").css(\"--header-icons-height\", iconsHeight + \"px\");\r\n }\r\n\r\n private initStyles(): void {\r\n this.setHeaderHeight();\r\n this._pageScroll();\r\n }\r\n\r\n private setHeaderHeight(): void {\r\n const headerHeight = this._currentContext.outerHeight().toFixed(0);\r\n $(\"body\").css(\"--header-height\", headerHeight.toString() + \"px\");\r\n }\r\n\r\n public getHeight(): number {\r\n return this._currentContext.height();\r\n }\r\n\r\n private bindEvents(): void {\r\n this._window.on(\"scroll\", this._pageScroll);\r\n\r\n const burger = $(this._classMap.js.burger, this._currentContext);\r\n\r\n burger.on(\"click\", () => {\r\n burger.toggleClass(\"open\");\r\n\r\n const navigationContext = $(this._classMap.js.navigation);\r\n navigationContext.toggleClass(\"hidden\");\r\n navigationContext.toggleClass(\"show\");\r\n\r\n if (this._isMobile) {\r\n this.emit(\"menu/click\");\r\n\r\n this._window.off(\"scroll\", this._pageScroll);\r\n const scrollPositionValue = Number($(\"body\").css(\"--page-scroll\").slice(0, -2));\r\n\r\n if (burger.hasClass(\"open\")) {\r\n $(\"body\").addClass(\"body-overflow\");\r\n }\r\n else {\r\n $(\"body\").removeClass(\"body-overflow\");\r\n const scrollPosition = scrollPositionValue;\r\n this._window[0].scrollTo(0, scrollPosition);\r\n this._window.on(\"scroll\", this._pageScroll);\r\n }\r\n }\r\n });\r\n\r\n this._window.on(\"load\", () => {\r\n this.setHeaderHeight();\r\n });\r\n }\r\n\r\n public init($context: JQuery): void {\r\n this._currentContext = $context || this._currentContext;\r\n\r\n this.initStyles();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { deviceService } from \"core\";\r\nimport { DeviceType } from \"core/features/device/enums/device-type.enum\";\r\nimport { PageFooterComponent } from \"front-end/components/page/page-footer.component\";\r\nimport { PageHeaderComponent } from \"front-end/components/page/page-header.component\";\r\n\r\nexport class PageService {\r\n private _currentContext: JQuery = $();\r\n\r\n private _pageHeader: PageHeaderComponent = null;\r\n private _pageFooter: PageFooterComponent = null;\r\n\r\n public scroll(target: JQuery): void {\r\n const targetTopOffset = target.offset()?.top;\r\n if (!targetTopOffset) {\r\n throw new Error(\"Offset was undefined\");\r\n }\r\n\r\n const additionalOffset = 20; // for better user experience\r\n\r\n $(\"html\").animate({\r\n scrollTop: targetTopOffset - this._pageHeader.getHeight() - additionalOffset\r\n }, 100);\r\n }\r\n\r\n private handleDeviceUpdate(isMobile: boolean): void {\r\n if (isMobile) {\r\n this._pageHeader.updateStyles();\r\n }\r\n this._pageHeader.IsMobile = isMobile;\r\n }\r\n\r\n private handleAnchors(): void {\r\n const anchor = window.location.hash;\r\n if (anchor) {\r\n const target = $(anchor);\r\n\r\n this.scroll(target);\r\n }\r\n }\r\n\r\n private parseContext(): void {\r\n const pageHeaderContext = $(PageHeaderComponent.SELECTOR, this._currentContext);\r\n this._pageHeader = new PageHeaderComponent();\r\n this._pageHeader.init(pageHeaderContext);\r\n\r\n const pageFooterContext = $(PageFooterComponent.SELECTOR, this._currentContext);\r\n this._pageFooter = new PageFooterComponent();\r\n this._pageFooter.init(pageFooterContext);\r\n }\r\n\r\n private bindEvents(): void {\r\n deviceService.deviceType\r\n .subscribe((deviceType: DeviceType) => this.handleDeviceUpdate(deviceType === DeviceType.Mobile));\r\n\r\n this._pageHeader.on(\"menu/click\").subscribe(() => this._pageFooter.updateStyles());\r\n\r\n $(\"a[href*='#']\").on(\"click\", () => {\r\n this.handleAnchors();\r\n });\r\n\r\n $(window).on(\"hashchange load\", () => {\r\n this.handleAnchors();\r\n });\r\n }\r\n\r\n public init(): void {\r\n this._currentContext = $(document);\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n this.handleAnchors();\r\n }\r\n}\r\n\r\nexport const pageService = new PageService();\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { IFilterParameterComponent } from \"./filter-parameter.component\";\r\nimport { FilterParameterModel } from \"./models/filter-parameter.model\";\r\n\r\nexport class FilterDropdownParameterComponent extends EventEmitterMixin(EmptyInstance) implements IFilterParameterComponent {\r\n public static SELECTOR: string = \".js-ina-filter-dropdown-parameter\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n js: {\r\n title: `${FilterDropdownParameterComponent.SELECTOR}__title`,\r\n option: `${FilterDropdownParameterComponent.SELECTOR}__option`,\r\n value: `${FilterDropdownParameterComponent.SELECTOR}__value`\r\n }\r\n };\r\n\r\n private _title: JQuery;\r\n private _options: JQuery;\r\n private _value: JQuery;\r\n\r\n public getName(): string {\r\n return this._value.attr(\"name\");\r\n }\r\n\r\n public setTitle(title: string): FilterDropdownParameterComponent {\r\n this._title.text(title);\r\n return this;\r\n }\r\n\r\n public reset(value?: string): FilterDropdownParameterComponent {\r\n if(!value) {\r\n const title = this._currentContext.data().placeholder as string;\r\n this.setValue(\"\").setTitle(title);\r\n } else {\r\n this.setValue(value).setTitle(value);\r\n }\r\n return this;\r\n }\r\n\r\n public getValue(): string {\r\n return this._value.val() as string;\r\n }\r\n\r\n public getParam(): FilterParameterModel {\r\n return {\r\n name: this.getName(),\r\n sortOrder: this.sortOrder(),\r\n value: {\r\n name: this.stringifyValue(this.getValue()),\r\n data: this.getValue(),\r\n sortOrder: -1\r\n }\r\n };\r\n }\r\n\r\n public setValue(value: string): FilterDropdownParameterComponent {\r\n this._value.val(value);\r\n this.emit(\"changed\", this.getParam());\r\n\r\n return this;\r\n }\r\n\r\n public isEmpty(): boolean {\r\n return !this.getValue();\r\n }\r\n\r\n public stringifyValue(value: string): string {\r\n let str = \"\";\r\n this._options.each((index, entry) => {\r\n const option = $(entry);\r\n const data = option.data();\r\n if (`${data.value as string}` === value) {\r\n str = data.displayName as string;\r\n }\r\n });\r\n\r\n return str;\r\n }\r\n\r\n public sortOrder(): number {\r\n return this._currentContext.data().sortOrder as number;\r\n }\r\n\r\n public setInitialValue(): void {\r\n const initialValue = this._value.val() as string;\r\n if (initialValue !== undefined && initialValue !== \"\") {\r\n this.setValue(initialValue).setTitle(initialValue);\r\n }\r\n }\r\n\r\n private handleOptionClick($option: JQuery): void {\r\n const value = $option.data().value as string;\r\n this.setValue(value).setTitle(value);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public removeValue(value: string): void {\r\n this.reset();\r\n }\r\n\r\n private bindEvents(): void {\r\n this._options.on(\"click\", (e) => {\r\n const $option = $(e.target);\r\n this.handleOptionClick($option);\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n this._title = $(this._classMap.js.title, this._currentContext);\r\n this._options = $(this._classMap.js.option, this._currentContext);\r\n this._value = $(this._classMap.js.value, this._currentContext);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n // this.setInitialValue();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { IFilterParameterComponent } from \"./filter-parameter.component\";\r\nimport { FilterParameterModel } from \"./models/filter-parameter.model\";\r\n\r\nexport class FilterMultichoiceListParameterComponent extends EventEmitterMixin(EmptyInstance) implements IFilterParameterComponent {\r\n public static SELECTOR: string = \".js-ina-filter-multichoice-list-parameter\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n js: {\r\n option: `${FilterMultichoiceListParameterComponent.SELECTOR}__option`,\r\n value: `${FilterMultichoiceListParameterComponent.SELECTOR}__value`\r\n }\r\n };\r\n\r\n private _options: JQuery;\r\n private _value: JQuery;\r\n\r\n public getName(): string {\r\n return this._value.attr(\"name\");\r\n }\r\n\r\n public reset(value?: string): IFilterParameterComponent {\r\n if(!value) {\r\n this.setValue([]);\r\n this._options.each((index: number, element: HTMLInputElement) => {\r\n element.checked = false;\r\n });\r\n } else {\r\n const arrayVal = this.fromStringValue(value);\r\n this.setValue(arrayVal);\r\n }\r\n return this;\r\n }\r\n\r\n public getValue(): Array {\r\n const valueStr = this._value.val() as string;\r\n const value = this.fromStringValue(valueStr);\r\n return value;\r\n }\r\n\r\n public getParam(): FilterParameterModel {\r\n return {\r\n name: this.getName(),\r\n sortOrder: this.sortOrder(),\r\n value: this.getValue().map(value => {\r\n return {\r\n name: this.stringifyValue(value),\r\n data: value,\r\n sortOrder: this._options.filterByData(\"value\", value).data(\"sortOrder\") as number\r\n };\r\n })\r\n };\r\n }\r\n\r\n public setValue(value: Array): FilterMultichoiceListParameterComponent {\r\n const valueStr = this.toStringValue(value);\r\n this._value.val(valueStr);\r\n this._options.each((index, entry) => {\r\n const option = $(entry);\r\n const data = option.data();\r\n const optionValue = `${data.value as string}`;\r\n\r\n const optionIndex = value.indexOf(optionValue);\r\n if (optionIndex > -1) {\r\n (option.get(0) as HTMLInputElement).checked = true;\r\n } else {\r\n (option.get(0) as HTMLInputElement).checked = false;\r\n }\r\n });\r\n\r\n this.emit(\"changed\", this.getParam());\r\n\r\n return this;\r\n }\r\n\r\n public isEmpty(): boolean {\r\n return !this.getValue().length;\r\n }\r\n\r\n public stringifyValue(value: string): string {\r\n let str = \"\";\r\n this._options.each((index, entry) => {\r\n const option = $(entry);\r\n const data = option.data();\r\n if (`${data.value as string}` === value) {\r\n str = data.displayName as string;\r\n }\r\n });\r\n\r\n return str;\r\n }\r\n\r\n public sortOrder(): number {\r\n return this._currentContext.data().sortOrder as number;\r\n }\r\n\r\n public setInitialValue(): void {\r\n const initialValueStr = this._value.val() as string;\r\n if (initialValueStr !== undefined && initialValueStr !== \"\") {\r\n const initialValue = this.fromStringValue(initialValueStr);\r\n this.setValue(initialValue);\r\n }\r\n }\r\n\r\n private toStringValue(value: Array): string {\r\n return value.join(\",\");\r\n }\r\n\r\n private fromStringValue(valueStr: string): Array {\r\n return valueStr ? valueStr.split(\",\") : [];\r\n }\r\n\r\n private handleOptionClick(option: JQuery): void {\r\n const optionValue = `${option.data().value as string}`;\r\n const controlValue = this.getValue();\r\n\r\n if ((option.get(0) as HTMLInputElement).checked) {\r\n controlValue.push(optionValue);\r\n } else {\r\n const index = controlValue.indexOf(optionValue);\r\n if (index > -1) {\r\n controlValue.splice(index, 1);\r\n }\r\n }\r\n\r\n this.setValue(controlValue);\r\n }\r\n\r\n public removeValue(value: string): void {\r\n const controlValue = this.getValue();\r\n const index = controlValue.indexOf(value);\r\n if (index > -1) {\r\n controlValue.splice(index, 1);\r\n }\r\n\r\n this.setValue(controlValue);\r\n }\r\n\r\n private bindEvents(): void {\r\n this._options.on(\"click\", e => {\r\n const option = $(e.target);\r\n this.handleOptionClick(option);\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n this._options = $(this._classMap.js.option, this._currentContext);\r\n this._value = $(this._classMap.js.value, this._currentContext);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n // this.setInitialValue();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { FilterParameterModel } from \"../filter-parameters/models/filter-parameter.model\";\r\nimport { PanelParameterModel } from \"./models/panel-parameter.model\";\r\n\r\nexport class ParametersPanelComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR: string = \".js-ina-parameters-panel\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _parameters: Array = [];\r\n\r\n public syncParameters(filterParameter: FilterParameterModel): void {\r\n const name = filterParameter.name;\r\n let panelParameter: PanelParameterModel = this._parameters.find(x => x.name === name);\r\n if (!panelParameter) {\r\n panelParameter = {\r\n name: name,\r\n sortOrder: filterParameter.sortOrder,\r\n values: []\r\n };\r\n\r\n this._parameters.push(panelParameter);\r\n this._parameters = this._parameters.sort((a, b) => a.sortOrder - b.sortOrder);\r\n }\r\n\r\n const valuesArray = Array.isArray(filterParameter.value) ? filterParameter.value : filterParameter.value.data === \"\" ? [] : [filterParameter.value];\r\n\r\n // insert values\r\n const valuesToInsert = valuesArray.filter(v => panelParameter.values.findIndex(p => p.data === v.data) === -1);\r\n\r\n valuesToInsert.forEach(value => {\r\n panelParameter.values.push({\r\n data: value.data,\r\n sortOrder: value.sortOrder,\r\n element: this.createParameterElement(name, value.name, value.data)\r\n });\r\n });\r\n\r\n panelParameter.values = panelParameter.values.sort((a, b) => a.sortOrder - b.sortOrder);\r\n\r\n let index = 0;\r\n this._parameters.forEach(parameter => {\r\n parameter.values.forEach(value => {\r\n const $child = this._currentContext.children().eq(index);\r\n if ($child !== value.element) {\r\n $child.before(value.element);\r\n }\r\n index++;\r\n });\r\n });\r\n\r\n // remove values\r\n const valuesToRemove = panelParameter.values.filter(p => valuesArray.findIndex(v => v.data === p.data) === -1);\r\n\r\n valuesToRemove.forEach(param => {\r\n param.element.remove();\r\n\r\n const paramIndex = panelParameter.values.indexOf(param);\r\n if (paramIndex > -1) {\r\n panelParameter.values.splice(paramIndex, 1);\r\n }\r\n });\r\n }\r\n\r\n private createParameterElement(group: string, name: string, value: string): JQuery {\r\n const nameElement = $.el(\"span\");\r\n nameElement.text(name);\r\n const button = $.el(\"button\", { class: \"ina-filter__close-btn\", type: \"button\" });\r\n button.on(\"click\", e => {\r\n e.preventDefault();\r\n this.emit(\"params/remove\", {\r\n group: group,\r\n value: value\r\n });\r\n });\r\n\r\n const param = $.el(\"li\", { class: \"ina-filter__item\" }).append(nameElement, button);\r\n\r\n return param;\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n }\r\n}\r\n","\r\nimport { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { FilterDropdownParameterComponent } from \"./components/filter-parameters/filter-dropdown-parameter.component\";\r\nimport { FilterMultichoiceListParameterComponent } from \"./components/filter-parameters/filter-multichoice-list.parameter.component\";\r\nimport { IFilterParameterComponent } from \"./components/filter-parameters/filter-parameter.component\";\r\nimport { FilterParameterModel } from \"./components/filter-parameters/models/filter-parameter.model\";\r\nimport { ParametersPanelComponent } from \"./components/parameters-panel/parameters-panel.component\";\r\nimport { SearchFilterModel } from \"./models/search-filter.model\";\r\n\r\nexport class NewsFilterComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR: string = \".js-ina-filter\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n css: {\r\n show: \"show\"\r\n },\r\n js: {\r\n toggle: `${NewsFilterComponent.SELECTOR}__toggle`,\r\n content: `${NewsFilterComponent.SELECTOR}__content`,\r\n clearBtn: `${NewsFilterComponent.SELECTOR}__clear-btn`,\r\n cancelBtn: `${NewsFilterComponent.SELECTOR}__cancel-btn`,\r\n submitBtn: `${NewsFilterComponent.SELECTOR}__submit-btn`\r\n }\r\n };\r\n\r\n private _toggle: JQuery;\r\n private _content: JQuery;\r\n private _clearBtn: JQuery;\r\n private _cancelBtn: JQuery;\r\n private _submitBtn: JQuery;\r\n\r\n protected _params: { [name: string]: IFilterParameterComponent } = {};\r\n private _paramsPanel: ParametersPanelComponent = null;\r\n\r\n private _isVisible: boolean = false;\r\n\r\n private setInitialState(): void {\r\n this.checkClearBtnVisibility();\r\n Object.keys(this._params).forEach(key => this.displayParamsOnPanel(this._params[key].getParam()));\r\n }\r\n\r\n protected toggleFilter(): void {\r\n this._isVisible = !this._isVisible;\r\n this._currentContext.toggleClass(this._classMap.css.show);\r\n this._content.toggleClass(this._classMap.css.show);\r\n this._toggle.attr(\"aria-expanded\", String(this._isVisible));\r\n }\r\n\r\n private toggleClearBtn(state: boolean): void {\r\n this._clearBtn.toggle(state);\r\n }\r\n\r\n private checkClearBtnVisibility(): void {\r\n const isEmptyFilter = Object.keys(this._params).every(key => this._params[key].isEmpty());\r\n this.toggleClearBtn(!isEmptyFilter);\r\n }\r\n\r\n private displayParamsOnPanel(data: FilterParameterModel): void {\r\n this._paramsPanel.syncParameters(data);\r\n }\r\n\r\n private handleClearBtnClick(): void {\r\n if (this._isVisible) {\r\n Object.keys(this._params).forEach(key => this._params[key].reset());\r\n this.toggleClearBtn(false);\r\n } else {\r\n const filter: SearchFilterModel = {};\r\n Object.keys(this._params).forEach(key => filter[key] = \"\");\r\n this.emit(\"submit\", filter);\r\n }\r\n }\r\n\r\n private handleCancelButtonClick(): void {\r\n const filter: SearchFilterModel = Object.fromEntries(new URLSearchParams(location.search));\r\n Object.keys(this._params).forEach(key => this._params[key].reset(String(filter[key] ?? \"\")));\r\n this.toggleFilter();\r\n }\r\n\r\n private handleSubmitButtonClick(): void {\r\n const filter: SearchFilterModel = {};\r\n Object.keys(this._params).forEach(key => filter[key] = this._params[key].getValue());\r\n this.emit(\"submit\", filter);\r\n }\r\n\r\n private handleFilterChanges(data: FilterParameterModel): void {\r\n this.checkClearBtnVisibility();\r\n this.displayParamsOnPanel(data);\r\n }\r\n\r\n private handleParamValueRemoval(): void {\r\n if (!this._isVisible) {\r\n const filter: SearchFilterModel = {};\r\n Object.keys(this._params).forEach(key => filter[key] = this._params[key].getValue());\r\n this.emit(\"submit\", filter);\r\n }\r\n }\r\n\r\n private bindEvents(): void {\r\n this._toggle.on(\"click\", () => this.toggleFilter());\r\n this._clearBtn.on(\"click\", () => this.handleClearBtnClick());\r\n this._cancelBtn.on(\"click\", () => this.handleCancelButtonClick());\r\n this._submitBtn.on(\"click\", () => this.handleSubmitButtonClick());\r\n\r\n Object.keys(this._params)\r\n .forEach(key => this._params[key]\r\n .on(\"changed\")\r\n .subscribe((data: FilterParameterModel) => this.handleFilterChanges(data)));\r\n\r\n this._paramsPanel.on(\"params/remove\").subscribe((param: {group: string, value: string}) => {\r\n this._params[param.group].removeValue(param.value);\r\n this.handleParamValueRemoval();\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n this._toggle = $(this._classMap.js.toggle, this._currentContext);\r\n this._content = $(this._classMap.js.content, this._currentContext);\r\n this._clearBtn = $(this._classMap.js.clearBtn, this._currentContext);\r\n this._cancelBtn = $(this._classMap.js.cancelBtn, this._currentContext);\r\n this._submitBtn = $(this._classMap.js.submitBtn, this._currentContext);\r\n\r\n const paramsPanel = $(ParametersPanelComponent.SELECTOR, this._currentContext);\r\n this._paramsPanel = new ParametersPanelComponent();\r\n this._paramsPanel.init(paramsPanel);\r\n\r\n const multiChoices = $(FilterMultichoiceListParameterComponent.SELECTOR, this._currentContext);\r\n multiChoices.each((index, entry) => {\r\n const multiChoiceContext = $(entry);\r\n const multiChoice = new FilterMultichoiceListParameterComponent();\r\n multiChoice.init(multiChoiceContext);\r\n this._params[multiChoice.getName()] = multiChoice;\r\n });\r\n\r\n const dropdowns = $(FilterDropdownParameterComponent.SELECTOR, this._currentContext);\r\n dropdowns.each((index, entry) => {\r\n const $dropdownContext = $(entry);\r\n const dropdown = new FilterDropdownParameterComponent();\r\n dropdown.init($dropdownContext);\r\n this._params[dropdown.getName()] = dropdown;\r\n });\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n\r\n Object.keys(this._params)\r\n .forEach(key => this._params[key].setInitialValue());\r\n\r\n this.setInitialState();\r\n }\r\n}\r\n","import { SearchFilterModel } from \"./models/search-filter.model\";\r\nimport { NewsFilterComponent } from \"./news-filter.component\";\r\n\r\nexport class NewsFilterService {\r\n private _resultsLocation: string = \"#listing\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _filter: NewsFilterComponent = null;\r\n\r\n private handleFilterSubmit(filter: SearchFilterModel): void {\r\n const locationSegments = [location.protocol, \"//\", location.host, location.pathname];\r\n const keys = Object.keys(filter);\r\n if (keys.length) {\r\n let queryString = \"?\";\r\n keys.forEach(key => {\r\n const value = Array.isArray(filter[key]) ? (filter[key] as Array).join(\",\") : filter[key] as string;\r\n queryString = `${queryString}&${key}=${encodeURIComponent(value)}`;\r\n });\r\n locationSegments.push(queryString);\r\n }\r\n locationSegments.push(this._resultsLocation);\r\n\r\n const targetUrl = locationSegments.join(\"\");\r\n\r\n if (location.href === targetUrl) {\r\n location.reload();\r\n } else {\r\n location.href = targetUrl;\r\n }\r\n }\r\n\r\n private bindEvents(): void {\r\n this._filter.on(\"submit\")\r\n .subscribe((data: SearchFilterModel) => this.handleFilterSubmit(data));\r\n }\r\n\r\n private parseContext(): void {\r\n const filter = $(NewsFilterComponent.SELECTOR, this._currentContext);\r\n this._filter = new NewsFilterComponent();\r\n this._filter.init(filter);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","export class BannerFiltersAreaComponent {\r\n public static SELECTOR: string = \".js-ina-banners__filters\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n css: {\r\n hide: \"hide\"\r\n }\r\n };\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n }\r\n\r\n public handleFiltersVisibility(state: boolean): void {\r\n this._currentContext.toggleClass(this._classMap.css.hide, state);\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class BannerFilterComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR = \".js-ina-banner-filter\";\r\n\r\n private _classMap = {\r\n css: {\r\n active: \"ina-banners__btn--active\"\r\n }\r\n };\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n public get bannerId(): string {\r\n return this._currentContext.data().bannerId as string;\r\n }\r\n\r\n public toggleActive(state: boolean): void {\r\n this._currentContext.toggleClass(this._classMap.css.active, state);\r\n }\r\n\r\n private get isActive(): boolean {\r\n return this._currentContext.hasClass(this._classMap.css.active);\r\n }\r\n\r\n public scrollTo(): void {\r\n const areaPosition = this._currentContext.get(0).offsetTop;\r\n window.scrollTo({\r\n top: areaPosition - 100,\r\n behavior: \"smooth\"\r\n });\r\n }\r\n\r\n private bindEvents(): void {\r\n this._currentContext.on(\"click\", e => {\r\n e.preventDefault();\r\n if (!this.isActive) {\r\n this.emit(\"click\", this.bannerId);\r\n }\r\n });\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.bindEvents();\r\n }\r\n}\r\n","import { HomeSlickComponent } from \"front-end/components/homeslick.component\";\r\nimport { IBannerDetailsMediaComponent } from \"../banner-details-media.component\";\r\n\r\nexport class ImagesSliderComponent extends HomeSlickComponent implements IBannerDetailsMediaComponent {\r\n public static SELECTOR: string = \".js-ina-images-slider-list\";\r\n\r\n private _sliderOptions = {\r\n dots: true,\r\n arrows: false\r\n };\r\n\r\n public init(context: JQuery): void {\r\n super.init(context, this._sliderOptions);\r\n }\r\n\r\n public dispose(): void {\r\n this.destroy();\r\n }\r\n}\r\n","import { IBannerDetailsMediaComponent } from \"../banner-details-media.component\";\r\n\r\nexport class StaticImageComponent implements IBannerDetailsMediaComponent {\r\n private _currentContext: JQuery = $();\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n }\r\n\r\n public dispose(): void {\r\n this._currentContext.html(null);\r\n }\r\n}\r\n","import { VideoBoxComponent } from \"front-end/components/video-box/video-box.component\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { IBannerDetailsMediaComponent } from \"../banner-details-media.component\";\r\n\r\nexport class VideoComponent implements IBannerDetailsMediaComponent {\r\n private _currentContext: JQuery = $();\r\n\r\n private _videoBox: VideoBoxComponent = null;\r\n private _onVideoPlayerReady: Subscription = null;\r\n\r\n private parseContext(): void {\r\n const videoBox = $(VideoBoxComponent.SELECTOR, this._currentContext);\r\n this._videoBox = new VideoBoxComponent();\r\n this._onVideoPlayerReady = this._videoBox.on(\"ready\")\r\n .subscribe(() => this._videoBox.playVideo());\r\n this._videoBox.init(videoBox);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n }\r\n\r\n public dispose(): void {\r\n if (this._onVideoPlayerReady) {\r\n this._onVideoPlayerReady.unsubscribe();\r\n }\r\n if (this._videoBox) {\r\n this._videoBox.destroy();\r\n }\r\n }\r\n}\r\n","import { IBannerDetailsMediaComponent } from \"./banner-details-media.component\";\r\nimport { ImagesSliderComponent } from \"./elements/images-slider.component\";\r\nimport { StaticImageComponent } from \"./elements/static-image.component\";\r\nimport { VideoComponent } from \"./elements/video.component\";\r\nimport { BannerDetailsMediaType } from \"./types/banner-details-media.type\";\r\n\r\nexport class BannerDetailsMediaFactory {\r\n public static MEDIA_SELECTOR: string = \".js-ina-banner-details-media\";\r\n\r\n public getBrandDetailsMedia(context: JQuery): IBannerDetailsMediaComponent {\r\n const mediaType = context.data(\"mediaType\") as BannerDetailsMediaType;\r\n\r\n switch (mediaType) {\r\n case \"static-image\": {\r\n const singleImage = new StaticImageComponent();\r\n singleImage.init(context);\r\n\r\n return singleImage;\r\n }\r\n case \"images-slider\": {\r\n const sliderContext = $(ImagesSliderComponent.SELECTOR, context);\r\n const slider = new ImagesSliderComponent();\r\n slider.init(sliderContext);\r\n\r\n return slider;\r\n }\r\n case \"video\": {\r\n const video = new VideoComponent();\r\n video.init(context);\r\n\r\n return video;\r\n }\r\n }\r\n }\r\n}\r\n","import { IBannerDetailsMediaComponent } from \"./media/banner-details-media.component\";\r\nimport { BannerDetailsMediaFactory } from \"./media/banner-details-media.factory\";\r\nimport { BannerAreaModel } from \"./models/banner.model\";\r\n\r\nexport class BannerAreaComponent {\r\n private _currentContext: JQuery = $();\r\n\r\n private _currentBanner: BannerAreaModel = null;\r\n\r\n private _media: IBannerDetailsMediaComponent = null;\r\n private _mediaFactory: BannerDetailsMediaFactory = null;\r\n\r\n public get id(): string {\r\n return this._currentBanner.id;\r\n }\r\n\r\n public getDomElement(): HTMLElement {\r\n return this._currentContext.get(0);\r\n }\r\n\r\n public setBanner(banner: BannerAreaModel): BannerAreaComponent {\r\n this._currentBanner = banner;\r\n return this;\r\n }\r\n\r\n public destroy(): void {\r\n if (this._media) {\r\n this._media.dispose();\r\n }\r\n }\r\n\r\n public initMedia(): void {\r\n const mediaFactoryContext = $(BannerDetailsMediaFactory.MEDIA_SELECTOR, this._currentContext);\r\n this._mediaFactory = new BannerDetailsMediaFactory();\r\n\r\n this._media = this._mediaFactory.getBrandDetailsMedia(mediaFactoryContext);\r\n }\r\n\r\n public render(): JQuery {\r\n this._currentContext = $(this._currentBanner.markup);\r\n\r\n return this._currentContext;\r\n }\r\n}\r\n","import { BannerAreaComponent } from \"./banner-area.component\";\r\nimport { BannerAreaModel } from \"./models/banner.model\";\r\n\r\nexport class BannersDetailsComponent {\r\n public static SELECTOR_DESKTOP: string = \".js-ina-banners-details-desktop\";\r\n public static SELECTOR_MOBILE: string = \".js-ina-banners-details-mobile\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n css: {\r\n active: \"ina-banners__area--active\"\r\n }\r\n };\r\n\r\n private _currentBannerAreas: Array = [];\r\n private _bannerAreas: Array = [];\r\n\r\n public get bannerId(): string {\r\n return this._currentContext.data().bannerId as string;\r\n }\r\n\r\n public setBanners(banners: Array): BannersDetailsComponent {\r\n this._currentBannerAreas = banners;\r\n return this;\r\n }\r\n\r\n public toggleActive(state: boolean): void {\r\n this._currentContext.toggleClass(this._classMap.css.active, state);\r\n\r\n }\r\n\r\n public destroy(): void {\r\n this._bannerAreas.forEach((area) => {\r\n area.destroy();\r\n });\r\n\r\n this._bannerAreas = [];\r\n this._currentContext.html(null);\r\n }\r\n\r\n private renderDetails(): Array {\r\n return this._currentBannerAreas.map(banner => {\r\n const bannerArea = new BannerAreaComponent();\r\n this._bannerAreas.push(bannerArea);\r\n return bannerArea.setBanner(banner).render();\r\n });\r\n }\r\n\r\n public render(): void {\r\n this.destroy();\r\n\r\n const bannersDetails = this.renderDetails();\r\n this._currentContext.append(bannersDetails);\r\n\r\n this._bannerAreas.forEach((item) => {\r\n item.initMedia();\r\n });\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n }\r\n}\r\n","import { deviceService } from \"core/features/device/device.service\";\r\nimport { DeviceType } from \"core/features/device/enums/device-type.enum\";\r\nimport { BannerFiltersAreaComponent } from \"./banner-filters-area.component\";\r\nimport { BannerFilterComponent } from \"./banner-filter.component\";\r\nimport { BannersDetailsComponent } from \"./banners-details.component\";\r\nimport { BannersModel } from \"./models/banners.model\";\r\n\r\nexport class BannersService {\r\n private _currentContext = $();\r\n\r\n private _selectedBannerId: string = null;\r\n\r\n private _banners: Array = [];\r\n\r\n private _bannerFiltersArea: BannerFiltersAreaComponent = null;\r\n private _bannerFilters: Array = [];\r\n\r\n private _bannerDetailsDesktop: BannersDetailsComponent = null;\r\n private _bannerDetailsListMobile: Array = [];\r\n\r\n private setQueryString(bannerId: string): void {\r\n const queryParams = new URLSearchParams(window.location.search);\r\n queryParams.set(\"banner\", bannerId);\r\n history.replaceState(null, null, \"?\" + queryParams.toString());\r\n }\r\n\r\n private setInitialState(): void {\r\n if (!this._banners.length) {\r\n return;\r\n }\r\n\r\n const queryStringValues = Object.fromEntries(new URLSearchParams(window.location.search).entries());\r\n const queryStringBannerId = queryStringValues.banner?.toString();\r\n\r\n const bannersIds = this._banners.map(banner => banner.id);\r\n\r\n const isMobile = deviceService.checkDeviceType() === DeviceType.Mobile;\r\n\r\n if(queryStringBannerId) {\r\n this._selectedBannerId = queryStringBannerId;\r\n\r\n const bannerExists = queryStringBannerId && bannersIds.includes(this._selectedBannerId);\r\n\r\n if(bannerExists) {\r\n this.setActiveFilter(this._selectedBannerId);\r\n this.showBannerDetails(this._selectedBannerId, isMobile);\r\n if(isMobile)\r\n {\r\n this.scrollToActiveFilter();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n if(bannersIds.length) {\r\n this._selectedBannerId = bannersIds[0];\r\n\r\n this.setActiveFilter(this._selectedBannerId);\r\n this.showBannerDetails(this._selectedBannerId, isMobile);\r\n }\r\n }\r\n\r\n private setActiveFilter(bannerId: string): void {\r\n this._bannerFilters.forEach(filter => {\r\n const isActive = filter.bannerId === bannerId;\r\n filter.toggleActive(isActive);\r\n });\r\n }\r\n\r\n private showBannerDetails(bannerId: string, isMobile: boolean) : void {\r\n this._selectedBannerId = bannerId;\r\n\r\n const banners = this._banners.find(c => c.id === this._selectedBannerId)?.areas;\r\n\r\n if (banners && banners.length) {\r\n this._bannerFiltersArea.handleFiltersVisibility(this._banners.length === 1 && !isMobile);\r\n if (isMobile) {\r\n const bannerDetailsMobile = this._bannerDetailsListMobile.find(b => b.bannerId === this._selectedBannerId);\r\n this._bannerDetailsDesktop.destroy();\r\n\r\n this._bannerDetailsListMobile.forEach(bannerDetails => {\r\n const isActive = bannerDetails.bannerId === bannerId;\r\n bannerDetails.toggleActive(isActive);\r\n });\r\n bannerDetailsMobile.setBanners(banners).render();\r\n } else {\r\n this._bannerDetailsDesktop.setBanners(banners).render();\r\n }\r\n }\r\n }\r\n\r\n private scrollToActiveFilter() : void {\r\n const activeFilter = this._bannerFilters.find(f => f.bannerId === this._selectedBannerId);\r\n if(activeFilter)\r\n {\r\n activeFilter.scrollTo();\r\n }\r\n }\r\n\r\n private parseContext(): void {\r\n const bannerLinks = $(BannerFilterComponent.SELECTOR, this._currentContext);\r\n bannerLinks.each((index, entry) => {\r\n const linkContext = $(entry);\r\n const link = new BannerFilterComponent();\r\n link.init(linkContext);\r\n\r\n this._bannerFilters.push(link);\r\n });\r\n\r\n const bannerFiltersArea = $(BannerFiltersAreaComponent.SELECTOR, this._currentContext);\r\n this._bannerFiltersArea = new BannerFiltersAreaComponent();\r\n this._bannerFiltersArea.init(bannerFiltersArea);\r\n\r\n const bannerDetailsDesktop = $(BannersDetailsComponent.SELECTOR_DESKTOP, this._currentContext);\r\n this._bannerDetailsDesktop = new BannersDetailsComponent();\r\n this._bannerDetailsDesktop.init(bannerDetailsDesktop);\r\n\r\n const bannersDetailsMobile = $(BannersDetailsComponent.SELECTOR_MOBILE, this._currentContext);\r\n bannersDetailsMobile.each((index, entry) => {\r\n const bannerDetailsMobileContext = $(entry);\r\n const bannerDetailsMobile = new BannersDetailsComponent();\r\n bannerDetailsMobile.init(bannerDetailsMobileContext);\r\n\r\n this._bannerDetailsListMobile.push(bannerDetailsMobile);\r\n });\r\n }\r\n\r\n private bindEvents(): void {\r\n this._bannerFilters.forEach(filter => {\r\n filter.on(\"click\").subscribe((bannerId: string) => {\r\n const isMobile = deviceService.checkDeviceType() === DeviceType.Mobile;\r\n\r\n this.setActiveFilter(bannerId);\r\n this.showBannerDetails(bannerId, isMobile);\r\n this.setQueryString(bannerId);\r\n\r\n if(isMobile)\r\n {\r\n this.scrollToActiveFilter();\r\n }\r\n });\r\n });\r\n\r\n deviceService.deviceType.subscribe((deviceType: DeviceType) => {\r\n if (this._selectedBannerId) {\r\n this.showBannerDetails(this._selectedBannerId, deviceType === DeviceType.Mobile);\r\n }\r\n });\r\n }\r\n\r\n public init(context: JQuery, banners: Array): void {\r\n this._currentContext = context || this._currentContext;\r\n this._banners = banners;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n\r\n this.setInitialState();\r\n }\r\n}\r\n","export class LatLngModel {\r\n public constructor(public lat: number, public lng: number) {\r\n }\r\n}\r\n","import { LatLngModel } from \"front-end/services/geolocation/models/lat-lng.model\";\r\nimport { filter, Observable, of, pairwise, startWith, switchMap, take } from \"rxjs\";\r\n\r\nclass UserGeoLocationService {\r\n public getInitialLocation(): Observable {\r\n return this.getPermissionState() // handle olny initial request\r\n .pipe(\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n switchMap(([previousState, currentState]) => {\r\n if (currentState === \"prompt\" ||currentState === \"denied\") { // access denied\r\n return of(null);\r\n }\r\n\r\n if (currentState === \"granted\") {\r\n return this.getCurrentLocation(); // silent request\r\n }\r\n }),\r\n take(1)\r\n );\r\n }\r\n\r\n public watchCurrentLocation(): Observable {\r\n return this.getPermissionState() // handle permission changes\r\n .pipe(\r\n filter(([previousState, currentState]) => {\r\n return currentState === \"prompt\" // handle permissions change via chrome://settings/content/location || initial page request without any permissions\r\n || ((previousState === \"denied\" && currentState === \"granted\") || (previousState === \"granted\" && currentState === \"denied\")); // handling permissions change via query string bar\r\n }),\r\n switchMap(() => this.getCurrentLocation())\r\n );\r\n }\r\n\r\n private getPermissionState(): Observable<[PermissionState, PermissionState]> {\r\n const permissionsObservable = new Observable(observer => {\r\n if(this.isBrowserSupportGeolocation()) {\r\n void navigator.permissions\r\n .query({ name: \"geolocation\" })\r\n .then((initialStatus) => {\r\n observer.next(initialStatus.state);\r\n\r\n initialStatus.onchange = (changeEvent: Event): void => {\r\n const currentStatus = changeEvent.target as PermissionStatus;\r\n observer.next(currentStatus.state);\r\n };\r\n });\r\n } else {\r\n observer.next(null);\r\n observer.complete();\r\n }\r\n });\r\n\r\n return permissionsObservable\r\n .pipe(\r\n startWith(null), // emitting first empty value to fill-in the buffer\r\n pairwise()\r\n );\r\n }\r\n\r\n private getCurrentLocation(): Observable {\r\n const currentLocationObservable = new Observable(observer => {\r\n if(this.isBrowserSupportGeolocation()) {\r\n window.navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n observer.next(new LatLngModel(\r\n position.coords.latitude,\r\n position.coords.longitude\r\n ));\r\n observer.complete();\r\n },\r\n () => {\r\n observer.next(null);\r\n observer.complete();\r\n }\r\n );\r\n } else {\r\n observer.next(null);\r\n observer.complete();\r\n }\r\n });\r\n\r\n return currentLocationObservable;\r\n }\r\n\r\n private isBrowserSupportGeolocation(): boolean {\r\n return !!navigator.geolocation;\r\n }\r\n}\r\n\r\nexport const userGeoLocationService = new UserGeoLocationService();\r\n","import { LatLngModel } from \"front-end/services/geolocation/models/lat-lng.model\";\r\nimport { userGeoLocationService } from \"front-end/services/geolocation/user-geo-location.service\";\r\nimport _round from \"lodash/round\";\r\n\r\n// TODO-TD: review the usage of the service bellow, remove duplicated code (see angular store-locator-search.component), create shared service?\r\n\r\nexport class GeoDistanceService {\r\n private _distanceUnit: string;\r\n private _geoDistances: JQuery = $();\r\n\r\n private _classMap = {\r\n js: {\r\n geoDistance: \".js-ina-geo-distance\"\r\n }\r\n };\r\n\r\n private updateDistance(userLocation: LatLngModel): void {\r\n if(userLocation) {\r\n this.setDistance(userLocation);\r\n } else {\r\n this.clearDistane();\r\n }\r\n }\r\n\r\n private setDistance(userLocation: LatLngModel) : void {\r\n this._geoDistances.each((index: number, element: HTMLElement) => {\r\n const $element = $(element);\r\n const targetLocation = $element.data() as LatLngModel;\r\n const distance = this.calculateDistance(userLocation, targetLocation).toFixed(1);\r\n\r\n $element.text(`(${distance} ${this._distanceUnit})`);\r\n $element.show();\r\n });\r\n }\r\n\r\n private clearDistane(): void {\r\n this._geoDistances.each((index: number, element: HTMLElement) => {\r\n const $element = $(element);\r\n $element.text(\"\");\r\n $element.hide();\r\n });\r\n }\r\n\r\n private calculateDistance(userLocation: LatLngModel, targetLocation: LatLngModel): number {\r\n // NOTE: source cloud.google.com/blog/products/maps-platform/how-calculate-distances-map-maps-javascript-api\r\n\r\n const R = 3959; // Radius of the Earth in miles\r\n const rlat1 = userLocation.lat * (Math.PI/180); // Convert degrees to radians\r\n const rlat2 = targetLocation.lat * (Math.PI/180); // Convert degrees to radians\r\n const difflat = rlat2-rlat1; // Radian difference (latitudes)\r\n const difflon = (targetLocation.lng - userLocation.lng) * (Math.PI/180); // Radian difference (longitudes)\r\n\r\n const d = 2 * R * Math.asin(Math.sqrt(Math.sin(difflat/2)*Math.sin(difflat/2)+Math.cos(rlat1)*Math.cos(rlat2)*Math.sin(difflon/2)*Math.sin(difflon/2)));\r\n\r\n return _round(d, 1);\r\n }\r\n\r\n private bindEvents(): void {\r\n userGeoLocationService.getInitialLocation()\r\n .subscribe(location => this.updateDistance(location));\r\n\r\n userGeoLocationService.watchCurrentLocation()\r\n .subscribe(location => this.updateDistance(location));\r\n }\r\n\r\n private initContext(): void {\r\n this._geoDistances = $(this._classMap.js.geoDistance, $(document));\r\n }\r\n\r\n public init(distanceUnit: string): void {\r\n this._distanceUnit = distanceUnit;\r\n\r\n this.initContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { TeamMembersProfileModel } from \"./models/team-members-profile.model\";\r\n\r\nexport class TeamMembersProfileModalComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR: string = \".js-ina-our-people-profile-modal\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n js: {\r\n name: `${TeamMembersProfileModalComponent.SELECTOR}__name`,\r\n position: `${TeamMembersProfileModalComponent.SELECTOR}__position`,\r\n shortDescription: `${TeamMembersProfileModalComponent.SELECTOR}__description`,\r\n imgSrcSet: `${TeamMembersProfileModalComponent.SELECTOR}__img_srcset`,\r\n imgSrc: `${TeamMembersProfileModalComponent.SELECTOR}__img_src`\r\n }\r\n };\r\n\r\n private _name: JQuery;\r\n private _position: JQuery;\r\n private _shortDescription: JQuery;\r\n private _imgSrc: JQuery;\r\n\r\n private _currentTeamProfile: TeamMembersProfileModel = null;\r\n\r\n public setProfile(profile: TeamMembersProfileModel): TeamMembersProfileModalComponent {\r\n this._currentTeamProfile = profile;\r\n return this;\r\n }\r\n\r\n public setName(name: string) : TeamMembersProfileModalComponent{\r\n this._name.html(name);\r\n return this;\r\n }\r\n\r\n public setPosition(position: string): TeamMembersProfileModalComponent {\r\n this._position.html(position);\r\n return this;\r\n }\r\n\r\n public setDescription(description: string): TeamMembersProfileModalComponent {\r\n this._shortDescription.html(description);\r\n return this;\r\n }\r\n\r\n public setImageSrc(imageSrc: string): TeamMembersProfileModalComponent {\r\n if (imageSrc) {\r\n this._imgSrc.attr(\"src\", imageSrc);\r\n }\r\n this._imgSrc.toggle(!!imageSrc);\r\n return this;\r\n }\r\n\r\n public show(): void {\r\n this._currentContext.modal(\"show\");\r\n }\r\n\r\n public render(): TeamMembersProfileModalComponent {\r\n this.setName(this._currentTeamProfile.name)\r\n .setPosition(this._currentTeamProfile.position)\r\n .setDescription(this._currentTeamProfile.shortDescription)\r\n .setImageSrc(this._currentTeamProfile.imageSrc);\r\n\r\n return this;\r\n }\r\n\r\n private bindEvents(): void {\r\n this._currentContext.on(\"hidden.bs.modal\", () => this.setProfile(null));\r\n }\r\n\r\n private parseContext(): void {\r\n this._name = $(this._classMap.js.name, this._currentContext);\r\n this._position = $(this._classMap.js.position, this._currentContext);\r\n this._shortDescription = $(this._classMap.js.shortDescription, this._currentContext);\r\n this._imgSrc = $(this._classMap.js.imgSrc, this._currentContext);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class TeamMembersProfileComponent extends EventEmitterMixin(EmptyInstance) {\r\n public static SELECTOR: string = \".js-ina-our-people-profile\";\r\n\r\n private _currentContext: JQuery = $();\r\n\r\n public get id(): number {\r\n return this._currentContext.data().id as number;\r\n }\r\n\r\n private bindEvents(): void {\r\n this._currentContext.on(\"click\", e => {\r\n e.preventDefault();\r\n\r\n this.emit(\"profile/click\", this.id);\r\n });\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.bindEvents();\r\n }\r\n}\r\n","import { HomeSlickComponent } from \"front-end/components/homeslick.component\";\r\nimport { TeamMembersProfileModel } from \"./models/team-members-profile.model\";\r\nimport { TeamMembersProfileModalComponent } from \"./team-members-profile-modal.component\";\r\nimport { TeamMembersProfileComponent } from \"./team-members-profile.component\";\r\n\r\nexport class TeamMembersProfilesService {\r\n private _currentContext: JQuery = $();\r\n\r\n private _teamMembersProfileComponents: Array = [];\r\n private _teamMembersProfileModels: Array = [];\r\n\r\n private _teamMembersProfileModalComponent: TeamMembersProfileModalComponent = null;\r\n\r\n private _slider: HomeSlickComponent = null;\r\n\r\n private _moduleOptions = {\r\n mobileFirst: true,\r\n dots: true,\r\n arrows: false,\r\n slidesToScroll: 1,\r\n slidesToShow: 1,\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n settings: \"unslick\"\r\n }\r\n ]\r\n };\r\n\r\n private bindEvents(): void {\r\n this._teamMembersProfileComponents.forEach(profile => {\r\n profile.on(\"profile/click\")\r\n .subscribe((profileId: number) => {\r\n const profileModel = this._teamMembersProfileModels.find((p: TeamMembersProfileModel) => p.id === profileId);\r\n if (profileModel) {\r\n this._teamMembersProfileModalComponent.setProfile(profileModel).render().show();\r\n }\r\n });\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n const sliderContext = $(\".js-ina-people-slider\", this._currentContext);\r\n const slider = new HomeSlickComponent();\r\n slider.init(sliderContext, this._moduleOptions);\r\n this._slider = slider;\r\n\r\n const teamMembersProfilesContext = $(TeamMembersProfileComponent.SELECTOR, this._currentContext);\r\n teamMembersProfilesContext.each((index, entry) => {\r\n const profileContext = $(entry);\r\n const profileComponent = new TeamMembersProfileComponent();\r\n profileComponent.init(profileContext);\r\n this._teamMembersProfileComponents.push(profileComponent);\r\n });\r\n\r\n const modal = $(TeamMembersProfileModalComponent.SELECTOR, this._currentContext);\r\n this._teamMembersProfileModalComponent = new TeamMembersProfileModalComponent();\r\n this._teamMembersProfileModalComponent.init(modal);\r\n }\r\n\r\n public init(context: JQuery, teamMembersProfileModels: Array): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this._teamMembersProfileModels = teamMembersProfileModels;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\n\r\nexport class CookiebotPreferencesLinkComponent extends EventEmitterMixin(EmptyInstance) {\r\n private _currentContext: JQuery = $();\r\n\r\n private bindEvents(): void {\r\n this._currentContext.on(\"click\", e => {\r\n e.preventDefault();\r\n this.emit(\"click\");\r\n });\r\n }\r\n\r\n public init(currentContext: JQuery): void {\r\n this._currentContext = currentContext;\r\n\r\n this.bindEvents();\r\n }\r\n}\r\n","import { CookiebotPreferencesLinkComponent } from \"front-end/components/cookiebot/cookiebot-preferences-link.component\";\r\n\r\nexport class CookiebotService {\r\n private _currentContext: JQuery = $();\r\n private _link: CookiebotPreferencesLinkComponent = null;\r\n\r\n private bindEvents(): void {\r\n this._link.on(\"click\").subscribe(() => window.Cookiebot.renew());\r\n window.addEventListener(\"CookiebotOnConsentReady\", this.reloadPage, false);\r\n }\r\n\r\n private reloadPage = (): void => {\r\n // This check is necessary because CookiebotOnConsentReady, CookiebotOnAccept are triggered every time on load page, not only on user submit.\r\n // Not null/undefined dialog means that CookiebotOnConsentReady, CookiebotOnAccept are trigered by user.\r\n // See more about events here: https://www.cookiebot.com/en/developer/\r\n if (window.Cookiebot?.dialog) {\r\n window.location.reload();\r\n }\r\n };\r\n\r\n private parseContext(): void {\r\n this._link = new CookiebotPreferencesLinkComponent();\r\n this._link.init(this._currentContext);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { pageService } from \"front-end/components/page/page.service\";\r\n\r\nexport class FormScrollService {\r\n private _currentContext: JQuery = $();\r\n private _errors: JQuery = $();\r\n private _submitMessage: JQuery = $();\r\n private _submitMessageHtml: JQuery = $();\r\n private _isFormSubmitted: boolean = false;\r\n\r\n private _classMap = {\r\n error: \".field-validation-error\",\r\n submitMessage: \".umbraco-forms-submitmessage\",\r\n submitMessageHtml: \".umbraco-forms-submitmessage-html\",\r\n formSubmitted: \"#ina-umbraco-forms-form-submitted\"\r\n };\r\n\r\n private scrollToFormTarget(): void {\r\n if (!this._isFormSubmitted) {\r\n return;\r\n }\r\n\r\n if (this._errors.length) {\r\n pageService.scroll(this._errors);\r\n return;\r\n }\r\n\r\n if (this._submitMessage.length) {\r\n pageService.scroll(this._submitMessage);\r\n return;\r\n }\r\n\r\n if (this._submitMessageHtml.length) {\r\n pageService.scroll(this._submitMessageHtml);\r\n return;\r\n }\r\n\r\n pageService.scroll(this._currentContext);\r\n }\r\n\r\n private parseContext(): void {\r\n this._isFormSubmitted = $(this._classMap.formSubmitted, this._currentContext).length > 0;\r\n this._errors = $(this._classMap.error, this._currentContext);\r\n this._submitMessage = $(this._classMap.submitMessage, this._currentContext);\r\n this._submitMessageHtml = $(this._classMap.submitMessageHtml, this._currentContext);\r\n }\r\n\r\n public init($context: JQuery): void {\r\n this._currentContext = $context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.scrollToFormTarget();\r\n }\r\n}\r\n","export class HeadingComponent {\r\n public static SELECTOR: string = \".js-ina-heading\";\r\n\r\n private _currentContext: JQuery = $();\r\n private _currentHtml: string;\r\n\r\n public setHtml(html: string): HeadingComponent {\r\n this._currentHtml = html;\r\n return this;\r\n }\r\n\r\n public getHtml(): string {\r\n return this._currentHtml;\r\n }\r\n\r\n public render(): void {\r\n this._currentContext.html(this._currentHtml);\r\n }\r\n\r\n public initContext(): void {\r\n this._currentHtml = this._currentContext.html();\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.initContext();\r\n }\r\n}\r\n","import { EmptyInstance } from \"core/features/components/mixins/empty-instance\";\r\nimport { EventEmitterMixin } from \"front-end/mixins/event-emitter.mixin\";\r\nimport { HeadingComponent } from \"../../heading.component\";\r\n\r\nexport class FormsTabButtonComponent extends EventEmitterMixin(EmptyInstance) {\r\n\r\n public static SELECTOR: string = \".js-ina-form-tabs-button\";\r\n\r\n private _currentContext: JQuery = $();\r\n private _heading: HeadingComponent = null;\r\n\r\n private bindEvents(): void {\r\n this._currentContext.on(\"click\", e => {\r\n e.preventDefault();\r\n\r\n this.emit(\"click\", this._heading.getHtml());\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n const heading = new HeadingComponent();\r\n heading.init($(HeadingComponent.SELECTOR, this._currentContext));\r\n this._heading = heading;\r\n }\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvents();\r\n }\r\n}\r\n","import { HeadingComponent } from \"../../heading.component\";\r\nimport { FormsTabButtonComponent } from \"./forms-tab-button.component\";\r\n\r\nexport class FormsTabService {\r\n private _currentContext: JQuery = $();\r\n\r\n private _classMap = {\r\n js: {\r\n dropdownButtonHeaderSelector: `.js-dropdown-button ${HeadingComponent.SELECTOR}`\r\n }\r\n };\r\n\r\n private _dropdownButtonHeading: HeadingComponent = null;\r\n private _tabButtons: Array = [];\r\n\r\n private bindEvent(): void {\r\n this._tabButtons.forEach(tabButton => {\r\n tabButton.on(\"click\")\r\n .subscribe((tabText: string): void => {\r\n this._dropdownButtonHeading.setHtml(tabText).render();\r\n });\r\n });\r\n }\r\n\r\n private parseContext(): void {\r\n const dropdownButtonHeading = $(this._classMap.js.dropdownButtonHeaderSelector, this._currentContext);\r\n this._dropdownButtonHeading = new HeadingComponent();\r\n this._dropdownButtonHeading.init(dropdownButtonHeading);\r\n\r\n const tabButtonsContext = $(FormsTabButtonComponent.SELECTOR, this._currentContext);\r\n tabButtonsContext.each((index, entry) => {\r\n const tabButton = $(entry);\r\n const tabButtonComponent = new FormsTabButtonComponent();\r\n tabButtonComponent.init(tabButton);\r\n this._tabButtons.push(tabButtonComponent);\r\n });\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n\r\n this.parseContext();\r\n this.bindEvent();\r\n }\r\n}\r\n","import { FormScrollService } from \"front-end/components/sections/forms-section/form-scroll.service\";\r\nimport { FormsTabService } from \"front-end/components/sections/forms-section/forms-tab.service\";\r\n\r\nexport class FormsSectionService {\r\n\r\n private initTabService(context: JQuery): void {\r\n const tabService = new FormsTabService();\r\n tabService.init(context);\r\n }\r\n\r\n private initScrollService(context: JQuery): void {\r\n const scrollService = new FormScrollService();\r\n scrollService.init(context);\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this.initTabService(context);\r\n this.initScrollService(context);\r\n }\r\n}\r\n","import { IBannerDetailsMediaComponent } from \"../banners/media/banner-details-media.component\";\r\nimport { BannerDetailsMediaFactory } from \"../banners/media/banner-details-media.factory\";\r\n\r\nexport class SitesInfoBannerMediaService {\r\n private _currentContext = $();\r\n\r\n private _mediaArray: Array = [];\r\n\r\n private parseContext(): void {\r\n const mediaFactory = new BannerDetailsMediaFactory();\r\n const mediaFactories = $(BannerDetailsMediaFactory.MEDIA_SELECTOR, this._currentContext);\r\n mediaFactories.each((index, entry) => {\r\n const mediaFactoryContext = $(entry);\r\n const media = mediaFactory.getBrandDetailsMedia(mediaFactoryContext);\r\n this._mediaArray.push(media);\r\n });\r\n }\r\n\r\n public init(context: JQuery): void {\r\n this._currentContext = context || this._currentContext;\r\n this.parseContext();\r\n }\r\n}\r\n","import { QuickSearchService } from \"front-end/components/quick-search/quick-search.service\";\r\nimport { HomeSlickComponent } from \"front-end/components/homeslick.component\";\r\nimport { VideoBoxService } from \"front-end/components/video-box/video-box.service\";\r\nimport { deviceService } from \"core\";\r\nimport { EmergencyMessageService } from \"front-end/components/emergency-message/emergency-message.service\";\r\nimport { pageService } from \"front-end/components/page/page.service\";\r\nimport { NewsFilterService } from \"front-end/components/news-filter/news-filter.service\";\r\nimport { BannersService } from \"front-end/components/banners/banners.service\";\r\nimport { GeoDistanceService } from \"front-end/services/geolocation/geo-distance.service\";\r\nimport { TeamMembersProfilesService } from \"front-end/components/team-members-profiles/team-members-profiles.service\";\r\nimport { CookiebotService } from \"front-end/components/cookiebot/cookiebot.service\";\r\nimport { FormsSectionService } from \"front-end/components/sections/forms-section/forms-section.service\";\r\nimport { SitesInfoBannerMediaService } from \"./components/sites-info-banner-media/sites-info-banner-media.service\";\r\n\r\nclass Frontend {\r\n public init(): void {\r\n deviceService.init();\r\n pageService.init();\r\n\r\n $.extend($, {\r\n ina: {\r\n frontend: {\r\n quickSearchService: new QuickSearchService(),\r\n emergencyMessageService: new EmergencyMessageService(),\r\n homeSlick: HomeSlickComponent,\r\n videoBoxService: VideoBoxService,\r\n cookiebotService: new CookiebotService(),\r\n newsFilterService: new NewsFilterService(),\r\n bannersService: new BannersService(),\r\n teamMembersProfiles: new TeamMembersProfilesService(),\r\n formsSectionService: new FormsSectionService(),\r\n geoDistanceService: new GeoDistanceService(),\r\n sitesInfoBannerMediaService: new SitesInfoBannerMediaService()\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport const frontend = new Frontend();\r\n","import $ from \"jquery\";\r\nimport \"jquery-validation\";\r\nimport \"jquery-validation-unobtrusive\";\r\nimport \"bootstrap\";\r\nimport \"slick-carousel\";\r\nimport \"front-end/extensions/jquery.extensions\";\r\nimport \"front-end/extensions/string.extensions\";\r\n\r\nimport { frontend } from \"front-end/app\";\r\n\r\nwindow.$ = window.jQuery = $;\r\n\r\n$(() => frontend.init());\r\n","// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n(($: JQueryStatic) => {\r\n $.extend($, {\r\n el: (tagName: string, attributes: object) => {\r\n const $el = $(document.createElement(tagName));\r\n if(attributes) {\r\n $el.attr(attributes);\r\n }\r\n return $el;\r\n }\r\n });\r\n\r\n $.extend($.fn, {\r\n filterByData: function (prop: string, val: string): JQuery {\r\n const $self = $(this) as JQuery;\r\n if (typeof val === \"undefined\") {\r\n return $self.filter(\r\n function (): boolean {\r\n return typeof $(this).data(prop) !== \"undefined\";\r\n }\r\n );\r\n }\r\n\r\n return $self.filter(\r\n function (): boolean {\r\n return $(this).data(prop) === val;\r\n }\r\n );\r\n }\r\n });\r\n})(jQuery);\r\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\ninterface String {\r\n getHash(): string;\r\n}\r\n\r\nString.prototype.getHash = function(): string {\r\n const source = this as string;\r\n\r\n let hash = 0, i, chr;\r\n\r\n if (source.length === 0) {\r\n return hash.toString();\r\n }\r\n for (i = 0; i < source.length; i++) {\r\n chr = source.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0;\r\n }\r\n return hash.toString();\r\n};\r\n"],"names":["EventEmitterMixin","BaseClass","args","_subjects","Map","on","event","this","has","set","Subject","get","asObservable","emit","arg","getSubject","next","complete","delete","subject","Error","_classMap","css","show","hidden","js","input","SearchTextbox","SELECTOR","submitBtn","_currentContext","$","_input","_submitBtn","getValue","val","getName","attr","hasClass","open","removeClass","addClass","focus","close","hide","bindEvents","e","preventDefault","key","parseContext","init","context","_searchTextBox","toggle","_toggle","handleSubmit","isOpened","submit","handleToggle","subscribe","searchTextBoxContext","searchTextBox","classMap","slickArrow","moduleOptions","_window","window","getSlick","slick","destroy","isInitialized","autoplay","mouseenter","mouseleave","options","extend","slider","HomeSlickComponent","setupFrame","frameId","videoFrameElement","src","data","_isPlaying","BehaviorSubject","value","playingState","_internalPlayer","play","playVideo","pause","pauseVideo","loop","state","_loopVideo","mute","addEventListener","setState","internalPlayer","isPlaying","YT","PlayerState","PLAYING","ENDED","VideoPlayerComponentBase","scriptLoaderService","_scriptsLoaders","doLoadScript","url","onBeforeLoad","Observable","observer","script","document","createElement","onload","onerror","err","error","querySelector","appendChild","loadScript","targetLoader","pipe","take","shareReplay","youtubeVideoPlayerFactory","onYouTubePlayerAPIReady","_apiReadySubject","createPlayer","mergeMap","filter","isApiReady","player","YoutubePlayerComponent","playerReadySubject","Player","events","onReady","VideoPlayerFactoryBase","setLoop","setVolume","VimeoPlayerComponent","Vimeo","ready","then","catch","vimeoVideoPlayerFactory","VimeoVideoPlayerFactory","muted","currentTime","UmbracoPlayerComponent","of","umbracoVideoPlayerFactory","UmbracoVideoPlayerFactory","currentContext","playButton","VideoBoxComponent","_playButton","_videoPlayerFactory","_videoPlayer","_onPlayingStateChanged","_playerCreated","resolveVideoProvider","providerType","handlePlayButtonClick","handlePlayingState","unsubscribe","videoFrameId","deviceService","_deviceType","checkDeviceType","matchMedia","DeviceService","MOBILE_DEVICE_WIDTH","matches","Mobile","TABLET_DEVICE_WIDTH","Tablet","Desktop","handleResize","initContext","_videoBox","handleDeviceUpdate","isMobile","deviceType","videoBox","service","VideoBoxService","_body","_closeBtn","_title","_link","bodyOverflow","closeBtn","EmergencyMessageComponent","title","link","text","trim","getHash","LOCAL_STORAGE_EMERGENCY_MESSAGE_HASH","_emergencyMessageComponent","handleClose","localStorage","setItem","getItem","clearEmergencyMessageStorage","removeItem","emergencyMessageContext","emergencyMessageComponent","isEmergencyMessageActive","updateStyles","icons","burger","navigation","_pageScroll","scrollY","toString","_isMobile","iconsHeight","headerIconsHeight","outerHeight","toFixed","initStyles","setHeaderHeight","headerHeight","getHeight","height","toggleClass","navigationContext","off","scrollPositionValue","Number","slice","scrollPosition","scrollTo","$context","pageService","_pageHeader","_pageFooter","scroll","target","targetTopOffset","offset","top","animate","scrollTop","IsMobile","handleAnchors","anchor","location","hash","pageHeaderContext","PageHeaderComponent","pageFooterContext","PageFooterComponent","FilterDropdownParameterComponent","option","_value","setTitle","reset","setValue","placeholder","getParam","name","sortOrder","stringifyValue","isEmpty","str","_options","each","index","entry","displayName","setInitialValue","initialValue","undefined","handleOptionClick","$option","removeValue","FilterMultichoiceListParameterComponent","arrayVal","fromStringValue","element","checked","valueStr","map","filterByData","toStringValue","optionValue","optionIndex","indexOf","length","initialValueStr","join","split","controlValue","push","splice","_parameters","syncParameters","filterParameter","panelParameter","find","x","values","sort","a","b","valuesArray","Array","isArray","v","findIndex","p","forEach","createParameterElement","parameter","$child","children","eq","before","param","remove","paramIndex","group","nameElement","el","button","class","type","append","NewsFilterComponent","content","clearBtn","cancelBtn","_params","_paramsPanel","_isVisible","setInitialState","checkClearBtnVisibility","Object","keys","displayParamsOnPanel","toggleFilter","_content","String","toggleClearBtn","_clearBtn","isEmptyFilter","every","handleClearBtnClick","handleCancelButtonClick","fromEntries","URLSearchParams","search","handleSubmitButtonClick","handleFilterChanges","handleParamValueRemoval","_cancelBtn","paramsPanel","ParametersPanelComponent","multiChoiceContext","multiChoice","$dropdownContext","dropdown","_resultsLocation","_filter","handleFilterSubmit","locationSegments","protocol","host","pathname","encodeURIComponent","targetUrl","href","reload","handleFiltersVisibility","active","bannerId","toggleActive","areaPosition","offsetTop","behavior","isActive","_sliderOptions","dots","arrows","dispose","html","_onVideoPlayerReady","getBrandDetailsMedia","singleImage","StaticImageComponent","sliderContext","ImagesSliderComponent","video","VideoComponent","MEDIA_SELECTOR","_currentBanner","_media","_mediaFactory","id","getDomElement","setBanner","banner","initMedia","mediaFactoryContext","BannerDetailsMediaFactory","render","markup","_currentBannerAreas","_bannerAreas","setBanners","banners","area","renderDetails","bannerArea","BannerAreaComponent","bannersDetails","item","SELECTOR_DESKTOP","SELECTOR_MOBILE","_selectedBannerId","_banners","_bannerFiltersArea","_bannerFilters","_bannerDetailsDesktop","_bannerDetailsListMobile","setQueryString","queryParams","history","replaceState","queryStringBannerId","entries","bannersIds","includes","setActiveFilter","showBannerDetails","scrollToActiveFilter","c","areas","bannerDetailsMobile","bannerDetails","activeFilter","f","BannerFilterComponent","linkContext","bannerFiltersArea","BannerFiltersAreaComponent","bannerDetailsDesktop","BannersDetailsComponent","bannerDetailsMobileContext","lat","lng","userGeoLocationService","getInitialLocation","getPermissionState","switchMap","currentState","getCurrentLocation","watchCurrentLocation","previousState","isBrowserSupportGeolocation","navigator","permissions","query","initialStatus","onchange","changeEvent","currentStatus","startWith","pairwise","geolocation","getCurrentPosition","position","LatLngModel","coords","latitude","longitude","_geoDistances","geoDistance","updateDistance","userLocation","setDistance","clearDistane","$element","targetLocation","distance","calculateDistance","_distanceUnit","rlat1","Math","PI","rlat2","difflat","difflon","d","asin","sqrt","sin","cos","distanceUnit","TeamMembersProfileModalComponent","shortDescription","imgSrcSet","imgSrc","_currentTeamProfile","setProfile","profile","setName","_name","setPosition","_position","setDescription","description","_shortDescription","setImageSrc","imageSrc","_imgSrc","modal","_teamMembersProfileComponents","_teamMembersProfileModels","_teamMembersProfileModalComponent","_slider","_moduleOptions","mobileFirst","slidesToScroll","slidesToShow","responsive","breakpoint","settings","profileId","profileModel","TeamMembersProfileComponent","profileContext","profileComponent","teamMembersProfileModels","reloadPage","Cookiebot","dialog","renew","CookiebotPreferencesLinkComponent","_errors","_submitMessage","_submitMessageHtml","_isFormSubmitted","submitMessage","submitMessageHtml","formSubmitted","scrollToFormTarget","setHtml","_currentHtml","getHtml","_heading","heading","HeadingComponent","dropdownButtonHeaderSelector","_dropdownButtonHeading","_tabButtons","bindEvent","tabButton","tabText","dropdownButtonHeading","FormsTabButtonComponent","tabButtonComponent","initTabService","FormsTabService","initScrollService","FormScrollService","_mediaArray","mediaFactory","media","frontend","ina","quickSearchService","QuickSearchService","emergencyMessageService","EmergencyMessageService","homeSlick","videoBoxService","cookiebotService","CookiebotService","newsFilterService","NewsFilterService","bannersService","BannersService","teamMembersProfiles","TeamMembersProfilesService","formsSectionService","FormsSectionService","geoDistanceService","GeoDistanceService","sitesInfoBannerMediaService","SitesInfoBannerMediaService","jQuery","tagName","attributes","$el","fn","prop","$self","prototype","i","source","charCodeAt"],"sourceRoot":""}