UNPKG

pragma-views2

Version:

89 lines (72 loc) 2.56 kB
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 } } }