UNPKG

@ng-doc/ui-kit

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

1 lines 3.72 kB
{"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 ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n NgZone,\n Output,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { fromEvent, merge, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Directive({\n selector: '[ngDocFocusCatcher]',\n exportAs: 'ngDocFocusCatcher',\n standalone: true,\n})\nexport class NgDocFocusCatcherDirective {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n @Output()\n focusEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @Output()\n blurEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @HostBinding('attr.data-ng-doc-focused')\n focused: boolean = false;\n\n constructor() {\n NgDocFocusCatcherDirective.observeFocus(toElement(this.elementRef))\n .pipe(ngDocZoneOptimize(this.ngZone), takeUntilDestroyed())\n .subscribe((event: FocusEvent) => {\n this.focused = event.type === FOCUS_EVENT;\n this.focused ? this.focusEvent.emit(event) : this.blurEvent.emit(event);\n this.changeDetectorRef.markForCheck();\n });\n }\n\n static observeFocus(element: HTMLElement): Observable<FocusEvent> {\n return merge(\n fromEvent<FocusEvent>(element, FOCUS_EVENT),\n fromEvent<FocusEvent>(element, BLUR_EVENT),\n ).pipe(\n debounceTime(0),\n distinctUntilChanged((a: FocusEvent, b: FocusEvent) => a.type === b.type),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAsBa,0BAA0B,CAAA;AAcrC,IAAA,WAAA,GAAA;AAbQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAGrD,QAAA,IAAA,CAAA,UAAU,GAAwB,IAAI,YAAY,EAAS;AAG3D,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,YAAY,EAAS;QAG1D,IAAA,CAAA,OAAO,GAAY,KAAK;QAGtB,0BAA0B,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE;AACzD,aAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;YAC/B,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;AACvC,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,YAAY,CAAC,OAAoB,EAAA;AACtC,QAAA,OAAO,KAAK,CACV,SAAS,CAAa,OAAO,EAAE,WAAW,CAAC,EAC3C,SAAS,CAAa,OAAO,EAAE,UAAU,CAAC,CAC3C,CAAC,IAAI,CACJ,YAAY,CAAC,CAAC,CAAC,EACf,oBAAoB,CAAC,CAAC,CAAa,EAAE,CAAa,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAC1E;IACH;8GAhCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,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;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAME;;sBAGA;;sBAGA,WAAW;uBAAC,0BAA0B;;;ACjCzC;;AAEG;;;;"}