react 0.14.0-alpha2 → 0.14.0-beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/addons.js +6 -3
- package/dist/JSXTransformer.js +634 -274
- package/dist/react-with-addons.js +5350 -4954
- package/dist/react-with-addons.min.js +6 -6
- package/dist/react.js +4777 -4408
- package/dist/react.min.js +6 -5
- package/lib/{AutoFocusMixin.js → AutoFocusUtils.js} +15 -5
- package/lib/BeforeInputEventPlugin.js +13 -13
- package/lib/CSSProperty.js +3 -0
- package/lib/CSSPropertyOperations.js +13 -13
- package/lib/CallbackQueue.js +4 -4
- package/lib/ChangeEventPlugin.js +16 -14
- package/lib/DOMChildrenOperations.js +10 -6
- package/lib/DOMProperty.js +82 -117
- package/lib/DOMPropertyOperations.js +78 -33
- package/lib/Danger.js +14 -14
- package/lib/DefaultEventPluginOrder.js +2 -2
- package/lib/EnterLeaveEventPlugin.js +8 -8
- package/lib/EventConstants.js +23 -1
- package/lib/EventPluginHub.js +13 -13
- package/lib/EventPluginRegistry.js +8 -8
- package/lib/EventPluginUtils.js +17 -17
- package/lib/EventPropagators.js +7 -7
- package/lib/FallbackCompositionState.js +3 -3
- package/lib/HTMLDOMPropertyConfig.js +13 -3
- package/lib/LinkedStateMixin.js +2 -2
- package/lib/LinkedValueUtils.js +50 -38
- package/lib/MetaMatchers.js +118 -0
- package/lib/OrderedMap.js +453 -0
- package/lib/PooledClass.js +14 -2
- package/lib/React.js +6 -6
- package/lib/ReactBrowserComponentMixin.js +4 -4
- package/lib/ReactBrowserEventEmitter.js +30 -7
- package/lib/ReactCSSTransitionGroup.js +16 -5
- package/lib/ReactCSSTransitionGroupChild.js +20 -11
- package/lib/ReactChildReconciler.js +25 -18
- package/lib/ReactChildren.js +9 -9
- package/lib/ReactClass.js +65 -83
- package/lib/ReactComponent.js +22 -17
- package/lib/ReactComponentBrowserEnvironment.js +2 -2
- package/lib/ReactComponentEnvironment.js +2 -2
- package/lib/ReactComponentWithPureRenderMixin.js +3 -3
- package/lib/ReactCompositeComponent.js +80 -111
- package/lib/ReactDOM.js +72 -158
- package/lib/ReactDOMButton.js +15 -26
- package/lib/ReactDOMComponent.js +378 -56
- package/lib/ReactDOMFactories.js +177 -0
- package/lib/ReactDOMIDOperations.js +23 -23
- package/lib/ReactDOMInput.js +83 -99
- package/lib/ReactDOMOption.js +25 -45
- package/lib/ReactDOMSelect.js +88 -98
- package/lib/ReactDOMSelection.js +3 -3
- package/lib/ReactDOMServer.js +2 -2
- package/lib/ReactDOMTextComponent.js +11 -11
- package/lib/ReactDOMTextarea.js +48 -61
- package/lib/ReactDefaultBatchingStrategy.js +4 -4
- package/lib/ReactDefaultInjection.js +24 -71
- package/lib/ReactDefaultPerf.js +7 -7
- package/lib/ReactDefaultPerfAnalysis.js +6 -9
- package/lib/ReactElement.js +22 -83
- package/lib/ReactElementValidator.js +48 -117
- package/lib/ReactEmptyComponent.js +4 -4
- package/lib/ReactErrorUtils.js +1 -1
- package/lib/ReactEventEmitterMixin.js +3 -4
- package/lib/ReactEventListener.js +57 -12
- package/lib/ReactFragment.js +22 -17
- package/lib/ReactInjection.js +11 -11
- package/lib/ReactInputSelection.js +8 -7
- package/lib/ReactInstanceHandles.js +12 -12
- package/lib/ReactIsomorphic.js +11 -11
- package/lib/ReactLink.js +1 -1
- package/lib/ReactMarkupChecksum.js +6 -2
- package/lib/ReactMount.js +88 -88
- package/lib/ReactMultiChild.js +83 -22
- package/lib/ReactMultiChildUpdateTypes.js +2 -1
- package/lib/ReactNativeComponent.js +3 -8
- package/lib/ReactNoopUpdateQueue.js +118 -0
- package/lib/ReactOwner.js +3 -3
- package/lib/ReactPerf.js +2 -2
- package/lib/ReactPropTransferer.js +3 -3
- package/lib/ReactPropTypeLocationNames.js +1 -1
- package/lib/ReactPropTypeLocations.js +1 -1
- package/lib/ReactPropTypes.js +49 -11
- package/lib/ReactReconcileTransaction.js +8 -8
- package/lib/ReactReconciler.js +18 -20
- package/lib/ReactRef.js +1 -1
- package/lib/ReactServerBatchingStrategy.js +23 -0
- package/lib/ReactServerRendering.js +22 -9
- package/lib/ReactServerRenderingTransaction.js +7 -7
- package/lib/ReactTestUtils.js +80 -58
- package/lib/ReactTransitionChildMapping.js +2 -2
- package/lib/ReactTransitionEvents.js +1 -1
- package/lib/ReactTransitionGroup.js +5 -6
- package/lib/ReactUpdateQueue.js +61 -36
- package/lib/ReactUpdates.js +14 -17
- package/lib/ReactWithAddons.js +14 -16
- package/lib/ResponderEventPlugin.js +514 -0
- package/lib/ResponderSyntheticEvent.js +40 -0
- package/lib/ResponderTouchHistoryStore.js +180 -0
- package/lib/SVGDOMPropertyConfig.js +1 -1
- package/lib/SelectEventPlugin.js +14 -15
- package/lib/SimpleEventPlugin.js +205 -29
- package/lib/SyntheticClipboardEvent.js +3 -3
- package/lib/SyntheticCompositionEvent.js +3 -3
- package/lib/SyntheticDragEvent.js +3 -3
- package/lib/SyntheticEvent.js +9 -8
- package/lib/SyntheticFocusEvent.js +3 -3
- package/lib/SyntheticInputEvent.js +3 -3
- package/lib/SyntheticKeyboardEvent.js +6 -6
- package/lib/SyntheticMouseEvent.js +5 -5
- package/lib/SyntheticTouchEvent.js +4 -4
- package/lib/SyntheticUIEvent.js +4 -4
- package/lib/SyntheticWheelEvent.js +3 -3
- package/lib/TapEventPlugin.js +119 -0
- package/lib/Transaction.js +16 -10
- package/lib/accumulate.js +44 -0
- package/lib/accumulateInto.js +2 -2
- package/lib/adler32.js +19 -7
- package/lib/cloneWithProps.js +12 -7
- package/lib/createHierarchyRenderer.js +85 -0
- package/lib/dangerousStyleValue.js +1 -1
- package/lib/deprecated.js +47 -0
- package/lib/findDOMNode.js +11 -12
- package/lib/flattenChildren.js +4 -4
- package/lib/forEachAccumulated.js +1 -1
- package/lib/getEventCharCode.js +1 -1
- package/lib/getEventKey.js +1 -1
- package/lib/getEventModifierState.js +0 -1
- package/lib/getTestDocument.js +28 -0
- package/lib/getTextContentAccessor.js +1 -1
- package/lib/instantiateReactComponent.js +24 -20
- package/lib/isEventSupported.js +1 -1
- package/lib/isTextInputElement.js +2 -1
- package/lib/joinClasses.js +1 -1
- package/lib/onlyChild.js +3 -3
- package/lib/quoteAttributeValueForBrowser.js +1 -1
- package/lib/reactComponentExpect.js +210 -0
- package/lib/renderSubtreeIntoContainer.js +1 -1
- package/lib/setInnerHTML.js +2 -2
- package/lib/setTextContent.js +3 -3
- package/lib/shallowCompare.js +1 -1
- package/lib/sliceChildren.js +51 -0
- package/lib/traverseAllChildren.js +15 -14
- package/lib/update.js +13 -13
- package/lib/validateDOMNesting.js +14 -6
- package/lib/webcomponents.js +6379 -0
- package/package.json +4 -6
- package/react.js +53 -1
- package/addons/CSSTransitionGroup.js +0 -1
- package/addons/LinkedStateMixin.js +0 -1
- package/addons/Perf.js +0 -1
- package/addons/PureRenderMixin.js +0 -1
- package/addons/TestUtils.js +0 -1
- package/addons/TransitionGroup.js +0 -1
- package/addons/batchedUpdates.js +0 -1
- package/addons/cloneWithProps.js +0 -1
- package/addons/createFragment.js +0 -1
- package/addons/renderSubtreeIntoContainer.js +0 -1
- package/addons/shallowCompare.js +0 -1
- package/addons/update.js +0 -1
- package/lib/CSSCore.js +0 -97
- package/lib/EventListener.js +0 -84
- package/lib/ExecutionEnvironment.js +0 -38
- package/lib/LocalEventTrapMixin.js +0 -46
- package/lib/ReactContext.js +0 -32
- package/lib/ReactDOMClient.js +0 -85
- package/lib/ReactDOMForm.js +0 -47
- package/lib/ReactDOMIframe.js +0 -43
- package/lib/ReactDOMImg.js +0 -44
- package/lib/ReactLifeCycle.js +0 -35
- package/lib/camelize.js +0 -32
- package/lib/camelizeStyleName.js +0 -40
- package/lib/containsNode.js +0 -55
- package/lib/createArrayFromMixed.js +0 -85
- package/lib/createFullPageComponent.js +0 -51
- package/lib/createNodesFromMarkup.js +0 -84
- package/lib/emptyFunction.js +0 -38
- package/lib/emptyObject.js +0 -20
- package/lib/focusNode.js +0 -26
- package/lib/getActiveElement.js +0 -29
- package/lib/getMarkupWrap.js +0 -115
- package/lib/getUnboundedScrollPosition.js +0 -38
- package/lib/hyphenate.js +0 -33
- package/lib/hyphenateStyleName.js +0 -39
- package/lib/invariant.js +0 -49
- package/lib/isNode.js +0 -23
- package/lib/isTextNode.js +0 -25
- package/lib/keyMirror.js +0 -48
- package/lib/keyOf.js +0 -35
- package/lib/mapObject.js +0 -51
- package/lib/performance.js +0 -23
- package/lib/performanceNow.js +0 -28
- package/lib/shallowEqual.js +0 -48
- package/lib/toArray.js +0 -57
- package/lib/warning.js +0 -61
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticEvent = require(
|
|
15
|
+
var SyntheticEvent = require('./SyntheticEvent');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @interface Event
|
|
@@ -30,8 +30,8 @@ var ClipboardEventInterface = {
|
|
|
30
30
|
* @param {object} nativeEvent Native browser event.
|
|
31
31
|
* @extends {SyntheticUIEvent}
|
|
32
32
|
*/
|
|
33
|
-
function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
34
|
-
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
33
|
+
function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
34
|
+
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticEvent = require(
|
|
15
|
+
var SyntheticEvent = require('./SyntheticEvent');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @interface Event
|
|
@@ -28,8 +28,8 @@ var CompositionEventInterface = {
|
|
|
28
28
|
* @param {object} nativeEvent Native browser event.
|
|
29
29
|
* @extends {SyntheticUIEvent}
|
|
30
30
|
*/
|
|
31
|
-
function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
32
|
-
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
31
|
+
function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
32
|
+
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticMouseEvent = require(
|
|
15
|
+
var SyntheticMouseEvent = require('./SyntheticMouseEvent');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @interface DragEvent
|
|
@@ -28,8 +28,8 @@ var DragEventInterface = {
|
|
|
28
28
|
* @param {object} nativeEvent Native browser event.
|
|
29
29
|
* @extends {SyntheticUIEvent}
|
|
30
30
|
*/
|
|
31
|
-
function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
32
|
-
SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
31
|
+
function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
32
|
+
SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
|
package/lib/SyntheticEvent.js
CHANGED
|
@@ -12,19 +12,18 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var PooledClass = require(
|
|
15
|
+
var PooledClass = require('./PooledClass');
|
|
16
16
|
|
|
17
|
-
var assign = require(
|
|
18
|
-
var emptyFunction = require(
|
|
19
|
-
var getEventTarget = require("./getEventTarget");
|
|
17
|
+
var assign = require('./Object.assign');
|
|
18
|
+
var emptyFunction = require('fbjs/lib/emptyFunction');
|
|
20
19
|
|
|
21
20
|
/**
|
|
22
21
|
* @interface Event
|
|
23
22
|
* @see http://www.w3.org/TR/DOM-Level-3-Events/
|
|
24
23
|
*/
|
|
25
24
|
var EventInterface = {
|
|
25
|
+
path: null,
|
|
26
26
|
type: null,
|
|
27
|
-
target: getEventTarget,
|
|
28
27
|
// currentTarget is set when dispatching; no use in copying it here
|
|
29
28
|
currentTarget: emptyFunction.thatReturnsNull,
|
|
30
29
|
eventPhase: null,
|
|
@@ -54,10 +53,12 @@ var EventInterface = {
|
|
|
54
53
|
* @param {string} dispatchMarker Marker identifying the event target.
|
|
55
54
|
* @param {object} nativeEvent Native browser event.
|
|
56
55
|
*/
|
|
57
|
-
function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
56
|
+
function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
58
57
|
this.dispatchConfig = dispatchConfig;
|
|
59
58
|
this.dispatchMarker = dispatchMarker;
|
|
60
59
|
this.nativeEvent = nativeEvent;
|
|
60
|
+
this.target = nativeEventTarget;
|
|
61
|
+
this.currentTarget = nativeEventTarget;
|
|
61
62
|
|
|
62
63
|
var Interface = this.constructor.Interface;
|
|
63
64
|
for (var propName in Interface) {
|
|
@@ -154,9 +155,9 @@ SyntheticEvent.augmentClass = function (Class, Interface) {
|
|
|
154
155
|
Class.Interface = assign({}, Super.Interface, Interface);
|
|
155
156
|
Class.augmentClass = Super.augmentClass;
|
|
156
157
|
|
|
157
|
-
PooledClass.addPoolingTo(Class, PooledClass.
|
|
158
|
+
PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);
|
|
158
159
|
};
|
|
159
160
|
|
|
160
|
-
PooledClass.addPoolingTo(SyntheticEvent, PooledClass.
|
|
161
|
+
PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
|
|
161
162
|
|
|
162
163
|
module.exports = SyntheticEvent;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticUIEvent = require(
|
|
15
|
+
var SyntheticUIEvent = require('./SyntheticUIEvent');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @interface FocusEvent
|
|
@@ -28,8 +28,8 @@ var FocusEventInterface = {
|
|
|
28
28
|
* @param {object} nativeEvent Native browser event.
|
|
29
29
|
* @extends {SyntheticUIEvent}
|
|
30
30
|
*/
|
|
31
|
-
function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
32
|
-
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
31
|
+
function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
32
|
+
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticEvent = require(
|
|
15
|
+
var SyntheticEvent = require('./SyntheticEvent');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @interface Event
|
|
@@ -29,8 +29,8 @@ var InputEventInterface = {
|
|
|
29
29
|
* @param {object} nativeEvent Native browser event.
|
|
30
30
|
* @extends {SyntheticUIEvent}
|
|
31
31
|
*/
|
|
32
|
-
function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
33
|
-
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
32
|
+
function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
33
|
+
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticUIEvent = require(
|
|
15
|
+
var SyntheticUIEvent = require('./SyntheticUIEvent');
|
|
16
16
|
|
|
17
|
-
var getEventCharCode = require(
|
|
18
|
-
var getEventKey = require(
|
|
19
|
-
var getEventModifierState = require(
|
|
17
|
+
var getEventCharCode = require('./getEventCharCode');
|
|
18
|
+
var getEventKey = require('./getEventKey');
|
|
19
|
+
var getEventModifierState = require('./getEventModifierState');
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @interface KeyboardEvent
|
|
@@ -76,8 +76,8 @@ var KeyboardEventInterface = {
|
|
|
76
76
|
* @param {object} nativeEvent Native browser event.
|
|
77
77
|
* @extends {SyntheticUIEvent}
|
|
78
78
|
*/
|
|
79
|
-
function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
80
|
-
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
79
|
+
function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
80
|
+
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticUIEvent = require(
|
|
16
|
-
var ViewportMetrics = require(
|
|
15
|
+
var SyntheticUIEvent = require('./SyntheticUIEvent');
|
|
16
|
+
var ViewportMetrics = require('./ViewportMetrics');
|
|
17
17
|
|
|
18
|
-
var getEventModifierState = require(
|
|
18
|
+
var getEventModifierState = require('./getEventModifierState');
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @interface MouseEvent
|
|
@@ -64,8 +64,8 @@ var MouseEventInterface = {
|
|
|
64
64
|
* @param {object} nativeEvent Native browser event.
|
|
65
65
|
* @extends {SyntheticUIEvent}
|
|
66
66
|
*/
|
|
67
|
-
function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
68
|
-
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
67
|
+
function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
68
|
+
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticUIEvent = require(
|
|
15
|
+
var SyntheticUIEvent = require('./SyntheticUIEvent');
|
|
16
16
|
|
|
17
|
-
var getEventModifierState = require(
|
|
17
|
+
var getEventModifierState = require('./getEventModifierState');
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @interface TouchEvent
|
|
@@ -37,8 +37,8 @@ var TouchEventInterface = {
|
|
|
37
37
|
* @param {object} nativeEvent Native browser event.
|
|
38
38
|
* @extends {SyntheticUIEvent}
|
|
39
39
|
*/
|
|
40
|
-
function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
41
|
-
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
40
|
+
function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
41
|
+
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
|
package/lib/SyntheticUIEvent.js
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticEvent = require(
|
|
15
|
+
var SyntheticEvent = require('./SyntheticEvent');
|
|
16
16
|
|
|
17
|
-
var getEventTarget = require(
|
|
17
|
+
var getEventTarget = require('./getEventTarget');
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @interface UIEvent
|
|
@@ -51,8 +51,8 @@ var UIEventInterface = {
|
|
|
51
51
|
* @param {object} nativeEvent Native browser event.
|
|
52
52
|
* @extends {SyntheticEvent}
|
|
53
53
|
*/
|
|
54
|
-
function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
55
|
-
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
54
|
+
function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
55
|
+
SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var SyntheticMouseEvent = require(
|
|
15
|
+
var SyntheticMouseEvent = require('./SyntheticMouseEvent');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @interface WheelEvent
|
|
@@ -46,8 +46,8 @@ var WheelEventInterface = {
|
|
|
46
46
|
* @param {object} nativeEvent Native browser event.
|
|
47
47
|
* @extends {SyntheticMouseEvent}
|
|
48
48
|
*/
|
|
49
|
-
function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
|
50
|
-
SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
|
49
|
+
function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
|
50
|
+
SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2015, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
|
7
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
|
8
|
+
*
|
|
9
|
+
* @providesModule TapEventPlugin
|
|
10
|
+
* @typechecks static-only
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
'use strict';
|
|
14
|
+
|
|
15
|
+
var EventConstants = require('./EventConstants');
|
|
16
|
+
var EventPluginUtils = require('./EventPluginUtils');
|
|
17
|
+
var EventPropagators = require('./EventPropagators');
|
|
18
|
+
var SyntheticUIEvent = require('./SyntheticUIEvent');
|
|
19
|
+
var TouchEventUtils = require('fbjs/lib/TouchEventUtils');
|
|
20
|
+
var ViewportMetrics = require('./ViewportMetrics');
|
|
21
|
+
|
|
22
|
+
var keyOf = require('fbjs/lib/keyOf');
|
|
23
|
+
var topLevelTypes = EventConstants.topLevelTypes;
|
|
24
|
+
|
|
25
|
+
var isStartish = EventPluginUtils.isStartish;
|
|
26
|
+
var isEndish = EventPluginUtils.isEndish;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Number of pixels that are tolerated in between a `touchStart` and `touchEnd`
|
|
30
|
+
* in order to still be considered a 'tap' event.
|
|
31
|
+
*/
|
|
32
|
+
var tapMoveThreshold = 10;
|
|
33
|
+
var startCoords = { x: null, y: null };
|
|
34
|
+
|
|
35
|
+
var Axis = {
|
|
36
|
+
x: { page: 'pageX', client: 'clientX', envScroll: 'currentPageScrollLeft' },
|
|
37
|
+
y: { page: 'pageY', client: 'clientY', envScroll: 'currentPageScrollTop' }
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
function getAxisCoordOfEvent(axis, nativeEvent) {
|
|
41
|
+
var singleTouch = TouchEventUtils.extractSingleTouch(nativeEvent);
|
|
42
|
+
if (singleTouch) {
|
|
43
|
+
return singleTouch[axis.page];
|
|
44
|
+
}
|
|
45
|
+
return axis.page in nativeEvent ? nativeEvent[axis.page] : nativeEvent[axis.client] + ViewportMetrics[axis.envScroll];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getDistance(coords, nativeEvent) {
|
|
49
|
+
var pageX = getAxisCoordOfEvent(Axis.x, nativeEvent);
|
|
50
|
+
var pageY = getAxisCoordOfEvent(Axis.y, nativeEvent);
|
|
51
|
+
return Math.pow(Math.pow(pageX - coords.x, 2) + Math.pow(pageY - coords.y, 2), 0.5);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var touchEvents = [topLevelTypes.topTouchStart, topLevelTypes.topTouchCancel, topLevelTypes.topTouchEnd, topLevelTypes.topTouchMove];
|
|
55
|
+
|
|
56
|
+
var dependencies = [topLevelTypes.topMouseDown, topLevelTypes.topMouseMove, topLevelTypes.topMouseUp].concat(touchEvents);
|
|
57
|
+
|
|
58
|
+
var eventTypes = {
|
|
59
|
+
touchTap: {
|
|
60
|
+
phasedRegistrationNames: {
|
|
61
|
+
bubbled: keyOf({ onTouchTap: null }),
|
|
62
|
+
captured: keyOf({ onTouchTapCapture: null })
|
|
63
|
+
},
|
|
64
|
+
dependencies: dependencies
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var usedTouch = false;
|
|
69
|
+
var usedTouchTime = 0;
|
|
70
|
+
var TOUCH_DELAY = 1000;
|
|
71
|
+
|
|
72
|
+
var TapEventPlugin = {
|
|
73
|
+
|
|
74
|
+
tapMoveThreshold: tapMoveThreshold,
|
|
75
|
+
|
|
76
|
+
eventTypes: eventTypes,
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param {string} topLevelType Record from `EventConstants`.
|
|
80
|
+
* @param {DOMEventTarget} topLevelTarget The listening component root node.
|
|
81
|
+
* @param {string} topLevelTargetID ID of `topLevelTarget`.
|
|
82
|
+
* @param {object} nativeEvent Native browser event.
|
|
83
|
+
* @return {*} An accumulation of synthetic events.
|
|
84
|
+
* @see {EventPluginHub.extractEvents}
|
|
85
|
+
*/
|
|
86
|
+
extractEvents: function (topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
|
|
87
|
+
if (!isStartish(topLevelType) && !isEndish(topLevelType)) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
// on ios, there is a delay after touch event and synthetic
|
|
91
|
+
// mouse events, so that user can perform double tap
|
|
92
|
+
// solution: ignore mouse events following touchevent within small timeframe
|
|
93
|
+
if (touchEvents.indexOf(topLevelType) !== -1) {
|
|
94
|
+
usedTouch = true;
|
|
95
|
+
usedTouchTime = Date.now();
|
|
96
|
+
} else {
|
|
97
|
+
if (usedTouch && Date.now() - usedTouchTime < TOUCH_DELAY) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
var event = null;
|
|
102
|
+
var distance = getDistance(startCoords, nativeEvent);
|
|
103
|
+
if (isEndish(topLevelType) && distance < tapMoveThreshold) {
|
|
104
|
+
event = SyntheticUIEvent.getPooled(eventTypes.touchTap, topLevelTargetID, nativeEvent, nativeEventTarget);
|
|
105
|
+
}
|
|
106
|
+
if (isStartish(topLevelType)) {
|
|
107
|
+
startCoords.x = getAxisCoordOfEvent(Axis.x, nativeEvent);
|
|
108
|
+
startCoords.y = getAxisCoordOfEvent(Axis.y, nativeEvent);
|
|
109
|
+
} else if (isEndish(topLevelType)) {
|
|
110
|
+
startCoords.x = 0;
|
|
111
|
+
startCoords.y = 0;
|
|
112
|
+
}
|
|
113
|
+
EventPropagators.accumulateTwoPhaseDispatches(event);
|
|
114
|
+
return event;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
module.exports = TapEventPlugin;
|
package/lib/Transaction.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
var invariant = require(
|
|
14
|
+
var invariant = require('fbjs/lib/invariant');
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* `Transaction` creates a black box that is able to wrap any method such that
|
|
@@ -84,10 +84,10 @@ var Mixin = {
|
|
|
84
84
|
*/
|
|
85
85
|
reinitializeTransaction: function () {
|
|
86
86
|
this.transactionWrappers = this.getTransactionWrappers();
|
|
87
|
-
if (
|
|
88
|
-
this.wrapperInitData = [];
|
|
89
|
-
} else {
|
|
87
|
+
if (this.wrapperInitData) {
|
|
90
88
|
this.wrapperInitData.length = 0;
|
|
89
|
+
} else {
|
|
90
|
+
this.wrapperInitData = [];
|
|
91
91
|
}
|
|
92
92
|
this._isInTransaction = false;
|
|
93
93
|
},
|
|
@@ -107,16 +107,22 @@ var Mixin = {
|
|
|
107
107
|
/**
|
|
108
108
|
* Executes the function within a safety window. Use this for the top level
|
|
109
109
|
* methods that result in large amounts of computation/mutations that would
|
|
110
|
-
* need to be safety checked.
|
|
110
|
+
* need to be safety checked. The optional arguments helps prevent the need
|
|
111
|
+
* to bind in many cases.
|
|
111
112
|
*
|
|
112
113
|
* @param {function} method Member of scope to call.
|
|
113
114
|
* @param {Object} scope Scope to invoke from.
|
|
114
|
-
* @param {Object?=}
|
|
115
|
-
*
|
|
116
|
-
* @
|
|
115
|
+
* @param {Object?=} a Argument to pass to the method.
|
|
116
|
+
* @param {Object?=} b Argument to pass to the method.
|
|
117
|
+
* @param {Object?=} c Argument to pass to the method.
|
|
118
|
+
* @param {Object?=} d Argument to pass to the method.
|
|
119
|
+
* @param {Object?=} e Argument to pass to the method.
|
|
120
|
+
* @param {Object?=} f Argument to pass to the method.
|
|
121
|
+
*
|
|
122
|
+
* @return {*} Return value from `method`.
|
|
117
123
|
*/
|
|
118
124
|
perform: function (method, scope, a, b, c, d, e, f) {
|
|
119
|
-
|
|
125
|
+
!!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there ' + 'is already an outstanding transaction.') : invariant(false) : undefined;
|
|
120
126
|
var errorThrown;
|
|
121
127
|
var ret;
|
|
122
128
|
try {
|
|
@@ -180,7 +186,7 @@ var Mixin = {
|
|
|
180
186
|
* invoked).
|
|
181
187
|
*/
|
|
182
188
|
closeAll: function (startIndex) {
|
|
183
|
-
|
|
189
|
+
!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : invariant(false) : undefined;
|
|
184
190
|
var transactionWrappers = this.transactionWrappers;
|
|
185
191
|
for (var i = startIndex; i < transactionWrappers.length; i++) {
|
|
186
192
|
var wrapper = transactionWrappers[i];
|