Revert "Don't wrap drag events in IE/Edge in dev builds" (#6741)

(cherry picked from commit 98cb2f8507)
This commit is contained in:
Ben Alpert
2016-05-12 11:38:07 -07:00
committed by Paul O’Shannessy
parent 7da8884581
commit e15a7d1f7e
-42
View File
@@ -11,8 +11,6 @@
'use strict';
var SyntheticDragEvent = require('SyntheticDragEvent');
var caughtError = null;
/**
@@ -67,11 +65,6 @@ if (__DEV__) {
typeof document.createEvent === 'function') {
var fakeNode = document.createElement('react');
ReactErrorUtils.invokeGuardedCallback = function(name, func, a, b) {
if (!canWrapEvent(a)) {
invokeGuardedCallback(name, func, a, b);
return;
}
var boundFunc = func.bind(null, a, b);
var evtType = `react-${name}`;
fakeNode.addEventListener(evtType, boundFunc, false);
@@ -81,41 +74,6 @@ if (__DEV__) {
fakeNode.removeEventListener(evtType, boundFunc, false);
};
}
var cacheCanWrapEvent = null;
/**
* IE and Edge don't allow access to the DataTransfer.dropEffect property when
* it's wrapped in another event. This function detects whether we're in an
* environment that behaves this way.
*
* @param {*} ev Event that is being tested
*/
function canWrapEvent(ev) {
if (!(ev instanceof SyntheticDragEvent)) {
return true;
} else if (cacheCanWrapEvent !== null) {
return cacheCanWrapEvent;
}
var canAccessDropEffect = false;
function handleWrappedEvent() {
try {
ev.dataTransfer.dropEffect; // eslint-disable-line no-unused-expressions
canAccessDropEffect = true;
} catch (e) {}
}
var wrappedEventName = 'react-wrappeddragevent';
var wrappedEvent = document.createEvent('Event');
wrappedEvent.initEvent(wrappedEventName, false, false);
fakeNode.addEventListener(wrappedEventName, handleWrappedEvent, false);
fakeNode.dispatchEvent(wrappedEvent);
fakeNode.removeEventListener(wrappedEventName, handleWrappedEvent, false);
cacheCanWrapEvent = canAccessDropEffect;
return canAccessDropEffect;
}
}
module.exports = ReactErrorUtils;