electron-localshortcut
Advanced tools
Comparing version 0.6.0 to 0.6.1
186
index.js
'use strict'; | ||
const electron = require('electron'); | ||
const globalShortcut = electron.globalShortcut; | ||
@@ -14,137 +15,136 @@ const BrowserWindow = electron.BrowserWindow; | ||
function isAccelerator(arg) { | ||
return typeof arg === 'string'; | ||
return typeof arg === 'string'; | ||
} | ||
function unregisterAllShortcuts(win) { | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.forEach( sc => | ||
globalShortcut.unregister(sc.accelerator) | ||
); | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.forEach(sc => | ||
globalShortcut.unregister(sc.accelerator) | ||
); | ||
} | ||
function registerAllShortcuts(win) { | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.forEach( sc => | ||
globalShortcut.register(sc.accelerator, sc.callback) | ||
); | ||
shortcuts.forEach(sc => | ||
globalShortcut.register(sc.accelerator, sc.callback) | ||
); | ||
} | ||
function unregisterAll(win) { | ||
if (win === undefined) { | ||
// unregister shortcuts for any window in the app | ||
unregisterAll(ANY_WINDOW); | ||
return; | ||
} | ||
if (win === undefined) { | ||
// unregister shortcuts for any window in the app | ||
unregisterAll(ANY_WINDOW); | ||
return; | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return; | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return; | ||
} | ||
unregisterAllShortcuts(win); | ||
windowsWithShortcuts.delete(win); | ||
unregisterAllShortcuts(win); | ||
windowsWithShortcuts.delete(win); | ||
} | ||
function register(win, accelerator, callback) { | ||
if (arguments.length === 2 && isAccelerator(win)) { | ||
// register shortcut for any window in the app | ||
// win = accelerator, accelerator = callback | ||
register(ANY_WINDOW, win, accelerator); | ||
return; | ||
} | ||
if (arguments.length === 2 && isAccelerator(win)) { | ||
// register shortcut for any window in the app | ||
// win = accelerator, accelerator = callback | ||
register(ANY_WINDOW, win, accelerator); | ||
return; | ||
} | ||
if (windowsWithShortcuts.has(win)) { | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.push({ | ||
accelerator: accelerator, | ||
callback: callback | ||
}); | ||
} else { | ||
windowsWithShortcuts.set(win, [{ | ||
accelerator: accelerator, | ||
callback: callback | ||
}]); | ||
} | ||
if (windowsWithShortcuts.has(win)) { | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.push({ | ||
accelerator, | ||
callback | ||
}); | ||
} else { | ||
windowsWithShortcuts.set(win, [{ | ||
accelerator, | ||
callback | ||
}]); | ||
} | ||
const focusedWin = BrowserWindow.getFocusedWindow(); | ||
if ((win === ANY_WINDOW && focusedWin !== null) || focusedWin === win) { | ||
globalShortcut.register(accelerator, callback); | ||
} | ||
const focusedWin = BrowserWindow.getFocusedWindow(); | ||
if ((win === ANY_WINDOW && focusedWin !== null) || focusedWin === win) { | ||
globalShortcut.register(accelerator, callback); | ||
} | ||
} | ||
function indexOfShortcut(win, accelerator) { | ||
if (!windowsWithShortcuts.has(win)) { | ||
return -1; | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return -1; | ||
} | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
let shortcutToUnregisterIdx = -1; | ||
shortcuts.some((s, idx) => { | ||
if (s.accelerator === accelerator) { | ||
shortcutToUnregisterIdx = idx; | ||
return true; | ||
} | ||
return false; | ||
}); | ||
return shortcutToUnregisterIdx; | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
let shortcutToUnregisterIdx = -1; | ||
shortcuts.some((s, idx) => { | ||
if (s.accelerator === accelerator) { | ||
shortcutToUnregisterIdx = idx; | ||
return true; | ||
} | ||
return false; | ||
}); | ||
return shortcutToUnregisterIdx; | ||
} | ||
function unregister(win, accelerator) { | ||
if (arguments.length === 1 && isAccelerator(win)) { | ||
// unregister shortcut for any window in the app | ||
// win = accelerator | ||
unregister(ANY_WINDOW, win); | ||
return; | ||
} | ||
const shortcutToUnregisterIdx = indexOfShortcut(win, accelerator); | ||
if (arguments.length === 1 && isAccelerator(win)) { | ||
// unregister shortcut for any window in the app | ||
// win = accelerator | ||
unregister(ANY_WINDOW, win); | ||
return; | ||
} | ||
const shortcutToUnregisterIdx = indexOfShortcut(win, accelerator); | ||
if (shortcutToUnregisterIdx !== -1) { | ||
globalShortcut.unregister(accelerator); | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.splice(shortcutToUnregisterIdx); | ||
} | ||
if (shortcutToUnregisterIdx !== -1) { | ||
globalShortcut.unregister(accelerator); | ||
const shortcuts = windowsWithShortcuts.get(win); | ||
shortcuts.splice(shortcutToUnregisterIdx, 1); | ||
} | ||
} | ||
function isRegistered(win, accelerator) { | ||
if (arguments.length === 1 && isAccelerator(win)) { | ||
// check shortcut for any window in the app | ||
// win = accelerator | ||
return isRegistered(ANY_WINDOW, win); | ||
} | ||
if (arguments.length === 1 && isAccelerator(win)) { | ||
// check shortcut for any window in the app | ||
// win = accelerator | ||
return isRegistered(ANY_WINDOW, win); | ||
} | ||
return indexOfShortcut(win, accelerator) !== -1; | ||
return indexOfShortcut(win, accelerator) !== -1; | ||
} | ||
app.on('browser-window-focus', (e, win) => { | ||
if (windowsWithShortcuts.has(ANY_WINDOW)) { | ||
registerAllShortcuts(ANY_WINDOW); | ||
} | ||
if (windowsWithShortcuts.has(ANY_WINDOW)) { | ||
registerAllShortcuts(ANY_WINDOW); | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return; | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return; | ||
} | ||
registerAllShortcuts(win); | ||
registerAllShortcuts(win); | ||
}); | ||
app.on('browser-window-blur', (e, win) => { | ||
if (windowsWithShortcuts.has(ANY_WINDOW)) { | ||
unregisterAllShortcuts(ANY_WINDOW); | ||
} | ||
if (windowsWithShortcuts.has(ANY_WINDOW)) { | ||
unregisterAllShortcuts(ANY_WINDOW); | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return; | ||
} | ||
if (!windowsWithShortcuts.has(win)) { | ||
return; | ||
} | ||
unregisterAllShortcuts(win); | ||
unregisterAllShortcuts(win); | ||
}); | ||
module.exports = { | ||
register: register, | ||
unregister: unregister, | ||
isRegistered: isRegistered, | ||
unregisterAll: unregisterAll, | ||
enableAll: registerAllShortcuts, | ||
disableAll: unregisterAllShortcuts | ||
register, | ||
unregister, | ||
isRegistered, | ||
unregisterAll, | ||
enableAll: registerAllShortcuts, | ||
disableAll: unregisterAllShortcuts | ||
}; |
{ | ||
"name": "electron-localshortcut", | ||
"version": "0.6.0", | ||
"version": "0.6.1", | ||
"description": "register/unregister a keyboard shortcut locally to a BrowserWindow instance, without using a Menu", | ||
@@ -10,7 +10,4 @@ "repository": "parro-it/electron-localshortcut", | ||
"start": "electron test.js", | ||
"test": "eslint ." | ||
"test": "xo" | ||
}, | ||
"eslintConfig": { | ||
"extends": "eslint-config-devenv" | ||
}, | ||
"keywords": [ | ||
@@ -23,3 +20,17 @@ "electron", | ||
"index.js" | ||
] | ||
], | ||
"devDependencies": { | ||
"electron-prebuilt": "^1.2.5", | ||
"xo": "^0.16.0" | ||
}, | ||
"xo": { | ||
"esnext": true, | ||
"envs": [ | ||
"node", | ||
"browser" | ||
], | ||
"rules": { | ||
"import/no-extraneous-dependencies": "off" | ||
} | ||
} | ||
} |
@@ -8,3 +8,3 @@ # electron-localshortcut | ||
**Note:** Since this module internally use `global-shortcut` native module, you should not use it until the `ready` event of the app module is emitted. See [electron docs](https://github.com/atom/electron/edit/master/docs/api/global-shortcut.md). | ||
**Note:** Since this module internally use `global-shortcut` native module, you should not use it until the `ready` event of the app module is emitted. See [electron docs](http://electron.atom.io/docs/latest/api/global-shortcut/). | ||
@@ -11,0 +11,0 @@ [![Travis Build Status](https://img.shields.io/travis/parro-it/electron-localshortcut.svg)](http://travis-ci.org/parro-it/electron-localshortcut) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
9959
2