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.
Files changed (217) hide show
  1. package/README.md +10 -231
  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 +203 -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 +293 -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 +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 +339 -0
  55. package/lib/ReactEventEmitterMixin.js +57 -0
  56. package/lib/ReactEventTopLevelCallback.js +149 -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/ReactTestUtils.js +394 -0
  78. package/lib/ReactTextComponent.js +99 -0
  79. package/lib/ReactTransitionChildMapping.js +106 -0
  80. package/lib/ReactTransitionEvents.js +97 -0
  81. package/lib/ReactTransitionGroup.js +187 -0
  82. package/lib/ReactUpdates.js +148 -0
  83. package/lib/ReactWithAddons.js +51 -0
  84. package/lib/SelectEventPlugin.js +200 -0
  85. package/lib/ServerReactRootIndex.js +36 -0
  86. package/lib/SimpleEventPlugin.js +413 -0
  87. package/lib/SyntheticClipboardEvent.js +51 -0
  88. package/lib/SyntheticCompositionEvent.js +51 -0
  89. package/lib/SyntheticDragEvent.js +44 -0
  90. package/lib/SyntheticEvent.js +164 -0
  91. package/lib/SyntheticFocusEvent.js +44 -0
  92. package/lib/SyntheticKeyboardEvent.js +58 -0
  93. package/lib/SyntheticMouseEvent.js +85 -0
  94. package/lib/SyntheticTouchEvent.js +50 -0
  95. package/lib/SyntheticUIEvent.js +45 -0
  96. package/lib/SyntheticWheelEvent.js +66 -0
  97. package/lib/Transaction.js +276 -0
  98. package/lib/ViewportMetrics.js +37 -0
  99. package/lib/accumulate.js +54 -0
  100. package/lib/adler32.js +39 -0
  101. package/lib/cloneWithProps.js +59 -0
  102. package/lib/containsNode.js +49 -0
  103. package/lib/copyProperties.js +54 -0
  104. package/lib/createArrayFrom.js +91 -0
  105. package/lib/createFullPageComponent.js +63 -0
  106. package/lib/createNodesFromMarkup.js +93 -0
  107. package/lib/createObjectFrom.js +61 -0
  108. package/lib/cx.js +44 -0
  109. package/lib/dangerousStyleValue.js +57 -0
  110. package/lib/emptyFunction.js +43 -0
  111. package/lib/escapeTextForBrowser.js +47 -0
  112. package/lib/flattenChildren.js +57 -0
  113. package/lib/forEachAccumulated.js +36 -0
  114. package/lib/getActiveElement.js +34 -0
  115. package/lib/getEventKey.js +85 -0
  116. package/lib/getEventTarget.js +36 -0
  117. package/lib/getMarkupWrap.js +118 -0
  118. package/lib/getNodeForCharacterOffset.js +80 -0
  119. package/lib/getReactRootElementInContainer.js +40 -0
  120. package/lib/getTextContentAccessor.js +42 -0
  121. package/lib/getUnboundedScrollPosition.js +45 -0
  122. package/lib/hyphenate.js +35 -0
  123. package/lib/invariant.js +62 -0
  124. package/lib/isEventSupported.js +70 -0
  125. package/lib/isNode.js +33 -0
  126. package/lib/isTextInputElement.js +49 -0
  127. package/lib/isTextNode.js +30 -0
  128. package/lib/joinClasses.js +44 -0
  129. package/lib/keyMirror.js +58 -0
  130. package/lib/keyOf.js +41 -0
  131. package/lib/memoizeStringOnly.js +39 -0
  132. package/lib/merge.js +37 -0
  133. package/lib/mergeHelpers.js +136 -0
  134. package/lib/mergeInto.js +45 -0
  135. package/lib/mixInto.js +34 -0
  136. package/lib/objMap.js +47 -0
  137. package/lib/objMapKeyVal.js +47 -0
  138. package/lib/onlyChild.js +43 -0
  139. package/lib/performanceNow.js +42 -0
  140. package/lib/shallowEqual.js +49 -0
  141. package/lib/shouldUpdateReactComponent.js +58 -0
  142. package/lib/toArray.js +75 -0
  143. package/lib/traverseAllChildren.js +189 -0
  144. package/lib/warning.js +48 -0
  145. package/package.json +33 -21
  146. package/react.js +1 -0
  147. package/.npmignore +0 -7
  148. package/.travis.yml +0 -7
  149. package/Jakefile.js +0 -39
  150. package/LICENSE +0 -19
  151. package/browser-test/dist.html +0 -90
  152. package/browser-test/index.html +0 -86
  153. package/browser-test/min.html +0 -90
  154. package/dist/react.js +0 -3141
  155. package/dist/react.min.js +0 -22
  156. package/doc/advanced.md +0 -174
  157. package/doc/color-def.graffle +0 -938
  158. package/doc/color-def.png +0 -0
  159. package/doc/simple.dot +0 -25
  160. package/doc/simple.png +0 -0
  161. package/examples/longer-example.js +0 -41
  162. package/examples/simple.js +0 -45
  163. package/examples/using-ast-directly.js +0 -30
  164. package/examples/using-events1.js +0 -79
  165. package/examples/using-log-events.js +0 -43
  166. package/lib/base-task.js +0 -120
  167. package/lib/cb-task.js +0 -84
  168. package/lib/core.js +0 -138
  169. package/lib/dsl.js +0 -138
  170. package/lib/error.js +0 -55
  171. package/lib/event-collector.js +0 -81
  172. package/lib/event-manager.js +0 -89
  173. package/lib/eventemitter.js +0 -20
  174. package/lib/finalcb-first-task.js +0 -68
  175. package/lib/finalcb-task.js +0 -65
  176. package/lib/id.js +0 -22
  177. package/lib/input-parser.js +0 -56
  178. package/lib/log-events.js +0 -101
  179. package/lib/parse.js +0 -41
  180. package/lib/promise-resolve.js +0 -50
  181. package/lib/promise-task.js +0 -93
  182. package/lib/react.js +0 -59
  183. package/lib/ret-task.js +0 -71
  184. package/lib/sprintf.js +0 -18
  185. package/lib/status.js +0 -14
  186. package/lib/task.js +0 -251
  187. package/lib/track-tasks.js +0 -74
  188. package/lib/validate.js +0 -159
  189. package/lib/vcon.js +0 -113
  190. package/lib/when-task.js +0 -84
  191. package/src/dist.build.requirejs +0 -20
  192. package/test/ast.mocha.js +0 -136
  193. package/test/cb-task.mocha.js +0 -220
  194. package/test/core-deferred.mocha.js +0 -143
  195. package/test/core-when.mocha.js +0 -96
  196. package/test/core.mocha.js +0 -589
  197. package/test/dsl.mocha.js +0 -352
  198. package/test/event-manager.mocha.js +0 -119
  199. package/test/exec-options.mocha.js +0 -48
  200. package/test/finalcb-task.mocha.js +0 -58
  201. package/test/input-parser.mocha.js +0 -86
  202. package/test/log-events.mocha.js +0 -88
  203. package/test/mocha.opts +0 -2
  204. package/test/module-use.mocha.js +0 -164
  205. package/test/promise-auto-resolve.mocha.js +0 -68
  206. package/test/ret-task.mocha.js +0 -220
  207. package/test/task.mocha.js +0 -42
  208. package/test/validate-cb-task.mocha.js +0 -100
  209. package/test/validate-ret-task.mocha.js +0 -110
  210. package/test/validate.mocha.js +0 -324
  211. package/test/vcon.mocha.js +0 -193
  212. package/vendor/chai/chai.js +0 -4251
  213. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  214. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  215. package/vendor/node/util.js +0 -531
  216. package/vendor/requirejs/require.js +0 -2045
  217. package/vendor/requirejs/require.min.js +0 -36
