Created
April 1, 2015 17:00
-
-
Save DrewDahlman/8aee09e8c438f12147d0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Copyright 2013-2014, Facebook, Inc. | |
* All rights reserved. | |
* | |
* This source code is licensed under the BSD-style license found in the | |
* LICENSE file in the root directory of this source tree. An additional grant | |
* of patent rights can be found in the PATENTS file in the same directory. | |
* | |
* @providesModule React | |
*/ | |
"use strict"; | |
var DOMPropertyOperations = require("./DOMPropertyOperations"); | |
var EventPluginUtils = require("./EventPluginUtils"); | |
var ReactChildren = require("./ReactChildren"); | |
var ReactComponent = require("./ReactComponent"); | |
var ReactCompositeComponent = require("./ReactCompositeComponent"); | |
var ReactContext = require("./ReactContext"); | |
var ReactCurrentOwner = require("./ReactCurrentOwner"); | |
var ReactElement = require("./ReactElement"); | |
var ReactElementValidator = require("./ReactElementValidator"); | |
var ReactDOM = require("./ReactDOM"); | |
var ReactDOMComponent = require("./ReactDOMComponent"); | |
var ReactDefaultInjection = require("./ReactDefaultInjection"); | |
var ReactInstanceHandles = require("./ReactInstanceHandles"); | |
var ReactLegacyElement = require("./ReactLegacyElement"); | |
var ReactMount = require("./ReactMount"); | |
var ReactMultiChild = require("./ReactMultiChild"); | |
var ReactPerf = require("./ReactPerf"); | |
var ReactPropTypes = require("./ReactPropTypes"); | |
var ReactServerRendering = require("./ReactServerRendering"); | |
var ReactTextComponent = require("./ReactTextComponent"); | |
var assign = require("./Object.assign"); | |
var deprecated = require("./deprecated"); | |
var onlyChild = require("./onlyChild"); | |
ReactDefaultInjection.inject(); | |
var createElement = ReactElement.createElement; | |
var createFactory = ReactElement.createFactory; | |
if ("production" !== process.env.NODE_ENV) { | |
createElement = ReactElementValidator.createElement; | |
createFactory = ReactElementValidator.createFactory; | |
} | |
// TODO: Drop legacy elements once classes no longer export these factories | |
createElement = ReactLegacyElement.wrapCreateElement( | |
createElement | |
); | |
createFactory = ReactLegacyElement.wrapCreateFactory( | |
createFactory | |
); | |
var render = ReactPerf.measure('React', 'render', ReactMount.render); | |
var React = { | |
Children: { | |
map: ReactChildren.map, | |
forEach: ReactChildren.forEach, | |
count: ReactChildren.count, | |
only: onlyChild | |
}, | |
DOM: ReactDOM, | |
PropTypes: ReactPropTypes, | |
initializeTouchEvents: function(shouldUseTouch) { | |
EventPluginUtils.useTouchEvents = shouldUseTouch; | |
}, | |
createClass: ReactCompositeComponent.createClass, | |
createElement: createElement, | |
createFactory: createFactory, | |
constructAndRenderComponent: ReactMount.constructAndRenderComponent, | |
constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID, | |
render: render, | |
renderToString: ReactServerRendering.renderToString, | |
renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup, | |
unmountComponentAtNode: ReactMount.unmountComponentAtNode, | |
isValidClass: ReactLegacyElement.isValidClass, | |
isValidElement: ReactElement.isValidElement, | |
withContext: ReactContext.withContext, | |
// Hook for JSX spread, don't use this for anything else. | |
__spread: assign, | |
// Deprecations (remove for 0.13) | |
renderComponent: deprecated( | |
'React', | |
'renderComponent', | |
'render', | |
this, | |
render | |
), | |
renderComponentToString: deprecated( | |
'React', | |
'renderComponentToString', | |
'renderToString', | |
this, | |
ReactServerRendering.renderToString | |
), | |
renderComponentToStaticMarkup: deprecated( | |
'React', | |
'renderComponentToStaticMarkup', | |
'renderToStaticMarkup', | |
this, | |
ReactServerRendering.renderToStaticMarkup | |
), | |
isValidComponent: deprecated( | |
'React', | |
'isValidComponent', | |
'isValidElement', | |
this, | |
ReactElement.isValidElement | |
) | |
}; | |
// Inject the runtime into a devtools global hook regardless of browser. | |
// Allows for debugging when the hook is injected on the page. | |
if ( | |
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && | |
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { | |
__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ | |
Component: ReactComponent, | |
CurrentOwner: ReactCurrentOwner, | |
DOMComponent: ReactDOMComponent, | |
DOMPropertyOperations: DOMPropertyOperations, | |
InstanceHandles: ReactInstanceHandles, | |
Mount: ReactMount, | |
MultiChild: ReactMultiChild, | |
TextComponent: ReactTextComponent | |
}); | |
} | |
if ("production" !== process.env.NODE_ENV) { | |
var ExecutionEnvironment = require("./ExecutionEnvironment"); | |
if (ExecutionEnvironment.canUseDOM && window.top === window.self) { | |
// If we're in Chrome, look for the devtools marker and provide a download | |
// link if not installed. | |
if (navigator.userAgent.indexOf('Chrome') > -1) { | |
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { | |
console.debug( | |
'Download the React DevTools for a better development experience: ' + | |
'http://fb.me/react-devtools' | |
); | |
} | |
} | |
var expectedFeatures = [ | |
// shims | |
Array.isArray, | |
Array.prototype.every, | |
Array.prototype.forEach, | |
Array.prototype.indexOf, | |
Array.prototype.map, | |
Date.now, | |
Function.prototype.bind, | |
Object.keys, | |
String.prototype.split, | |
String.prototype.trim, | |
// shams | |
Object.create, | |
Object.freeze | |
]; | |
for (var i = 0; i < expectedFeatures.length; i++) { | |
if (!expectedFeatures[i]) { | |
console.error( | |
'One or more ES5 shim/shams expected by React are not available: ' + | |
'http://fb.me/react-warning-polyfills' | |
); | |
break; | |
} | |
} | |
} | |
} | |
// Version exists only in the open-source version of React, not in Facebook's | |
// internal version. | |
React.version = '0.12.2'; | |
module.exports = React; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment