UNPKG

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