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,35 @@
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 hyphenate
17
+ * @typechecks
18
+ */
19
+
20
+ var _uppercasePattern = /([A-Z])/g;
21
+
22
+ /**
23
+ * Hyphenates a camelcased string, for example:
24
+ *
25
+ * > hyphenate('backgroundColor')
26
+ * < "background-color"
27
+ *
28
+ * @param {string} string
29
+ * @return {string}
30
+ */
31
+ function hyphenate(string) {
32
+ return string.replace(_uppercasePattern, '-$1').toLowerCase();
33
+ }
34
+
35
+ module.exports = hyphenate;
@@ -0,0 +1,70 @@
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 instantiateReactComponent
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ var warning = require("./warning");
23
+
24
+ /**
25
+ * Validate a `componentDescriptor`. This should be exposed publicly in a follow
26
+ * up diff.
27
+ *
28
+ * @param {object} descriptor
29
+ * @return {boolean} Returns true if this is a valid descriptor of a Component.
30
+ */
31
+ function isValidComponentDescriptor(descriptor) {
32
+ return (
33
+ typeof descriptor.constructor === 'function' &&
34
+ typeof descriptor.constructor.prototype.construct === 'function' &&
35
+ typeof descriptor.constructor.prototype.mountComponent === 'function' &&
36
+ typeof descriptor.constructor.prototype.receiveComponent === 'function'
37
+ );
38
+ }
39
+
40
+ /**
41
+ * Given a `componentDescriptor` create an instance that will actually be
42
+ * mounted. Currently it just extracts an existing clone from composite
43
+ * components but this is an implementation detail which will change.
44
+ *
45
+ * @param {object} descriptor
46
+ * @return {object} A new instance of componentDescriptor's constructor.
47
+ * @protected
48
+ */
49
+ function instantiateReactComponent(descriptor) {
50
+ if ("production" !== process.env.NODE_ENV) {
51
+ ("production" !== process.env.NODE_ENV ? warning(
52
+ isValidComponentDescriptor(descriptor),
53
+ 'Only React Components are valid for mounting.'
54
+ ) : null);
55
+ // We use the clone of a composite component instead of the original
56
+ // instance. This allows us to warn you if you're are accessing the wrong
57
+ // instance.
58
+ var instance = descriptor.__realComponentInstance || descriptor;
59
+ instance._descriptor = descriptor;
60
+ return instance;
61
+ }
62
+ // In prod we don't clone, we simply use the same instance for unaffected
63
+ // behavior. We have to keep the descriptor around for comparison later on.
64
+ // This should ideally be accepted in the constructor of the instance but
65
+ // since that is currently overloaded, we just manually attach it here.
66
+ descriptor._descriptor = descriptor;
67
+ return descriptor;
68
+ }
69
+
70
+ module.exports = instantiateReactComponent;
@@ -0,0 +1,62 @@
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 invariant
17
+ */
18
+
19
+ "use strict";
20
+
21
+ /**
22
+ * Use invariant() to assert state which your program assumes to be true.
23
+ *
24
+ * Provide sprintf-style format (only %s is supported) and arguments
25
+ * to provide information about what broke and what you were
26
+ * expecting.
27
+ *
28
+ * The invariant message will be stripped in production, but the invariant
29
+ * will remain to ensure logic does not differ in production.
30
+ */
31
+
32
+ var invariant = function(condition) {
33
+ if (!condition) {
34
+ var error = new Error(
35
+ 'Minified exception occured; use the non-minified dev environment for ' +
36
+ 'the full error message and additional helpful warnings.'
37
+ );
38
+ error.framesToPop = 1;
39
+ throw error;
40
+ }
41
+ };
42
+
43
+ if ("production" !== process.env.NODE_ENV) {
44
+ invariant = function(condition, format, a, b, c, d, e, f) {
45
+ if (format === undefined) {
46
+ throw new Error('invariant requires an error message argument');
47
+ }
48
+
49
+ if (!condition) {
50
+ var args = [a, b, c, d, e, f];
51
+ var argIndex = 0;
52
+ var error = new Error(
53
+ 'Invariant Violation: ' +
54
+ format.replace(/%s/g, function() { return args[argIndex++]; })
55
+ );
56
+ error.framesToPop = 1; // we don't care about invariant's own frame
57
+ throw error;
58
+ }
59
+ };
60
+ }
61
+
62
+ module.exports = invariant;
@@ -0,0 +1,70 @@
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 isEventSupported
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var ExecutionEnvironment = require("./ExecutionEnvironment");
22
+
23
+ var useHasFeature;
24
+ if (ExecutionEnvironment.canUseDOM) {
25
+ useHasFeature =
26
+ document.implementation &&
27
+ document.implementation.hasFeature &&
28
+ // always returns true in newer browsers as per the standard.
29
+ // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
30
+ document.implementation.hasFeature('', '') !== true;
31
+ }
32
+
33
+ /**
34
+ * Checks if an event is supported in the current execution environment.
35
+ *
36
+ * NOTE: This will not work correctly for non-generic events such as `change`,
37
+ * `reset`, `load`, `error`, and `select`.
38
+ *
39
+ * Borrows from Modernizr.
40
+ *
41
+ * @param {string} eventNameSuffix Event name, e.g. "click".
42
+ * @param {?boolean} capture Check if the capture phase is supported.
43
+ * @return {boolean} True if the event is supported.
44
+ * @internal
45
+ * @license Modernizr 3.0.0pre (Custom Build) | MIT
46
+ */
47
+ function isEventSupported(eventNameSuffix, capture) {
48
+ if (!ExecutionEnvironment.canUseDOM ||
49
+ capture && !('addEventListener' in document)) {
50
+ return false;
51
+ }
52
+
53
+ var eventName = 'on' + eventNameSuffix;
54
+ var isSupported = eventName in document;
55
+
56
+ if (!isSupported) {
57
+ var element = document.createElement('div');
58
+ element.setAttribute(eventName, 'return;');
59
+ isSupported = typeof element[eventName] === 'function';
60
+ }
61
+
62
+ if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {
63
+ // This is the only way to test support for the `wheel` event in IE9+.
64
+ isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
65
+ }
66
+
67
+ return isSupported;
68
+ }
69
+
70
+ module.exports = isEventSupported;
package/lib/isNode.js ADDED
@@ -0,0 +1,33 @@
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 isNode
17
+ * @typechecks
18
+ */
19
+
20
+ /**
21
+ * @param {*} object The object to check.
22
+ * @return {boolean} Whether or not the object is a DOM node.
23
+ */
24
+ function isNode(object) {
25
+ return !!(object && (
26
+ typeof Node === 'function' ? object instanceof Node :
27
+ typeof object === 'object' &&
28
+ typeof object.nodeType === 'number' &&
29
+ typeof object.nodeName === 'string'
30
+ ));
31
+ }
32
+
33
+ module.exports = isNode;
@@ -0,0 +1,49 @@
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 isTextInputElement
17
+ */
18
+
19
+ "use strict";
20
+
21
+ /**
22
+ * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
23
+ */
24
+ var supportedInputTypes = {
25
+ 'color': true,
26
+ 'date': true,
27
+ 'datetime': true,
28
+ 'datetime-local': true,
29
+ 'email': true,
30
+ 'month': true,
31
+ 'number': true,
32
+ 'password': true,
33
+ 'range': true,
34
+ 'search': true,
35
+ 'tel': true,
36
+ 'text': true,
37
+ 'time': true,
38
+ 'url': true,
39
+ 'week': true
40
+ };
41
+
42
+ function isTextInputElement(elem) {
43
+ return elem && (
44
+ (elem.nodeName === 'INPUT' && supportedInputTypes[elem.type]) ||
45
+ elem.nodeName === 'TEXTAREA'
46
+ );
47
+ }
48
+
49
+ module.exports = isTextInputElement;
@@ -0,0 +1,30 @@
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 isTextNode
17
+ * @typechecks
18
+ */
19
+
20
+ var isNode = require("./isNode");
21
+
22
+ /**
23
+ * @param {*} object The object to check.
24
+ * @return {boolean} Whether or not the object is a DOM text node.
25
+ */
26
+ function isTextNode(object) {
27
+ return isNode(object) && object.nodeType == 3;
28
+ }
29
+
30
+ module.exports = isTextNode;
@@ -0,0 +1,44 @@
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 joinClasses
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ /**
23
+ * Combines multiple className strings into one.
24
+ * http://jsperf.com/joinclasses-args-vs-array
25
+ *
26
+ * @param {...?string} classes
27
+ * @return {string}
28
+ */
29
+ function joinClasses(className/*, ... */) {
30
+ if (!className) {
31
+ className = '';
32
+ }
33
+ var nextClass;
34
+ var argLength = arguments.length;
35
+ if (argLength > 1) {
36
+ for (var ii = 1; ii < argLength; ii++) {
37
+ nextClass = arguments[ii];
38
+ nextClass && (className += ' ' + nextClass);
39
+ }
40
+ }
41
+ return className;
42
+ }
43
+
44
+ module.exports = joinClasses;
@@ -0,0 +1,58 @@
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 keyMirror
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ var invariant = require("./invariant");
23
+
24
+ /**
25
+ * Constructs an enumeration with keys equal to their value.
26
+ *
27
+ * For example:
28
+ *
29
+ * var COLORS = keyMirror({blue: null, red: null});
30
+ * var myColor = COLORS.blue;
31
+ * var isColorValid = !!COLORS[myColor];
32
+ *
33
+ * The last line could not be performed if the values of the generated enum were
34
+ * not equal to their keys.
35
+ *
36
+ * Input: {key1: val1, key2: val2}
37
+ * Output: {key1: key1, key2: key2}
38
+ *
39
+ * @param {object} obj
40
+ * @return {object}
41
+ */
42
+ var keyMirror = function(obj) {
43
+ var ret = {};
44
+ var key;
45
+ ("production" !== process.env.NODE_ENV ? invariant(
46
+ obj instanceof Object && !Array.isArray(obj),
47
+ 'keyMirror(...): Argument must be an object.'
48
+ ) : invariant(obj instanceof Object && !Array.isArray(obj)));
49
+ for (key in obj) {
50
+ if (!obj.hasOwnProperty(key)) {
51
+ continue;
52
+ }
53
+ ret[key] = key;
54
+ }
55
+ return ret;
56
+ };
57
+
58
+ module.exports = keyMirror;