import * as Mousetrap from 'mousetrap'; document.addEventListener('DOMContentLoaded', event => { const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 && navigator.userAgent.indexOf('Chrome') === -1; const isVivaldi = !isSafari && navigator.userAgent.indexOf(' Vivaldi/') !== -1; if (!isSafari && !isVivaldi) { return; } if (isSafari && (window as any).__bitwardenFrameId == null) { (window as any).__bitwardenFrameId = Math.floor(Math.random() * Math.floor(99999999)); } Mousetrap.prototype.stopCallback = () => { return false; }; let autofillCommand = ['mod+shift+l']; if (isSafari) { autofillCommand = ['mod+\\', 'mod+8', 'mod+shift+p']; } Mousetrap.bind(autofillCommand, () => { sendMessage('autofill_login'); }); if (isSafari) { Mousetrap.bind('mod+shift+y', () => { sendMessage('open_popup'); }); Mousetrap.bind('mod+shift+s', () => { sendMessage('lock_vault'); }); } else { Mousetrap.bind('mod+shift+9', () => { sendMessage('generate_password'); }); } function sendMessage(shortcut: string) { const msg: any = { command: 'keyboardShortcutTriggered', shortcut: shortcut, }; chrome.runtime.sendMessage(msg); } });