Split DefaultInjection into two files
This splits DefaultInjection into one with all the properties and event configuration and a separate one for the things that are relevant to he stack reconciler. That way we can reuse the property and event system for Fiber without pulling in all the other stuff.
Sebastian Markbage committed
Oct 24, 2016 at 19:44 UTC
4ba8bef19a5e693c8b84576ccdcda859a50463a0
10 files changed
+149
-83
src/renderers/dom/ReactDOM.js
+4
-2
@@ -14,7 +14,8 @@
14
'use strict';
15
16
var ReactDOMComponentTree = require('ReactDOMComponentTree');
17
-var ReactDefaultInjection = require('ReactDefaultInjection');
17
+var ReactDOMInjection = require('ReactDOMInjection');
18
+var ReactDOMStackInjection = require('ReactDOMStackInjection');
19
var ReactMount = require('ReactMount');
20
var ReactReconciler = require('ReactReconciler');
21
var ReactUpdates = require('ReactUpdates');
@@ -25,7 +26,8 @@ var getHostComponentFromComposite = require('getHostComponentFromComposite');
26
var renderSubtreeIntoContainer = require('renderSubtreeIntoContainer');
27
var warning = require('warning');
28
28
-ReactDefaultInjection.inject();
29
+ReactDOMInjection.inject();
30
+ReactDOMStackInjection.inject();
31
32
var ReactDOM = {
33
findDOMNode: findDOMNode,
src/renderers/dom/ReactDOMServer.js
+4
-2
@@ -11,11 +11,13 @@
11
12
'use strict';
13
14
-var ReactDefaultInjection = require('ReactDefaultInjection');
14
+var ReactDOMInjection = require('ReactDOMInjection');
15
+var ReactDOMStackInjection = require('ReactDOMStackInjection');
16
var ReactServerRendering = require('ReactServerRendering');
17
var ReactVersion = require('ReactVersion');
18
18
-ReactDefaultInjection.inject();
19
+ReactDOMInjection.inject();
20
+ReactDOMStackInjection.inject();
21
22
var ReactDOMServer = {
23
renderToString: ReactServerRendering.renderToString,
src/renderers/dom/shared/ReactDOMInjection.js
renamed
+1
-35
@@ -6,7 +6,7 @@
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 ReactDefaultInjection
9
+ * @providesModule ReactDOMInjection
10
*/
11
12
'use strict';
@@ -21,20 +21,9 @@ var EventPluginHub = require('EventPluginHub');
21
var EventPluginUtils = require('EventPluginUtils');
22
var HTMLDOMPropertyConfig = require('HTMLDOMPropertyConfig');
23
var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
24
-var ReactComponentEnvironment = require('ReactComponentEnvironment');
25
-var ReactComponentBrowserEnvironment =
26
- require('ReactComponentBrowserEnvironment');
27
-var ReactDOMComponent = require('ReactDOMComponent');
24
var ReactDOMComponentTree = require('ReactDOMComponentTree');
29
-var ReactDOMEmptyComponent = require('ReactDOMEmptyComponent');
25
var ReactDOMTreeTraversal = require('ReactDOMTreeTraversal');
31
-var ReactDOMTextComponent = require('ReactDOMTextComponent');
32
-var ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');
33
-var ReactEmptyComponent = require('ReactEmptyComponent');
26
var ReactEventListener = require('ReactEventListener');
35
-var ReactHostComponent = require('ReactHostComponent');
36
-var ReactReconcileTransaction = require('ReactReconcileTransaction');
37
-var ReactUpdates = require('ReactUpdates');
27
var SVGDOMPropertyConfig = require('SVGDOMPropertyConfig');
28
var SelectEventPlugin = require('SelectEventPlugin');
29
var SimpleEventPlugin = require('SimpleEventPlugin');
@@ -73,32 +62,9 @@ function inject() {
62
BeforeInputEventPlugin: BeforeInputEventPlugin,
63
});
64
76
- ReactHostComponent.injection.injectGenericComponentClass(
77
- ReactDOMComponent
78
- );
79
-
80
- ReactHostComponent.injection.injectTextComponentClass(
81
- ReactDOMTextComponent
82
- );
83
-
65
DOMProperty.injection.injectDOMPropertyConfig(ARIADOMPropertyConfig);
66
DOMProperty.injection.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
67
DOMProperty.injection.injectDOMPropertyConfig(SVGDOMPropertyConfig);
87
-
88
- ReactEmptyComponent.injection.injectEmptyComponentFactory(
89
- function(instantiate) {
90
- return new ReactDOMEmptyComponent(instantiate);
91
- }
92
- );
93
-
94
- ReactUpdates.injection.injectReconcileTransaction(
95
- ReactReconcileTransaction
96
- );
97
- ReactUpdates.injection.injectBatchingStrategy(
98
- ReactDefaultBatchingStrategy
99
- );
100
-
101
- ReactComponentEnvironment.injection.injectEnvironment(ReactComponentBrowserEnvironment);
68
}
69
70
module.exports = {
src/renderers/dom/shared/ReactDOMStackInjection.js
new
+63
@@ -0,0 +1,63 @@
1
+/**
2
+ * Copyright 2013-present, 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 ReactDOMStackInjection
10
+ */
11
+
12
+'use strict';
13
+
14
+var ReactComponentEnvironment = require('ReactComponentEnvironment');
15
+var ReactComponentBrowserEnvironment =
16
+ require('ReactComponentBrowserEnvironment');
17
+var ReactDOMComponent = require('ReactDOMComponent');
18
+var ReactDOMEmptyComponent = require('ReactDOMEmptyComponent');
19
+var ReactDOMTextComponent = require('ReactDOMTextComponent');
20
+var ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');
21
+var ReactEmptyComponent = require('ReactEmptyComponent');
22
+var ReactHostComponent = require('ReactHostComponent');
23
+var ReactReconcileTransaction = require('ReactReconcileTransaction');
24
+var ReactUpdates = require('ReactUpdates');
25
+
26
+var alreadyInjected = false;
27
+
28
+function inject() {
29
+ if (alreadyInjected) {
30
+ // TODO: This is currently true because these injections are shared between
31
+ // the client and the server package. They should be built independently
32
+ // and not share any injection state. Then this problem will be solved.
33
+ return;
34
+ }
35
+ alreadyInjected = true;
36
+
37
+ ReactHostComponent.injection.injectGenericComponentClass(
38
+ ReactDOMComponent
39
+ );
40
+
41
+ ReactHostComponent.injection.injectTextComponentClass(
42
+ ReactDOMTextComponent
43
+ );
44
+
45
+ ReactEmptyComponent.injection.injectEmptyComponentFactory(
46
+ function(instantiate) {
47
+ return new ReactDOMEmptyComponent(instantiate);
48
+ }
49
+ );
50
+
51
+ ReactUpdates.injection.injectReconcileTransaction(
52
+ ReactReconcileTransaction
53
+ );
54
+ ReactUpdates.injection.injectBatchingStrategy(
55
+ ReactDefaultBatchingStrategy
56
+ );
57
+
58
+ ReactComponentEnvironment.injection.injectEnvironment(ReactComponentBrowserEnvironment);
59
+}
60
+
61
+module.exports = {
62
+ inject: inject,
63
+};
src/renderers/dom/shared/__tests__/DOMPropertyOperations-test.js
+2
-2
@@ -18,8 +18,8 @@ describe('DOMPropertyOperations', () => {
18
19
beforeEach(() => {
20
jest.resetModuleRegistry();
21
- var ReactDefaultInjection = require('ReactDefaultInjection');
22
- ReactDefaultInjection.inject();
21
+ var ReactDOMInjection = require('ReactDOMInjection');
22
+ ReactDOMInjection.inject();
23
24
DOMPropertyOperations = require('DOMPropertyOperations');
25
DOMProperty = require('DOMProperty');
src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js
+4
-2
@@ -626,8 +626,10 @@ describe('ReactDOMComponent', () => {
626
}
627
628
beforeEach(() => {
629
- var ReactDefaultInjection = require('ReactDefaultInjection');
630
- ReactDefaultInjection.inject();
629
+ var ReactDOMInjection = require('ReactDOMInjection');
630
+ ReactDOMInjection.inject();
631
+ var ReactDOMStackInjection = require('ReactDOMInjection');
632
+ ReactDOMStackInjection.inject();
633
634
var ReactDOMComponent = require('ReactDOMComponent');
635
var ReactReconcileTransaction = require('ReactReconcileTransaction');
src/renderers/native/ReactNative.js
+4
-2
@@ -14,14 +14,16 @@
14
// Require ReactNativeDefaultInjection first for its side effects of setting up
15
// the JS environment
16
var ReactNativeComponentTree = require('ReactNativeComponentTree');
17
-var ReactNativeDefaultInjection = require('ReactNativeDefaultInjection');
17
+var ReactNativeInjection = require('ReactNativeInjection');
18
+var ReactNativeStackInjection = require('ReactNativeStackInjection');
19
20
var ReactNativeMount = require('ReactNativeMount');
21
var ReactUpdates = require('ReactUpdates');
22
23
var findNodeHandle = require('findNodeHandle');
24
24
-ReactNativeDefaultInjection.inject();
25
+ReactNativeInjection.inject();
26
+ReactNativeStackInjection.inject();
27
28
var render = function(
29
element: ReactElement<any>,
src/renderers/native/ReactNativeInjection.js
new
+62
@@ -0,0 +1,62 @@
1
+/**
2
+ * Copyright (c) 2015-present, 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 ReactNativeInjection
10
+ * @flow
11
+ */
12
+'use strict';
13
+
14
+/**
15
+ * Make sure essential globals are available and are patched correctly. Please don't remove this
16
+ * line. Bundles created by react-packager `require` it before executing any application code. This
17
+ * ensures it exists in the dependency graph and can be `require`d.
18
+ * TODO: require this in packager, not in React #10932517
19
+ */
20
+require('InitializeJavaScriptAppEngine');
21
+
22
+var EventPluginHub = require('EventPluginHub');
23
+var EventPluginUtils = require('EventPluginUtils');
24
+var RCTEventEmitter = require('RCTEventEmitter');
25
+var ReactNativeBridgeEventPlugin = require('ReactNativeBridgeEventPlugin');
26
+var ReactNativeComponentTree = require('ReactNativeComponentTree');
27
+var ReactNativeEventEmitter = require('ReactNativeEventEmitter');
28
+var ReactNativeEventPluginOrder = require('ReactNativeEventPluginOrder');
29
+var ReactNativeGlobalResponderHandler = require('ReactNativeGlobalResponderHandler');
30
+var ReactNativeTreeTraversal = require('ReactNativeTreeTraversal');
31
+var ResponderEventPlugin = require('ResponderEventPlugin');
32
+
33
+function inject() {
34
+ /**
35
+ * Register the event emitter with the native bridge
36
+ */
37
+ RCTEventEmitter.register(ReactNativeEventEmitter);
38
+
39
+ /**
40
+ * Inject module for resolving DOM hierarchy and plugin ordering.
41
+ */
42
+ EventPluginHub.injection.injectEventPluginOrder(ReactNativeEventPluginOrder);
43
+ EventPluginUtils.injection.injectComponentTree(ReactNativeComponentTree);
44
+ EventPluginUtils.injection.injectTreeTraversal(ReactNativeTreeTraversal);
45
+
46
+ ResponderEventPlugin.injection.injectGlobalResponderHandler(
47
+ ReactNativeGlobalResponderHandler
48
+ );
49
+
50
+ /**
51
+ * Some important event plugins included by default (without having to require
52
+ * them).
53
+ */
54
+ EventPluginHub.injection.injectEventPluginsByName({
55
+ 'ResponderEventPlugin': ResponderEventPlugin,
56
+ 'ReactNativeBridgeEventPlugin': ReactNativeBridgeEventPlugin,
57
+ });
58
+}
59
+
60
+module.exports = {
61
+ inject: inject,
62
+};
src/renderers/native/ReactNativeStackInjection.js
renamed
+1
-36
@@ -6,7 +6,7 @@
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 ReactNativeDefaultInjection
9
+ * @providesModule ReactNativeStackInjection
10
* @flow
11
*/
12
'use strict';
@@ -19,54 +19,19 @@
19
*/
20
require('InitializeJavaScriptAppEngine');
21
22
-var EventPluginHub = require('EventPluginHub');
23
-var EventPluginUtils = require('EventPluginUtils');
24
-var RCTEventEmitter = require('RCTEventEmitter');
22
var React = require('React');
23
var ReactComponentEnvironment = require('ReactComponentEnvironment');
24
var ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');
25
var ReactEmptyComponent = require('ReactEmptyComponent');
29
-var ReactNativeBridgeEventPlugin = require('ReactNativeBridgeEventPlugin');
26
var ReactHostComponent = require('ReactHostComponent');
27
var ReactNativeComponentEnvironment = require('ReactNativeComponentEnvironment');
32
-var ReactNativeComponentTree = require('ReactNativeComponentTree');
33
-var ReactNativeEventEmitter = require('ReactNativeEventEmitter');
34
-var ReactNativeEventPluginOrder = require('ReactNativeEventPluginOrder');
35
-var ReactNativeGlobalResponderHandler = require('ReactNativeGlobalResponderHandler');
28
var ReactNativeTextComponent = require('ReactNativeTextComponent');
37
-var ReactNativeTreeTraversal = require('ReactNativeTreeTraversal');
29
var ReactSimpleEmptyComponent = require('ReactSimpleEmptyComponent');
30
var ReactUpdates = require('ReactUpdates');
40
-var ResponderEventPlugin = require('ResponderEventPlugin');
31
32
var invariant = require('invariant');
33
34
function inject() {
45
- /**
46
- * Register the event emitter with the native bridge
47
- */
48
- RCTEventEmitter.register(ReactNativeEventEmitter);
49
-
50
- /**
51
- * Inject module for resolving DOM hierarchy and plugin ordering.
52
- */
53
- EventPluginHub.injection.injectEventPluginOrder(ReactNativeEventPluginOrder);
54
- EventPluginUtils.injection.injectComponentTree(ReactNativeComponentTree);
55
- EventPluginUtils.injection.injectTreeTraversal(ReactNativeTreeTraversal);
56
-
57
- ResponderEventPlugin.injection.injectGlobalResponderHandler(
58
- ReactNativeGlobalResponderHandler
59
- );
60
-
61
- /**
62
- * Some important event plugins included by default (without having to require
63
- * them).
64
- */
65
- EventPluginHub.injection.injectEventPluginsByName({
66
- 'ResponderEventPlugin': ResponderEventPlugin,
67
- 'ReactNativeBridgeEventPlugin': ReactNativeBridgeEventPlugin,
68
- });
69
-
35
ReactUpdates.injection.injectReconcileTransaction(
36
ReactNativeComponentEnvironment.ReactReconcileTransaction
37
);
src/test/ReactShallowRenderer.js
+4
-2
@@ -13,7 +13,8 @@
13
'use strict';
14
15
var React = require('React');
16
-var ReactDefaultInjection = require('ReactDefaultInjection');
16
+var ReactDOMInjection = require('ReactDOMInjection');
17
+var ReactDOMStackInjection = require('ReactDOMStackInjection');
18
var ReactCompositeComponent = require('ReactCompositeComponent');
19
var ReactReconciler = require('ReactReconciler');
20
var ReactUpdates = require('ReactUpdates');
@@ -84,7 +85,8 @@ class ReactShallowRenderer {
85
// Ensure we've done the default injections. This might not be true in the
86
// case of a simple test that only requires React and the TestUtils in
87
// conjunction with an inline-requires transform.
87
- ReactDefaultInjection.inject();
88
+ ReactDOMInjection.inject();
89
+ ReactDOMStackInjection.inject();
90
91
invariant(
92
React.isValidElement(element),