react 0.7.1 → 0.10.0-rc1

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.
Files changed (223) hide show
  1. package/README.md +10 -231
  2. package/addons.js +1 -0
  3. package/lib/AutoFocusMixin.js +32 -0
  4. package/lib/CSSCore.js +115 -0
  5. package/lib/CSSProperty.js +121 -0
  6. package/lib/CSSPropertyOperations.js +97 -0
  7. package/lib/ChangeEventPlugin.js +387 -0
  8. package/lib/ClientReactRootIndex.js +30 -0
  9. package/lib/CompositionEventPlugin.js +260 -0
  10. package/lib/DOMChildrenOperations.js +171 -0
  11. package/lib/DOMProperty.js +270 -0
  12. package/lib/DOMPropertyOperations.js +181 -0
  13. package/lib/Danger.js +187 -0
  14. package/lib/DefaultDOMPropertyConfig.js +196 -0
  15. package/lib/DefaultEventPluginOrder.js +44 -0
  16. package/lib/EnterLeaveEventPlugin.js +145 -0
  17. package/lib/EventConstants.js +76 -0
  18. package/lib/EventListener.js +69 -0
  19. package/lib/EventPluginHub.js +295 -0
  20. package/lib/EventPluginRegistry.js +281 -0
  21. package/lib/EventPluginUtils.js +214 -0
  22. package/lib/EventPropagators.js +143 -0
  23. package/lib/ExecutionEnvironment.js +44 -0
  24. package/lib/LinkedStateMixin.js +46 -0
  25. package/lib/LinkedValueUtils.js +160 -0
  26. package/lib/MobileSafariClickEventPlugin.js +63 -0
  27. package/lib/PooledClass.js +119 -0
  28. package/lib/React.js +97 -0
  29. package/lib/ReactBrowserComponentMixin.js +42 -0
  30. package/lib/ReactCSSTransitionGroup.js +65 -0
  31. package/lib/ReactCSSTransitionGroupChild.js +138 -0
  32. package/lib/ReactChildren.js +132 -0
  33. package/lib/ReactComponent.js +595 -0
  34. package/lib/ReactComponentBrowserEnvironment.js +124 -0
  35. package/lib/ReactCompositeComponent.js +1587 -0
  36. package/lib/ReactContext.js +67 -0
  37. package/lib/ReactCurrentOwner.js +39 -0
  38. package/lib/ReactDOM.js +207 -0
  39. package/lib/ReactDOMButton.js +69 -0
  40. package/lib/ReactDOMComponent.js +416 -0
  41. package/lib/ReactDOMForm.js +62 -0
  42. package/lib/ReactDOMIDOperations.js +218 -0
  43. package/lib/ReactDOMImg.js +61 -0
  44. package/lib/ReactDOMInput.js +182 -0
  45. package/lib/ReactDOMOption.js +55 -0
  46. package/lib/ReactDOMSelect.js +180 -0
  47. package/lib/ReactDOMSelection.js +189 -0
  48. package/lib/ReactDOMTextarea.js +144 -0
  49. package/lib/ReactDefaultBatchingStrategy.js +75 -0
  50. package/lib/ReactDefaultInjection.js +125 -0
  51. package/lib/ReactDefaultPerf.js +244 -0
  52. package/lib/ReactDefaultPerfAnalysis.js +199 -0
  53. package/lib/ReactErrorUtils.js +37 -0
  54. package/lib/ReactEventEmitter.js +339 -0
  55. package/lib/ReactEventEmitterMixin.js +57 -0
  56. package/lib/ReactEventTopLevelCallback.js +149 -0
  57. package/lib/ReactInjection.js +43 -0
  58. package/lib/ReactInputSelection.js +141 -0
  59. package/lib/ReactInstanceHandles.js +338 -0
  60. package/lib/ReactLink.js +54 -0
  61. package/lib/ReactMarkupChecksum.js +53 -0
  62. package/lib/ReactMount.js +649 -0
  63. package/lib/ReactMountReady.js +95 -0
  64. package/lib/ReactMultiChild.js +432 -0
  65. package/lib/ReactMultiChildUpdateTypes.js +38 -0
  66. package/lib/ReactOwner.js +159 -0
  67. package/lib/ReactPerf.js +85 -0
  68. package/lib/ReactPropTransferer.js +147 -0
  69. package/lib/ReactPropTypeLocationNames.js +31 -0
  70. package/lib/ReactPropTypeLocations.js +29 -0
  71. package/lib/ReactPropTypes.js +359 -0
  72. package/lib/ReactPutListenerQueue.js +61 -0
  73. package/lib/ReactReconcileTransaction.js +182 -0
  74. package/lib/ReactRootIndex.js +36 -0
  75. package/lib/ReactServerRendering.js +89 -0
  76. package/lib/ReactServerRenderingTransaction.js +116 -0
  77. package/lib/ReactStateSetters.js +111 -0
  78. package/lib/ReactTestUtils.js +394 -0
  79. package/lib/ReactTextComponent.js +121 -0
  80. package/lib/ReactTransitionChildMapping.js +106 -0
  81. package/lib/ReactTransitionEvents.js +97 -0
  82. package/lib/ReactTransitionGroup.js +187 -0
  83. package/lib/ReactUpdates.js +148 -0
  84. package/lib/ReactWithAddons.js +53 -0
  85. package/lib/SelectEventPlugin.js +200 -0
  86. package/lib/ServerReactRootIndex.js +36 -0
  87. package/lib/SimpleEventPlugin.js +413 -0
  88. package/lib/SyntheticClipboardEvent.js +51 -0
  89. package/lib/SyntheticCompositionEvent.js +51 -0
  90. package/lib/SyntheticDragEvent.js +44 -0
  91. package/lib/SyntheticEvent.js +164 -0
  92. package/lib/SyntheticFocusEvent.js +44 -0
  93. package/lib/SyntheticKeyboardEvent.js +58 -0
  94. package/lib/SyntheticMouseEvent.js +85 -0
  95. package/lib/SyntheticTouchEvent.js +50 -0
  96. package/lib/SyntheticUIEvent.js +45 -0
  97. package/lib/SyntheticWheelEvent.js +66 -0
  98. package/lib/Transaction.js +276 -0
  99. package/lib/ViewportMetrics.js +37 -0
  100. package/lib/accumulate.js +54 -0
  101. package/lib/adler32.js +39 -0
  102. package/lib/cloneWithProps.js +59 -0
  103. package/lib/containsNode.js +49 -0
  104. package/lib/copyProperties.js +54 -0
  105. package/lib/createArrayFrom.js +91 -0
  106. package/lib/createFullPageComponent.js +63 -0
  107. package/lib/createNodesFromMarkup.js +93 -0
  108. package/lib/createObjectFrom.js +61 -0
  109. package/lib/cx.js +44 -0
  110. package/lib/dangerousStyleValue.js +57 -0
  111. package/lib/emptyFunction.js +43 -0
  112. package/lib/emptyObject.js +27 -0
  113. package/lib/escapeTextForBrowser.js +47 -0
  114. package/lib/flattenChildren.js +57 -0
  115. package/lib/focusNode.js +33 -0
  116. package/lib/forEachAccumulated.js +36 -0
  117. package/lib/getActiveElement.js +34 -0
  118. package/lib/getEventKey.js +85 -0
  119. package/lib/getEventTarget.js +36 -0
  120. package/lib/getMarkupWrap.js +118 -0
  121. package/lib/getNodeForCharacterOffset.js +80 -0
  122. package/lib/getReactRootElementInContainer.js +40 -0
  123. package/lib/getTextContentAccessor.js +42 -0
  124. package/lib/getUnboundedScrollPosition.js +45 -0
  125. package/lib/hyphenate.js +35 -0
  126. package/lib/instantiateReactComponent.js +70 -0
  127. package/lib/invariant.js +62 -0
  128. package/lib/isEventSupported.js +70 -0
  129. package/lib/isNode.js +33 -0
  130. package/lib/isTextInputElement.js +49 -0
  131. package/lib/isTextNode.js +30 -0
  132. package/lib/joinClasses.js +44 -0
  133. package/lib/keyMirror.js +58 -0
  134. package/lib/keyOf.js +41 -0
  135. package/lib/memoizeStringOnly.js +39 -0
  136. package/lib/merge.js +37 -0
  137. package/lib/mergeHelpers.js +136 -0
  138. package/lib/mergeInto.js +45 -0
  139. package/lib/mixInto.js +34 -0
  140. package/lib/monitorCodeUse.js +37 -0
  141. package/lib/objMap.js +47 -0
  142. package/lib/objMapKeyVal.js +47 -0
  143. package/lib/onlyChild.js +43 -0
  144. package/lib/performanceNow.js +42 -0
  145. package/lib/shallowEqual.js +49 -0
  146. package/lib/shouldUpdateReactComponent.js +61 -0
  147. package/lib/toArray.js +75 -0
  148. package/lib/traverseAllChildren.js +190 -0
  149. package/lib/update.js +159 -0
  150. package/lib/warning.js +48 -0
  151. package/package.json +33 -31
  152. package/react.js +1 -0
  153. package/.npmignore +0 -7
  154. package/.travis.yml +0 -7
  155. package/Jakefile.js +0 -39
  156. package/LICENSE +0 -19
  157. package/browser-test/dist.html +0 -90
  158. package/browser-test/index.html +0 -86
  159. package/browser-test/min.html +0 -90
  160. package/dist/react.js +0 -3141
  161. package/dist/react.min.js +0 -22
  162. package/doc/advanced.md +0 -175
  163. package/doc/color-def.graffle +0 -938
  164. package/doc/color-def.png +0 -0
  165. package/doc/simple.dot +0 -25
  166. package/doc/simple.png +0 -0
  167. package/examples/longer-example.js +0 -41
  168. package/examples/simple.js +0 -45
  169. package/examples/using-ast-directly.js +0 -30
  170. package/examples/using-events1.js +0 -79
  171. package/examples/using-log-events.js +0 -43
  172. package/lib/base-task.js +0 -120
  173. package/lib/cb-task.js +0 -84
  174. package/lib/core.js +0 -138
  175. package/lib/dsl.js +0 -138
  176. package/lib/error.js +0 -55
  177. package/lib/event-collector.js +0 -81
  178. package/lib/event-manager.js +0 -89
  179. package/lib/eventemitter.js +0 -20
  180. package/lib/finalcb-first-task.js +0 -68
  181. package/lib/finalcb-task.js +0 -65
  182. package/lib/id.js +0 -22
  183. package/lib/input-parser.js +0 -56
  184. package/lib/log-events.js +0 -101
  185. package/lib/parse.js +0 -41
  186. package/lib/promise-resolve.js +0 -50
  187. package/lib/promise-task.js +0 -93
  188. package/lib/react.js +0 -59
  189. package/lib/ret-task.js +0 -71
  190. package/lib/sprintf.js +0 -18
  191. package/lib/status.js +0 -14
  192. package/lib/task.js +0 -251
  193. package/lib/track-tasks.js +0 -74
  194. package/lib/validate.js +0 -159
  195. package/lib/vcon.js +0 -113
  196. package/lib/when-task.js +0 -84
  197. package/src/dist.build.requirejs +0 -20
  198. package/test/ast.mocha.js +0 -136
  199. package/test/cb-task.mocha.js +0 -220
  200. package/test/core-deferred.mocha.js +0 -143
  201. package/test/core-when.mocha.js +0 -96
  202. package/test/core.mocha.js +0 -589
  203. package/test/dsl.mocha.js +0 -352
  204. package/test/event-manager.mocha.js +0 -119
  205. package/test/exec-options.mocha.js +0 -48
  206. package/test/finalcb-task.mocha.js +0 -58
  207. package/test/input-parser.mocha.js +0 -86
  208. package/test/log-events.mocha.js +0 -88
  209. package/test/mocha.opts +0 -2
  210. package/test/module-use.mocha.js +0 -164
  211. package/test/promise-auto-resolve.mocha.js +0 -68
  212. package/test/ret-task.mocha.js +0 -220
  213. package/test/task.mocha.js +0 -42
  214. package/test/validate-cb-task.mocha.js +0 -100
  215. package/test/validate-ret-task.mocha.js +0 -110
  216. package/test/validate.mocha.js +0 -324
  217. package/test/vcon.mocha.js +0 -193
  218. package/vendor/chai/chai.js +0 -4251
  219. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  220. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  221. package/vendor/node/util.js +0 -531
  222. package/vendor/requirejs/require.js +0 -2045
  223. package/vendor/requirejs/require.min.js +0 -36
