@samitouri / QOS-React-2 / commits / e501238c10

Fix getEventModifierState, no allocations

Alternative to #1637 that doesn't allocate on every event. Test Plan: Crossed fingers.

Ben Alpert committed Jun 3, 2014 at 14:27 UTC e501238c1010f68fe9b57ac7453ca9fd9d2598d7
1 file changed +15 -7
src/browser/ui/dom/getEventModifierState.js
+15 -7
@@ -31,14 +31,22 @@ var modifierKeyToProp = {
31 'shift': 'shiftKey'
32 };
33
34 +// IE8 does not implement getModifierState so we simply map it to the only
35 +// modifier keys exposed by the event itself, does not support Lock-keys.
36 +// Currently, all major browsers except Chrome seems to support Lock-keys.
37 +function modifierStateGetter(keyArg) {
38 + /*jshint validthis:true */
39 + var syntheticEvent = this;
40 + var nativeEvent = syntheticEvent.nativeEvent;
41 + if (nativeEvent.getModifierState) {
42 + return nativeEvent.getModifierState(keyArg);
43 + }
44 + var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
45 + return keyProp && nativeEvent[keyProp];
46 +}
47 +
48 function getEventModifierState(nativeEvent) {
35 - // IE8 does not implement getModifierState so we simply map it to the only
36 - // modifier keys exposed by the event itself, does not support Lock-keys.
37 - // Currently, all major browsers except Chrome seems to support Lock-keys.
38 - return nativeEvent.getModifierState || function(keyArg) {
39 - var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
40 - return keyProp && nativeEvent[keyProp];
41 - };
49 + return modifierStateGetter;
50 }
51
52 module.exports = getEventModifierState;