@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>
56 lines (52 loc) • 2.69 kB
JavaScript
import { __decorate, __metadata } from 'tslib';
import * as i0 from '@angular/core';
import { EventEmitter, afterNextRender, NgZone, Directive, Input, Output } from '@angular/core';
import { isKeyboardEvent } from '@ng-doc/core/helpers/is-keyboard-event';
import { objectKeys } from '@ng-doc/core/helpers/object-keys';
import { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
import { fromEvent } from 'rxjs';
import { filter } from 'rxjs/operators';
let NgDocHotkeyDirective = class NgDocHotkeyDirective {
constructor(ngZone) {
this.ngZone = ngZone;
this.callback = new EventEmitter();
afterNextRender(() => {
fromEvent(document, 'keyup')
.pipe(filter(isKeyboardEvent), filter((event) => objectKeys(this.hotkey ?? {}).every((key) => this.hotkey && this.hotkey[key] === event[key])), filter((event) => {
if (event.target instanceof HTMLElement) {
return !['input', 'textarea', 'select'].includes(event.target.tagName.toLowerCase());
}
return true;
}), ngDocZoneOptimize(this.ngZone), untilDestroyed(this))
.subscribe((event) => {
event.preventDefault();
this.callback.emit();
});
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocHotkeyDirective, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.3", type: NgDocHotkeyDirective, isStandalone: true, selector: "[ngDocHotkey]", inputs: { hotkey: ["ngDocHotkey", "hotkey"] }, outputs: { callback: "ngDocHotkey" }, ngImport: i0 }); }
};
NgDocHotkeyDirective = __decorate([
UntilDestroy(),
__metadata("design:paramtypes", [NgZone])
], NgDocHotkeyDirective);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocHotkeyDirective, decorators: [{
type: Directive,
args: [{
selector: '[ngDocHotkey]',
standalone: true,
}]
}], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { hotkey: [{
type: Input,
args: ['ngDocHotkey']
}], callback: [{
type: Output,
args: ['ngDocHotkey']
}] } });
/**
* Generated bundle index. Do not edit.
*/
export { NgDocHotkeyDirective };
//# sourceMappingURL=ng-doc-ui-kit-directives-hotkey.mjs.map