diff --git a/src/browser/ReactDefaultInjection.js b/src/browser/ReactDefaultInjection.js index 773d8c015d..fe3ac4441d 100644 --- a/src/browser/ReactDefaultInjection.js +++ b/src/browser/ReactDefaultInjection.js @@ -18,8 +18,19 @@ "use strict"; +var ReactInjection = require('ReactInjection'); + var ExecutionEnvironment = require('ExecutionEnvironment'); +var DefaultDOMPropertyConfig = require('DefaultDOMPropertyConfig'); + +var ChangeEventPlugin = require('ChangeEventPlugin'); +var ClientReactRootIndex = require('ClientReactRootIndex'); +var CompositionEventPlugin = require('CompositionEventPlugin'); +var DefaultEventPluginOrder = require('DefaultEventPluginOrder'); +var EnterLeaveEventPlugin = require('EnterLeaveEventPlugin'); +var MobileSafariClickEventPlugin = require('MobileSafariClickEventPlugin'); +var ReactEventTopLevelCallback = require('ReactEventTopLevelCallback'); var ReactDOM = require('ReactDOM'); var ReactDOMButton = require('ReactDOMButton'); var ReactDOMForm = require('ReactDOMForm'); @@ -28,46 +39,33 @@ var ReactDOMInput = require('ReactDOMInput'); var ReactDOMOption = require('ReactDOMOption'); var ReactDOMSelect = require('ReactDOMSelect'); var ReactDOMTextarea = require('ReactDOMTextarea'); -var ReactEventEmitter = require('ReactEventEmitter'); -var ReactEventTopLevelCallback = require('ReactEventTopLevelCallback'); -var ReactMount = require('ReactMount'); -var ReactPerf = require('ReactPerf'); -var ReactRootIndex = require('ReactRootIndex'); - -var DefaultDOMPropertyConfig = require('DefaultDOMPropertyConfig'); -var DOMProperty = require('DOMProperty'); - -var ChangeEventPlugin = require('ChangeEventPlugin'); -var ClientReactRootIndex = require('ClientReactRootIndex'); -var CompositionEventPlugin = require('CompositionEventPlugin'); -var DefaultEventPluginOrder = require('DefaultEventPluginOrder'); -var EnterLeaveEventPlugin = require('EnterLeaveEventPlugin'); -var EventPluginHub = require('EventPluginHub'); -var MobileSafariClickEventPlugin = require('MobileSafariClickEventPlugin'); var ReactInstanceHandles = require('ReactInstanceHandles'); +var ReactMount = require('ReactMount'); var SelectEventPlugin = require('SelectEventPlugin'); var ServerReactRootIndex = require('ServerReactRootIndex'); var SimpleEventPlugin = require('SimpleEventPlugin'); var ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy'); -var ReactUpdates = require('ReactUpdates'); var createFullPageComponent = require('createFullPageComponent'); function inject() { - ReactEventEmitter.TopLevelCallbackCreator = ReactEventTopLevelCallback; + ReactInjection.EventEmitter.injectTopLevelCallbackCreator( + ReactEventTopLevelCallback + ); + /** * Inject modules for resolving DOM hierarchy and plugin ordering. */ - EventPluginHub.injection.injectEventPluginOrder(DefaultEventPluginOrder); - EventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles); - EventPluginHub.injection.injectMount(ReactMount); + ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder); + ReactInjection.EventPluginHub.injectInstanceHandle(ReactInstanceHandles); + ReactInjection.EventPluginHub.injectMount(ReactMount); /** * Some important event plugins included by default (without having to require * them). */ - EventPluginHub.injection.injectEventPluginsByName({ + ReactInjection.EventPluginHub.injectEventPluginsByName({ SimpleEventPlugin: SimpleEventPlugin, EnterLeaveEventPlugin: EnterLeaveEventPlugin, ChangeEventPlugin: ChangeEventPlugin, @@ -76,7 +74,7 @@ function inject() { SelectEventPlugin: SelectEventPlugin }); - ReactDOM.injection.injectComponentClasses({ + ReactInjection.DOM.injectComponentClasses({ button: ReactDOMButton, form: ReactDOMForm, img: ReactDOMImg, @@ -91,17 +89,17 @@ function inject() { body: createFullPageComponent(ReactDOM.body) }); - DOMProperty.injection.injectDOMPropertyConfig(DefaultDOMPropertyConfig); + ReactInjection.DOMProperty.injectDOMPropertyConfig(DefaultDOMPropertyConfig); if (__DEV__) { - ReactPerf.injection.injectMeasure(require('ReactDefaultPerf').measure); + ReactInjection.Perf.injectMeasure(require('ReactDefaultPerf').measure); } - ReactUpdates.injection.injectBatchingStrategy( + ReactInjection.Updates.injectBatchingStrategy( ReactDefaultBatchingStrategy ); - ReactRootIndex.injection.injectCreateReactRootIndex( + ReactInjection.RootIndex.injectCreateReactRootIndex( ExecutionEnvironment.canUseDOM ? ClientReactRootIndex.createReactRootIndex : ServerReactRootIndex.createReactRootIndex diff --git a/src/browser/ReactEventEmitter.js b/src/browser/ReactEventEmitter.js index e365a8a0b7..c8c3b9c18e 100644 --- a/src/browser/ReactEventEmitter.js +++ b/src/browser/ReactEventEmitter.js @@ -188,6 +188,15 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, { */ TopLevelCallbackCreator: null, + injection: { + /** + * @param {function} TopLevelCallbackCreator + */ + injectTopLevelCallbackCreator: function(TopLevelCallbackCreator) { + ReactEventEmitter.TopLevelCallbackCreator = TopLevelCallbackCreator; + } + }, + /** * Sets whether or not any created callbacks should be enabled. * diff --git a/src/core/ReactInjection.js b/src/core/ReactInjection.js new file mode 100644 index 0000000000..fd9dd082a7 --- /dev/null +++ b/src/core/ReactInjection.js @@ -0,0 +1,39 @@ +/** + * Copyright 2013 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @providesModule ReactInjection + */ + +"use strict"; + +var DOMProperty = require('DOMProperty'); +var EventPluginHub = require('EventPluginHub'); +var ReactDOM = require('ReactDOM'); +var ReactEventEmitter = require('ReactEventEmitter'); +var ReactPerf = require('ReactPerf'); +var ReactRootIndex = require('ReactRootIndex'); +var ReactUpdates = require('ReactUpdates'); + +var ReactInjection = { + DOMProperty: DOMProperty.injection, + EventPluginHub: EventPluginHub.injection, + DOM: ReactDOM.injection, + EventEmitter: ReactEventEmitter.injection, + Perf: ReactPerf.injection, + RootIndex: ReactRootIndex.injection, + Updates: ReactUpdates.injection +}; + +module.exports = ReactInjection;