UNPKG

4.96 kBJavaScriptView Raw
1/**
2 * Copyright (c) 2013-present, Facebook, Inc.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 */
8
9'use strict';
10
11var _assign = require('object-assign');
12
13var ReactBaseClasses = require('./ReactBaseClasses');
14var ReactChildren = require('./ReactChildren');
15var ReactDOMFactories = require('./ReactDOMFactories');
16var ReactElement = require('./ReactElement');
17var ReactPropTypes = require('./ReactPropTypes');
18var ReactVersion = require('./ReactVersion');
19
20var createReactClass = require('./createClass');
21var onlyChild = require('./onlyChild');
22
23var createElement = ReactElement.createElement;
24var createFactory = ReactElement.createFactory;
25var cloneElement = ReactElement.cloneElement;
26
27if (process.env.NODE_ENV !== 'production') {
28 var lowPriorityWarning = require('./lowPriorityWarning');
29 var canDefineProperty = require('./canDefineProperty');
30 var ReactElementValidator = require('./ReactElementValidator');
31 var didWarnPropTypesDeprecated = false;
32 createElement = ReactElementValidator.createElement;
33 createFactory = ReactElementValidator.createFactory;
34 cloneElement = ReactElementValidator.cloneElement;
35}
36
37var __spread = _assign;
38var createMixin = function (mixin) {
39 return mixin;
40};
41
42if (process.env.NODE_ENV !== 'production') {
43 var warnedForSpread = false;
44 var warnedForCreateMixin = false;
45 __spread = function () {
46 lowPriorityWarning(warnedForSpread, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.');
47 warnedForSpread = true;
48 return _assign.apply(null, arguments);
49 };
50
51 createMixin = function (mixin) {
52 lowPriorityWarning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. ' + 'In React v16.0, it will be removed. ' + 'You can use this mixin directly instead. ' + 'See https://fb.me/createmixin-was-never-implemented for more info.');
53 warnedForCreateMixin = true;
54 return mixin;
55 };
56}
57
58var React = {
59 // Modern
60
61 Children: {
62 map: ReactChildren.map,
63 forEach: ReactChildren.forEach,
64 count: ReactChildren.count,
65 toArray: ReactChildren.toArray,
66 only: onlyChild
67 },
68
69 Component: ReactBaseClasses.Component,
70 PureComponent: ReactBaseClasses.PureComponent,
71
72 createElement: createElement,
73 cloneElement: cloneElement,
74 isValidElement: ReactElement.isValidElement,
75
76 // Classic
77
78 PropTypes: ReactPropTypes,
79 createClass: createReactClass,
80 createFactory: createFactory,
81 createMixin: createMixin,
82
83 // This looks DOM specific but these are actually isomorphic helpers
84 // since they are just generating DOM strings.
85 DOM: ReactDOMFactories,
86
87 version: ReactVersion,
88
89 // Deprecated hook for JSX spread, don't use this for anything.
90 __spread: __spread
91};
92
93if (process.env.NODE_ENV !== 'production') {
94 var warnedForCreateClass = false;
95 if (canDefineProperty) {
96 Object.defineProperty(React, 'PropTypes', {
97 get: function () {
98 lowPriorityWarning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated,' + ' and will be removed in React v16.0.' + ' Use the latest available v15.* prop-types package from npm instead.' + ' For info on usage, compatibility, migration and more, see ' + 'https://fb.me/prop-types-docs');
99 didWarnPropTypesDeprecated = true;
100 return ReactPropTypes;
101 }
102 });
103
104 Object.defineProperty(React, 'createClass', {
105 get: function () {
106 lowPriorityWarning(warnedForCreateClass, 'Accessing createClass via the main React package is deprecated,' + ' and will be removed in React v16.0.' + " Use a plain JavaScript class instead. If you're not yet " + 'ready to migrate, create-react-class v15.* is available ' + 'on npm as a temporary, drop-in replacement. ' + 'For more info see https://fb.me/react-create-class');
107 warnedForCreateClass = true;
108 return createReactClass;
109 }
110 });
111 }
112
113 // React.DOM factories are deprecated. Wrap these methods so that
114 // invocations of the React.DOM namespace and alert users to switch
115 // to the `react-dom-factories` package.
116 React.DOM = {};
117 var warnedForFactories = false;
118 Object.keys(ReactDOMFactories).forEach(function (factory) {
119 React.DOM[factory] = function () {
120 if (!warnedForFactories) {
121 lowPriorityWarning(false, 'Accessing factories like React.DOM.%s has been deprecated ' + 'and will be removed in v16.0+. Use the ' + 'react-dom-factories package instead. ' + ' Version 1.0 provides a drop-in replacement.' + ' For more info, see https://fb.me/react-dom-factories', factory);
122 warnedForFactories = true;
123 }
124 return ReactDOMFactories[factory].apply(ReactDOMFactories, arguments);
125 };
126 });
127}
128
129module.exports = React;
\No newline at end of file