{"version":3,"file":"tethys-cdk-event.mjs","sources":["../../../cdk/event/event-dispatcher.ts","../../../cdk/event/click-dispatcher.ts","../../../cdk/event/keyboard-dispatcher.ts","../../../cdk/event/tethys-cdk-event.ts"],"sourcesContent":["import { fromEvent, Observable, Subject, Subscription } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport { Directive, NgZone, OnDestroy, inject, DOCUMENT } from '@angular/core';\n\nconst DEFAULT_EVENT_TIME = 100;\n\n@Directive()\nexport abstract class ThyEventDispatcher<T = Event> implements OnDestroy {\n    private _globalSubscription: Subscription | null = null;\n\n    private _event$ = new Subject<T>();\n\n    private _subscriptionCount = 0;\n\n    private _addGlobalListener() {\n        this._globalSubscription = this.ngZone.runOutsideAngular(() => {\n            return fromEvent<T>(this.document, this.eventName).subscribe((event: T) => {\n                this._event$.next(event);\n            });\n        });\n    }\n\n    private _removeGlobalListener() {\n        if (this._globalSubscription) {\n            this._globalSubscription.unsubscribe();\n            this._globalSubscription = null;\n        }\n    }\n\n    get globalSubscription(): Subscription | null {\n        return this._globalSubscription;\n    }\n\n    protected document: Document = inject(DOCUMENT);\n\n    protected ngZone: NgZone = inject(NgZone);\n\n    protected abstract eventName: string;\n\n    constructor() {}\n\n    protected subscribe(auditTimeInMs: number = DEFAULT_EVENT_TIME): Observable<T> {\n        return new Observable(observer => {\n            if (!this._globalSubscription) {\n                this._addGlobalListener();\n            }\n            // In the case of a 0ms delay, use an observable without auditTime\n            // since it does add a perceptible delay in processing overhead.\n            const subscription =\n                auditTimeInMs > 0 ? this._event$.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._event$.subscribe(observer);\n\n            this._subscriptionCount++;\n            return () => {\n                subscription.unsubscribe();\n                this._subscriptionCount--;\n\n                if (!this._subscriptionCount) {\n                    this._removeGlobalListener();\n                }\n            };\n        });\n    }\n\n    ngOnDestroy() {\n        this._removeGlobalListener();\n        this._event$.complete();\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThyEventDispatcher } from './event-dispatcher';\n\nconst DEFAULT_CLICKED_TIME = 100;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ThyClickDispatcher extends ThyEventDispatcher {\n    eventName = 'click';\n\n    clicked<TEvent = Event>(auditTimeInMs: number = DEFAULT_CLICKED_TIME): Observable<TEvent> {\n        return this.subscribe(auditTimeInMs) as Observable<TEvent>;\n    }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThyEventDispatcher } from './event-dispatcher';\n\nconst DEFAULT_KEYDOWN_TIME = 100;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ThyKeyboardDispatcher extends ThyEventDispatcher {\n    eventName = 'keydown';\n\n    keydown(auditTimeInMs: number = DEFAULT_KEYDOWN_TIME): Observable<Event> {\n        return this.subscribe(auditTimeInMs);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}