react 0.7.0 → 0.9.0
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 +10 -231
- package/addons.js +1 -0
- package/lib/AutoFocusMixin.js +30 -0
- package/lib/CSSCore.js +115 -0
- package/lib/CSSProperty.js +121 -0
- package/lib/CSSPropertyOperations.js +97 -0
- package/lib/ChangeEventPlugin.js +387 -0
- package/lib/ClientReactRootIndex.js +30 -0
- package/lib/CompositionEventPlugin.js +260 -0
- package/lib/DOMChildrenOperations.js +165 -0
- package/lib/DOMProperty.js +268 -0
- package/lib/DOMPropertyOperations.js +181 -0
- package/lib/Danger.js +187 -0
- package/lib/DefaultDOMPropertyConfig.js +203 -0
- package/lib/DefaultEventPluginOrder.js +44 -0
- package/lib/EnterLeaveEventPlugin.js +145 -0
- package/lib/EventConstants.js +76 -0
- package/lib/EventListener.js +69 -0
- package/lib/EventPluginHub.js +293 -0
- package/lib/EventPluginRegistry.js +281 -0
- package/lib/EventPluginUtils.js +214 -0
- package/lib/EventPropagators.js +143 -0
- package/lib/ExecutionEnvironment.js +44 -0
- package/lib/LinkedStateMixin.js +46 -0
- package/lib/LinkedValueUtils.js +161 -0
- package/lib/MobileSafariClickEventPlugin.js +63 -0
- package/lib/PooledClass.js +119 -0
- package/lib/React.js +95 -0
- package/lib/ReactCSSTransitionGroup.js +65 -0
- package/lib/ReactCSSTransitionGroupChild.js +138 -0
- package/lib/ReactChildren.js +132 -0
- package/lib/ReactComponent.js +550 -0
- package/lib/ReactComponentBrowserEnvironment.js +158 -0
- package/lib/ReactComponentEnvironment.js +26 -0
- package/lib/ReactCompositeComponent.js +1455 -0
- package/lib/ReactContext.js +67 -0
- package/lib/ReactCurrentOwner.js +39 -0
- package/lib/ReactDOM.js +207 -0
- package/lib/ReactDOMButton.js +68 -0
- package/lib/ReactDOMComponent.js +399 -0
- package/lib/ReactDOMForm.js +59 -0
- package/lib/ReactDOMIDOperations.js +218 -0
- package/lib/ReactDOMImg.js +58 -0
- package/lib/ReactDOMInput.js +181 -0
- package/lib/ReactDOMOption.js +51 -0
- package/lib/ReactDOMSelect.js +179 -0
- package/lib/ReactDOMSelection.js +189 -0
- package/lib/ReactDOMTextarea.js +140 -0
- package/lib/ReactDefaultBatchingStrategy.js +75 -0
- package/lib/ReactDefaultInjection.js +115 -0
- package/lib/ReactDefaultPerf.js +244 -0
- package/lib/ReactDefaultPerfAnalysis.js +199 -0
- package/lib/ReactErrorUtils.js +37 -0
- package/lib/ReactEventEmitter.js +339 -0
- package/lib/ReactEventEmitterMixin.js +57 -0
- package/lib/ReactEventTopLevelCallback.js +149 -0
- package/lib/ReactInjection.js +39 -0
- package/lib/ReactInputSelection.js +140 -0
- package/lib/ReactInstanceHandles.js +338 -0
- package/lib/ReactLink.js +54 -0
- package/lib/ReactMarkupChecksum.js +53 -0
- package/lib/ReactMount.js +641 -0
- package/lib/ReactMountReady.js +95 -0
- package/lib/ReactMultiChild.js +425 -0
- package/lib/ReactMultiChildUpdateTypes.js +38 -0
- package/lib/ReactOwner.js +154 -0
- package/lib/ReactPerf.js +85 -0
- package/lib/ReactPropTransferer.js +147 -0
- package/lib/ReactPropTypeLocationNames.js +31 -0
- package/lib/ReactPropTypeLocations.js +29 -0
- package/lib/ReactPropTypes.js +359 -0
- package/lib/ReactPutListenerQueue.js +61 -0
- package/lib/ReactReconcileTransaction.js +181 -0
- package/lib/ReactRootIndex.js +36 -0
- package/lib/ReactServerRendering.js +59 -0
- package/lib/ReactStateSetters.js +111 -0
- package/lib/ReactTestUtils.js +394 -0
- package/lib/ReactTextComponent.js +99 -0
- package/lib/ReactTransitionChildMapping.js +106 -0
- package/lib/ReactTransitionEvents.js +97 -0
- package/lib/ReactTransitionGroup.js +187 -0
- package/lib/ReactUpdates.js +148 -0
- package/lib/ReactWithAddons.js +51 -0
- package/lib/SelectEventPlugin.js +200 -0
- package/lib/ServerReactRootIndex.js +36 -0
- package/lib/SimpleEventPlugin.js +413 -0
- package/lib/SyntheticClipboardEvent.js +51 -0
- package/lib/SyntheticCompositionEvent.js +51 -0
- package/lib/SyntheticDragEvent.js +44 -0
- package/lib/SyntheticEvent.js +164 -0
- package/lib/SyntheticFocusEvent.js +44 -0
- package/lib/SyntheticKeyboardEvent.js +58 -0
- package/lib/SyntheticMouseEvent.js +85 -0
- package/lib/SyntheticTouchEvent.js +50 -0
- package/lib/SyntheticUIEvent.js +45 -0
- package/lib/SyntheticWheelEvent.js +66 -0
- package/lib/Transaction.js +276 -0
- package/lib/ViewportMetrics.js +37 -0
- package/lib/accumulate.js +54 -0
- package/lib/adler32.js +39 -0
- package/lib/cloneWithProps.js +59 -0
- package/lib/containsNode.js +49 -0
- package/lib/copyProperties.js +54 -0
- package/lib/createArrayFrom.js +91 -0
- package/lib/createFullPageComponent.js +63 -0
- package/lib/createNodesFromMarkup.js +93 -0
- package/lib/createObjectFrom.js +61 -0
- package/lib/cx.js +44 -0
- package/lib/dangerousStyleValue.js +57 -0
- package/lib/emptyFunction.js +43 -0
- package/lib/escapeTextForBrowser.js +47 -0
- package/lib/flattenChildren.js +57 -0
- package/lib/forEachAccumulated.js +36 -0
- package/lib/getActiveElement.js +34 -0
- package/lib/getEventKey.js +85 -0
- package/lib/getEventTarget.js +36 -0
- package/lib/getMarkupWrap.js +118 -0
- package/lib/getNodeForCharacterOffset.js +80 -0
- package/lib/getReactRootElementInContainer.js +40 -0
- package/lib/getTextContentAccessor.js +42 -0
- package/lib/getUnboundedScrollPosition.js +45 -0
- package/lib/hyphenate.js +35 -0
- package/lib/invariant.js +62 -0
- package/lib/isEventSupported.js +70 -0
- package/lib/isNode.js +33 -0
- package/lib/isTextInputElement.js +49 -0
- package/lib/isTextNode.js +30 -0
- package/lib/joinClasses.js +44 -0
- package/lib/keyMirror.js +58 -0
- package/lib/keyOf.js +41 -0
- package/lib/memoizeStringOnly.js +39 -0
- package/lib/merge.js +37 -0
- package/lib/mergeHelpers.js +136 -0
- package/lib/mergeInto.js +45 -0
- package/lib/mixInto.js +34 -0
- package/lib/objMap.js +47 -0
- package/lib/objMapKeyVal.js +47 -0
- package/lib/onlyChild.js +43 -0
- package/lib/performanceNow.js +42 -0
- package/lib/shallowEqual.js +49 -0
- package/lib/shouldUpdateReactComponent.js +58 -0
- package/lib/toArray.js +75 -0
- package/lib/traverseAllChildren.js +189 -0
- package/lib/warning.js +48 -0
- package/package.json +33 -21
- package/react.js +1 -0
- package/.npmignore +0 -7
- package/.travis.yml +0 -7
- package/Jakefile.js +0 -39
- package/LICENSE +0 -19
- package/browser-test/dist.html +0 -90
- package/browser-test/index.html +0 -86
- package/browser-test/min.html +0 -90
- package/dist/react.js +0 -3141
- package/dist/react.min.js +0 -22
- package/doc/advanced.md +0 -174
- package/doc/color-def.graffle +0 -938
- package/doc/color-def.png +0 -0
- package/doc/simple.dot +0 -25
- package/doc/simple.png +0 -0
- package/examples/longer-example.js +0 -41
- package/examples/simple.js +0 -45
- package/examples/using-ast-directly.js +0 -30
- package/examples/using-events1.js +0 -79
- package/examples/using-log-events.js +0 -43
- package/lib/base-task.js +0 -120
- package/lib/cb-task.js +0 -84
- package/lib/core.js +0 -138
- package/lib/dsl.js +0 -138
- package/lib/error.js +0 -55
- package/lib/event-collector.js +0 -81
- package/lib/event-manager.js +0 -89
- package/lib/eventemitter.js +0 -20
- package/lib/finalcb-first-task.js +0 -68
- package/lib/finalcb-task.js +0 -65
- package/lib/id.js +0 -22
- package/lib/input-parser.js +0 -56
- package/lib/log-events.js +0 -101
- package/lib/parse.js +0 -41
- package/lib/promise-resolve.js +0 -50
- package/lib/promise-task.js +0 -93
- package/lib/react.js +0 -59
- package/lib/ret-task.js +0 -71
- package/lib/sprintf.js +0 -18
- package/lib/status.js +0 -14
- package/lib/task.js +0 -251
- package/lib/track-tasks.js +0 -74
- package/lib/validate.js +0 -159
- package/lib/vcon.js +0 -113
- package/lib/when-task.js +0 -84
- package/src/dist.build.requirejs +0 -20
- package/test/ast.mocha.js +0 -136
- package/test/cb-task.mocha.js +0 -220
- package/test/core-deferred.mocha.js +0 -143
- package/test/core-when.mocha.js +0 -96
- package/test/core.mocha.js +0 -589
- package/test/dsl.mocha.js +0 -352
- package/test/event-manager.mocha.js +0 -119
- package/test/exec-options.mocha.js +0 -48
- package/test/finalcb-task.mocha.js +0 -58
- package/test/input-parser.mocha.js +0 -86
- package/test/log-events.mocha.js +0 -88
- package/test/mocha.opts +0 -2
- package/test/module-use.mocha.js +0 -164
- package/test/promise-auto-resolve.mocha.js +0 -68
- package/test/ret-task.mocha.js +0 -220
- package/test/task.mocha.js +0 -42
- package/test/validate-cb-task.mocha.js +0 -100
- package/test/validate-ret-task.mocha.js +0 -110
- package/test/validate.mocha.js +0 -324
- package/test/vcon.mocha.js +0 -193
- package/vendor/chai/chai.js +0 -4251
- package/vendor/jquery/jquery-1.7.1.js +0 -9266
- package/vendor/jquery/jquery-1.7.1.min.js +0 -4
- package/vendor/node/util.js +0 -531
- package/vendor/requirejs/require.js +0 -2045
- package/vendor/requirejs/require.min.js +0 -36
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2014 Facebook, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* @providesModule ReactMultiChildUpdateTypes
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
var keyMirror = require("./keyMirror");
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* When a component's children are updated, a series of update configuration
|
|
25
|
+
* objects are created in order to batch and serialize the required changes.
|
|
26
|
+
*
|
|
27
|
+
* Enumerates all the possible types of update configurations.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
var ReactMultiChildUpdateTypes = keyMirror({
|
|
32
|
+
INSERT_MARKUP: null,
|
|
33
|
+
MOVE_EXISTING: null,
|
|
34
|
+
REMOVE_NODE: null,
|
|
35
|
+
TEXT_CONTENT: null
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
module.exports = ReactMultiChildUpdateTypes;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2014 Facebook, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* @providesModule ReactOwner
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
var invariant = require("./invariant");
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* ReactOwners are capable of storing references to owned components.
|
|
25
|
+
*
|
|
26
|
+
* All components are capable of //being// referenced by owner components, but
|
|
27
|
+
* only ReactOwner components are capable of //referencing// owned components.
|
|
28
|
+
* The named reference is known as a "ref".
|
|
29
|
+
*
|
|
30
|
+
* Refs are available when mounted and updated during reconciliation.
|
|
31
|
+
*
|
|
32
|
+
* var MyComponent = React.createClass({
|
|
33
|
+
* render: function() {
|
|
34
|
+
* return (
|
|
35
|
+
* <div onClick={this.handleClick}>
|
|
36
|
+
* <CustomComponent ref="custom" />
|
|
37
|
+
* </div>
|
|
38
|
+
* );
|
|
39
|
+
* },
|
|
40
|
+
* handleClick: function() {
|
|
41
|
+
* this.refs.custom.handleClick();
|
|
42
|
+
* },
|
|
43
|
+
* componentDidMount: function() {
|
|
44
|
+
* this.refs.custom.initialize();
|
|
45
|
+
* }
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* Refs should rarely be used. When refs are used, they should only be done to
|
|
49
|
+
* control data that is not handled by React's data flow.
|
|
50
|
+
*
|
|
51
|
+
* @class ReactOwner
|
|
52
|
+
*/
|
|
53
|
+
var ReactOwner = {
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param {?object} object
|
|
57
|
+
* @return {boolean} True if `object` is a valid owner.
|
|
58
|
+
* @final
|
|
59
|
+
*/
|
|
60
|
+
isValidOwner: function(object) {
|
|
61
|
+
return !!(
|
|
62
|
+
object &&
|
|
63
|
+
typeof object.attachRef === 'function' &&
|
|
64
|
+
typeof object.detachRef === 'function'
|
|
65
|
+
);
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Adds a component by ref to an owner component.
|
|
70
|
+
*
|
|
71
|
+
* @param {ReactComponent} component Component to reference.
|
|
72
|
+
* @param {string} ref Name by which to refer to the component.
|
|
73
|
+
* @param {ReactOwner} owner Component on which to record the ref.
|
|
74
|
+
* @final
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
addComponentAsRefTo: function(component, ref, owner) {
|
|
78
|
+
("production" !== process.env.NODE_ENV ? invariant(
|
|
79
|
+
ReactOwner.isValidOwner(owner),
|
|
80
|
+
'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' +
|
|
81
|
+
'usually means that you\'re trying to add a ref to a component that ' +
|
|
82
|
+
'doesn\'t have an owner (that is, was not created inside of another ' +
|
|
83
|
+
'component\'s `render` method). Try rendering this component inside of ' +
|
|
84
|
+
'a new top-level component which will hold the ref.'
|
|
85
|
+
) : invariant(ReactOwner.isValidOwner(owner)));
|
|
86
|
+
owner.attachRef(ref, component);
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Removes a component by ref from an owner component.
|
|
91
|
+
*
|
|
92
|
+
* @param {ReactComponent} component Component to dereference.
|
|
93
|
+
* @param {string} ref Name of the ref to remove.
|
|
94
|
+
* @param {ReactOwner} owner Component on which the ref is recorded.
|
|
95
|
+
* @final
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
removeComponentAsRefFrom: function(component, ref, owner) {
|
|
99
|
+
("production" !== process.env.NODE_ENV ? invariant(
|
|
100
|
+
ReactOwner.isValidOwner(owner),
|
|
101
|
+
'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' +
|
|
102
|
+
'usually means that you\'re trying to remove a ref to a component that ' +
|
|
103
|
+
'doesn\'t have an owner (that is, was not created inside of another ' +
|
|
104
|
+
'component\'s `render` method). Try rendering this component inside of ' +
|
|
105
|
+
'a new top-level component which will hold the ref.'
|
|
106
|
+
) : invariant(ReactOwner.isValidOwner(owner)));
|
|
107
|
+
// Check that `component` is still the current ref because we do not want to
|
|
108
|
+
// detach the ref if another component stole it.
|
|
109
|
+
if (owner.refs[ref] === component) {
|
|
110
|
+
owner.detachRef(ref);
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* A ReactComponent must mix this in to have refs.
|
|
116
|
+
*
|
|
117
|
+
* @lends {ReactOwner.prototype}
|
|
118
|
+
*/
|
|
119
|
+
Mixin: {
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Lazily allocates the refs object and stores `component` as `ref`.
|
|
123
|
+
*
|
|
124
|
+
* @param {string} ref Reference name.
|
|
125
|
+
* @param {component} component Component to store as `ref`.
|
|
126
|
+
* @final
|
|
127
|
+
* @private
|
|
128
|
+
*/
|
|
129
|
+
attachRef: function(ref, component) {
|
|
130
|
+
("production" !== process.env.NODE_ENV ? invariant(
|
|
131
|
+
component.isOwnedBy(this),
|
|
132
|
+
'attachRef(%s, ...): Only a component\'s owner can store a ref to it.',
|
|
133
|
+
ref
|
|
134
|
+
) : invariant(component.isOwnedBy(this)));
|
|
135
|
+
var refs = this.refs || (this.refs = {});
|
|
136
|
+
refs[ref] = component;
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Detaches a reference name.
|
|
141
|
+
*
|
|
142
|
+
* @param {string} ref Name to dereference.
|
|
143
|
+
* @final
|
|
144
|
+
* @private
|
|
145
|
+
*/
|
|
146
|
+
detachRef: function(ref) {
|
|
147
|
+
delete this.refs[ref];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
module.exports = ReactOwner;
|
package/lib/ReactPerf.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2014 Facebook, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* @providesModule ReactPerf
|
|
17
|
+
* @typechecks static-only
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
"use strict";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* ReactPerf is a general AOP system designed to measure performance. This
|
|
24
|
+
* module only has the hooks: see ReactDefaultPerf for the analysis tool.
|
|
25
|
+
*/
|
|
26
|
+
var ReactPerf = {
|
|
27
|
+
/**
|
|
28
|
+
* Boolean to enable/disable measurement. Set to false by default to prevent
|
|
29
|
+
* accidental logging and perf loss.
|
|
30
|
+
*/
|
|
31
|
+
enableMeasure: false,
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Holds onto the measure function in use. By default, don't measure
|
|
35
|
+
* anything, but we'll override this if we inject a measure function.
|
|
36
|
+
*/
|
|
37
|
+
storedMeasure: _noMeasure,
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Use this to wrap methods you want to measure. Zero overhead in production.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} objName
|
|
43
|
+
* @param {string} fnName
|
|
44
|
+
* @param {function} func
|
|
45
|
+
* @return {function}
|
|
46
|
+
*/
|
|
47
|
+
measure: function(objName, fnName, func) {
|
|
48
|
+
if ("production" !== process.env.NODE_ENV) {
|
|
49
|
+
var measuredFunc = null;
|
|
50
|
+
return function() {
|
|
51
|
+
if (ReactPerf.enableMeasure) {
|
|
52
|
+
if (!measuredFunc) {
|
|
53
|
+
measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);
|
|
54
|
+
}
|
|
55
|
+
return measuredFunc.apply(this, arguments);
|
|
56
|
+
}
|
|
57
|
+
return func.apply(this, arguments);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return func;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
injection: {
|
|
64
|
+
/**
|
|
65
|
+
* @param {function} measure
|
|
66
|
+
*/
|
|
67
|
+
injectMeasure: function(measure) {
|
|
68
|
+
ReactPerf.storedMeasure = measure;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Simply passes through the measured function, without measuring it.
|
|
75
|
+
*
|
|
76
|
+
* @param {string} objName
|
|
77
|
+
* @param {string} fnName
|
|
78
|
+
* @param {function} func
|
|
79
|
+
* @return {function}
|
|
80
|
+
*/
|
|
81
|
+
function _noMeasure(objName, fnName, func) {
|
|
82
|
+
return func;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
module.exports = ReactPerf;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2014 Facebook, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* @providesModule ReactPropTransferer
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
var emptyFunction = require("./emptyFunction");
|
|
22
|
+
var invariant = require("./invariant");
|
|
23
|
+
var joinClasses = require("./joinClasses");
|
|
24
|
+
var merge = require("./merge");
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Creates a transfer strategy that will merge prop values using the supplied
|
|
28
|
+
* `mergeStrategy`. If a prop was previously unset, this just sets it.
|
|
29
|
+
*
|
|
30
|
+
* @param {function} mergeStrategy
|
|
31
|
+
* @return {function}
|
|
32
|
+
*/
|
|
33
|
+
function createTransferStrategy(mergeStrategy) {
|
|
34
|
+
return function(props, key, value) {
|
|
35
|
+
if (!props.hasOwnProperty(key)) {
|
|
36
|
+
props[key] = value;
|
|
37
|
+
} else {
|
|
38
|
+
props[key] = mergeStrategy(props[key], value);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Transfer strategies dictate how props are transferred by `transferPropsTo`.
|
|
45
|
+
* NOTE: if you add any more exceptions to this list you should be sure to
|
|
46
|
+
* update `cloneWithProps()` accordingly.
|
|
47
|
+
*/
|
|
48
|
+
var TransferStrategies = {
|
|
49
|
+
/**
|
|
50
|
+
* Never transfer `children`.
|
|
51
|
+
*/
|
|
52
|
+
children: emptyFunction,
|
|
53
|
+
/**
|
|
54
|
+
* Transfer the `className` prop by merging them.
|
|
55
|
+
*/
|
|
56
|
+
className: createTransferStrategy(joinClasses),
|
|
57
|
+
/**
|
|
58
|
+
* Never transfer the `key` prop.
|
|
59
|
+
*/
|
|
60
|
+
key: emptyFunction,
|
|
61
|
+
/**
|
|
62
|
+
* Never transfer the `ref` prop.
|
|
63
|
+
*/
|
|
64
|
+
ref: emptyFunction,
|
|
65
|
+
/**
|
|
66
|
+
* Transfer the `style` prop (which is an object) by merging them.
|
|
67
|
+
*/
|
|
68
|
+
style: createTransferStrategy(merge)
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* ReactPropTransferer are capable of transferring props to another component
|
|
73
|
+
* using a `transferPropsTo` method.
|
|
74
|
+
*
|
|
75
|
+
* @class ReactPropTransferer
|
|
76
|
+
*/
|
|
77
|
+
var ReactPropTransferer = {
|
|
78
|
+
|
|
79
|
+
TransferStrategies: TransferStrategies,
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Merge two props objects using TransferStrategies.
|
|
83
|
+
*
|
|
84
|
+
* @param {object} oldProps original props (they take precedence)
|
|
85
|
+
* @param {object} newProps new props to merge in
|
|
86
|
+
* @return {object} a new object containing both sets of props merged.
|
|
87
|
+
*/
|
|
88
|
+
mergeProps: function(oldProps, newProps) {
|
|
89
|
+
var props = merge(oldProps);
|
|
90
|
+
|
|
91
|
+
for (var thisKey in newProps) {
|
|
92
|
+
if (!newProps.hasOwnProperty(thisKey)) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
var transferStrategy = TransferStrategies[thisKey];
|
|
97
|
+
|
|
98
|
+
if (transferStrategy) {
|
|
99
|
+
transferStrategy(props, thisKey, newProps[thisKey]);
|
|
100
|
+
} else if (!props.hasOwnProperty(thisKey)) {
|
|
101
|
+
props[thisKey] = newProps[thisKey];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return props;
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @lends {ReactPropTransferer.prototype}
|
|
110
|
+
*/
|
|
111
|
+
Mixin: {
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Transfer props from this component to a target component.
|
|
115
|
+
*
|
|
116
|
+
* Props that do not have an explicit transfer strategy will be transferred
|
|
117
|
+
* only if the target component does not already have the prop set.
|
|
118
|
+
*
|
|
119
|
+
* This is usually used to pass down props to a returned root component.
|
|
120
|
+
*
|
|
121
|
+
* @param {ReactComponent} component Component receiving the properties.
|
|
122
|
+
* @return {ReactComponent} The supplied `component`.
|
|
123
|
+
* @final
|
|
124
|
+
* @protected
|
|
125
|
+
*/
|
|
126
|
+
transferPropsTo: function(component) {
|
|
127
|
+
("production" !== process.env.NODE_ENV ? invariant(
|
|
128
|
+
component._owner === this,
|
|
129
|
+
'%s: You can\'t call transferPropsTo() on a component that you ' +
|
|
130
|
+
'don\'t own, %s. This usually means you are calling ' +
|
|
131
|
+
'transferPropsTo() on a component passed in as props or children.',
|
|
132
|
+
this.constructor.displayName,
|
|
133
|
+
component.constructor.displayName
|
|
134
|
+
) : invariant(component._owner === this));
|
|
135
|
+
|
|
136
|
+
component.props = ReactPropTransferer.mergeProps(
|
|
137
|
+
component.props,
|
|
138
|
+
this.props
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
return component;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
module.exports = ReactPropTransferer;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2014 Facebook, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* @providesModule ReactPropTypeLocationNames
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
var ReactPropTypeLocationNames = {};
|
|
22
|
+
|
|
23
|
+
if ("production" !== process.env.NODE_ENV) {
|
|
24
|
+
ReactPropTypeLocationNames = {
|
|
25
|
+
prop: 'prop',
|
|
26
|
+
context: 'context',
|
|
27
|
+
childContext: 'child context'
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = ReactPropTypeLocationNames;
|