{"version":3,"file":"chunk-dc4dz9em.js","sources":["packages/design-system/ui/rx-host-listener/src/rx-host-listener.ts"],"sourcesContent":["import { ChangeDetectorRef, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { type Observable, debounceTime, filter, fromEvent, merge, of, switchMap, tap } from 'rxjs';\n\nexport function rxHostListener(event: string): Observable {\n const cdr = inject(ChangeDetectorRef);\n\n // Listen to event\n return fromEvent(inject(ElementRef).nativeElement, event).pipe(\n debounceTime(0),\n tap(() => cdr.markForCheck()), // Trigger CD like @HostListener would\n takeUntilDestroyed(), // Unsubscribe\n );\n}\n\n/*\n * @internal\n **/\nexport function rxHostPressedListener(): Observable {\n return merge(\n rxHostListener('click'),\n rxHostListener('keyup').pipe(\n switchMap((x) => {\n return x.code === 'Space' || x.code === 'Enter' ? of(true) : of(null);\n }),\n filter(Boolean),\n ),\n ).pipe(debounceTime(0));\n}\n"],"names":["rxHostListener","event","cdr","inject","ChangeDetectorRef","fromEvent","ElementRef","nativeElement","pipe","debounceTime","tap","markForCheck","takeUntilDestroyed","rxHostPressedListener","merge","switchMap","x","code","of","filter","Boolean"],"mappings":"2HAKM,SAAUA,CAAgCC,CAAAA,CAAAA,CAAa,CACzD,IAAMC,CAAMC,CAAAA,CAAAA,CAAOC,EAAiB,CAAA,CAGpC,OAAOC,EAAAA,CAAaF,CAAOG,CAAAA,CAAU,EAAEC,aAAeN,CAAAA,CAAK,CAAEO,CAAAA,IAAAA,CACzDC,EAAa,CAAA,CAAC,CACdC,CAAAA,EAAAA,CAAI,IAAMR,CAAIS,CAAAA,YAAAA,EAAc,CAAA,CAC5BC,EAAkB,EAAE,CAE5B,CAKM,SAAUC,CAAqB,EAAA,CACjC,OAAOC,EAAAA,CACHd,CAAe,CAAA,OAAO,CACtBA,CAAAA,CAAAA,CAA8B,OAAO,CAAA,CAAEQ,IACnCO,CAAAA,EAAAA,CAAWC,CACAA,EAAAA,CAAAA,CAAEC,IAAS,GAAA,OAAA,EAAWD,EAAEC,IAAS,GAAA,OAAA,CAAUC,CAAG,CAAA,CAAA,CAAI,CAAIA,CAAAA,CAAAA,CAAG,IAAI,CACvE,EACDC,CAAOC,CAAAA,OAAO,CAAC,CAClB,CACHZ,CAAAA,IAAAA,CAAKC,EAAa,CAAA,CAAC,CAAC,CAC1B"}