@@ -0,0 +1,36 @@
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 getEventTarget
17
+ * @typechecks static-only
18
+ */
19
+
20
+ "use strict";
21
+
22
+ /**
23
+ * Gets the target node from a native browser event by accounting for
24
+ * inconsistencies in browser DOM APIs.
25
+ *
26
+ * @param {object} nativeEvent Native browser event.
27
+ * @return {DOMEventTarget} Target node.
28
+ */
29
+ function getEventTarget(nativeEvent) {
30
+ var target = nativeEvent.target || nativeEvent.srcElement || window;
31
+ // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
32
+ // @see http://www.quirksmode.org/js/events_properties.html
33
+ return target.nodeType === 3 ? target.parentNode : target;
34
+ }
35
+
36
+ module.exports = getEventTarget;
@@ -0,0 +1,118 @@
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 getMarkupWrap
17
+ */
18
+
19
+ var ExecutionEnvironment = require("./ExecutionEnvironment");
20
+
21
+ var invariant = require("./invariant");
22
+
23
+ /**
24
+ * Dummy container used to detect which wraps are necessary.
25
+ */
26
+ var dummyNode =
27
+ ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
28
+
29
+ /**
30
+ * Some browsers cannot use `innerHTML` to render certain elements standalone,
31
+ * so we wrap them, render the wrapped nodes, then extract the desired node.
32
+ *
33
+ * In IE8, certain elements cannot render alone, so wrap all elements ('*').
34
+ */
35
+ var shouldWrap = {
36
+ // Force wrapping for SVG elements because if they get created inside a <div>,
37
+ // they will be initialized in the wrong namespace (and will not display).
38
+ 'circle': true,
39
+ 'defs': true,
40
+ 'g': true,
41
+ 'line': true,
42
+ 'linearGradient': true,
43
+ 'path': true,
44
+ 'polygon': true,
45
+ 'polyline': true,
46
+ 'radialGradient': true,
47
+ 'rect': true,
48
+ 'stop': true,
49
+ 'text': true
50
+ };
51
+
52
+ var selectWrap = [1, '<select multiple="true">', '</select>'];
53
+ var tableWrap = [1, '<table>', '</table>'];
54
+ var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];
55
+
56
+ var svgWrap = [1, '<svg>', '</svg>'];
57
+
58
+ var markupWrap = {
59
+ '*': [1, '?<div>', '</div>'],
60
+
61
+ 'area': [1, '<map>', '</map>'],
62
+ 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],
63
+ 'legend': [1, '<fieldset>', '</fieldset>'],
64
+ 'param': [1, '<object>', '</object>'],
65
+ 'tr': [2, '<table><tbody>', '</tbody></table>'],
66
+
67
+ 'optgroup': selectWrap,
68
+ 'option': selectWrap,
69
+
70
+ 'caption': tableWrap,
71
+ 'colgroup': tableWrap,
72
+ 'tbody': tableWrap,
73
+ 'tfoot': tableWrap,
74
+ 'thead': tableWrap,
75
+
76
+ 'td': trWrap,
77
+ 'th': trWrap,
78
+
79
+ 'circle': svgWrap,
80
+ 'defs': svgWrap,
81
+ 'g': svgWrap,
82
+ 'line': svgWrap,
83
+ 'linearGradient': svgWrap,
84
+ 'path': svgWrap,
85
+ 'polygon': svgWrap,
86
+ 'polyline': svgWrap,
87
+ 'radialGradient': svgWrap,
88
+ 'rect': svgWrap,
89
+ 'stop': svgWrap,
90
+ 'text': svgWrap
91
+ };
92
+
93
+ /**
94
+ * Gets the markup wrap configuration for the supplied `nodeName`.
95
+ *
96
+ * NOTE: This lazily detects which wraps are necessary for the current browser.
97
+ *
98
+ * @param {string} nodeName Lowercase `nodeName`.
99
+ * @return {?array} Markup wrap configuration, if applicable.
100
+ */
101
+ function getMarkupWrap(nodeName) {
102
+ ("production" !== process.env.NODE_ENV ? invariant(!!dummyNode, 'Markup wrapping node not initialized') : invariant(!!dummyNode));
103
+ if (!markupWrap.hasOwnProperty(nodeName)) {
104
+ nodeName = '*';
105
+ }
106
+ if (!shouldWrap.hasOwnProperty(nodeName)) {
107
+ if (nodeName === '*') {
108
+ dummyNode.innerHTML = '<link />';
109
+ } else {
110
+ dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';
111
+ }
112
+ shouldWrap[nodeName] = !dummyNode.firstChild;
113
+ }
114
+ return shouldWrap[nodeName] ? markupWrap[nodeName] : null;
115
+ }
116
+
117
+
118
+ module.exports = getMarkupWrap;
@@ -0,0 +1,80 @@
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 getNodeForCharacterOffset
17
+ */
18
+
19
+ "use strict";
20
+
21
+ /**
22
+ * Given any node return the first leaf node without children.
23
+ *
24
+ * @param {DOMElement|DOMTextNode} node
25
+ * @return {DOMElement|DOMTextNode}
26
+ */
27
+ function getLeafNode(node) {
28
+ while (node && node.firstChild) {
29
+ node = node.firstChild;
30
+ }
31
+ return node;
32
+ }
33
+
34
+ /**
35
+ * Get the next sibling within a container. This will walk up the
36
+ * DOM if a node's siblings have been exhausted.
37
+ *
38
+ * @param {DOMElement|DOMTextNode} node
39
+ * @return {?DOMElement|DOMTextNode}
40
+ */
41
+ function getSiblingNode(node) {
42
+ while (node) {
43
+ if (node.nextSibling) {
44
+ return node.nextSibling;
45
+ }
46
+ node = node.parentNode;
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Get object describing the nodes which contain characters at offset.
52
+ *
53
+ * @param {DOMElement|DOMTextNode} root
54
+ * @param {number} offset
55
+ * @return {?object}
56
+ */
57
+ function getNodeForCharacterOffset(root, offset) {
58
+ var node = getLeafNode(root);
59
+ var nodeStart = 0;
60
+ var nodeEnd = 0;
61
+
62
+ while (node) {
63
+ if (node.nodeType == 3) {
64
+ nodeEnd = nodeStart + node.textContent.length;
65
+
66
+ if (nodeStart <= offset && nodeEnd >= offset) {
67
+ return {
68
+ node: node,
69
+ offset: offset - nodeStart
70
+ };
71
+ }
72
+
73
+ nodeStart = nodeEnd;
74
+ }
75
+
76
+ node = getLeafNode(getSiblingNode(node));
77
+ }
78
+ }
79
+
80
+ module.exports = getNodeForCharacterOffset;
@@ -0,0 +1,40 @@
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 getReactRootElementInContainer
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var DOC_NODE_TYPE = 9;
22
+
23
+ /**
24
+ * @param {DOMElement|DOMDocument} container DOM element that may contain
25
+ * a React component
26
+ * @return {?*} DOM element that may have the reactRoot ID, or null.
27
+ */
28
+ function getReactRootElementInContainer(container) {
29
+ if (!container) {
30
+ return null;
31
+ }
32
+
33
+ if (container.nodeType === DOC_NODE_TYPE) {
34
+ return container.documentElement;
35
+ } else {
36
+ return container.firstChild;
37
+ }
38
+ }
39
+
40
+ module.exports = getReactRootElementInContainer;
@@ -0,0 +1,42 @@
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 getTextContentAccessor
17
+ */
18
+
19
+ "use strict";
20
+
21
+ var ExecutionEnvironment = require("./ExecutionEnvironment");
22
+
23
+ var contentKey = null;
24
+
25
+ /**
26
+ * Gets the key used to access text content on a DOM node.
27
+ *
28
+ * @return {?string} Key used to access text content.
29
+ * @internal
30
+ */
31
+ function getTextContentAccessor() {
32
+ if (!contentKey && ExecutionEnvironment.canUseDOM) {
33
+ // Prefer textContent to innerText because many browsers support both but
34
+ // SVG <text> elements don't support innerText even when <div> does.
35
+ contentKey = 'textContent' in document.createElement('div') ?
36
+ 'textContent' :
37
+ 'innerText';
38
+ }
39
+ return contentKey;
40
+ }
41
+
42
+ module.exports = getTextContentAccessor;
@@ -0,0 +1,45 @@
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 getUnboundedScrollPosition
17
+ * @typechecks
18
+ */
19
+
20
+ "use strict";
21
+
22
+ /**
23
+ * Gets the scroll position of the supplied element or window.
24
+ *
25
+ * The return values are unbounded, unlike `getScrollPosition`. This means they
26
+ * may be negative or exceed the element boundaries (which is possible using
27
+ * inertial scrolling).
28
+ *
29
+ * @param {DOMWindow|DOMElement} scrollable
30
+ * @return {object} Map with `x` and `y` keys.
31
+ */
32
+ function getUnboundedScrollPosition(scrollable) {
33
+ if (scrollable === window) {
34
+ return {
35
+ x: window.pageXOffset || document.documentElement.scrollLeft,
36
+ y: window.pageYOffset || document.documentElement.scrollTop
37
+ };
38
+ }
39
+ return {
40
+ x: scrollable.scrollLeft,
41
+ y: scrollable.scrollTop
42
+ };
43
+ }
44
+
45
+ module.exports = getUnboundedScrollPosition;
@@ -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,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;