mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Merge pull request #1638 from spicyj/getmodifierstate-2
Fix getEventModifierState, no allocations
This commit is contained in:
@@ -31,14 +31,22 @@ var modifierKeyToProp = {
|
||||
'shift': 'shiftKey'
|
||||
};
|
||||
|
||||
// IE8 does not implement getModifierState so we simply map it to the only
|
||||
// modifier keys exposed by the event itself, does not support Lock-keys.
|
||||
// Currently, all major browsers except Chrome seems to support Lock-keys.
|
||||
function modifierStateGetter(keyArg) {
|
||||
/*jshint validthis:true */
|
||||
var syntheticEvent = this;
|
||||
var nativeEvent = syntheticEvent.nativeEvent;
|
||||
if (nativeEvent.getModifierState) {
|
||||
return nativeEvent.getModifierState(keyArg);
|
||||
}
|
||||
var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
|
||||
return keyProp && nativeEvent[keyProp];
|
||||
}
|
||||
|
||||
function getEventModifierState(nativeEvent) {
|
||||
// IE8 does not implement getModifierState so we simply map it to the only
|
||||
// modifier keys exposed by the event itself, does not support Lock-keys.
|
||||
// Currently, all major browsers except Chrome seems to support Lock-keys.
|
||||
return nativeEvent.getModifierState || function(keyArg) {
|
||||
var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
|
||||
return keyProp && nativeEvent[keyProp];
|
||||
};
|
||||
return modifierStateGetter;
|
||||
}
|
||||
|
||||
module.exports = getEventModifierState;
|
||||
|
||||
Reference in New Issue
Block a user