{"version":3,"file":"uipath-angular-directives-ui-click-outside.mjs","sources":["../../../projects/angular/directives/ui-click-outside/src/ui-click-outside.directive.ts","../../../projects/angular/directives/ui-click-outside/src/ui-click-outside.module.ts","../../../projects/angular/directives/ui-click-outside/src/uipath-angular-directives-ui-click-outside.ts"],"sourcesContent":["import type { Observable } from 'rxjs';\nimport {\n    fromEvent,\n    Subject,\n} from 'rxjs';\nimport {\n    filter,\n    share,\n    takeUntil,\n    throttleTime,\n} from 'rxjs/operators';\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    Inject,\n    Injectable,\n    OnDestroy,\n    Output,\n} from '@angular/core';\n\n/**\n *   Info:\n *\n *   On average a user trying hard enough can reach ~7 click/s\n *   We'll reduce the click event count to half\n *\n *   Benefits:\n *\n *   - drastically reduce misclick emissions\n *\n * @ignore\n */\nconst MAX_CLICKS_PER_SECOND = 3;\n\n/**\n * A service that shares the `global` events required for the `uiClickOutside` directive.\n * By sharing the event stream, we end up adding only one event listener rather than {N}.\n *\n * @export\n */\n@Injectable({\n    providedIn: 'root',\n})\nexport class UiClickOutsideService implements OnDestroy {\n    /**\n     * The `global` event handler for `click` events.\n     *\n     */\n    // eslint-disable-next-line rxjs/finnish\n    source: Observable<MouseEvent>;\n    private _destroyed$ = new Subject<void>();\n\n    /**\n     * @ignore\n     */\n    constructor(\n        @Inject(DOCUMENT)\n        document: any,\n    ) {\n        this.source = fromEvent<MouseEvent>((document as Document).body, 'click', {\n            capture: true,\n        })\n            .pipe(\n                throttleTime(1000 / MAX_CLICKS_PER_SECOND),\n                takeUntil(this._destroyed$),\n                share(),\n            );\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        this._destroyed$.next();\n    }\n}\n\n/**\n * A directive that emits when a click event occurs outside of the decorated element.\n *\n * @export\n */\n@Directive({\n    selector: '[uiClickOutside]',\n})\nexport class UiClickOutsideDirective {\n    /**\n     * Emits the original `MouseEvent` when the click occurs outside of the decorated element.\n     *\n     */\n    @Output()\n    // eslint-disable-next-line rxjs/finnish\n    uiClickOutside: Observable<MouseEvent>;\n\n    /**\n     * @ignore\n     */\n    constructor(\n        ref: ElementRef,\n        private _clickService: UiClickOutsideService,\n    ) {\n        const element: HTMLElement = ref.nativeElement;\n\n        this.uiClickOutside = this._clickService\n            .source\n            .pipe(\n                filter(ev =>\n                    !element.contains((ev.target as Element)),\n                ),\n            );\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { UiClickOutsideDirective } from './ui-click-outside.directive';\n\n@NgModule({\n    declarations: [UiClickOutsideDirective],\n    exports: [UiClickOutsideDirective],\n})\nexport class UiClickOutsideModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}