react 0.6.3 → 0.9.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 (218) hide show
  1. package/README.md +10 -222
  2. package/addons.js +1 -0
  3. package/lib/AutoFocusMixin.js +30 -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 +165 -0
  11. package/lib/DOMProperty.js +268 -0
  12. package/lib/DOMPropertyOperations.js +181 -0
  13. package/lib/Danger.js +187 -0
  14. package/lib/DefaultDOMPropertyConfig.js +197 -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 +291 -0
  20. package/lib/EventPluginRegistry.js +260 -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 +161 -0
  26. package/lib/MobileSafariClickEventPlugin.js +63 -0
  27. package/lib/PooledClass.js +119 -0
  28. package/lib/React.js +95 -0
  29. package/lib/ReactCSSTransitionGroup.js +65 -0
  30. package/lib/ReactCSSTransitionGroupChild.js +138 -0
  31. package/lib/ReactChildren.js +132 -0
  32. package/lib/ReactComponent.js +550 -0
  33. package/lib/ReactComponentBrowserEnvironment.js +158 -0
  34. package/lib/ReactComponentEnvironment.js +26 -0
  35. package/lib/ReactCompositeComponent.js +1455 -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 +68 -0
  40. package/lib/ReactDOMComponent.js +399 -0
  41. package/lib/ReactDOMForm.js +59 -0
  42. package/lib/ReactDOMIDOperations.js +218 -0
  43. package/lib/ReactDOMImg.js +58 -0
  44. package/lib/ReactDOMInput.js +181 -0
  45. package/lib/ReactDOMOption.js +51 -0
  46. package/lib/ReactDOMSelect.js +179 -0
  47. package/lib/ReactDOMSelection.js +189 -0
  48. package/lib/ReactDOMTextarea.js +140 -0
  49. package/lib/ReactDefaultBatchingStrategy.js +75 -0
  50. package/lib/ReactDefaultInjection.js +115 -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 +337 -0
  55. package/lib/ReactEventEmitterMixin.js +57 -0
  56. package/lib/ReactEventTopLevelCallback.js +109 -0
  57. package/lib/ReactInjection.js +39 -0
  58. package/lib/ReactInputSelection.js +140 -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 +641 -0
  63. package/lib/ReactMountReady.js +95 -0
  64. package/lib/ReactMultiChild.js +425 -0
  65. package/lib/ReactMultiChildUpdateTypes.js +38 -0
  66. package/lib/ReactOwner.js +154 -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 +181 -0
  74. package/lib/ReactRootIndex.js +36 -0
  75. package/lib/ReactServerRendering.js +59 -0
  76. package/lib/ReactStateSetters.js +111 -0
  77. package/lib/ReactTextComponent.js +99 -0
  78. package/lib/ReactTransitionChildMapping.js +106 -0
  79. package/lib/ReactTransitionEvents.js +97 -0
  80. package/lib/ReactTransitionGroup.js +187 -0
  81. package/lib/ReactUpdates.js +148 -0
  82. package/lib/ReactWithAddons.js +46 -0
  83. package/lib/SelectEventPlugin.js +200 -0
  84. package/lib/ServerReactRootIndex.js +36 -0
  85. package/lib/SimpleEventPlugin.js +413 -0
  86. package/lib/SyntheticClipboardEvent.js +51 -0
  87. package/lib/SyntheticCompositionEvent.js +51 -0
  88. package/lib/SyntheticDragEvent.js +44 -0
  89. package/lib/SyntheticEvent.js +164 -0
  90. package/lib/SyntheticFocusEvent.js +44 -0
  91. package/lib/SyntheticKeyboardEvent.js +58 -0
  92. package/lib/SyntheticMouseEvent.js +85 -0
  93. package/lib/SyntheticTouchEvent.js +50 -0
  94. package/lib/SyntheticUIEvent.js +45 -0
  95. package/lib/SyntheticWheelEvent.js +66 -0
  96. package/lib/Transaction.js +276 -0
  97. package/lib/ViewportMetrics.js +37 -0
  98. package/lib/accumulate.js +54 -0
  99. package/lib/adler32.js +39 -0
  100. package/lib/cloneWithProps.js +59 -0
  101. package/lib/containsNode.js +49 -0
  102. package/lib/copyProperties.js +54 -0
  103. package/lib/createArrayFrom.js +91 -0
  104. package/lib/createFullPageComponent.js +63 -0
  105. package/lib/createNodesFromMarkup.js +93 -0
  106. package/lib/createObjectFrom.js +61 -0
  107. package/lib/cx.js +44 -0
  108. package/lib/dangerousStyleValue.js +57 -0
  109. package/lib/emptyFunction.js +43 -0
  110. package/lib/escapeTextForBrowser.js +47 -0
  111. package/lib/flattenChildren.js +57 -0
  112. package/lib/forEachAccumulated.js +36 -0
  113. package/lib/getActiveElement.js +34 -0
  114. package/lib/getEventKey.js +85 -0
  115. package/lib/getEventTarget.js +36 -0
  116. package/lib/getMarkupWrap.js +118 -0
  117. package/lib/getNodeForCharacterOffset.js +80 -0
  118. package/lib/getReactRootElementInContainer.js +40 -0
  119. package/lib/getTextContentAccessor.js +42 -0
  120. package/lib/getUnboundedScrollPosition.js +45 -0
  121. package/lib/hyphenate.js +35 -0
  122. package/lib/invariant.js +62 -0
  123. package/lib/isEventSupported.js +70 -0
  124. package/lib/isNode.js +33 -0
  125. package/lib/isTextInputElement.js +49 -0
  126. package/lib/isTextNode.js +30 -0
  127. package/lib/joinClasses.js +44 -0
  128. package/lib/keyMirror.js +58 -0
  129. package/lib/keyOf.js +41 -0
  130. package/lib/memoizeStringOnly.js +39 -0
  131. package/lib/merge.js +37 -0
  132. package/lib/mergeHelpers.js +136 -0
  133. package/lib/mergeInto.js +45 -0
  134. package/lib/mixInto.js +34 -0
  135. package/lib/objMap.js +47 -0
  136. package/lib/objMapKeyVal.js +47 -0
  137. package/lib/onlyChild.js +43 -0
  138. package/lib/performanceNow.js +42 -0
  139. package/lib/shallowEqual.js +49 -0
  140. package/lib/shouldUpdateReactComponent.js +58 -0
  141. package/lib/toArray.js +75 -0
  142. package/lib/traverseAllChildren.js +189 -0
  143. package/lib/warning.js +40 -0
  144. package/package.json +32 -21
  145. package/react.js +1 -0
  146. package/.npmignore +0 -7
  147. package/.travis.yml +0 -5
  148. package/Jakefile.js +0 -39
  149. package/LICENSE +0 -19
  150. package/browser-test/dist.html +0 -90
  151. package/browser-test/index.html +0 -86
  152. package/browser-test/min.html +0 -90
  153. package/dist/react.js +0 -3107
  154. package/dist/react.min.js +0 -22
  155. package/doc/advanced.md +0 -174
  156. package/doc/color-def.graffle +0 -938
  157. package/doc/color-def.png +0 -0
  158. package/doc/simple.dot +0 -25
  159. package/doc/simple.png +0 -0
  160. package/examples/longer-example.js +0 -41
  161. package/examples/simple.js +0 -45
  162. package/examples/using-ast-directly.js +0 -30
  163. package/examples/using-events1.js +0 -79
  164. package/examples/using-log-events.js +0 -43
  165. package/lib/base-task.js +0 -123
  166. package/lib/cb-task.js +0 -84
  167. package/lib/core.js +0 -138
  168. package/lib/dsl.js +0 -138
  169. package/lib/error.js +0 -55
  170. package/lib/event-collector.js +0 -81
  171. package/lib/event-manager.js +0 -89
  172. package/lib/eventemitter.js +0 -20
  173. package/lib/finalcb-first-task.js +0 -68
  174. package/lib/finalcb-task.js +0 -65
  175. package/lib/id.js +0 -22
  176. package/lib/input-parser.js +0 -56
  177. package/lib/log-events.js +0 -101
  178. package/lib/parse.js +0 -41
  179. package/lib/promise-resolve.js +0 -50
  180. package/lib/promise-task.js +0 -93
  181. package/lib/react.js +0 -59
  182. package/lib/ret-task.js +0 -71
  183. package/lib/sprintf.js +0 -18
  184. package/lib/status.js +0 -14
  185. package/lib/task.js +0 -251
  186. package/lib/track-tasks.js +0 -74
  187. package/lib/validate.js +0 -159
  188. package/lib/vcon.js +0 -90
  189. package/lib/when-task.js +0 -85
  190. package/src/dist.build.requirejs +0 -20
  191. package/test/ast.mocha.js +0 -136
  192. package/test/cb-task.mocha.js +0 -220
  193. package/test/core-deferred.mocha.js +0 -143
  194. package/test/core-when.mocha.js +0 -96
  195. package/test/core.mocha.js +0 -589
  196. package/test/dsl.mocha.js +0 -350
  197. package/test/event-manager.mocha.js +0 -119
  198. package/test/exec-options.mocha.js +0 -48
  199. package/test/finalcb-task.mocha.js +0 -58
  200. package/test/input-parser.mocha.js +0 -86
  201. package/test/log-events.mocha.js +0 -88
  202. package/test/mocha.opts +0 -2
  203. package/test/module-use.mocha.js +0 -147
  204. package/test/promise-auto-resolve.mocha.js +0 -68
  205. package/test/ret-task.mocha.js +0 -220
  206. package/test/task.mocha.js +0 -42
  207. package/test/validate-cb-task.mocha.js +0 -100
  208. package/test/validate-ret-task.mocha.js +0 -110
  209. package/test/validate.mocha.js +0 -324
  210. package/test/vcon.mocha.js +0 -193
  211. package/vendor/chai/chai.js +0 -2038
  212. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  213. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  214. package/vendor/mocha/mocha.css +0 -135
  215. package/vendor/mocha/mocha.js +0 -3589
  216. package/vendor/node/util.js +0 -531
  217. package/vendor/requirejs/require.js +0 -2053
  218. package/vendor/requirejs/require.min.js +0 -33
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Copyright 2013 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 LinkedValueUtils
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ var ReactPropTypes = require("./ReactPropTypes");
23
+
24
+ var invariant = require("./invariant");
25
+
26
+ var hasReadOnlyValue = {
27
+ 'button': true,
28
+ 'checkbox': true,
29
+ 'image': true,
30
+ 'hidden': true,
31
+ 'radio': true,
32
+ 'reset': true,
33
+ 'submit': true
34
+ };
35
+
36
+ function _assertSingleLink(input) {
37
+ ("production" !== process.env.NODE_ENV ? invariant(
38
+ input.props.checkedLink == null || input.props.valueLink == null,
39
+ 'Cannot provide a checkedLink and a valueLink. If you want to use ' +
40
+ 'checkedLink, you probably don\'t want to use valueLink and vice versa.'
41
+ ) : invariant(input.props.checkedLink == null || input.props.valueLink == null));
42
+ }
43
+ function _assertValueLink(input) {
44
+ _assertSingleLink(input);
45
+ ("production" !== process.env.NODE_ENV ? invariant(
46
+ input.props.value == null && input.props.onChange == null,
47
+ 'Cannot provide a valueLink and a value or onChange event. If you want ' +
48
+ 'to use value or onChange, you probably don\'t want to use valueLink.'
49
+ ) : invariant(input.props.value == null && input.props.onChange == null));
50
+ }
51
+
52
+ function _assertCheckedLink(input) {
53
+ _assertSingleLink(input);
54
+ ("production" !== process.env.NODE_ENV ? invariant(
55
+ input.props.checked == null && input.props.onChange == null,
56
+ 'Cannot provide a checkedLink and a checked property or onChange event. ' +
57
+ 'If you want to use checked or onChange, you probably don\'t want to ' +
58
+ 'use checkedLink'
59
+ ) : invariant(input.props.checked == null && input.props.onChange == null));
60
+ }
61
+
62
+ /**
63
+ * @param {SyntheticEvent} e change event to handle
64
+ */
65
+ function _handleLinkedValueChange(e) {
66
+ /*jshint validthis:true */
67
+ this.props.valueLink.requestChange(e.target.value);
68
+ }
69
+
70
+ /**
71
+ * @param {SyntheticEvent} e change event to handle
72
+ */
73
+ function _handleLinkedCheckChange(e) {
74
+ /*jshint validthis:true */
75
+ this.props.checkedLink.requestChange(e.target.checked);
76
+ }
77
+
78
+ /**
79
+ * Provide a linked `value` attribute for controlled forms. You should not use
80
+ * this outside of the ReactDOM controlled form components.
81
+ */
82
+ var LinkedValueUtils = {
83
+ Mixin: {
84
+ propTypes: {
85
+ value: function(props, propName, componentName) {
86
+ if ("production" !== process.env.NODE_ENV) {
87
+ if (props[propName] &&
88
+ !hasReadOnlyValue[props.type] &&
89
+ !props.onChange &&
90
+ !props.readOnly &&
91
+ !props.disabled) {
92
+ console.warn(
93
+ 'You provided a `value` prop to a form field without an ' +
94
+ '`onChange` handler. This will render a read-only field. If ' +
95
+ 'the field should be mutable use `defaultValue`. Otherwise, ' +
96
+ 'set either `onChange` or `readOnly`.'
97
+ );
98
+ }
99
+ }
100
+ },
101
+ checked: function(props, propName, componentName) {
102
+ if ("production" !== process.env.NODE_ENV) {
103
+ if (props[propName] &&
104
+ !props.onChange &&
105
+ !props.readOnly &&
106
+ !props.disabled) {
107
+ console.warn(
108
+ 'You provided a `checked` prop to a form field without an ' +
109
+ '`onChange` handler. This will render a read-only field. If ' +
110
+ 'the field should be mutable use `defaultChecked`. Otherwise, ' +
111
+ 'set either `onChange` or `readOnly`.'
112
+ );
113
+ }
114
+ }
115
+ },
116
+ onChange: ReactPropTypes.func
117
+ }
118
+ },
119
+
120
+ /**
121
+ * @param {ReactComponent} input Form component
122
+ * @return {*} current value of the input either from value prop or link.
123
+ */
124
+ getValue: function(input) {
125
+ if (input.props.valueLink) {
126
+ _assertValueLink(input);
127
+ return input.props.valueLink.value;
128
+ }
129
+ return input.props.value;
130
+ },
131
+
132
+ /**
133
+ * @param {ReactComponent} input Form component
134
+ * @return {*} current checked status of the input either from checked prop
135
+ * or link.
136
+ */
137
+ getChecked: function(input) {
138
+ if (input.props.checkedLink) {
139
+ _assertCheckedLink(input);
140
+ return input.props.checkedLink.value;
141
+ }
142
+ return input.props.checked;
143
+ },
144
+
145
+ /**
146
+ * @param {ReactComponent} input Form component
147
+ * @return {function} change callback either from onChange prop or link.
148
+ */
149
+ getOnChange: function(input) {
150
+ if (input.props.valueLink) {
151
+ _assertValueLink(input);
152
+ return _handleLinkedValueChange;
153
+ } else if (input.props.checkedLink) {
154
+ _assertCheckedLink(input);
155
+ return _handleLinkedCheckChange;
156
+ }
157
+ return input.props.onChange;
158
+ }
159
+ };
160
+
161
+ module.exports = LinkedValueUtils;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Copyright 2013 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 MobileSafariClickEventPlugin
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ var EventConstants = require("./EventConstants");
23
+
24
+ var emptyFunction = require("./emptyFunction");
25
+
26
+ var topLevelTypes = EventConstants.topLevelTypes;
27
+
28
+ /**
29
+ * Mobile Safari does not fire properly bubble click events on non-interactive
30
+ * elements, which means delegated click listeners do not fire. The workaround
31
+ * for this bug involves attaching an empty click listener on the target node.
32
+ *
33
+ * This particular plugin works around the bug by attaching an empty click
34
+ * listener on `touchstart` (which does fire on every element).
35
+ */
36
+ var MobileSafariClickEventPlugin = {
37
+
38
+ eventTypes: null,
39
+
40
+ /**
41
+ * @param {string} topLevelType Record from `EventConstants`.
42
+ * @param {DOMEventTarget} topLevelTarget The listening component root node.
43
+ * @param {string} topLevelTargetID ID of `topLevelTarget`.
44
+ * @param {object} nativeEvent Native browser event.
45
+ * @return {*} An accumulation of synthetic events.
46
+ * @see {EventPluginHub.extractEvents}
47
+ */
48
+ extractEvents: function(
49
+ topLevelType,
50
+ topLevelTarget,
51
+ topLevelTargetID,
52
+ nativeEvent) {
53
+ if (topLevelType === topLevelTypes.topTouchStart) {
54
+ var target = nativeEvent.target;
55
+ if (target && !target.onclick) {
56
+ target.onclick = emptyFunction;
57
+ }
58
+ }
59
+ }
60
+
61
+ };
62
+
63
+ module.exports = MobileSafariClickEventPlugin;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Copyright 2013 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 PooledClass
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var invariant = require("./invariant");
22
+
23
+ /**
24
+ * Static poolers. Several custom versions for each potential number of
25
+ * arguments. A completely generic pooler is easy to implement, but would
26
+ * require accessing the `arguments` object. In each of these, `this` refers to
27
+ * the Class itself, not an instance. If any others are needed, simply add them
28
+ * here, or in their own files.
29
+ */
30
+ var oneArgumentPooler = function(copyFieldsFrom) {
31
+ var Klass = this;
32
+ if (Klass.instancePool.length) {
33
+ var instance = Klass.instancePool.pop();
34
+ Klass.call(instance, copyFieldsFrom);
35
+ return instance;
36
+ } else {
37
+ return new Klass(copyFieldsFrom);
38
+ }
39
+ };
40
+
41
+ var twoArgumentPooler = function(a1, a2) {
42
+ var Klass = this;
43
+ if (Klass.instancePool.length) {
44
+ var instance = Klass.instancePool.pop();
45
+ Klass.call(instance, a1, a2);
46
+ return instance;
47
+ } else {
48
+ return new Klass(a1, a2);
49
+ }
50
+ };
51
+
52
+ var threeArgumentPooler = function(a1, a2, a3) {
53
+ var Klass = this;
54
+ if (Klass.instancePool.length) {
55
+ var instance = Klass.instancePool.pop();
56
+ Klass.call(instance, a1, a2, a3);
57
+ return instance;
58
+ } else {
59
+ return new Klass(a1, a2, a3);
60
+ }
61
+ };
62
+
63
+ var fiveArgumentPooler = function(a1, a2, a3, a4, a5) {
64
+ var Klass = this;
65
+ if (Klass.instancePool.length) {
66
+ var instance = Klass.instancePool.pop();
67
+ Klass.call(instance, a1, a2, a3, a4, a5);
68
+ return instance;
69
+ } else {
70
+ return new Klass(a1, a2, a3, a4, a5);
71
+ }
72
+ };
73
+
74
+ var standardReleaser = function(instance) {
75
+ var Klass = this;
76
+ ("production" !== process.env.NODE_ENV ? invariant(
77
+ instance instanceof Klass,
78
+ 'Trying to release an instance into a pool of a different type.'
79
+ ) : invariant(instance instanceof Klass));
80
+ if (instance.destructor) {
81
+ instance.destructor();
82
+ }
83
+ if (Klass.instancePool.length < Klass.poolSize) {
84
+ Klass.instancePool.push(instance);
85
+ }
86
+ };
87
+
88
+ var DEFAULT_POOL_SIZE = 10;
89
+ var DEFAULT_POOLER = oneArgumentPooler;
90
+
91
+ /**
92
+ * Augments `CopyConstructor` to be a poolable class, augmenting only the class
93
+ * itself (statically) not adding any prototypical fields. Any CopyConstructor
94
+ * you give this may have a `poolSize` property, and will look for a
95
+ * prototypical `destructor` on instances (optional).
96
+ *
97
+ * @param {Function} CopyConstructor Constructor that can be used to reset.
98
+ * @param {Function} pooler Customizable pooler.
99
+ */
100
+ var addPoolingTo = function(CopyConstructor, pooler) {
101
+ var NewKlass = CopyConstructor;
102
+ NewKlass.instancePool = [];
103
+ NewKlass.getPooled = pooler || DEFAULT_POOLER;
104
+ if (!NewKlass.poolSize) {
105
+ NewKlass.poolSize = DEFAULT_POOL_SIZE;
106
+ }
107
+ NewKlass.release = standardReleaser;
108
+ return NewKlass;
109
+ };
110
+
111
+ var PooledClass = {
112
+ addPoolingTo: addPoolingTo,
113
+ oneArgumentPooler: oneArgumentPooler,
114
+ twoArgumentPooler: twoArgumentPooler,
115
+ threeArgumentPooler: threeArgumentPooler,
116
+ fiveArgumentPooler: fiveArgumentPooler
117
+ };
118
+
119
+ module.exports = PooledClass;
package/lib/React.js ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Copyright 2013 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 React
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var DOMPropertyOperations = require("./DOMPropertyOperations");
22
+ var EventPluginUtils = require("./EventPluginUtils");
23
+ var ReactChildren = require("./ReactChildren");
24
+ var ReactComponent = require("./ReactComponent");
25
+ var ReactCompositeComponent = require("./ReactCompositeComponent");
26
+ var ReactContext = require("./ReactContext");
27
+ var ReactCurrentOwner = require("./ReactCurrentOwner");
28
+ var ReactDOM = require("./ReactDOM");
29
+ var ReactDOMComponent = require("./ReactDOMComponent");
30
+ var ReactDefaultInjection = require("./ReactDefaultInjection");
31
+ var ReactInstanceHandles = require("./ReactInstanceHandles");
32
+ var ReactMount = require("./ReactMount");
33
+ var ReactMultiChild = require("./ReactMultiChild");
34
+ var ReactPerf = require("./ReactPerf");
35
+ var ReactPropTypes = require("./ReactPropTypes");
36
+ var ReactServerRendering = require("./ReactServerRendering");
37
+ var ReactTextComponent = require("./ReactTextComponent");
38
+
39
+ var onlyChild = require("./onlyChild");
40
+
41
+ ReactDefaultInjection.inject();
42
+
43
+ var React = {
44
+ Children: {
45
+ map: ReactChildren.map,
46
+ forEach: ReactChildren.forEach,
47
+ only: onlyChild
48
+ },
49
+ DOM: ReactDOM,
50
+ PropTypes: ReactPropTypes,
51
+ initializeTouchEvents: function(shouldUseTouch) {
52
+ EventPluginUtils.useTouchEvents = shouldUseTouch;
53
+ },
54
+ createClass: ReactCompositeComponent.createClass,
55
+ constructAndRenderComponent: ReactMount.constructAndRenderComponent,
56
+ constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID,
57
+ renderComponent: ReactPerf.measure(
58
+ 'React',
59
+ 'renderComponent',
60
+ ReactMount.renderComponent
61
+ ),
62
+ renderComponentToString: ReactServerRendering.renderComponentToString,
63
+ unmountComponentAtNode: ReactMount.unmountComponentAtNode,
64
+ isValidClass: ReactCompositeComponent.isValidClass,
65
+ isValidComponent: ReactComponent.isValidComponent,
66
+ withContext: ReactContext.withContext,
67
+ __internals: {
68
+ Component: ReactComponent,
69
+ CurrentOwner: ReactCurrentOwner,
70
+ DOMComponent: ReactDOMComponent,
71
+ DOMPropertyOperations: DOMPropertyOperations,
72
+ InstanceHandles: ReactInstanceHandles,
73
+ Mount: ReactMount,
74
+ MultiChild: ReactMultiChild,
75
+ TextComponent: ReactTextComponent
76
+ }
77
+ };
78
+
79
+ if ("production" !== process.env.NODE_ENV) {
80
+ var ExecutionEnvironment = require("./ExecutionEnvironment");
81
+ if (ExecutionEnvironment.canUseDOM &&
82
+ window.top === window.self &&
83
+ navigator.userAgent.indexOf('Chrome') > -1) {
84
+ console.debug(
85
+ 'Download the React DevTools for a better development experience: ' +
86
+ 'http://fb.me/react-devtools'
87
+ );
88
+ }
89
+ }
90
+
91
+ // Version exists only in the open-source version of React, not in Facebook's
92
+ // internal version.
93
+ React.version = '0.9.0-rc1';
94
+
95
+ module.exports = React;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Copyright 2013 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
+ * @typechecks
17
+ * @providesModule ReactCSSTransitionGroup
18
+ * @jsx React.DOM
19
+ */
20
+
21
+ "use strict";
22
+
23
+ var React = require("./React");
24
+
25
+ var ReactTransitionGroup = require("./ReactTransitionGroup");
26
+ var ReactCSSTransitionGroupChild = require("./ReactCSSTransitionGroupChild");
27
+
28
+ var ReactCSSTransitionGroup = React.createClass({displayName: 'ReactCSSTransitionGroup',
29
+ propTypes: {
30
+ transitionName: React.PropTypes.string.isRequired,
31
+ transitionEnter: React.PropTypes.bool,
32
+ transitionLeave: React.PropTypes.bool
33
+ },
34
+
35
+ getDefaultProps: function() {
36
+ return {
37
+ transitionEnter: true,
38
+ transitionLeave: true
39
+ };
40
+ },
41
+
42
+ _wrapChild: function(child) {
43
+ // We need to provide this childFactory so that
44
+ // ReactCSSTransitionGroupChild can receive updates to name, enter, and
45
+ // leave while it is leaving.
46
+ return (
47
+ ReactCSSTransitionGroupChild(
48
+ {name:this.props.transitionName,
49
+ enter:this.props.transitionEnter,
50
+ leave:this.props.transitionLeave},
51
+ child
52
+ )
53
+ );
54
+ },
55
+
56
+ render: function() {
57
+ return this.transferPropsTo(
58
+ ReactTransitionGroup( {childFactory:this._wrapChild},
59
+ this.props.children
60
+ )
61
+ );
62
+ }
63
+ });
64
+
65
+ module.exports = ReactCSSTransitionGroup;