pragma-views2
Version:
89 lines (72 loc) • 2.56 kB
JavaScript
export class Platform {
constructor() {
this.platform = {
"WINDOWS": {
name: "Windows",
modifiers: {
control: "ctrl",
alt: "alt",
shift: "shift"
}
},
"LINUX": {
name: "Linux",
modifiers: {
control: "ctrl",
alt: "alt",
shift: "shift",
}
},
"MAC": {
name: "Mac",
modifiers: {
control: "command",
alt: "option",
shift: "shift"
}
}
};
this.os = this.currentPlatform();
}
dispose() {
this.platform = null;
this.os = null;
}
/**
* Returns the current platform
* @returns {*}
*/
currentPlatform() {
if(window.navigator) {
if(window.navigator.userAgent.indexOf(this.platform.WINDOWS.name) !== -1)
return this.platform.WINDOWS;
if(window.navigator.userAgent.indexOf(this.platform.LINUX.name) !== -1)
return this.platform.LINUX;
if(window.navigator.userAgent.indexOf(this.platform.MAC.name) !== -1)
return this.platform.MAC;
}
}
/**
* Returns the key combination based on the current platform
* @param event
* @returns {*}
*/
keycombo(event) {
if(this.os === this.platform.WINDOWS || this.os === this.platform.LINUX) {
if(event.ctrlKey === true && event.altKey === true)
return `${this.os.modifiers.control} + ${this.os.modifiers.alt} + ${event.key}`;
if(event.shiftKey === true && event.altKey === true)
return `${this.os.modifiers.shift} + ${this.os.modifiers.alt} + ${event.key}`;
if(event.ctrlKey === true && !event.altKey)
return `${this.os.modifiers.control} + ${event.key}`;
if(!event.ctrlKey && event.altKey === true)
return `${this.os.modifiers.alt} + ${event.key}`;
if(event.shiftKey === true)
return `${this.os.modifiers.shift} + ${event.key}`;
return event.key;
}
if(this.os === this.platform.MAC) {
// Configure the bindings for MAC here
}
}
}