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.
- package/README.md +10 -222
- package/addons.js +1 -0
- package/lib/AutoFocusMixin.js +30 -0
- package/lib/CSSCore.js +115 -0
- package/lib/CSSProperty.js +121 -0
- package/lib/CSSPropertyOperations.js +97 -0
- package/lib/ChangeEventPlugin.js +387 -0
- package/lib/ClientReactRootIndex.js +30 -0
- package/lib/CompositionEventPlugin.js +260 -0
- package/lib/DOMChildrenOperations.js +165 -0
- package/lib/DOMProperty.js +268 -0
- package/lib/DOMPropertyOperations.js +181 -0
- package/lib/Danger.js +187 -0
- package/lib/DefaultDOMPropertyConfig.js +197 -0
- package/lib/DefaultEventPluginOrder.js +44 -0
- package/lib/EnterLeaveEventPlugin.js +145 -0
- package/lib/EventConstants.js +76 -0
- package/lib/EventListener.js +69 -0
- package/lib/EventPluginHub.js +291 -0
- package/lib/EventPluginRegistry.js +260 -0
- package/lib/EventPluginUtils.js +214 -0
- package/lib/EventPropagators.js +143 -0
- package/lib/ExecutionEnvironment.js +44 -0
- package/lib/LinkedStateMixin.js +46 -0
- package/lib/LinkedValueUtils.js +161 -0
- package/lib/MobileSafariClickEventPlugin.js +63 -0
- package/lib/PooledClass.js +119 -0
- package/lib/React.js +95 -0
- package/lib/ReactCSSTransitionGroup.js +65 -0
- package/lib/ReactCSSTransitionGroupChild.js +138 -0
- package/lib/ReactChildren.js +132 -0
- package/lib/ReactComponent.js +550 -0
- package/lib/ReactComponentBrowserEnvironment.js +158 -0
- package/lib/ReactComponentEnvironment.js +26 -0
- package/lib/ReactCompositeComponent.js +1455 -0
- package/lib/ReactContext.js +67 -0
- package/lib/ReactCurrentOwner.js +39 -0
- package/lib/ReactDOM.js +207 -0
- package/lib/ReactDOMButton.js +68 -0
- package/lib/ReactDOMComponent.js +399 -0
- package/lib/ReactDOMForm.js +59 -0
- package/lib/ReactDOMIDOperations.js +218 -0
- package/lib/ReactDOMImg.js +58 -0
- package/lib/ReactDOMInput.js +181 -0
- package/lib/ReactDOMOption.js +51 -0
- package/lib/ReactDOMSelect.js +179 -0
- package/lib/ReactDOMSelection.js +189 -0
- package/lib/ReactDOMTextarea.js +140 -0
- package/lib/ReactDefaultBatchingStrategy.js +75 -0
- package/lib/ReactDefaultInjection.js +115 -0
- package/lib/ReactDefaultPerf.js +244 -0
- package/lib/ReactDefaultPerfAnalysis.js +199 -0
- package/lib/ReactErrorUtils.js +37 -0
- package/lib/ReactEventEmitter.js +337 -0
- package/lib/ReactEventEmitterMixin.js +57 -0
- package/lib/ReactEventTopLevelCallback.js +109 -0
- package/lib/ReactInjection.js +39 -0
- package/lib/ReactInputSelection.js +140 -0
- package/lib/ReactInstanceHandles.js +338 -0
- package/lib/ReactLink.js +54 -0
- package/lib/ReactMarkupChecksum.js +53 -0
- package/lib/ReactMount.js +641 -0
- package/lib/ReactMountReady.js +95 -0
- package/lib/ReactMultiChild.js +425 -0
- package/lib/ReactMultiChildUpdateTypes.js +38 -0
- package/lib/ReactOwner.js +154 -0
- package/lib/ReactPerf.js +85 -0
- package/lib/ReactPropTransferer.js +147 -0
- package/lib/ReactPropTypeLocationNames.js +31 -0
- package/lib/ReactPropTypeLocations.js +29 -0
- package/lib/ReactPropTypes.js +359 -0
- package/lib/ReactPutListenerQueue.js +61 -0
- package/lib/ReactReconcileTransaction.js +181 -0
- package/lib/ReactRootIndex.js +36 -0
- package/lib/ReactServerRendering.js +59 -0
- package/lib/ReactStateSetters.js +111 -0
- package/lib/ReactTextComponent.js +99 -0
- package/lib/ReactTransitionChildMapping.js +106 -0
- package/lib/ReactTransitionEvents.js +97 -0
- package/lib/ReactTransitionGroup.js +187 -0
- package/lib/ReactUpdates.js +148 -0
- package/lib/ReactWithAddons.js +46 -0
- package/lib/SelectEventPlugin.js +200 -0
- package/lib/ServerReactRootIndex.js +36 -0
- package/lib/SimpleEventPlugin.js +413 -0
- package/lib/SyntheticClipboardEvent.js +51 -0
- package/lib/SyntheticCompositionEvent.js +51 -0
- package/lib/SyntheticDragEvent.js +44 -0
- package/lib/SyntheticEvent.js +164 -0
- package/lib/SyntheticFocusEvent.js +44 -0
- package/lib/SyntheticKeyboardEvent.js +58 -0
- package/lib/SyntheticMouseEvent.js +85 -0
- package/lib/SyntheticTouchEvent.js +50 -0
- package/lib/SyntheticUIEvent.js +45 -0
- package/lib/SyntheticWheelEvent.js +66 -0
- package/lib/Transaction.js +276 -0
- package/lib/ViewportMetrics.js +37 -0
- package/lib/accumulate.js +54 -0
- package/lib/adler32.js +39 -0
- package/lib/cloneWithProps.js +59 -0
- package/lib/containsNode.js +49 -0
- package/lib/copyProperties.js +54 -0
- package/lib/createArrayFrom.js +91 -0
- package/lib/createFullPageComponent.js +63 -0
- package/lib/createNodesFromMarkup.js +93 -0
- package/lib/createObjectFrom.js +61 -0
- package/lib/cx.js +44 -0
- package/lib/dangerousStyleValue.js +57 -0
- package/lib/emptyFunction.js +43 -0
- package/lib/escapeTextForBrowser.js +47 -0
- package/lib/flattenChildren.js +57 -0
- package/lib/forEachAccumulated.js +36 -0
- package/lib/getActiveElement.js +34 -0
- package/lib/getEventKey.js +85 -0
- package/lib/getEventTarget.js +36 -0
- package/lib/getMarkupWrap.js +118 -0
- package/lib/getNodeForCharacterOffset.js +80 -0
- package/lib/getReactRootElementInContainer.js +40 -0
- package/lib/getTextContentAccessor.js +42 -0
- package/lib/getUnboundedScrollPosition.js +45 -0
- package/lib/hyphenate.js +35 -0
- package/lib/invariant.js +62 -0
- package/lib/isEventSupported.js +70 -0
- package/lib/isNode.js +33 -0
- package/lib/isTextInputElement.js +49 -0
- package/lib/isTextNode.js +30 -0
- package/lib/joinClasses.js +44 -0
- package/lib/keyMirror.js +58 -0
- package/lib/keyOf.js +41 -0
- package/lib/memoizeStringOnly.js +39 -0
- package/lib/merge.js +37 -0
- package/lib/mergeHelpers.js +136 -0
- package/lib/mergeInto.js +45 -0
- package/lib/mixInto.js +34 -0
- package/lib/objMap.js +47 -0
- package/lib/objMapKeyVal.js +47 -0
- package/lib/onlyChild.js +43 -0
- package/lib/performanceNow.js +42 -0
- package/lib/shallowEqual.js +49 -0
- package/lib/shouldUpdateReactComponent.js +58 -0
- package/lib/toArray.js +75 -0
- package/lib/traverseAllChildren.js +189 -0
- package/lib/warning.js +40 -0
- package/package.json +32 -21
- package/react.js +1 -0
- package/.npmignore +0 -7
- package/.travis.yml +0 -5
- package/Jakefile.js +0 -39
- package/LICENSE +0 -19
- package/browser-test/dist.html +0 -90
- package/browser-test/index.html +0 -86
- package/browser-test/min.html +0 -90
- package/dist/react.js +0 -3107
- package/dist/react.min.js +0 -22
- package/doc/advanced.md +0 -174
- package/doc/color-def.graffle +0 -938
- package/doc/color-def.png +0 -0
- package/doc/simple.dot +0 -25
- package/doc/simple.png +0 -0
- package/examples/longer-example.js +0 -41
- package/examples/simple.js +0 -45
- package/examples/using-ast-directly.js +0 -30
- package/examples/using-events1.js +0 -79
- package/examples/using-log-events.js +0 -43
- package/lib/base-task.js +0 -123
- package/lib/cb-task.js +0 -84
- package/lib/core.js +0 -138
- package/lib/dsl.js +0 -138
- package/lib/error.js +0 -55
- package/lib/event-collector.js +0 -81
- package/lib/event-manager.js +0 -89
- package/lib/eventemitter.js +0 -20
- package/lib/finalcb-first-task.js +0 -68
- package/lib/finalcb-task.js +0 -65
- package/lib/id.js +0 -22
- package/lib/input-parser.js +0 -56
- package/lib/log-events.js +0 -101
- package/lib/parse.js +0 -41
- package/lib/promise-resolve.js +0 -50
- package/lib/promise-task.js +0 -93
- package/lib/react.js +0 -59
- package/lib/ret-task.js +0 -71
- package/lib/sprintf.js +0 -18
- package/lib/status.js +0 -14
- package/lib/task.js +0 -251
- package/lib/track-tasks.js +0 -74
- package/lib/validate.js +0 -159
- package/lib/vcon.js +0 -90
- package/lib/when-task.js +0 -85
- package/src/dist.build.requirejs +0 -20
- package/test/ast.mocha.js +0 -136
- package/test/cb-task.mocha.js +0 -220
- package/test/core-deferred.mocha.js +0 -143
- package/test/core-when.mocha.js +0 -96
- package/test/core.mocha.js +0 -589
- package/test/dsl.mocha.js +0 -350
- package/test/event-manager.mocha.js +0 -119
- package/test/exec-options.mocha.js +0 -48
- package/test/finalcb-task.mocha.js +0 -58
- package/test/input-parser.mocha.js +0 -86
- package/test/log-events.mocha.js +0 -88
- package/test/mocha.opts +0 -2
- package/test/module-use.mocha.js +0 -147
- package/test/promise-auto-resolve.mocha.js +0 -68
- package/test/ret-task.mocha.js +0 -220
- package/test/task.mocha.js +0 -42
- package/test/validate-cb-task.mocha.js +0 -100
- package/test/validate-ret-task.mocha.js +0 -110
- package/test/validate.mocha.js +0 -324
- package/test/vcon.mocha.js +0 -193
- package/vendor/chai/chai.js +0 -2038
- package/vendor/jquery/jquery-1.7.1.js +0 -9266
- package/vendor/jquery/jquery-1.7.1.min.js +0 -4
- package/vendor/mocha/mocha.css +0 -135
- package/vendor/mocha/mocha.js +0 -3589
- package/vendor/node/util.js +0 -531
- package/vendor/requirejs/require.js +0 -2053
- package/vendor/requirejs/require.min.js +0 -33
|
@@ -0,0 +1,36 @@
|
|
|
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 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 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 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 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 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 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;
|
package/lib/hyphenate.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
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 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;
|
package/lib/invariant.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
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 invariant
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Use invariant() to assert state which your program assumes to be true.
|
|
21
|
+
*
|
|
22
|
+
* Provide sprintf-style format (only %s is supported) and arguments
|
|
23
|
+
* to provide information about what broke and what you were
|
|
24
|
+
* expecting.
|
|
25
|
+
*
|
|
26
|
+
* The invariant message will be stripped in production, but the invariant
|
|
27
|
+
* will remain to ensure logic does not differ in production.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
function invariant(condition) {
|
|
31
|
+
if (!condition) {
|
|
32
|
+
var error = new Error(
|
|
33
|
+
'Minified exception occured; use the non-minified dev environment for ' +
|
|
34
|
+
'the full error message and additional helpful warnings.'
|
|
35
|
+
);
|
|
36
|
+
error.framesToPop = 1;
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = invariant;
|
|
42
|
+
|
|
43
|
+
if ("production" !== process.env.NODE_ENV) {
|
|
44
|
+
var invariantDev = 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
|
+
module.exports = invariantDev;
|
|
62
|
+
}
|