Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81155 views
1
/**
2
* Copyright 2013-2014, Facebook, Inc.
3
* All rights reserved.
4
*
5
* This source code is licensed under the BSD-style license found in the
6
* LICENSE file in the root directory of this source tree. An additional grant
7
* of patent rights can be found in the PATENTS file in the same directory.
8
*
9
* @providesModule React
10
*/
11
12
"use strict";
13
14
var DOMPropertyOperations = require('DOMPropertyOperations');
15
var EventPluginUtils = require('EventPluginUtils');
16
var ReactChildren = require('ReactChildren');
17
var ReactComponent = require('ReactComponent');
18
var ReactCompositeComponent = require('ReactCompositeComponent');
19
var ReactContext = require('ReactContext');
20
var ReactCurrentOwner = require('ReactCurrentOwner');
21
var ReactElement = require('ReactElement');
22
var ReactElementValidator = require('ReactElementValidator');
23
var ReactDOM = require('ReactDOM');
24
var ReactDOMComponent = require('ReactDOMComponent');
25
var ReactDefaultInjection = require('ReactDefaultInjection');
26
var ReactInstanceHandles = require('ReactInstanceHandles');
27
var ReactLegacyElement = require('ReactLegacyElement');
28
var ReactMount = require('ReactMount');
29
var ReactMultiChild = require('ReactMultiChild');
30
var ReactPerf = require('ReactPerf');
31
var ReactPropTypes = require('ReactPropTypes');
32
var ReactServerRendering = require('ReactServerRendering');
33
var ReactTextComponent = require('ReactTextComponent');
34
35
var assign = require('Object.assign');
36
var deprecated = require('deprecated');
37
var onlyChild = require('onlyChild');
38
39
ReactDefaultInjection.inject();
40
41
var createElement = ReactElement.createElement;
42
var createFactory = ReactElement.createFactory;
43
44
if (__DEV__) {
45
createElement = ReactElementValidator.createElement;
46
createFactory = ReactElementValidator.createFactory;
47
}
48
49
// TODO: Drop legacy elements once classes no longer export these factories
50
createElement = ReactLegacyElement.wrapCreateElement(
51
createElement
52
);
53
createFactory = ReactLegacyElement.wrapCreateFactory(
54
createFactory
55
);
56
57
var render = ReactPerf.measure('React', 'render', ReactMount.render);
58
59
var React = {
60
Children: {
61
map: ReactChildren.map,
62
forEach: ReactChildren.forEach,
63
count: ReactChildren.count,
64
only: onlyChild
65
},
66
DOM: ReactDOM,
67
PropTypes: ReactPropTypes,
68
initializeTouchEvents: function(shouldUseTouch) {
69
EventPluginUtils.useTouchEvents = shouldUseTouch;
70
},
71
createClass: ReactCompositeComponent.createClass,
72
createElement: createElement,
73
createFactory: createFactory,
74
constructAndRenderComponent: ReactMount.constructAndRenderComponent,
75
constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID,
76
render: render,
77
renderToString: ReactServerRendering.renderToString,
78
renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,
79
unmountComponentAtNode: ReactMount.unmountComponentAtNode,
80
isValidClass: ReactLegacyElement.isValidClass,
81
isValidElement: ReactElement.isValidElement,
82
withContext: ReactContext.withContext,
83
84
// Hook for JSX spread, don't use this for anything else.
85
__spread: assign,
86
87
// Deprecations (remove for 0.13)
88
renderComponent: deprecated(
89
'React',
90
'renderComponent',
91
'render',
92
this,
93
render
94
),
95
renderComponentToString: deprecated(
96
'React',
97
'renderComponentToString',
98
'renderToString',
99
this,
100
ReactServerRendering.renderToString
101
),
102
renderComponentToStaticMarkup: deprecated(
103
'React',
104
'renderComponentToStaticMarkup',
105
'renderToStaticMarkup',
106
this,
107
ReactServerRendering.renderToStaticMarkup
108
),
109
isValidComponent: deprecated(
110
'React',
111
'isValidComponent',
112
'isValidElement',
113
this,
114
ReactElement.isValidElement
115
)
116
};
117
118
// Inject the runtime into a devtools global hook regardless of browser.
119
// Allows for debugging when the hook is injected on the page.
120
if (
121
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
122
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
123
__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
124
Component: ReactComponent,
125
CurrentOwner: ReactCurrentOwner,
126
DOMComponent: ReactDOMComponent,
127
DOMPropertyOperations: DOMPropertyOperations,
128
InstanceHandles: ReactInstanceHandles,
129
Mount: ReactMount,
130
MultiChild: ReactMultiChild,
131
TextComponent: ReactTextComponent
132
});
133
}
134
135
if (__DEV__) {
136
var ExecutionEnvironment = require('ExecutionEnvironment');
137
if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
138
139
// If we're in Chrome, look for the devtools marker and provide a download
140
// link if not installed.
141
if (navigator.userAgent.indexOf('Chrome') > -1) {
142
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
143
console.debug(
144
'Download the React DevTools for a better development experience: ' +
145
'http://fb.me/react-devtools'
146
);
147
}
148
}
149
150
var expectedFeatures = [
151
// shims
152
Array.isArray,
153
Array.prototype.every,
154
Array.prototype.forEach,
155
Array.prototype.indexOf,
156
Array.prototype.map,
157
Date.now,
158
Function.prototype.bind,
159
Object.keys,
160
String.prototype.split,
161
String.prototype.trim,
162
163
// shams
164
Object.create,
165
Object.freeze
166
];
167
168
for (var i = 0; i < expectedFeatures.length; i++) {
169
if (!expectedFeatures[i]) {
170
console.error(
171
'One or more ES5 shim/shams expected by React are not available: ' +
172
'http://fb.me/react-warning-polyfills'
173
);
174
break;
175
}
176
}
177
}
178
}
179
180
// Version exists only in the open-source version of React, not in Facebook's
181
// internal version.
182
React.version = '0.12.2';
183
184
module.exports = React;
185
186