ngx-ui-hero
Version:
Simple, fast and reliable utilities for Angular.
43 lines • 5.41 kB
JavaScript
import { fromEvent } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
import * as i0 from "@angular/core";
export class DebounceDirective {
constructor(elementRef) {
this.elementRef = elementRef;
this.delay = 500;
this.callback = new EventEmitter();
this.arrowsCallback = new EventEmitter();
this._arrowKeyCodes = [13, 27, 37, 38, 39, 40];
}
ngOnInit() {
const event1 = fromEvent(this.elementRef.nativeElement, 'keyup')
.pipe(debounceTime(this.delay))
.subscribe((input) => {
if (this._arrowKeyCodes.indexOf(input.keyCode) < 0) {
this.callback.emit(input);
}
});
const event2 = fromEvent(this.elementRef.nativeElement, 'keyup')
.subscribe((input) => {
if (this._arrowKeyCodes.indexOf(input.keyCode) >= 0) {
this.arrowsCallback.emit(input);
}
});
}
}
DebounceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DebounceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
DebounceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DebounceDirective, selector: "[debounce]", inputs: { delay: "delay" }, outputs: { callback: "callback", arrowsCallback: "arrowsCallback" }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DebounceDirective, decorators: [{
type: Directive,
args: [{
selector: '[debounce]'
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { delay: [{
type: Input
}], callback: [{
type: Output
}], arrowsCallback: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXVpLWhlcm8vc3JjL2xpYi91aS9kaXJlY3RpdmVzL2RlYm91bmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0YsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFQdkIsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNYLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUUzQyxtQkFBYyxHQUFhLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUlwRCxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7YUFDN0QsSUFBSSxDQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQzthQUM3RCxTQUFTLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsrR0E1QlUsaUJBQWlCO21HQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtpQkFDdkI7aUdBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkZWJvdW5jZV0nXG59KVxuZXhwb3J0IGNsYXNzIERlYm91bmNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGVsYXkgPSA1MDA7XG4gIEBPdXRwdXQoKSBjYWxsYmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFycm93c0NhbGxiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBfYXJyb3dLZXlDb2RlczogbnVtYmVyW10gPSBbMTMsMjcsMzcsMzgsMzksNDBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgZXZlbnQxID0gZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlbGF5KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGlucHV0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2Fycm93S2V5Q29kZXMuaW5kZXhPZihpbnB1dC5rZXlDb2RlKSA8IDApIHtcbiAgICAgICAgICB0aGlzLmNhbGxiYWNrLmVtaXQoaW5wdXQpO1xuICAgICAgICB9ICAgICAgICBcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZXZlbnQyID0gZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgLnN1YnNjcmliZSgoaW5wdXQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYXJyb3dLZXlDb2Rlcy5pbmRleE9mKGlucHV0LmtleUNvZGUpID49IDApIHtcbiAgICAgICAgICB0aGlzLmFycm93c0NhbGxiYWNrLmVtaXQoaW5wdXQpO1xuICAgICAgICB9IFxuICAgICAgfSk7XG4gIH1cblxufVxuIl19