@@ -0,0 +1,29 @@
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 ReactPropTypeLocations
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var keyMirror = require("./keyMirror");
22
+
23
+ var ReactPropTypeLocations = keyMirror({
24
+ prop: null,
25
+ context: null,
26
+ childContext: null
27
+ });
28
+
29
+ module.exports = ReactPropTypeLocations;
@@ -0,0 +1,359 @@
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 ReactPropTypes
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var ReactComponent = require("./ReactComponent");
22
+ var ReactPropTypeLocationNames = require("./ReactPropTypeLocationNames");
23
+
24
+ var warning = require("./warning");
25
+ var createObjectFrom = require("./createObjectFrom");
26
+
27
+ /**
28
+ * Collection of methods that allow declaration and validation of props that are
29
+ * supplied to React components. Example usage:
30
+ *
31
+ * var Props = require('ReactPropTypes');
32
+ * var MyArticle = React.createClass({
33
+ * propTypes: {
34
+ * // An optional string prop named "description".
35
+ * description: Props.string,
36
+ *
37
+ * // A required enum prop named "category".
38
+ * category: Props.oneOf(['News','Photos']).isRequired,
39
+ *
40
+ * // A prop named "dialog" that requires an instance of Dialog.
41
+ * dialog: Props.instanceOf(Dialog).isRequired
42
+ * },
43
+ * render: function() { ... }
44
+ * });
45
+ *
46
+ * A more formal specification of how these methods are used:
47
+ *
48
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
49
+ * decl := ReactPropTypes.{type}(.isRequired)?
50
+ *
51
+ * Each and every declaration produces a function with the same signature. This
52
+ * allows the creation of custom validation functions. For example:
53
+ *
54
+ * var Props = require('ReactPropTypes');
55
+ * var MyLink = React.createClass({
56
+ * propTypes: {
57
+ * // An optional string or URI prop named "href".
58
+ * href: function(props, propName, componentName) {
59
+ * var propValue = props[propName];
60
+ * warning(
61
+ * propValue == null ||
62
+ * typeof propValue === 'string' ||
63
+ * propValue instanceof URI,
64
+ * 'Invalid `%s` supplied to `%s`, expected string or URI.',
65
+ * propName,
66
+ * componentName
67
+ * );
68
+ * }
69
+ * },
70
+ * render: function() { ... }
71
+ * });
72
+ *
73
+ * @internal
74
+ */
75
+ var Props = {
76
+
77
+ array: createPrimitiveTypeChecker('array'),
78
+ bool: createPrimitiveTypeChecker('boolean'),
79
+ func: createPrimitiveTypeChecker('function'),
80
+ number: createPrimitiveTypeChecker('number'),
81
+ object: createPrimitiveTypeChecker('object'),
82
+ string: createPrimitiveTypeChecker('string'),
83
+
84
+ shape: createShapeTypeChecker,
85
+ oneOf: createEnumTypeChecker,
86
+ oneOfType: createUnionTypeChecker,
87
+ arrayOf: createArrayOfTypeChecker,
88
+
89
+ instanceOf: createInstanceTypeChecker,
90
+
91
+ renderable: createRenderableTypeChecker(),
92
+
93
+ component: createComponentTypeChecker(),
94
+
95
+ any: createAnyTypeChecker()
96
+ };
97
+
98
+ var ANONYMOUS = '<<anonymous>>';
99
+
100
+ function isRenderable(propValue) {
101
+ switch(typeof propValue) {
102
+ case 'number':
103
+ case 'string':
104
+ return true;
105
+ case 'object':
106
+ if (Array.isArray(propValue)) {
107
+ return propValue.every(isRenderable);
108
+ }
109
+ if (ReactComponent.isValidComponent(propValue)) {
110
+ return true;
111
+ }
112
+ for (var k in propValue) {
113
+ if (!isRenderable(propValue[k])) {
114
+ return false;
115
+ }
116
+ }
117
+ return true;
118
+ default:
119
+ return false;
120
+ }
121
+ }
122
+
123
+ // Equivalent of typeof but with special handling for arrays
124
+ function getPropType(propValue) {
125
+ var propType = typeof propValue;
126
+ if (propType === 'object' && Array.isArray(propValue)) {
127
+ return 'array';
128
+ }
129
+ return propType;
130
+ }
131
+
132
+ function createAnyTypeChecker() {
133
+ function validateAnyType(
134
+ shouldWarn, propValue, propName, componentName, location
135
+ ) {
136
+ return true; // is always valid
137
+ }
138
+ return createChainableTypeChecker(validateAnyType);
139
+ }
140
+
141
+ function createPrimitiveTypeChecker(expectedType) {
142
+ function validatePrimitiveType(
143
+ shouldWarn, propValue, propName, componentName, location
144
+ ) {
145
+ var propType = getPropType(propValue);
146
+ var isValid = propType === expectedType;
147
+ if (shouldWarn) {
148
+ ("production" !== process.env.NODE_ENV ? warning(
149
+ isValid,
150
+ 'Invalid %s `%s` of type `%s` supplied to `%s`, expected `%s`.',
151
+ ReactPropTypeLocationNames[location],
152
+ propName,
153
+ propType,
154
+ componentName,
155
+ expectedType
156
+ ) : null);
157
+ }
158
+ return isValid;
159
+ }
160
+ return createChainableTypeChecker(validatePrimitiveType);
161
+ }
162
+
163
+ function createEnumTypeChecker(expectedValues) {
164
+ var expectedEnum = createObjectFrom(expectedValues);
165
+ function validateEnumType(
166
+ shouldWarn, propValue, propName, componentName, location
167
+ ) {
168
+ var isValid = expectedEnum[propValue];
169
+ if (shouldWarn) {
170
+ ("production" !== process.env.NODE_ENV ? warning(
171
+ isValid,
172
+ 'Invalid %s `%s` supplied to `%s`, expected one of %s.',
173
+ ReactPropTypeLocationNames[location],
174
+ propName,
175
+ componentName,
176
+ JSON.stringify(Object.keys(expectedEnum))
177
+ ) : null);
178
+ }
179
+ return isValid;
180
+ }
181
+ return createChainableTypeChecker(validateEnumType);
182
+ }
183
+
184
+ function createShapeTypeChecker(shapeTypes) {
185
+ function validateShapeType(
186
+ shouldWarn, propValue, propName, componentName, location
187
+ ) {
188
+ var propType = getPropType(propValue);
189
+ var isValid = propType === 'object';
190
+ if (isValid) {
191
+ for (var key in shapeTypes) {
192
+ var checker = shapeTypes[key];
193
+ if (checker && !checker(propValue, key, componentName, location)) {
194
+ return false;
195
+ }
196
+ }
197
+ }
198
+ if (shouldWarn) {
199
+ ("production" !== process.env.NODE_ENV ? warning(
200
+ isValid,
201
+ 'Invalid %s `%s` of type `%s` supplied to `%s`, expected `object`.',
202
+ ReactPropTypeLocationNames[location],
203
+ propName,
204
+ propType,
205
+ componentName
206
+ ) : null);
207
+ }
208
+ return isValid;
209
+ }
210
+ return createChainableTypeChecker(validateShapeType);
211
+ }
212
+
213
+ function createInstanceTypeChecker(expectedClass) {
214
+ function validateInstanceType(
215
+ shouldWarn, propValue, propName, componentName, location
216
+ ) {
217
+ var isValid = propValue instanceof expectedClass;
218
+ if (shouldWarn) {
219
+ ("production" !== process.env.NODE_ENV ? warning(
220
+ isValid,
221
+ 'Invalid %s `%s` supplied to `%s`, expected instance of `%s`.',
222
+ ReactPropTypeLocationNames[location],
223
+ propName,
224
+ componentName,
225
+ expectedClass.name || ANONYMOUS
226
+ ) : null);
227
+ }
228
+ return isValid;
229
+ }
230
+ return createChainableTypeChecker(validateInstanceType);
231
+ }
232
+
233
+ function createArrayOfTypeChecker(propTypeChecker) {
234
+ function validateArrayType(
235
+ shouldWarn, propValue, propName, componentName, location
236
+ ) {
237
+ var isValid = Array.isArray(propValue);
238
+ if (isValid) {
239
+ for (var i = 0; i < propValue.length; i++) {
240
+ if (!propTypeChecker(propValue, i, componentName, location)) {
241
+ return false;
242
+ }
243
+ }
244
+ }
245
+ if (shouldWarn) {
246
+ ("production" !== process.env.NODE_ENV ? warning(
247
+ isValid,
248
+ 'Invalid %s `%s` supplied to `%s`, expected an array.',
249
+ ReactPropTypeLocationNames[location],
250
+ propName,
251
+ componentName
252
+ ) : null);
253
+ }
254
+ return isValid;
255
+ }
256
+ return createChainableTypeChecker(validateArrayType);
257
+ }
258
+
259
+ function createRenderableTypeChecker() {
260
+ function validateRenderableType(
261
+ shouldWarn, propValue, propName, componentName, location
262
+ ) {
263
+ var isValid = isRenderable(propValue);
264
+ if (shouldWarn) {
265
+ ("production" !== process.env.NODE_ENV ? warning(
266
+ isValid,
267
+ 'Invalid %s `%s` supplied to `%s`, expected a renderable prop.',
268
+ ReactPropTypeLocationNames[location],
269
+ propName,
270
+ componentName
271
+ ) : null);
272
+ }
273
+ return isValid;
274
+ }
275
+ return createChainableTypeChecker(validateRenderableType);
276
+ }
277
+
278
+ function createComponentTypeChecker() {
279
+ function validateComponentType(
280
+ shouldWarn, propValue, propName, componentName, location
281
+ ) {
282
+ var isValid = ReactComponent.isValidComponent(propValue);
283
+ if (shouldWarn) {
284
+ ("production" !== process.env.NODE_ENV ? warning(
285
+ isValid,
286
+ 'Invalid %s `%s` supplied to `%s`, expected a React component.',
287
+ ReactPropTypeLocationNames[location],
288
+ propName,
289
+ componentName
290
+ ) : null);
291
+ }
292
+ return isValid;
293
+ }
294
+ return createChainableTypeChecker(validateComponentType);
295
+ }
296
+
297
+ function createUnionTypeChecker(arrayOfValidators) {
298
+ return function(props, propName, componentName, location) {
299
+ var isValid = false;
300
+ for (var ii = 0; ii < arrayOfValidators.length; ii++) {
301
+ var validate = arrayOfValidators[ii];
302
+ if (typeof validate.weak === 'function') {
303
+ validate = validate.weak;
304
+ }
305
+ if (validate(props, propName, componentName, location)) {
306
+ isValid = true;
307
+ break;
308
+ }
309
+ }
310
+ ("production" !== process.env.NODE_ENV ? warning(
311
+ isValid,
312
+ 'Invalid %s `%s` supplied to `%s`.',
313
+ ReactPropTypeLocationNames[location],
314
+ propName,
315
+ componentName || ANONYMOUS
316
+ ) : null);
317
+ return isValid;
318
+ };
319
+ }
320
+
321
+ function createChainableTypeChecker(validate) {
322
+ function checkType(
323
+ isRequired, shouldWarn, props, propName, componentName, location
324
+ ) {
325
+ var propValue = props[propName];
326
+ if (propValue != null) {
327
+ // Only validate if there is a value to check.
328
+ return validate(
329
+ shouldWarn,
330
+ propValue,
331
+ propName,
332
+ componentName || ANONYMOUS,
333
+ location
334
+ );
335
+ } else {
336
+ var isValid = !isRequired;
337
+ if (shouldWarn) {
338
+ ("production" !== process.env.NODE_ENV ? warning(
339
+ isValid,
340
+ 'Required %s `%s` was not specified in `%s`.',
341
+ ReactPropTypeLocationNames[location],
342
+ propName,
343
+ componentName || ANONYMOUS
344
+ ) : null);
345
+ }
346
+ return isValid;
347
+ }
348
+ }
349
+
350
+ var checker = checkType.bind(null, false, true);
351
+ checker.weak = checkType.bind(null, false, false);
352
+ checker.isRequired = checkType.bind(null, true, true);
353
+ checker.weak.isRequired = checkType.bind(null, true, false);
354
+ checker.isRequired.weak = checker.weak.isRequired;
355
+
356
+ return checker;
357
+ }
358
+
359
+ module.exports = Props;
@@ -0,0 +1,61 @@
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 ReactPutListenerQueue
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var PooledClass = require("./PooledClass");
22
+ var ReactEventEmitter = require("./ReactEventEmitter");
23
+
24
+ var mixInto = require("./mixInto");
25
+
26
+ function ReactPutListenerQueue() {
27
+ this.listenersToPut = [];
28
+ }
29
+
30
+ mixInto(ReactPutListenerQueue, {
31
+ enqueuePutListener: function(rootNodeID, propKey, propValue) {
32
+ this.listenersToPut.push({
33
+ rootNodeID: rootNodeID,
34
+ propKey: propKey,
35
+ propValue: propValue
36
+ });
37
+ },
38
+
39
+ putListeners: function() {
40
+ for (var i = 0; i < this.listenersToPut.length; i++) {
41
+ var listenerToPut = this.listenersToPut[i];
42
+ ReactEventEmitter.putListener(
43
+ listenerToPut.rootNodeID,
44
+ listenerToPut.propKey,
45
+ listenerToPut.propValue
46
+ );
47
+ }
48
+ },
49
+
50
+ reset: function() {
51
+ this.listenersToPut.length = 0;
52
+ },
53
+
54
+ destructor: function() {
55
+ this.reset();
56
+ }
57
+ });
58
+
59
+ PooledClass.addPoolingTo(ReactPutListenerQueue);
60
+
61
+ module.exports = ReactPutListenerQueue;