{"version":3,"file":"ng-doc-ui-kit-directives-focus-catcher.mjs","sources":["../../../../libs/ui-kit/directives/focus-catcher/focus-catcher.directive.ts","../../../../libs/ui-kit/directives/focus-catcher/ng-doc-ui-kit-directives-focus-catcher.ts"],"sourcesContent":["import {\n\tChangeDetectorRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHostBinding,\n\tNgZone,\n\tOutput,\n} from '@angular/core';\nimport { BLUR_EVENT, FOCUS_EVENT } from '@ng-doc/ui-kit/constants';\nimport { toElement } from '@ng-doc/ui-kit/helpers';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Directive({\n\tselector: '[ngDocFocusCatcher]',\n\texportAs: 'ngDocFocusCatcher',\n\tstandalone: true,\n})\n@UntilDestroy()\nexport class NgDocFocusCatcherDirective {\n\t@Output()\n\tfocusEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n\t@Output()\n\tblurEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n\t@HostBinding('attr.data-ng-doc-focused')\n\tfocused: boolean = false;\n\n\tconstructor(\n\t\tprivate elementRef: ElementRef<HTMLElement>,\n\t\tprivate ngZone: NgZone,\n\t\tprivate changeDetectorRef: ChangeDetectorRef,\n\t) {\n\t\tNgDocFocusCatcherDirective.observeFocus(toElement(this.elementRef))\n\t\t\t.pipe(ngDocZoneOptimize(this.ngZone), untilDestroyed(this))\n\t\t\t.subscribe((event: FocusEvent) => {\n\t\t\t\tthis.focused = event.type === FOCUS_EVENT;\n\t\t\t\tthis.focused ? this.focusEvent.emit(event) : this.blurEvent.emit(event);\n\t\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t\t});\n\t}\n\n\tstatic observeFocus(element: HTMLElement): Observable<FocusEvent> {\n\t\treturn merge(\n\t\t\tfromEvent<FocusEvent>(element, FOCUS_EVENT),\n\t\t\tfromEvent<FocusEvent>(element, BLUR_EVENT),\n\t\t).pipe(\n\t\t\tdebounceTime(0),\n\t\t\tdistinctUntilChanged((a: FocusEvent, b: FocusEvent) => a.type === b.type),\n\t\t);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAsBa,IAAA,0BAA0B,GAAhC,MAAM,0BAA0B,CAAA;;AAUtC,IAAA,WAAA,CACS,UAAmC,EACnC,MAAc,EACd,iBAAoC,EAAA;QAFpC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAX1B,QAAA,IAAA,CAAA,UAAU,GAAwB,IAAI,YAAY,EAAS;AAG3D,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,YAAY,EAAS;QAG1D,IAAO,CAAA,OAAA,GAAY,KAAK;QAOvB,4BAA0B,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAChE,aAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;AACzD,aAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;YAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACvE,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACtC,SAAC,CAAC;;IAGJ,OAAO,YAAY,CAAC,OAAoB,EAAA;AACvC,QAAA,OAAO,KAAK,CACX,SAAS,CAAa,OAAO,EAAE,WAAW,CAAC,EAC3C,SAAS,CAAa,OAAO,EAAE,UAAU,CAAC,CAC1C,CAAC,IAAI,CACL,YAAY,CAAC,CAAC,CAAC,EACf,oBAAoB,CAAC,CAAC,CAAa,EAAE,CAAa,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CACzE;;8GA/BU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAA1B,0BAA0B,GAAA,4BAAA,GAAA,UAAA,CAAA;AADtC,IAAA,YAAY,EAAE;qCAYO,UAAU;QACd,MAAM;QACK,iBAAiB,CAAA;AAbjC,CAAA,EAAA,0BAA0B,CAiCtC;2FAjCY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA;oIAIA,UAAU,EAAA,CAAA;sBADT;gBAID,SAAS,EAAA,CAAA;sBADR;gBAID,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,0BAA0B;;;AC7BxC;;AAEG;;;;"}