{"version":3,"file":"ngxtension-click-outside.mjs","sources":["../../../../libs/ngxtension/click-outside/src/click-outside.ts","../../../../libs/ngxtension/click-outside/src/ngxtension-click-outside.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport type { OnInit } from '@angular/core';\nimport { Directive, ElementRef, inject, NgZone, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { createInjectionToken } from 'ngxtension/create-injection-token';\nimport { injectDestroy } from 'ngxtension/inject-destroy';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\n\n/*\n * This function is used to detect clicks in the document.\n * It is used by the clickOutside directive.\n */\nconst [injectDocumentClick] = createInjectionToken(() => {\n\tconst click$ = new Subject<Event>();\n\tconst [ngZone, document] = [inject(NgZone), inject(DOCUMENT)];\n\n\tngZone.runOutsideAngular(() => {\n\t\tfromEvent(document, 'click').pipe(takeUntilDestroyed()).subscribe(click$);\n\t});\n\n\treturn click$;\n});\n\n/*\n * This directive is used to detect clicks outside the element.\n *\n * Example:\n * <div (clickOutside)=\"close()\"></div>\n *\n */\n@Directive({ selector: '[clickOutside]', standalone: true })\nexport class ClickOutside implements OnInit {\n\tprivate ngZone = inject(NgZone);\n\tprivate elementRef = inject(ElementRef);\n\tprivate documentClick$ = injectDocumentClick();\n\n\tprivate destroy$ = injectDestroy();\n\n\t/*\n\t * This event is emitted when a click occurs outside the element.\n\t */\n\treadonly clickOutside = output<Event>();\n\n\tngOnInit() {\n\t\tthis.documentClick$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.destroy$),\n\t\t\t\tfilter(\n\t\t\t\t\t(event: Event) =>\n\t\t\t\t\t\t!this.elementRef.nativeElement.contains(event.target),\n\t\t\t\t),\n\t\t\t)\n\t\t\t.subscribe((event: Event) => {\n\t\t\t\tthis.ngZone.run(() => this.clickOutside.emit(event));\n\t\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAQA;;;AAGG;AACH,MAAM,CAAC,mBAAmB,CAAC,GAAG,oBAAoB,CAAC,MAAK;AACvD,IAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAS,CAAC;AACpC,IAAA,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE9D,IAAA,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC7B,QAAA,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3E,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,MAAM,CAAC;AACf,CAAC,CAAC,CAAC;AAEH;;;;;;AAMG;MAEU,YAAY,CAAA;AADzB,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,IAAc,CAAA,cAAA,GAAG,mBAAmB,EAAE,CAAC;QAEvC,IAAQ,CAAA,QAAA,GAAG,aAAa,EAAE,CAAC;AAEnC;;AAEG;QACM,IAAY,CAAA,YAAA,GAAG,MAAM,EAAS,CAAC;AAexC,KAAA;IAbA,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,cAAc;AACjB,aAAA,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,CACL,CAAC,KAAY,KACZ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CACtD,CACD;AACA,aAAA,SAAS,CAAC,CAAC,KAAY,KAAI;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;8GAxBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;AC9B3D;;AAEG;;;;"}