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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
var keyMirror = require(
|
|
14
|
+
var keyMirror = require('fbjs/lib/keyMirror');
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* When a component's children are updated, a series of update configuration
|
|
@@ -25,6 +25,7 @@ var ReactMultiChildUpdateTypes = keyMirror({
|
|
|
25
25
|
INSERT_MARKUP: null,
|
|
26
26
|
MOVE_EXISTING: null,
|
|
27
27
|
REMOVE_NODE: null,
|
|
28
|
+
SET_MARKUP: null,
|
|
28
29
|
TEXT_CONTENT: null
|
|
29
30
|
});
|
|
30
31
|
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
var assign = require(
|
|
15
|
-
var invariant = require(
|
|
14
|
+
var assign = require('./Object.assign');
|
|
15
|
+
var invariant = require('fbjs/lib/invariant');
|
|
16
16
|
|
|
17
17
|
var autoGenerateWrapperClass = null;
|
|
18
18
|
var genericComponentClass = null;
|
|
@@ -35,11 +35,6 @@ var ReactNativeComponentInjection = {
|
|
|
35
35
|
// tag. That particular tag will use this class instead of the generic one.
|
|
36
36
|
injectComponentClasses: function (componentClasses) {
|
|
37
37
|
assign(tagToComponentClass, componentClasses);
|
|
38
|
-
},
|
|
39
|
-
// Temporary hack since we expect DOM refs to behave like composites,
|
|
40
|
-
// for this release.
|
|
41
|
-
injectAutoWrapper: function (wrapperFactory) {
|
|
42
|
-
autoGenerateWrapperClass = wrapperFactory;
|
|
43
38
|
}
|
|
44
39
|
};
|
|
45
40
|
|
|
@@ -68,7 +63,7 @@ function getComponentClassForElement(element) {
|
|
|
68
63
|
* @return {function} The internal class constructor function.
|
|
69
64
|
*/
|
|
70
65
|
function createInternalComponent(element) {
|
|
71
|
-
|
|
66
|
+
!genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : invariant(false) : undefined;
|
|
72
67
|
return new genericComponentClass(element.type, element.props);
|
|
73
68
|
}
|
|
74
69
|
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 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 ReactNoopUpdateQueue
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
var warning = require('fbjs/lib/warning');
|
|
15
|
+
|
|
16
|
+
function warnTDZ(publicInstance, callerName) {
|
|
17
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
18
|
+
process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, publicInstance.constructor && publicInstance.constructor.displayName || '') : undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* This is the abstract API for an update queue.
|
|
24
|
+
*/
|
|
25
|
+
var ReactNoopUpdateQueue = {
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Checks whether or not this composite component is mounted.
|
|
29
|
+
* @param {ReactClass} publicInstance The instance we want to test.
|
|
30
|
+
* @return {boolean} True if mounted, false otherwise.
|
|
31
|
+
* @protected
|
|
32
|
+
* @final
|
|
33
|
+
*/
|
|
34
|
+
isMounted: function (publicInstance) {
|
|
35
|
+
return false;
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Enqueue a callback that will be executed after all the pending updates
|
|
40
|
+
* have processed.
|
|
41
|
+
*
|
|
42
|
+
* @param {ReactClass} publicInstance The instance to use as `this` context.
|
|
43
|
+
* @param {?function} callback Called after state is updated.
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
enqueueCallback: function (publicInstance, callback) {},
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Forces an update. This should only be invoked when it is known with
|
|
50
|
+
* certainty that we are **not** in a DOM transaction.
|
|
51
|
+
*
|
|
52
|
+
* You may want to call this when you know that some deeper aspect of the
|
|
53
|
+
* component's state has changed but `setState` was not called.
|
|
54
|
+
*
|
|
55
|
+
* This will not invoke `shouldComponentUpdate`, but it will invoke
|
|
56
|
+
* `componentWillUpdate` and `componentDidUpdate`.
|
|
57
|
+
*
|
|
58
|
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
enqueueForceUpdate: function (publicInstance) {
|
|
62
|
+
warnTDZ(publicInstance, 'forceUpdate');
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Replaces all of the state. Always use this or `setState` to mutate state.
|
|
67
|
+
* You should treat `this.state` as immutable.
|
|
68
|
+
*
|
|
69
|
+
* There is no guarantee that `this.state` will be immediately updated, so
|
|
70
|
+
* accessing `this.state` after calling this method may return the old value.
|
|
71
|
+
*
|
|
72
|
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
73
|
+
* @param {object} completeState Next state.
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
enqueueReplaceState: function (publicInstance, completeState) {
|
|
77
|
+
warnTDZ(publicInstance, 'replaceState');
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Sets a subset of the state. This only exists because _pendingState is
|
|
82
|
+
* internal. This provides a merging strategy that is not available to deep
|
|
83
|
+
* properties which is confusing. TODO: Expose pendingState or don't use it
|
|
84
|
+
* during the merge.
|
|
85
|
+
*
|
|
86
|
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
87
|
+
* @param {object} partialState Next partial state to be merged with state.
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
enqueueSetState: function (publicInstance, partialState) {
|
|
91
|
+
warnTDZ(publicInstance, 'setState');
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Sets a subset of the props.
|
|
96
|
+
*
|
|
97
|
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
98
|
+
* @param {object} partialProps Subset of the next props.
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
enqueueSetProps: function (publicInstance, partialProps) {
|
|
102
|
+
warnTDZ(publicInstance, 'setProps');
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Replaces all of the props.
|
|
107
|
+
*
|
|
108
|
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
109
|
+
* @param {object} props New props.
|
|
110
|
+
* @internal
|
|
111
|
+
*/
|
|
112
|
+
enqueueReplaceProps: function (publicInstance, props) {
|
|
113
|
+
warnTDZ(publicInstance, 'replaceProps');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
module.exports = ReactNoopUpdateQueue;
|
package/lib/ReactOwner.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
|
* ReactOwners are capable of storing references to owned components.
|
|
@@ -64,7 +64,7 @@ var ReactOwner = {
|
|
|
64
64
|
* @internal
|
|
65
65
|
*/
|
|
66
66
|
addComponentAsRefTo: function (component, ref, owner) {
|
|
67
|
-
|
|
67
|
+
!ReactOwner.isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' + 'usually means that you\'re trying to add a ref to a component that ' + 'doesn\'t have an owner (that is, was not created inside of another ' + 'component\'s `render` method). Try rendering this component inside of ' + 'a new top-level component which will hold the ref.') : invariant(false) : undefined;
|
|
68
68
|
owner.attachRef(ref, component);
|
|
69
69
|
},
|
|
70
70
|
|
|
@@ -78,7 +78,7 @@ var ReactOwner = {
|
|
|
78
78
|
* @internal
|
|
79
79
|
*/
|
|
80
80
|
removeComponentAsRefFrom: function (component, ref, owner) {
|
|
81
|
-
|
|
81
|
+
!ReactOwner.isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' + 'usually means that you\'re trying to remove a ref from a component that ' + 'doesn\'t have an owner (that is, was not created inside of another ' + 'component\'s `render` method). Try rendering this component inside of ' + 'a new top-level component which will hold the ref.') : invariant(false) : undefined;
|
|
82
82
|
// Check that `component` is still the current ref because we do not want to
|
|
83
83
|
// detach the ref if another component stole it.
|
|
84
84
|
if (owner.getPublicInstance().refs[ref] === component.getPublicInstance()) {
|
package/lib/ReactPerf.js
CHANGED
|
@@ -35,7 +35,7 @@ var ReactPerf = {
|
|
|
35
35
|
* @param {object<string>} methodNames
|
|
36
36
|
*/
|
|
37
37
|
measureMethods: function (object, objectName, methodNames) {
|
|
38
|
-
if (
|
|
38
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
39
39
|
for (var key in methodNames) {
|
|
40
40
|
if (!methodNames.hasOwnProperty(key)) {
|
|
41
41
|
continue;
|
|
@@ -54,7 +54,7 @@ var ReactPerf = {
|
|
|
54
54
|
* @return {function}
|
|
55
55
|
*/
|
|
56
56
|
measure: function (objName, fnName, func) {
|
|
57
|
-
if (
|
|
57
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
58
58
|
var measuredFunc = null;
|
|
59
59
|
var wrapper = function () {
|
|
60
60
|
if (ReactPerf.enableMeasure) {
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
var assign = require(
|
|
15
|
-
var emptyFunction = require(
|
|
16
|
-
var joinClasses = require(
|
|
14
|
+
var assign = require('./Object.assign');
|
|
15
|
+
var emptyFunction = require('fbjs/lib/emptyFunction');
|
|
16
|
+
var joinClasses = require('./joinClasses');
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Creates a transfer strategy that will merge prop values using the supplied
|
package/lib/ReactPropTypes.js
CHANGED
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
var ReactElement = require(
|
|
15
|
-
var ReactFragment = require(
|
|
16
|
-
var ReactPropTypeLocationNames = require(
|
|
14
|
+
var ReactElement = require('./ReactElement');
|
|
15
|
+
var ReactFragment = require('./ReactFragment');
|
|
16
|
+
var ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');
|
|
17
17
|
|
|
18
|
-
var emptyFunction = require(
|
|
18
|
+
var emptyFunction = require('fbjs/lib/emptyFunction');
|
|
19
|
+
var getIteratorFn = require('./getIteratorFn');
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Collection of methods that allow declaration and validation of props that are
|
|
@@ -137,7 +138,7 @@ function createArrayOfTypeChecker(typeChecker) {
|
|
|
137
138
|
return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
|
|
138
139
|
}
|
|
139
140
|
for (var i = 0; i < propValue.length; i++) {
|
|
140
|
-
var error = typeChecker(propValue, i, componentName, location,
|
|
141
|
+
var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']');
|
|
141
142
|
if (error instanceof Error) {
|
|
142
143
|
return error;
|
|
143
144
|
}
|
|
@@ -171,6 +172,12 @@ function createInstanceTypeChecker(expectedClass) {
|
|
|
171
172
|
}
|
|
172
173
|
|
|
173
174
|
function createEnumTypeChecker(expectedValues) {
|
|
175
|
+
if (!Array.isArray(expectedValues)) {
|
|
176
|
+
return createChainableTypeChecker(function () {
|
|
177
|
+
return new Error('Invalid argument supplied to oneOf, expected an instance of array.');
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
174
181
|
function validate(props, propName, componentName, location, propFullName) {
|
|
175
182
|
var propValue = props[propName];
|
|
176
183
|
for (var i = 0; i < expectedValues.length; i++) {
|
|
@@ -196,7 +203,7 @@ function createObjectOfTypeChecker(typeChecker) {
|
|
|
196
203
|
}
|
|
197
204
|
for (var key in propValue) {
|
|
198
205
|
if (propValue.hasOwnProperty(key)) {
|
|
199
|
-
var error = typeChecker(propValue, key, componentName, location,
|
|
206
|
+
var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key);
|
|
200
207
|
if (error instanceof Error) {
|
|
201
208
|
return error;
|
|
202
209
|
}
|
|
@@ -208,6 +215,12 @@ function createObjectOfTypeChecker(typeChecker) {
|
|
|
208
215
|
}
|
|
209
216
|
|
|
210
217
|
function createUnionTypeChecker(arrayOfTypeCheckers) {
|
|
218
|
+
if (!Array.isArray(arrayOfTypeCheckers)) {
|
|
219
|
+
return createChainableTypeChecker(function () {
|
|
220
|
+
return new Error('Invalid argument supplied to oneOfType, expected an instance of array.');
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
211
224
|
function validate(props, propName, componentName, location, propFullName) {
|
|
212
225
|
for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
|
|
213
226
|
var checker = arrayOfTypeCheckers[i];
|
|
@@ -246,7 +259,7 @@ function createShapeTypeChecker(shapeTypes) {
|
|
|
246
259
|
if (!checker) {
|
|
247
260
|
continue;
|
|
248
261
|
}
|
|
249
|
-
var error = checker(propValue, key, componentName, location,
|
|
262
|
+
var error = checker(propValue, key, componentName, location, propFullName + '.' + key);
|
|
250
263
|
if (error) {
|
|
251
264
|
return error;
|
|
252
265
|
}
|
|
@@ -271,12 +284,37 @@ function isNode(propValue) {
|
|
|
271
284
|
if (propValue === null || ReactElement.isValidElement(propValue)) {
|
|
272
285
|
return true;
|
|
273
286
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
287
|
+
|
|
288
|
+
var iteratorFn = getIteratorFn(propValue);
|
|
289
|
+
if (iteratorFn) {
|
|
290
|
+
var iterator = iteratorFn.call(propValue);
|
|
291
|
+
var step;
|
|
292
|
+
if (iteratorFn !== propValue.entries) {
|
|
293
|
+
while (!(step = iterator.next()).done) {
|
|
294
|
+
if (!isNode(step.value)) {
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else {
|
|
299
|
+
// Iterator will provide entry [k,v] tuples rather than values.
|
|
300
|
+
while (!(step = iterator.next()).done) {
|
|
301
|
+
var entry = step.value;
|
|
302
|
+
if (entry) {
|
|
303
|
+
if (!isNode(entry[1])) {
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
} else {
|
|
310
|
+
propValue = ReactFragment.extractIfFragment(propValue);
|
|
311
|
+
for (var k in propValue) {
|
|
312
|
+
if (!isNode(propValue[k])) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
278
315
|
}
|
|
279
316
|
}
|
|
317
|
+
|
|
280
318
|
return true;
|
|
281
319
|
default:
|
|
282
320
|
return false;
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
var CallbackQueue = require(
|
|
16
|
-
var PooledClass = require(
|
|
17
|
-
var ReactBrowserEventEmitter = require(
|
|
18
|
-
var ReactInputSelection = require(
|
|
19
|
-
var Transaction = require(
|
|
15
|
+
var CallbackQueue = require('./CallbackQueue');
|
|
16
|
+
var PooledClass = require('./PooledClass');
|
|
17
|
+
var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');
|
|
18
|
+
var ReactInputSelection = require('./ReactInputSelection');
|
|
19
|
+
var Transaction = require('./Transaction');
|
|
20
20
|
|
|
21
|
-
var assign = require(
|
|
21
|
+
var assign = require('./Object.assign');
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Ensures that, when possible, the selection range (currently selected text
|
|
@@ -118,7 +118,7 @@ var Mixin = {
|
|
|
118
118
|
* @see Transaction
|
|
119
119
|
* @abstract
|
|
120
120
|
* @final
|
|
121
|
-
* @return {array<object>} List of operation wrap
|
|
121
|
+
* @return {array<object>} List of operation wrap procedures.
|
|
122
122
|
* TODO: convert to array<TransactionWrapper>
|
|
123
123
|
*/
|
|
124
124
|
getTransactionWrappers: function () {
|
|
@@ -134,7 +134,7 @@ var Mixin = {
|
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
136
|
* `PooledClass` looks for this, and will invoke this before allowing this
|
|
137
|
-
* instance to be
|
|
137
|
+
* instance to be reused.
|
|
138
138
|
*/
|
|
139
139
|
destructor: function () {
|
|
140
140
|
CallbackQueue.release(this.reactMountReady);
|
package/lib/ReactReconciler.js
CHANGED
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
var ReactRef = require(
|
|
15
|
-
var ReactElementValidator = require("./ReactElementValidator");
|
|
14
|
+
var ReactRef = require('./ReactRef');
|
|
16
15
|
|
|
17
16
|
/**
|
|
18
17
|
* Helper to call ReactRef.attachRefs with this composite component, split out
|
|
@@ -36,10 +35,9 @@ var ReactReconciler = {
|
|
|
36
35
|
*/
|
|
37
36
|
mountComponent: function (internalInstance, rootID, transaction, context) {
|
|
38
37
|
var markup = internalInstance.mountComponent(rootID, transaction, context);
|
|
39
|
-
if (
|
|
40
|
-
|
|
38
|
+
if (internalInstance._currentElement.ref != null) {
|
|
39
|
+
transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
|
|
41
40
|
}
|
|
42
|
-
transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
|
|
43
41
|
return markup;
|
|
44
42
|
},
|
|
45
43
|
|
|
@@ -65,21 +63,21 @@ var ReactReconciler = {
|
|
|
65
63
|
*/
|
|
66
64
|
receiveComponent: function (internalInstance, nextElement, transaction, context) {
|
|
67
65
|
var prevElement = internalInstance._currentElement;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
if (nextElement === prevElement && nextElement._owner != null
|
|
67
|
+
// TODO: Shouldn't we need to do this: `&& context === internalInstance._context`
|
|
68
|
+
) {
|
|
69
|
+
// Since elements are immutable after the owner is rendered,
|
|
70
|
+
// we can do a cheap identity compare here to determine if this is a
|
|
71
|
+
// superfluous reconcile. It's possible for state to be mutable but such
|
|
72
|
+
// change should trigger an update of the owner which would recreate
|
|
73
|
+
// the element. We explicitly check for the existence of an owner since
|
|
74
|
+
// it's possible for an element created outside a composite to be
|
|
75
|
+
// deeply mutated and reused.
|
|
76
|
+
|
|
77
|
+
// TODO: Bailing out early is just a perf optimization right?
|
|
78
|
+
// TODO: Removing the return statement should affect correctness?
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
83
81
|
|
|
84
82
|
var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
|
|
85
83
|
|