{"version":3,"file":"ngx-outclick.mjs","sources":["../../../projects/outclick/src/lib/outclick.service.ts","../../../projects/outclick/src/lib/outclick.directive.ts","../../../projects/outclick/src/lib/outclick.module.ts","../../../projects/outclick/src/public-api.ts","../../../projects/outclick/src/ngx-outclick.ts"],"sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\nimport { fromEvent, Observable, Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OutclickService {\n\n  private counter = 0;\n\n  private outsideClick = new Subject<{id: number, event: Event}>();\n  private directives: {id: number, element: ElementRef}[] = [];\n  \n\n  constructor() { \n\n    fromEvent(document, 'click').subscribe((event) =>{\n\n      if(!event.target) return;\n\n      this.directives.forEach((dir) => {\n\n        if(!dir.element.nativeElement.contains(event.target as Node)) this.emitoutsideClick(dir.id, event);\n      });\n    });\n  }\n\n  get outsideClick$(): Observable<{id: number, event: Event}> {\n\n    return this.outsideClick.asObservable();\n  }\n\n  emitoutsideClick(id: number, event: Event) {\n\n    this.outsideClick.next({id, event});\n  }\n\n  registerDirective(element: ElementRef) {\n\n    const id = this.counter++;\n    this.directives.push({id, element});\n    return id;\n  }\n}\n","import { Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { OutclickService } from './outclick.service';\n\n@Directive({\n  selector: '[outclick]'\n})\nexport class OutclickDirective implements OnInit, OnDestroy {\n\n  id!: number;\n  subs = new Subscription();\n\n  @Output('out-click') outClick = new EventEmitter<Event>();\n\n  constructor(private el: ElementRef, private outClickService: OutclickService) {\n  }\n\n  ngOnInit(): void {\n    this.id = this.outClickService.registerDirective(this.el);\n\n    this.subs.add(\n      this.outClickService.outsideClick$.subscribe((data) => {\n\n        if(data.id === this.id) this.emitEvent(data.event);\n      })\n    )\n  }\n\n  ngOnDestroy(): void {\n      \n    this.subs.unsubscribe();\n  }\n\n  emitEvent(event: Event) {\n\n    this.outClick.emit(event);\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OutclickDirective } from './outclick.directive';\n\n\n@NgModule({\n  declarations: [\n    OutclickDirective\n  ],\n  imports: [\n    CommonModule,\n  ],\n  exports: [\n    OutclickDirective\n  ]\n})\nexport class OutclickModule { }\n","/*\n * Public API Surface of outclick\n */\n\nexport * from './lib/outclick.service';\nexport * from './lib/outclick.directive';\nexport * from './lib/outclick.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.OutclickService"],"mappings":"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"}