fix: handle components keydown and keyup actions

This commit is contained in:
Antonella Sgarlatta
2021-05-19 14:53:52 -03:00
parent 02e9a83948
commit 0a262de3db
2 changed files with 53 additions and 21 deletions

View File

@@ -50,37 +50,59 @@ export class IOService {
(this.handleWindowBlur as unknown) = undefined;
}
private addActiveModifier = (modifier: KeyboardModifier | undefined): void => {
if (!modifier) {
return;
}
switch (modifier) {
case KeyboardModifier.Meta: {
if (this.isMac) {
this.activeModifiers.add(modifier);
}
break;
}
case KeyboardModifier.Ctrl: {
if (!this.isMac) {
this.activeModifiers.add(modifier);
}
break;
}
default: {
this.activeModifiers.add(modifier);
break;
}
}
}
private removeActiveModifier = (modifier: KeyboardModifier | undefined): void => {
if (!modifier) {
return;
}
this.activeModifiers.delete(modifier);
}
handleKeyDown = (event: KeyboardEvent): void => {
for (const modifier of this.modifiersForEvent(event)) {
switch (modifier) {
case KeyboardModifier.Meta: {
if (this.isMac) {
this.activeModifiers.add(modifier);
}
break;
}
case KeyboardModifier.Ctrl: {
if (!this.isMac) {
this.activeModifiers.add(modifier);
}
break;
}
default: {
this.activeModifiers.add(modifier);
break;
}
}
this.addActiveModifier(modifier);
}
this.notifyObserver(event, KeyboardKeyEvent.Down);
};
handleComponentKeyDown = (modifier: KeyboardModifier | undefined): void => {
this.addActiveModifier(modifier);
}
handleKeyUp = (event: KeyboardEvent): void => {
for (const modifier of this.modifiersForEvent(event)) {
this.activeModifiers.delete(modifier);
this.removeActiveModifier(modifier);
}
this.notifyObserver(event, KeyboardKeyEvent.Up);
};
handleComponentKeyUp = (modifier: KeyboardModifier | undefined): void => {
this.removeActiveModifier(modifier);
}
handleWindowBlur = (): void => {
for (const modifier of this.activeModifiers) {
this.activeModifiers.delete(modifier);