From a825380840c37e9ad5e03a46a8a0389d28dfd0d6 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Thu, 4 Jun 2015 15:47:35 -0700 Subject: [PATCH] Convert form, iframe, img to not use wrappers Test Plan: Tested manually that rendering an `` triggers its onLoad handler. --- .../client/wrappers/LocalEventTrapMixin.js | 54 -------------- .../dom/client/wrappers/ReactDOMForm.js | 44 ------------ .../dom/client/wrappers/ReactDOMIframe.js | 43 ----------- .../dom/client/wrappers/ReactDOMImg.js | 44 ------------ .../__tests__/LocalEventTrapMixin-test.js | 46 ------------ src/renderers/dom/shared/ReactDOMComponent.js | 71 +++++++++++++++++++ .../dom/shared/ReactDefaultInjection.js | 6 -- 7 files changed, 71 insertions(+), 237 deletions(-) delete mode 100644 src/renderers/dom/client/wrappers/LocalEventTrapMixin.js delete mode 100644 src/renderers/dom/client/wrappers/ReactDOMForm.js delete mode 100644 src/renderers/dom/client/wrappers/ReactDOMIframe.js delete mode 100644 src/renderers/dom/client/wrappers/ReactDOMImg.js delete mode 100644 src/renderers/dom/client/wrappers/__tests__/LocalEventTrapMixin-test.js diff --git a/src/renderers/dom/client/wrappers/LocalEventTrapMixin.js b/src/renderers/dom/client/wrappers/LocalEventTrapMixin.js deleted file mode 100644 index 8cc49ca1fa..0000000000 --- a/src/renderers/dom/client/wrappers/LocalEventTrapMixin.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Copyright 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule LocalEventTrapMixin - */ - -'use strict'; - -var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter'); - -var accumulateInto = require('accumulateInto'); -var findDOMNode = require('findDOMNode'); -var forEachAccumulated = require('forEachAccumulated'); -var invariant = require('invariant'); - -function remove(event) { - event.remove(); -} - -var LocalEventTrapMixin = { - trapBubbledEvent(topLevelType, handlerBaseName) { - invariant(this.isMounted(), 'Must be mounted to trap events'); - // If a component renders to null or if another component fatals and causes - // the state of the tree to be corrupted, `node` here can be null. - var node = findDOMNode(this); - invariant( - node, - 'LocalEventTrapMixin.trapBubbledEvent(...): Requires node to be rendered.' - ); - var listener = ReactBrowserEventEmitter.trapBubbledEvent( - topLevelType, - handlerBaseName, - node - ); - this._localEventListeners = - accumulateInto(this._localEventListeners, listener); - }, - - // trapCapturedEvent would look nearly identical. We don't implement that - // method because it isn't currently needed. - - componentWillUnmount() { - if (this._localEventListeners) { - forEachAccumulated(this._localEventListeners, remove); - } - }, -}; - -module.exports = LocalEventTrapMixin; diff --git a/src/renderers/dom/client/wrappers/ReactDOMForm.js b/src/renderers/dom/client/wrappers/ReactDOMForm.js deleted file mode 100644 index 3a1237527e..0000000000 --- a/src/renderers/dom/client/wrappers/ReactDOMForm.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule ReactDOMForm - */ - -'use strict'; - -var EventConstants = require('EventConstants'); -var LocalEventTrapMixin = require('LocalEventTrapMixin'); -var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin'); -var ReactClass = require('ReactClass'); -var ReactElement = require('ReactElement'); - -var form = ReactElement.createFactory('form'); - -/** - * Since onSubmit doesn't bubble OR capture on the top level in IE8, we need - * to capture it on the
element itself. There are lots of hacks we could - * do to accomplish this, but the most reliable is to make a - * composite component and use `componentDidMount` to attach the event handlers. - */ -var ReactDOMForm = ReactClass.createClass({ - displayName: 'ReactDOMForm', - tagName: 'FORM', - - mixins: [ReactBrowserComponentMixin, LocalEventTrapMixin], - - render: function() { - return form(this.props); - }, - - componentDidMount: function() { - this.trapBubbledEvent(EventConstants.topLevelTypes.topReset, 'reset'); - this.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit, 'submit'); - }, -}); - -module.exports = ReactDOMForm; diff --git a/src/renderers/dom/client/wrappers/ReactDOMIframe.js b/src/renderers/dom/client/wrappers/ReactDOMIframe.js deleted file mode 100644 index 0fd5619964..0000000000 --- a/src/renderers/dom/client/wrappers/ReactDOMIframe.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule ReactDOMIframe - */ - -'use strict'; - -var EventConstants = require('EventConstants'); -var LocalEventTrapMixin = require('LocalEventTrapMixin'); -var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin'); -var ReactClass = require('ReactClass'); -var ReactElement = require('ReactElement'); - -var iframe = ReactElement.createFactory('iframe'); - -/** - * Since onLoad doesn't bubble OR capture on the top level in IE8, we need to - * capture it on the