react 0.13.1 → 0.14.0-alpha2
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 +1 -1
- package/addons.js +7 -0
- package/addons/CSSTransitionGroup.js +1 -0
- package/addons/LinkedStateMixin.js +1 -0
- package/addons/Perf.js +1 -0
- package/addons/PureRenderMixin.js +1 -0
- package/addons/TestUtils.js +1 -0
- package/addons/TransitionGroup.js +1 -0
- package/addons/batchedUpdates.js +1 -0
- package/addons/cloneWithProps.js +1 -0
- package/addons/createFragment.js +1 -0
- package/addons/renderSubtreeIntoContainer.js +1 -0
- package/addons/shallowCompare.js +1 -0
- package/addons/update.js +1 -0
- package/dist/JSXTransformer.js +3336 -1671
- package/dist/react-with-addons.js +3320 -5125
- package/dist/react-with-addons.min.js +6 -6
- package/dist/react.js +2952 -4533
- package/dist/react.min.js +5 -5
- package/lib/AutoFocusMixin.js +4 -3
- package/lib/BeforeInputEventPlugin.js +30 -118
- package/lib/CSSCore.js +12 -23
- package/lib/CSSProperty.js +9 -4
- package/lib/CSSPropertyOperations.js +14 -30
- package/lib/CallbackQueue.js +7 -10
- package/lib/ChangeEventPlugin.js +24 -88
- package/lib/ClientReactRootIndex.js +2 -2
- package/lib/DOMChildrenOperations.js +13 -33
- package/lib/DOMProperty.js +41 -67
- package/lib/DOMPropertyOperations.js +30 -51
- package/lib/Danger.js +19 -62
- package/lib/DefaultEventPluginOrder.js +2 -12
- package/lib/EnterLeaveEventPlugin.js +11 -33
- package/lib/EventConstants.js +2 -2
- package/lib/EventListener.js +11 -13
- package/lib/EventPluginHub.js +44 -47
- package/lib/EventPluginRegistry.js +18 -74
- package/lib/EventPluginUtils.js +27 -38
- package/lib/EventPropagators.js +23 -26
- package/lib/ExecutionEnvironment.js +4 -8
- package/lib/FallbackCompositionState.js +3 -3
- package/lib/HTMLDOMPropertyConfig.js +13 -20
- package/lib/LinkedStateMixin.js +3 -6
- package/lib/LinkedValueUtils.js +34 -64
- package/lib/LocalEventTrapMixin.js +9 -16
- package/lib/Object.assign.js +1 -1
- package/lib/PooledClass.js +8 -11
- package/lib/React.js +9 -129
- package/lib/ReactBrowserComponentMixin.js +9 -2
- package/lib/ReactBrowserEventEmitter.js +26 -82
- package/lib/ReactCSSTransitionGroup.js +13 -24
- package/lib/ReactCSSTransitionGroupChild.js +18 -28
- package/lib/ReactChildReconciler.js +11 -19
- package/lib/ReactChildren.js +21 -28
- package/lib/ReactClass.js +81 -234
- package/lib/ReactComponent.js +17 -33
- package/lib/ReactComponentBrowserEnvironment.js +4 -8
- package/lib/ReactComponentEnvironment.js +6 -12
- package/lib/ReactComponentWithPureRenderMixin.js +4 -5
- package/lib/ReactCompositeComponent.js +85 -297
- package/lib/ReactContext.js +2 -44
- package/lib/ReactCurrentOwner.js +1 -3
- package/lib/ReactDOM.js +4 -2
- package/lib/ReactDOMButton.js +3 -4
- package/lib/ReactDOMClient.js +85 -0
- package/lib/ReactDOMComponent.js +184 -146
- package/lib/ReactDOMForm.js +3 -3
- package/lib/ReactDOMIDOperations.js +11 -22
- package/lib/ReactDOMIframe.js +3 -3
- package/lib/ReactDOMImg.js +3 -3
- package/lib/ReactDOMInput.js +22 -35
- package/lib/ReactDOMOption.js +68 -10
- package/lib/ReactDOMSelect.js +50 -28
- package/lib/ReactDOMSelection.js +5 -20
- package/lib/ReactDOMServer.js +24 -0
- package/lib/ReactDOMTextComponent.js +17 -18
- package/lib/ReactDOMTextarea.js +15 -27
- package/lib/ReactDefaultBatchingStrategy.js +9 -13
- package/lib/ReactDefaultInjection.js +31 -40
- package/lib/ReactDefaultPerf.js +36 -69
- package/lib/ReactDefaultPerfAnalysis.js +8 -14
- package/lib/ReactElement.js +24 -57
- package/lib/ReactElementValidator.js +38 -105
- package/lib/ReactEmptyComponent.js +7 -11
- package/lib/ReactErrorUtils.js +2 -2
- package/lib/ReactEventEmitterMixin.js +3 -12
- package/lib/ReactEventListener.js +16 -38
- package/lib/ReactFragment.js +23 -54
- package/lib/ReactInjection.js +1 -1
- package/lib/ReactInputSelection.js +11 -21
- package/lib/ReactInstanceHandles.js +27 -57
- package/lib/ReactInstanceMap.js +5 -5
- package/lib/ReactIsomorphic.js +70 -0
- package/lib/ReactLifeCycle.js +1 -1
- package/lib/ReactLink.js +2 -4
- package/lib/ReactMarkupChecksum.js +5 -10
- package/lib/ReactMount.js +137 -260
- package/lib/ReactMultiChild.js +19 -45
- package/lib/ReactMultiChildUpdateTypes.js +1 -1
- package/lib/ReactNativeComponent.js +7 -11
- package/lib/ReactOwner.js +7 -24
- package/lib/ReactPerf.js +8 -12
- package/lib/ReactPropTransferer.js +4 -4
- package/lib/ReactPropTypeLocationNames.js +2 -2
- package/lib/ReactPropTypeLocations.js +1 -1
- package/lib/ReactPropTypes.js +29 -61
- package/lib/ReactReconcileTransaction.js +9 -34
- package/lib/ReactReconciler.js +9 -19
- package/lib/ReactRef.js +5 -8
- package/lib/ReactRootIndex.js +2 -2
- package/lib/ReactServerRendering.js +7 -15
- package/lib/ReactServerRenderingTransaction.js +7 -32
- package/lib/ReactStateSetters.js +6 -6
- package/lib/ReactTestUtils.js +93 -165
- package/lib/ReactTransitionChildMapping.js +5 -7
- package/lib/ReactTransitionEvents.js +5 -5
- package/lib/ReactTransitionGroup.js +30 -52
- package/lib/ReactUpdateQueue.js +27 -90
- package/lib/ReactUpdates.js +27 -79
- package/lib/ReactWithAddons.js +7 -6
- package/lib/SVGDOMPropertyConfig.js +41 -4
- package/lib/SelectEventPlugin.js +28 -29
- package/lib/ServerReactRootIndex.js +2 -2
- package/lib/SimpleEventPlugin.js +136 -128
- package/lib/SyntheticClipboardEvent.js +3 -7
- package/lib/SyntheticCompositionEvent.js +3 -9
- package/lib/SyntheticDragEvent.js +1 -1
- package/lib/SyntheticEvent.js +8 -10
- package/lib/SyntheticFocusEvent.js +1 -1
- package/lib/SyntheticInputEvent.js +3 -9
- package/lib/SyntheticKeyboardEvent.js +4 -4
- package/lib/SyntheticMouseEvent.js +8 -14
- package/lib/SyntheticTouchEvent.js +1 -1
- package/lib/SyntheticUIEvent.js +3 -3
- package/lib/SyntheticWheelEvent.js +11 -15
- package/lib/Transaction.js +12 -24
- package/lib/ViewportMetrics.js +2 -2
- package/lib/accumulateInto.js +2 -5
- package/lib/adler32.js +2 -4
- package/lib/camelize.js +4 -2
- package/lib/camelizeStyleName.js +2 -2
- package/lib/cloneWithProps.js +5 -11
- package/lib/containsNode.js +29 -16
- package/lib/createArrayFromMixed.js +17 -16
- package/lib/createFullPageComponent.js +4 -11
- package/lib/createNodesFromMarkup.js +6 -8
- package/lib/dangerousStyleValue.js +2 -3
- package/lib/emptyFunction.js +10 -4
- package/lib/emptyObject.js +1 -1
- package/lib/escapeTextContentForBrowser.js +1 -1
- package/lib/findDOMNode.js +5 -24
- package/lib/flattenChildren.js +4 -10
- package/lib/focusNode.js +2 -3
- package/lib/forEachAccumulated.js +2 -2
- package/lib/getActiveElement.js +4 -2
- package/lib/getEventCharCode.js +1 -1
- package/lib/getEventKey.js +1 -1
- package/lib/getEventModifierState.js +1 -1
- package/lib/getEventTarget.js +1 -1
- package/lib/getIteratorFn.js +2 -4
- package/lib/getMarkupWrap.js +7 -5
- package/lib/getNodeForCharacterOffset.js +1 -1
- package/lib/getTextContentAccessor.js +2 -4
- package/lib/getUnboundedScrollPosition.js +1 -1
- package/lib/hyphenate.js +3 -1
- package/lib/hyphenateStyleName.js +2 -2
- package/lib/instantiateReactComponent.js +14 -37
- package/lib/invariant.js +8 -12
- package/lib/isEventSupported.js +7 -10
- package/lib/isNode.js +4 -6
- package/lib/isTextInputElement.js +2 -4
- package/lib/isTextNode.js +3 -1
- package/lib/joinClasses.js +2 -2
- package/lib/keyMirror.js +3 -6
- package/lib/keyOf.js +4 -3
- package/lib/mapObject.js +1 -1
- package/lib/memoizeStringOnly.js +2 -2
- package/lib/onlyChild.js +2 -5
- package/lib/performance.js +2 -5
- package/lib/performanceNow.js +3 -1
- package/lib/quoteAttributeValueForBrowser.js +1 -1
- package/lib/renderSubtreeIntoContainer.js +16 -0
- package/lib/setInnerHTML.js +11 -8
- package/lib/setTextContent.js +3 -3
- package/lib/shallowCompare.js +24 -0
- package/lib/shallowEqual.js +17 -11
- package/lib/shouldUpdateReactComponent.js +3 -64
- package/lib/toArray.js +8 -19
- package/lib/traverseAllChildren.js +22 -89
- package/lib/update.js +33 -90
- package/lib/validateDOMNesting.js +355 -0
- package/lib/warning.js +17 -15
- package/package.json +3 -3
- package/lib/MobileSafariClickEventPlugin.js +0 -56
- package/lib/ReactPutListenerQueue.js +0 -54
- package/lib/cx.js +0 -52
- package/lib/getReactRootElementInContainer.js +0 -33
package/lib/ReactDOMSelection.js
CHANGED
|
@@ -79,12 +79,7 @@ function getModernOffsets(node) {
|
|
|
79
79
|
// If the node and offset values are the same, the selection is collapsed.
|
|
80
80
|
// `Selection.isCollapsed` is available natively, but IE sometimes gets
|
|
81
81
|
// this value wrong.
|
|
82
|
-
var isSelectionCollapsed = isCollapsed(
|
|
83
|
-
selection.anchorNode,
|
|
84
|
-
selection.anchorOffset,
|
|
85
|
-
selection.focusNode,
|
|
86
|
-
selection.focusOffset
|
|
87
|
-
);
|
|
82
|
+
var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);
|
|
88
83
|
|
|
89
84
|
var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;
|
|
90
85
|
|
|
@@ -92,12 +87,7 @@ function getModernOffsets(node) {
|
|
|
92
87
|
tempRange.selectNodeContents(node);
|
|
93
88
|
tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);
|
|
94
89
|
|
|
95
|
-
var isTempRangeCollapsed = isCollapsed(
|
|
96
|
-
tempRange.startContainer,
|
|
97
|
-
tempRange.startOffset,
|
|
98
|
-
tempRange.endContainer,
|
|
99
|
-
tempRange.endOffset
|
|
100
|
-
);
|
|
90
|
+
var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);
|
|
101
91
|
|
|
102
92
|
var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;
|
|
103
93
|
var end = start + rangeLength;
|
|
@@ -160,8 +150,7 @@ function setModernOffsets(node, offsets) {
|
|
|
160
150
|
var selection = window.getSelection();
|
|
161
151
|
var length = node[getTextContentAccessor()].length;
|
|
162
152
|
var start = Math.min(offsets.start, length);
|
|
163
|
-
var end = typeof offsets.end === 'undefined' ?
|
|
164
|
-
start : Math.min(offsets.end, length);
|
|
153
|
+
var end = typeof offsets.end === 'undefined' ? start : Math.min(offsets.end, length);
|
|
165
154
|
|
|
166
155
|
// IE 11 uses modern selection, but doesn't support the extend method.
|
|
167
156
|
// Flip backward selections, so we can set with a single range.
|
|
@@ -189,11 +178,7 @@ function setModernOffsets(node, offsets) {
|
|
|
189
178
|
}
|
|
190
179
|
}
|
|
191
180
|
|
|
192
|
-
var useIEOffsets = (
|
|
193
|
-
ExecutionEnvironment.canUseDOM &&
|
|
194
|
-
'selection' in document &&
|
|
195
|
-
!('getSelection' in window)
|
|
196
|
-
);
|
|
181
|
+
var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);
|
|
197
182
|
|
|
198
183
|
var ReactDOMSelection = {
|
|
199
184
|
/**
|
|
@@ -208,4 +193,4 @@ var ReactDOMSelection = {
|
|
|
208
193
|
setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets
|
|
209
194
|
};
|
|
210
195
|
|
|
211
|
-
module.exports = ReactDOMSelection;
|
|
196
|
+
module.exports = ReactDOMSelection;
|
|
@@ -0,0 +1,24 @@
|
|
|
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 ReactDOMServer
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
var ReactDefaultInjection = require("./ReactDefaultInjection");
|
|
15
|
+
var ReactServerRendering = require("./ReactServerRendering");
|
|
16
|
+
|
|
17
|
+
ReactDefaultInjection.inject();
|
|
18
|
+
|
|
19
|
+
var ReactDOMServer = {
|
|
20
|
+
renderToString: ReactServerRendering.renderToString,
|
|
21
|
+
renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
module.exports = ReactDOMServer;
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
15
|
var DOMPropertyOperations = require("./DOMPropertyOperations");
|
|
16
|
-
var ReactComponentBrowserEnvironment =
|
|
17
|
-
require("./ReactComponentBrowserEnvironment");
|
|
16
|
+
var ReactComponentBrowserEnvironment = require("./ReactComponentBrowserEnvironment");
|
|
18
17
|
var ReactDOMComponent = require("./ReactDOMComponent");
|
|
19
18
|
|
|
20
19
|
var assign = require("./Object.assign");
|
|
21
20
|
var escapeTextContentForBrowser = require("./escapeTextContentForBrowser");
|
|
21
|
+
var validateDOMNesting = require("./validateDOMNesting");
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Text nodes violate a couple assumptions that React makes about components:
|
|
@@ -35,9 +35,7 @@ var escapeTextContentForBrowser = require("./escapeTextContentForBrowser");
|
|
|
35
35
|
* @extends ReactComponent
|
|
36
36
|
* @internal
|
|
37
37
|
*/
|
|
38
|
-
var ReactDOMTextComponent = function(props) {
|
|
39
|
-
// This constructor and its argument is currently used by mocks.
|
|
40
|
-
};
|
|
38
|
+
var ReactDOMTextComponent = function (props) {};
|
|
41
39
|
|
|
42
40
|
assign(ReactDOMTextComponent.prototype, {
|
|
43
41
|
|
|
@@ -45,7 +43,7 @@ assign(ReactDOMTextComponent.prototype, {
|
|
|
45
43
|
* @param {ReactText} text
|
|
46
44
|
* @internal
|
|
47
45
|
*/
|
|
48
|
-
construct: function(text) {
|
|
46
|
+
construct: function (text) {
|
|
49
47
|
// TODO: This is really a ReactText (ReactNode), not a ReactElement
|
|
50
48
|
this._currentElement = text;
|
|
51
49
|
this._stringText = '' + text;
|
|
@@ -64,7 +62,13 @@ assign(ReactDOMTextComponent.prototype, {
|
|
|
64
62
|
* @return {string} Markup for this text node.
|
|
65
63
|
* @internal
|
|
66
64
|
*/
|
|
67
|
-
mountComponent: function(rootID, transaction, context) {
|
|
65
|
+
mountComponent: function (rootID, transaction, context) {
|
|
66
|
+
if ('production' !== process.env.NODE_ENV) {
|
|
67
|
+
if (context[validateDOMNesting.ancestorInfoContextKey]) {
|
|
68
|
+
validateDOMNesting('span', null, context[validateDOMNesting.ancestorInfoContextKey]);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
68
72
|
this._rootNodeID = rootID;
|
|
69
73
|
var escapedText = escapeTextContentForBrowser(this._stringText);
|
|
70
74
|
|
|
@@ -75,11 +79,7 @@ assign(ReactDOMTextComponent.prototype, {
|
|
|
75
79
|
return escapedText;
|
|
76
80
|
}
|
|
77
81
|
|
|
78
|
-
return (
|
|
79
|
-
'<span ' + DOMPropertyOperations.createMarkupForID(rootID) + '>' +
|
|
80
|
-
escapedText +
|
|
81
|
-
'</span>'
|
|
82
|
-
);
|
|
82
|
+
return '<span ' + DOMPropertyOperations.createMarkupForID(rootID) + '>' + escapedText + '</span>';
|
|
83
83
|
},
|
|
84
84
|
|
|
85
85
|
/**
|
|
@@ -89,7 +89,7 @@ assign(ReactDOMTextComponent.prototype, {
|
|
|
89
89
|
* @param {ReactReconcileTransaction} transaction
|
|
90
90
|
* @internal
|
|
91
91
|
*/
|
|
92
|
-
receiveComponent: function(nextText, transaction) {
|
|
92
|
+
receiveComponent: function (nextText, transaction) {
|
|
93
93
|
if (nextText !== this._currentElement) {
|
|
94
94
|
this._currentElement = nextText;
|
|
95
95
|
var nextStringText = '' + nextText;
|
|
@@ -98,18 +98,17 @@ assign(ReactDOMTextComponent.prototype, {
|
|
|
98
98
|
// and/or updateComponent to do the actual update for consistency with
|
|
99
99
|
// other component types?
|
|
100
100
|
this._stringText = nextStringText;
|
|
101
|
-
ReactDOMComponent.BackendIDOperations.updateTextContentByID(
|
|
102
|
-
this._rootNodeID,
|
|
103
|
-
nextStringText
|
|
104
|
-
);
|
|
101
|
+
ReactDOMComponent.BackendIDOperations.updateTextContentByID(this._rootNodeID, nextStringText);
|
|
105
102
|
}
|
|
106
103
|
}
|
|
107
104
|
},
|
|
108
105
|
|
|
109
|
-
unmountComponent: function() {
|
|
106
|
+
unmountComponent: function () {
|
|
110
107
|
ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID);
|
|
111
108
|
}
|
|
112
109
|
|
|
113
110
|
});
|
|
114
111
|
|
|
115
112
|
module.exports = ReactDOMTextComponent;
|
|
113
|
+
|
|
114
|
+
// This constructor and its argument is currently used by mocks.
|
package/lib/ReactDOMTextarea.js
CHANGED
|
@@ -20,6 +20,7 @@ var ReactElement = require("./ReactElement");
|
|
|
20
20
|
var ReactUpdates = require("./ReactUpdates");
|
|
21
21
|
|
|
22
22
|
var assign = require("./Object.assign");
|
|
23
|
+
var findDOMNode = require("./findDOMNode");
|
|
23
24
|
var invariant = require("./invariant");
|
|
24
25
|
|
|
25
26
|
var warning = require("./warning");
|
|
@@ -54,27 +55,17 @@ var ReactDOMTextarea = ReactClass.createClass({
|
|
|
54
55
|
|
|
55
56
|
mixins: [AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin],
|
|
56
57
|
|
|
57
|
-
getInitialState: function() {
|
|
58
|
+
getInitialState: function () {
|
|
58
59
|
var defaultValue = this.props.defaultValue;
|
|
59
60
|
// TODO (yungsters): Remove support for children content in <textarea>.
|
|
60
61
|
var children = this.props.children;
|
|
61
62
|
if (children != null) {
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
false,
|
|
65
|
-
'Use the `defaultValue` or `value` props instead of setting ' +
|
|
66
|
-
'children on <textarea>.'
|
|
67
|
-
) : null);
|
|
63
|
+
if ('production' !== process.env.NODE_ENV) {
|
|
64
|
+
'production' !== process.env.NODE_ENV ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : null;
|
|
68
65
|
}
|
|
69
|
-
|
|
70
|
-
defaultValue == null,
|
|
71
|
-
'If you supply `defaultValue` on a <textarea>, do not pass children.'
|
|
72
|
-
) : invariant(defaultValue == null));
|
|
66
|
+
'production' !== process.env.NODE_ENV ? invariant(defaultValue == null, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : invariant(defaultValue == null);
|
|
73
67
|
if (Array.isArray(children)) {
|
|
74
|
-
|
|
75
|
-
children.length <= 1,
|
|
76
|
-
'<textarea> can only have at most one child.'
|
|
77
|
-
) : invariant(children.length <= 1));
|
|
68
|
+
'production' !== process.env.NODE_ENV ? invariant(children.length <= 1, '<textarea> can only have at most one child.') : invariant(children.length <= 1);
|
|
78
69
|
children = children[0];
|
|
79
70
|
}
|
|
80
71
|
|
|
@@ -83,7 +74,7 @@ var ReactDOMTextarea = ReactClass.createClass({
|
|
|
83
74
|
if (defaultValue == null) {
|
|
84
75
|
defaultValue = '';
|
|
85
76
|
}
|
|
86
|
-
var value = LinkedValueUtils.getValue(this);
|
|
77
|
+
var value = LinkedValueUtils.getValue(this.props);
|
|
87
78
|
return {
|
|
88
79
|
// We save the initial value so that `ReactDOMComponent` doesn't update
|
|
89
80
|
// `textContent` (unnecessary since we update value).
|
|
@@ -93,14 +84,11 @@ var ReactDOMTextarea = ReactClass.createClass({
|
|
|
93
84
|
};
|
|
94
85
|
},
|
|
95
86
|
|
|
96
|
-
render: function() {
|
|
87
|
+
render: function () {
|
|
97
88
|
// Clone `this.props` so we don't mutate the input.
|
|
98
89
|
var props = assign({}, this.props);
|
|
99
90
|
|
|
100
|
-
|
|
101
|
-
props.dangerouslySetInnerHTML == null,
|
|
102
|
-
'`dangerouslySetInnerHTML` does not make sense on <textarea>.'
|
|
103
|
-
) : invariant(props.dangerouslySetInnerHTML == null));
|
|
91
|
+
'production' !== process.env.NODE_ENV ? invariant(props.dangerouslySetInnerHTML == null, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : invariant(props.dangerouslySetInnerHTML == null);
|
|
104
92
|
|
|
105
93
|
props.defaultValue = null;
|
|
106
94
|
props.value = null;
|
|
@@ -111,19 +99,19 @@ var ReactDOMTextarea = ReactClass.createClass({
|
|
|
111
99
|
return textarea(props, this.state.initialValue);
|
|
112
100
|
},
|
|
113
101
|
|
|
114
|
-
componentDidUpdate: function(prevProps, prevState, prevContext) {
|
|
115
|
-
var value = LinkedValueUtils.getValue(this);
|
|
102
|
+
componentDidUpdate: function (prevProps, prevState, prevContext) {
|
|
103
|
+
var value = LinkedValueUtils.getValue(this.props);
|
|
116
104
|
if (value != null) {
|
|
117
|
-
var rootNode = this
|
|
105
|
+
var rootNode = findDOMNode(this);
|
|
118
106
|
// Cast `value` to a string to ensure the value is set correctly. While
|
|
119
107
|
// browsers typically do this as necessary, jsdom doesn't.
|
|
120
108
|
DOMPropertyOperations.setValueForProperty(rootNode, 'value', '' + value);
|
|
121
109
|
}
|
|
122
110
|
},
|
|
123
111
|
|
|
124
|
-
_handleChange: function(event) {
|
|
112
|
+
_handleChange: function (event) {
|
|
125
113
|
var returnValue;
|
|
126
|
-
var onChange = LinkedValueUtils.getOnChange(this);
|
|
114
|
+
var onChange = LinkedValueUtils.getOnChange(this.props);
|
|
127
115
|
if (onChange) {
|
|
128
116
|
returnValue = onChange.call(this, event);
|
|
129
117
|
}
|
|
@@ -133,4 +121,4 @@ var ReactDOMTextarea = ReactClass.createClass({
|
|
|
133
121
|
|
|
134
122
|
});
|
|
135
123
|
|
|
136
|
-
module.exports = ReactDOMTextarea;
|
|
124
|
+
module.exports = ReactDOMTextarea;
|
|
@@ -19,7 +19,7 @@ var emptyFunction = require("./emptyFunction");
|
|
|
19
19
|
|
|
20
20
|
var RESET_BATCHED_UPDATES = {
|
|
21
21
|
initialize: emptyFunction,
|
|
22
|
-
close: function() {
|
|
22
|
+
close: function () {
|
|
23
23
|
ReactDefaultBatchingStrategy.isBatchingUpdates = false;
|
|
24
24
|
}
|
|
25
25
|
};
|
|
@@ -35,15 +35,11 @@ function ReactDefaultBatchingStrategyTransaction() {
|
|
|
35
35
|
this.reinitializeTransaction();
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
assign(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
42
|
-
getTransactionWrappers: function() {
|
|
43
|
-
return TRANSACTION_WRAPPERS;
|
|
44
|
-
}
|
|
38
|
+
assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction.Mixin, {
|
|
39
|
+
getTransactionWrappers: function () {
|
|
40
|
+
return TRANSACTION_WRAPPERS;
|
|
45
41
|
}
|
|
46
|
-
);
|
|
42
|
+
});
|
|
47
43
|
|
|
48
44
|
var transaction = new ReactDefaultBatchingStrategyTransaction();
|
|
49
45
|
|
|
@@ -54,18 +50,18 @@ var ReactDefaultBatchingStrategy = {
|
|
|
54
50
|
* Call the provided function in a context within which calls to `setState`
|
|
55
51
|
* and friends are batched such that components aren't updated unnecessarily.
|
|
56
52
|
*/
|
|
57
|
-
batchedUpdates: function(callback, a, b, c, d) {
|
|
53
|
+
batchedUpdates: function (callback, a, b, c, d, e) {
|
|
58
54
|
var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;
|
|
59
55
|
|
|
60
56
|
ReactDefaultBatchingStrategy.isBatchingUpdates = true;
|
|
61
57
|
|
|
62
58
|
// The code is written this way to avoid extra allocations
|
|
63
59
|
if (alreadyBatchingUpdates) {
|
|
64
|
-
callback(a, b, c, d);
|
|
60
|
+
callback(a, b, c, d, e);
|
|
65
61
|
} else {
|
|
66
|
-
transaction.perform(callback, null, a, b, c, d);
|
|
62
|
+
transaction.perform(callback, null, a, b, c, d, e);
|
|
67
63
|
}
|
|
68
64
|
}
|
|
69
65
|
};
|
|
70
66
|
|
|
71
|
-
module.exports = ReactDefaultBatchingStrategy;
|
|
67
|
+
module.exports = ReactDefaultBatchingStrategy;
|
|
@@ -18,11 +18,9 @@ var DefaultEventPluginOrder = require("./DefaultEventPluginOrder");
|
|
|
18
18
|
var EnterLeaveEventPlugin = require("./EnterLeaveEventPlugin");
|
|
19
19
|
var ExecutionEnvironment = require("./ExecutionEnvironment");
|
|
20
20
|
var HTMLDOMPropertyConfig = require("./HTMLDOMPropertyConfig");
|
|
21
|
-
var MobileSafariClickEventPlugin = require("./MobileSafariClickEventPlugin");
|
|
22
21
|
var ReactBrowserComponentMixin = require("./ReactBrowserComponentMixin");
|
|
23
22
|
var ReactClass = require("./ReactClass");
|
|
24
|
-
var ReactComponentBrowserEnvironment =
|
|
25
|
-
require("./ReactComponentBrowserEnvironment");
|
|
23
|
+
var ReactComponentBrowserEnvironment = require("./ReactComponentBrowserEnvironment");
|
|
26
24
|
var ReactDefaultBatchingStrategy = require("./ReactDefaultBatchingStrategy");
|
|
27
25
|
var ReactDOMComponent = require("./ReactDOMComponent");
|
|
28
26
|
var ReactDOMButton = require("./ReactDOMButton");
|
|
@@ -39,6 +37,7 @@ var ReactElement = require("./ReactElement");
|
|
|
39
37
|
var ReactEventListener = require("./ReactEventListener");
|
|
40
38
|
var ReactInjection = require("./ReactInjection");
|
|
41
39
|
var ReactInstanceHandles = require("./ReactInstanceHandles");
|
|
40
|
+
var ReactInstanceMap = require("./ReactInstanceMap");
|
|
42
41
|
var ReactMount = require("./ReactMount");
|
|
43
42
|
var ReactReconcileTransaction = require("./ReactReconcileTransaction");
|
|
44
43
|
var SelectEventPlugin = require("./SelectEventPlugin");
|
|
@@ -51,23 +50,30 @@ var createFullPageComponent = require("./createFullPageComponent");
|
|
|
51
50
|
function autoGenerateWrapperClass(type) {
|
|
52
51
|
return ReactClass.createClass({
|
|
53
52
|
tagName: type.toUpperCase(),
|
|
54
|
-
render: function() {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
);
|
|
53
|
+
render: function () {
|
|
54
|
+
// Copy owner down for debugging info
|
|
55
|
+
var internalInstance = ReactInstanceMap.get(this);
|
|
56
|
+
return new ReactElement(type, null, // key
|
|
57
|
+
null, // ref
|
|
58
|
+
internalInstance._currentElement._owner, // owner
|
|
59
|
+
null, // context
|
|
60
|
+
this.props);
|
|
63
61
|
}
|
|
64
62
|
});
|
|
65
63
|
}
|
|
66
64
|
|
|
65
|
+
var alreadyInjected = false;
|
|
66
|
+
|
|
67
67
|
function inject() {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
if (alreadyInjected) {
|
|
69
|
+
// TODO: This is currently true because these injections are shared between
|
|
70
|
+
// the client and the server package. They should be built independently
|
|
71
|
+
// and not share any injection state. Then this problem will be solved.
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
alreadyInjected = true;
|
|
75
|
+
|
|
76
|
+
ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
|
|
71
77
|
|
|
72
78
|
/**
|
|
73
79
|
* Inject modules for resolving DOM hierarchy and plugin ordering.
|
|
@@ -84,22 +90,15 @@ function inject() {
|
|
|
84
90
|
SimpleEventPlugin: SimpleEventPlugin,
|
|
85
91
|
EnterLeaveEventPlugin: EnterLeaveEventPlugin,
|
|
86
92
|
ChangeEventPlugin: ChangeEventPlugin,
|
|
87
|
-
MobileSafariClickEventPlugin: MobileSafariClickEventPlugin,
|
|
88
93
|
SelectEventPlugin: SelectEventPlugin,
|
|
89
94
|
BeforeInputEventPlugin: BeforeInputEventPlugin
|
|
90
95
|
});
|
|
91
96
|
|
|
92
|
-
ReactInjection.NativeComponent.injectGenericComponentClass(
|
|
93
|
-
ReactDOMComponent
|
|
94
|
-
);
|
|
97
|
+
ReactInjection.NativeComponent.injectGenericComponentClass(ReactDOMComponent);
|
|
95
98
|
|
|
96
|
-
ReactInjection.NativeComponent.injectTextComponentClass(
|
|
97
|
-
ReactDOMTextComponent
|
|
98
|
-
);
|
|
99
|
+
ReactInjection.NativeComponent.injectTextComponentClass(ReactDOMTextComponent);
|
|
99
100
|
|
|
100
|
-
ReactInjection.NativeComponent.injectAutoWrapper(
|
|
101
|
-
autoGenerateWrapperClass
|
|
102
|
-
);
|
|
101
|
+
ReactInjection.NativeComponent.injectAutoWrapper(autoGenerateWrapperClass);
|
|
103
102
|
|
|
104
103
|
// This needs to happen before createFullPageComponent() otherwise the mixin
|
|
105
104
|
// won't be included.
|
|
@@ -125,25 +124,17 @@ function inject() {
|
|
|
125
124
|
|
|
126
125
|
ReactInjection.EmptyComponent.injectEmptyComponent('noscript');
|
|
127
126
|
|
|
128
|
-
ReactInjection.Updates.injectReconcileTransaction(
|
|
129
|
-
|
|
130
|
-
);
|
|
131
|
-
ReactInjection.Updates.injectBatchingStrategy(
|
|
132
|
-
ReactDefaultBatchingStrategy
|
|
133
|
-
);
|
|
127
|
+
ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
|
|
128
|
+
ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
|
|
134
129
|
|
|
135
|
-
ReactInjection.RootIndex.injectCreateReactRootIndex(
|
|
136
|
-
ExecutionEnvironment.canUseDOM ?
|
|
137
|
-
ClientReactRootIndex.createReactRootIndex :
|
|
138
|
-
ServerReactRootIndex.createReactRootIndex
|
|
139
|
-
);
|
|
130
|
+
ReactInjection.RootIndex.injectCreateReactRootIndex(ExecutionEnvironment.canUseDOM ? ClientReactRootIndex.createReactRootIndex : ServerReactRootIndex.createReactRootIndex);
|
|
140
131
|
|
|
141
132
|
ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
|
|
142
133
|
ReactInjection.DOMComponent.injectIDOperations(ReactDOMIDOperations);
|
|
143
134
|
|
|
144
|
-
if (
|
|
145
|
-
var url =
|
|
146
|
-
if (
|
|
135
|
+
if ('production' !== process.env.NODE_ENV) {
|
|
136
|
+
var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
|
|
137
|
+
if (/[?&]react_perf\b/.test(url)) {
|
|
147
138
|
var ReactDefaultPerf = require("./ReactDefaultPerf");
|
|
148
139
|
ReactDefaultPerf.start();
|
|
149
140
|
}
|
|
@@ -152,4 +143,4 @@ function inject() {
|
|
|
152
143
|
|
|
153
144
|
module.exports = {
|
|
154
145
|
inject: inject
|
|
155
|
-
};
|
|
146
|
+
};
|
package/lib/ReactDefaultPerf.js
CHANGED
|
@@ -32,7 +32,7 @@ var ReactDefaultPerf = {
|
|
|
32
32
|
_mountStack: [0],
|
|
33
33
|
_injected: false,
|
|
34
34
|
|
|
35
|
-
start: function() {
|
|
35
|
+
start: function () {
|
|
36
36
|
if (!ReactDefaultPerf._injected) {
|
|
37
37
|
ReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);
|
|
38
38
|
}
|
|
@@ -41,18 +41,18 @@ var ReactDefaultPerf = {
|
|
|
41
41
|
ReactPerf.enableMeasure = true;
|
|
42
42
|
},
|
|
43
43
|
|
|
44
|
-
stop: function() {
|
|
44
|
+
stop: function () {
|
|
45
45
|
ReactPerf.enableMeasure = false;
|
|
46
46
|
},
|
|
47
47
|
|
|
48
|
-
getLastMeasurements: function() {
|
|
48
|
+
getLastMeasurements: function () {
|
|
49
49
|
return ReactDefaultPerf._allMeasurements;
|
|
50
50
|
},
|
|
51
51
|
|
|
52
|
-
printExclusive: function(measurements) {
|
|
52
|
+
printExclusive: function (measurements) {
|
|
53
53
|
measurements = measurements || ReactDefaultPerf._allMeasurements;
|
|
54
54
|
var summary = ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);
|
|
55
|
-
console.table(summary.map(function(item) {
|
|
55
|
+
console.table(summary.map(function (item) {
|
|
56
56
|
return {
|
|
57
57
|
'Component class name': item.componentName,
|
|
58
58
|
'Total inclusive time (ms)': roundFloat(item.inclusive),
|
|
@@ -67,28 +67,22 @@ var ReactDefaultPerf = {
|
|
|
67
67
|
// number.
|
|
68
68
|
},
|
|
69
69
|
|
|
70
|
-
printInclusive: function(measurements) {
|
|
70
|
+
printInclusive: function (measurements) {
|
|
71
71
|
measurements = measurements || ReactDefaultPerf._allMeasurements;
|
|
72
72
|
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);
|
|
73
|
-
console.table(summary.map(function(item) {
|
|
73
|
+
console.table(summary.map(function (item) {
|
|
74
74
|
return {
|
|
75
75
|
'Owner > component': item.componentName,
|
|
76
76
|
'Inclusive time (ms)': roundFloat(item.time),
|
|
77
77
|
'Instances': item.count
|
|
78
78
|
};
|
|
79
79
|
}));
|
|
80
|
-
console.log(
|
|
81
|
-
'Total time:',
|
|
82
|
-
ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'
|
|
83
|
-
);
|
|
80
|
+
console.log('Total time:', ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');
|
|
84
81
|
},
|
|
85
82
|
|
|
86
|
-
getMeasurementsSummaryMap: function(measurements) {
|
|
87
|
-
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(
|
|
88
|
-
|
|
89
|
-
true
|
|
90
|
-
);
|
|
91
|
-
return summary.map(function(item) {
|
|
83
|
+
getMeasurementsSummaryMap: function (measurements) {
|
|
84
|
+
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements, true);
|
|
85
|
+
return summary.map(function (item) {
|
|
92
86
|
return {
|
|
93
87
|
'Owner > component': item.componentName,
|
|
94
88
|
'Wasted time (ms)': item.time,
|
|
@@ -97,37 +91,28 @@ var ReactDefaultPerf = {
|
|
|
97
91
|
});
|
|
98
92
|
},
|
|
99
93
|
|
|
100
|
-
printWasted: function(measurements) {
|
|
94
|
+
printWasted: function (measurements) {
|
|
101
95
|
measurements = measurements || ReactDefaultPerf._allMeasurements;
|
|
102
96
|
console.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));
|
|
103
|
-
console.log(
|
|
104
|
-
'Total time:',
|
|
105
|
-
ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'
|
|
106
|
-
);
|
|
97
|
+
console.log('Total time:', ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');
|
|
107
98
|
},
|
|
108
99
|
|
|
109
|
-
printDOM: function(measurements) {
|
|
100
|
+
printDOM: function (measurements) {
|
|
110
101
|
measurements = measurements || ReactDefaultPerf._allMeasurements;
|
|
111
102
|
var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);
|
|
112
|
-
console.table(summary.map(function(item) {
|
|
103
|
+
console.table(summary.map(function (item) {
|
|
113
104
|
var result = {};
|
|
114
105
|
result[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;
|
|
115
106
|
result['type'] = item.type;
|
|
116
107
|
result['args'] = JSON.stringify(item.args);
|
|
117
108
|
return result;
|
|
118
109
|
}));
|
|
119
|
-
console.log(
|
|
120
|
-
'Total time:',
|
|
121
|
-
ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'
|
|
122
|
-
);
|
|
110
|
+
console.log('Total time:', ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');
|
|
123
111
|
},
|
|
124
112
|
|
|
125
|
-
_recordWrite: function(id, fnName, totalTime, args) {
|
|
113
|
+
_recordWrite: function (id, fnName, totalTime, args) {
|
|
126
114
|
// TODO: totalTime isn't that useful since it doesn't count paints/reflows
|
|
127
|
-
var writes =
|
|
128
|
-
ReactDefaultPerf
|
|
129
|
-
._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1]
|
|
130
|
-
.writes;
|
|
115
|
+
var writes = ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].writes;
|
|
131
116
|
writes[id] = writes[id] || [];
|
|
132
117
|
writes[id].push({
|
|
133
118
|
type: fnName,
|
|
@@ -136,14 +121,17 @@ var ReactDefaultPerf = {
|
|
|
136
121
|
});
|
|
137
122
|
},
|
|
138
123
|
|
|
139
|
-
measure: function(moduleName, fnName, func) {
|
|
140
|
-
return function() {
|
|
124
|
+
measure: function (moduleName, fnName, func) {
|
|
125
|
+
return function () {
|
|
126
|
+
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
127
|
+
args[_key] = arguments[_key];
|
|
128
|
+
}
|
|
129
|
+
|
|
141
130
|
var totalTime;
|
|
142
131
|
var rv;
|
|
143
132
|
var start;
|
|
144
133
|
|
|
145
|
-
if (fnName === '_renderNewRootComponent' ||
|
|
146
|
-
fnName === 'flushBatchedUpdates') {
|
|
134
|
+
if (fnName === '_renderNewRootComponent' || fnName === 'flushBatchedUpdates') {
|
|
147
135
|
// A "measurement" is a set of metrics recorded for each flush. We want
|
|
148
136
|
// to group the metrics for a given flush together so we can look at the
|
|
149
137
|
// components that rendered and the DOM operations that actually
|
|
@@ -159,12 +147,9 @@ var ReactDefaultPerf = {
|
|
|
159
147
|
});
|
|
160
148
|
start = performanceNow();
|
|
161
149
|
rv = func.apply(this, args);
|
|
162
|
-
ReactDefaultPerf._allMeasurements[
|
|
163
|
-
ReactDefaultPerf._allMeasurements.length - 1
|
|
164
|
-
].totalTime = performanceNow() - start;
|
|
150
|
+
ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].totalTime = performanceNow() - start;
|
|
165
151
|
return rv;
|
|
166
|
-
} else if (fnName === '_mountImageIntoNode' ||
|
|
167
|
-
moduleName === 'ReactDOMIDOperations') {
|
|
152
|
+
} else if (fnName === '_mountImageIntoNode' || moduleName === 'ReactDOMIDOperations') {
|
|
168
153
|
start = performanceNow();
|
|
169
154
|
rv = func.apply(this, args);
|
|
170
155
|
totalTime = performanceNow() - start;
|
|
@@ -174,7 +159,7 @@ var ReactDefaultPerf = {
|
|
|
174
159
|
ReactDefaultPerf._recordWrite(mountID, fnName, totalTime, args[0]);
|
|
175
160
|
} else if (fnName === 'dangerouslyProcessChildrenUpdates') {
|
|
176
161
|
// special format
|
|
177
|
-
args[0].forEach(function(update) {
|
|
162
|
+
args[0].forEach(function (update) {
|
|
178
163
|
var writeArgs = {};
|
|
179
164
|
if (update.fromIndex !== null) {
|
|
180
165
|
writeArgs.fromIndex = update.fromIndex;
|
|
@@ -188,42 +173,26 @@ var ReactDefaultPerf = {
|
|
|
188
173
|
if (update.markupIndex !== null) {
|
|
189
174
|
writeArgs.markup = args[1][update.markupIndex];
|
|
190
175
|
}
|
|
191
|
-
ReactDefaultPerf._recordWrite(
|
|
192
|
-
update.parentID,
|
|
193
|
-
update.type,
|
|
194
|
-
totalTime,
|
|
195
|
-
writeArgs
|
|
196
|
-
);
|
|
176
|
+
ReactDefaultPerf._recordWrite(update.parentID, update.type, totalTime, writeArgs);
|
|
197
177
|
});
|
|
198
178
|
} else {
|
|
199
179
|
// basic format
|
|
200
|
-
ReactDefaultPerf._recordWrite(
|
|
201
|
-
args[0],
|
|
202
|
-
fnName,
|
|
203
|
-
totalTime,
|
|
204
|
-
Array.prototype.slice.call(args, 1)
|
|
205
|
-
);
|
|
180
|
+
ReactDefaultPerf._recordWrite(args[0], fnName, totalTime, Array.prototype.slice.call(args, 1));
|
|
206
181
|
}
|
|
207
182
|
return rv;
|
|
208
|
-
} else if (moduleName === 'ReactCompositeComponent' && (
|
|
209
|
-
|
|
210
|
-
(fnName === 'mountComponent' ||
|
|
211
|
-
fnName === 'updateComponent' || fnName === '_renderValidatedComponent')))) {
|
|
183
|
+
} else if (moduleName === 'ReactCompositeComponent' && (fnName === 'mountComponent' || fnName === 'updateComponent' || // TODO: receiveComponent()?
|
|
184
|
+
fnName === '_renderValidatedComponent')) {
|
|
212
185
|
|
|
213
186
|
if (typeof this._currentElement.type === 'string') {
|
|
214
187
|
return func.apply(this, args);
|
|
215
188
|
}
|
|
216
189
|
|
|
217
|
-
var rootNodeID = fnName === 'mountComponent' ?
|
|
218
|
-
args[0] :
|
|
219
|
-
this._rootNodeID;
|
|
190
|
+
var rootNodeID = fnName === 'mountComponent' ? args[0] : this._rootNodeID;
|
|
220
191
|
var isRender = fnName === '_renderValidatedComponent';
|
|
221
192
|
var isMount = fnName === 'mountComponent';
|
|
222
193
|
|
|
223
194
|
var mountStack = ReactDefaultPerf._mountStack;
|
|
224
|
-
var entry = ReactDefaultPerf._allMeasurements[
|
|
225
|
-
ReactDefaultPerf._allMeasurements.length - 1
|
|
226
|
-
];
|
|
195
|
+
var entry = ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1];
|
|
227
196
|
|
|
228
197
|
if (isRender) {
|
|
229
198
|
addValue(entry.counts, rootNodeID, 1);
|
|
@@ -248,9 +217,7 @@ var ReactDefaultPerf = {
|
|
|
248
217
|
|
|
249
218
|
entry.displayNames[rootNodeID] = {
|
|
250
219
|
current: this.getName(),
|
|
251
|
-
owner: this._currentElement._owner ?
|
|
252
|
-
this._currentElement._owner.getName() :
|
|
253
|
-
'<root>'
|
|
220
|
+
owner: this._currentElement._owner ? this._currentElement._owner.getName() : '<root>'
|
|
254
221
|
};
|
|
255
222
|
|
|
256
223
|
return rv;
|
|
@@ -261,4 +228,4 @@ var ReactDefaultPerf = {
|
|
|
261
228
|
}
|
|
262
229
|
};
|
|
263
230
|
|
|
264
|
-
module.exports = ReactDefaultPerf;
|
|
231
|
+
module.exports = ReactDefaultPerf;
|