{"version":3,"file":"ironsource-fusion-ui-services-events-handler.mjs","sources":["../../../projects/fusion-ui/services/events-handler/events-handler.service.ts","../../../projects/fusion-ui/services/events-handler/shared-events.service.ts","../../../projects/fusion-ui/services/events-handler/ironsource-fusion-ui-services-events-handler.ts"],"sourcesContent":["import {Injectable, OnDestroy} from '@angular/core';\nimport {ConnectableObservable, Observable, Subject} from 'rxjs';\nimport {filter, finalize, map, mergeAll, pluck, publishReplay, repeatWhen, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class EventsHandlerService implements OnDestroy {\n    private readonly observables$ = new Subject<Observable<{eventName: string; value: any}>>();\n    private readonly takeUntilAll$ = new Subject<void>();\n    private readonly repeatWhen$ = new Subject<void>();\n\n    private readonly stream$ = this.observables$.asObservable().pipe(\n        mergeAll(),\n        takeUntil(this.takeUntilAll$),\n        repeatWhen(() => this.repeatWhen$),\n        publishReplay(1)\n    ) as ConnectableObservable<{eventName: string; value: any}>;\n\n    private registeredEvents: {[key: string]: boolean} = {};\n\n    constructor() {\n        this.stream$.connect();\n    }\n\n    ngOnDestroy() {\n        this.takeUntilAll$.next();\n        this.takeUntilAll$.complete();\n    }\n\n    registerStream({eventName, stream$}: {eventName: string; stream$: Observable<any>}): void {\n        if (this.registeredEvents[eventName]) {\n            console.warn(`Stream ${eventName} already registerd`);\n            return;\n        }\n        const wrapStream$ = this.wrapStream({stream$, eventName});\n        this.observables$.next(wrapStream$);\n        this.registeredEvents[eventName] = true;\n    }\n\n    getStream({eventName}: {eventName: string}): Observable<any> {\n        return this.stream$.pipe(\n            filter(({eventName: event}) => event === eventName),\n            pluck('value')\n        );\n    }\n\n    clearAllStreams(): void {\n        this.takeUntilAll$.next();\n        this.registeredEvents = {};\n        this.repeatWhen$.next();\n    }\n\n    private wrapStream({eventName, stream$}: {eventName: string; stream$: Observable<any>}): Observable<any> {\n        return stream$.pipe(\n            map(value => ({value, eventName})),\n            finalize(() => delete this.registeredEvents[eventName])\n        );\n    }\n}\n","import {Injectable, OnDestroy} from '@angular/core';\nimport {fromEvent, merge, Observable, Subject} from 'rxjs';\nimport {filter, shareReplay, take, takeUntil} from 'rxjs/operators';\nimport {isUndefined} from '@ironsource/fusion-ui/utils';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SharedEventsService implements OnDestroy {\n    private onDestroy$ = new Subject<void>();\n\n    private mouseOver$ = merge(fromEvent(document.body, 'mouseover'), fromEvent(document.body, 'click')).pipe(\n        shareReplay(1),\n        takeUntil(this.onDestroy$)\n    );\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    getMouseoverObservable({element, padding}): Observable<MouseEvent> {\n        return this.mouseOver$.pipe(\n            filter((event: MouseEvent) => {\n                // if no event coordinate like event.clientX - this testim.io\n                return isUndefined(event.clientX) || this.isInRegion({event, element, padding});\n            })\n        );\n    }\n\n    private isInRegion({event, element, padding}: {event: MouseEvent; element: Element; padding: number}): boolean {\n        const {left, right, top, bottom} = element.getBoundingClientRect();\n        const isInRect =\n            event.clientX >= left - padding &&\n            event.clientX <= right + padding &&\n            event.clientY >= top - padding &&\n            event.clientY <= bottom + padding;\n\n        return isInRect;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}