ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
67 lines • 7.37 kB
JavaScript
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
import { Util } from '../util/util';
import * as i0 from "@angular/core";
export class OKeyboardListenerDirective {
constructor() {
this.onKeysPressed = new EventEmitter();
this.keyboardNumberKeysArray = [];
this.activeKeys = {};
}
keyDown(e) {
const pressedCode = e.keyCode;
if (this.keyboardNumberKeysArray.indexOf(pressedCode) !== -1) {
this.activeKeys[pressedCode] = true;
this.checkNeededKeys(e);
}
}
keyUp(e) {
const pressedCode = e.keyCode;
if (this.keyboardNumberKeysArray.indexOf(pressedCode) !== -1) {
this.activeKeys[pressedCode] = false;
}
}
ngOnInit() {
this.parseKeyboardKeys();
}
parseKeyboardKeys() {
const keysAsStringArray = Util.parseArray(this.keyboardKeys);
keysAsStringArray.forEach(key => {
try {
this.keyboardNumberKeysArray.push(parseInt(key, 10));
}
catch (e) {
console.error(e);
}
});
}
checkNeededKeys(e) {
let trigger = true;
this.keyboardNumberKeysArray.forEach(key => {
trigger = trigger && this.activeKeys[key];
});
if (trigger) {
e.preventDefault();
e.stopPropagation();
this.onKeysPressed.emit();
}
}
}
OKeyboardListenerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OKeyboardListenerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
OKeyboardListenerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OKeyboardListenerDirective, selector: "[oKeyboardListener]", inputs: { keyboardKeys: "keyboardKeys" }, outputs: { onKeysPressed: "onKeysPressed" }, host: { listeners: { "keydown": "keyDown($event)", "keyup": "keyUp($event)" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OKeyboardListenerDirective, decorators: [{
type: Directive,
args: [{
selector: '[oKeyboardListener]'
}]
}], propDecorators: { keyboardKeys: [{
type: Input
}], onKeysPressed: [{
type: Output
}], keyDown: [{
type: HostListener,
args: ['keydown', ['$event']]
}], keyUp: [{
type: HostListener,
args: ['keyup', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtbGlzdGVuZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2RpcmVjdGl2ZXMva2V5Ym9hcmQtbGlzdGVuZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBS3BDLE1BQU0sT0FBTywwQkFBMEI7SUFIdkM7UUFNWSxrQkFBYSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpFLDRCQUF1QixHQUFrQixFQUFFLENBQUM7UUFDNUMsZUFBVSxHQUFXLEVBQUUsQ0FBQztLQStDbkM7SUE1Q0MsT0FBTyxDQUFDLENBQWdCO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBR0QsS0FBSyxDQUFDLENBQWdCO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSTtnQkFDRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0RDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBZ0I7UUFDOUIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLEVBQUU7WUFDWCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXBCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDOzt3SEFuRFUsMEJBQTBCOzRHQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs4QkFHVSxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBTVAsT0FBTztzQkFETixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVbkMsS0FBSztzQkFESixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29LZXlib2FyZExpc3RlbmVyXSdcbn0pXG5leHBvcnQgY2xhc3MgT0tleWJvYXJkTGlzdGVuZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGtleWJvYXJkS2V5czogc3RyaW5nO1xuICBAT3V0cHV0KCkgb25LZXlzUHJlc3NlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBwcm90ZWN0ZWQga2V5Ym9hcmROdW1iZXJLZXlzQXJyYXk6IEFycmF5PG51bWJlcj4gPSBbXTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUtleXM6IG9iamVjdCA9IHt9O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBrZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBwcmVzc2VkQ29kZSA9IGUua2V5Q29kZTtcbiAgICBpZiAodGhpcy5rZXlib2FyZE51bWJlcktleXNBcnJheS5pbmRleE9mKHByZXNzZWRDb2RlKSAhPT0gLTEpIHtcbiAgICAgIHRoaXMuYWN0aXZlS2V5c1twcmVzc2VkQ29kZV0gPSB0cnVlO1xuICAgICAgdGhpcy5jaGVja05lZWRlZEtleXMoZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBrZXlVcChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgcHJlc3NlZENvZGUgPSBlLmtleUNvZGU7XG4gICAgaWYgKHRoaXMua2V5Ym9hcmROdW1iZXJLZXlzQXJyYXkuaW5kZXhPZihwcmVzc2VkQ29kZSkgIT09IC0xKSB7XG4gICAgICB0aGlzLmFjdGl2ZUtleXNbcHJlc3NlZENvZGVdID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJzZUtleWJvYXJkS2V5cygpO1xuICB9XG5cbiAgcGFyc2VLZXlib2FyZEtleXMoKSB7XG4gICAgY29uc3Qga2V5c0FzU3RyaW5nQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5rZXlib2FyZEtleXMpO1xuICAgIGtleXNBc1N0cmluZ0FycmF5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROdW1iZXJLZXlzQXJyYXkucHVzaChwYXJzZUludChrZXksIDEwKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjaGVja05lZWRlZEtleXMoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGxldCB0cmlnZ2VyID0gdHJ1ZTtcbiAgICB0aGlzLmtleWJvYXJkTnVtYmVyS2V5c0FycmF5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRyaWdnZXIgPSB0cmlnZ2VyICYmIHRoaXMuYWN0aXZlS2V5c1trZXldO1xuICAgIH0pO1xuICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgLy8gdGhpcy5hY3RpdmVLZXlzID0ge307XG4gICAgICB0aGlzLm9uS2V5c1ByZXNzZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=