UNPKG

3.38 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 ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');
12var BeforeInputEventPlugin = require('./BeforeInputEventPlugin');
13var ChangeEventPlugin = require('./ChangeEventPlugin');
14var DefaultEventPluginOrder = require('./DefaultEventPluginOrder');
15var EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');
16var HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');
17var ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');
18var ReactDOMComponent = require('./ReactDOMComponent');
19var ReactDOMComponentTree = require('./ReactDOMComponentTree');
20var ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');
21var ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');
22var ReactDOMTextComponent = require('./ReactDOMTextComponent');
23var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');
24var ReactEventListener = require('./ReactEventListener');
25var ReactInjection = require('./ReactInjection');
26var ReactReconcileTransaction = require('./ReactReconcileTransaction');
27var SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');
28var SelectEventPlugin = require('./SelectEventPlugin');
29var SimpleEventPlugin = require('./SimpleEventPlugin');
30
31var alreadyInjected = false;
32
33function inject() {
34 if (alreadyInjected) {
35 // TODO: This is currently true because these injections are shared between
36 // the client and the server package. They should be built independently
37 // and not share any injection state. Then this problem will be solved.
38 return;
39 }
40 alreadyInjected = true;
41
42 ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
43
44 /**
45 * Inject modules for resolving DOM hierarchy and plugin ordering.
46 */
47 ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
48 ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
49 ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
50
51 /**
52 * Some important event plugins included by default (without having to require
53 * them).
54 */
55 ReactInjection.EventPluginHub.injectEventPluginsByName({
56 SimpleEventPlugin: SimpleEventPlugin,
57 EnterLeaveEventPlugin: EnterLeaveEventPlugin,
58 ChangeEventPlugin: ChangeEventPlugin,
59 SelectEventPlugin: SelectEventPlugin,
60 BeforeInputEventPlugin: BeforeInputEventPlugin
61 });
62
63 ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);
64
65 ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);
66
67 ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);
68 ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
69 ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
70
71 ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
72 return new ReactDOMEmptyComponent(instantiate);
73 });
74
75 ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
76 ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
77
78 ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
79}
80
81module.exports = {
82 inject: inject
83};
\No newline at end of file