diff --git a/src/addons/transitions/ReactCSSTransitionGroup.js b/src/addons/transitions/ReactCSSTransitionGroup.js index c54d9a7aeb..5b6ce5607c 100644 --- a/src/addons/transitions/ReactCSSTransitionGroup.js +++ b/src/addons/transitions/ReactCSSTransitionGroup.js @@ -28,8 +28,6 @@ var ReactCSSTransitionGroupChild = React.createFactory( require('ReactCSSTransitionGroupChild') ); -var merge = require('merge'); - var ReactCSSTransitionGroup = React.createClass({ displayName: 'ReactCSSTransitionGroup', @@ -63,7 +61,7 @@ var ReactCSSTransitionGroup = React.createClass({ render: function() { return ( ReactTransitionGroup( - merge(this.props, {childFactory: this._wrapChild}) + Object.assign({}, this.props, {childFactory: this._wrapChild}) ) ); } diff --git a/src/addons/transitions/ReactTransitionGroup.js b/src/addons/transitions/ReactTransitionGroup.js index 174d389676..1203abb703 100644 --- a/src/addons/transitions/ReactTransitionGroup.js +++ b/src/addons/transitions/ReactTransitionGroup.js @@ -23,7 +23,6 @@ var ReactTransitionChildMapping = require('ReactTransitionChildMapping'); var cloneWithProps = require('cloneWithProps'); var emptyFunction = require('emptyFunction'); -var merge = require('merge'); var ReactTransitionGroup = React.createClass({ displayName: 'ReactTransitionGroup', @@ -159,7 +158,7 @@ var ReactTransitionGroup = React.createClass({ // This entered again before it fully left. Add it again. this.performEnter(key); } else { - var newChildren = merge(this.state.children); + var newChildren = Object.assign({}, this.state.children); delete newChildren[key]; this.setState({children: newChildren}); } diff --git a/src/addons/update.js b/src/addons/update.js index 43ec8dd53f..c55f4b13dd 100644 --- a/src/addons/update.js +++ b/src/addons/update.js @@ -18,7 +18,6 @@ "use strict"; -var copyProperties = require('copyProperties'); var keyOf = require('keyOf'); var invariant = require('invariant'); @@ -26,7 +25,7 @@ function shallowCopy(x) { if (Array.isArray(x)) { return x.concat(); } else if (x && typeof x === 'object') { - return copyProperties(new x.constructor(), x); + return Object.assign(new x.constructor(), x); } else { return x; } @@ -106,7 +105,7 @@ function update(value, spec) { COMMAND_MERGE, nextValue ); - copyProperties(nextValue, spec[COMMAND_MERGE]); + Object.assign(nextValue, spec[COMMAND_MERGE]); } if (spec.hasOwnProperty(COMMAND_PUSH)) { diff --git a/src/browser/ReactBrowserEventEmitter.js b/src/browser/ReactBrowserEventEmitter.js index 677b076986..62d65347b7 100644 --- a/src/browser/ReactBrowserEventEmitter.js +++ b/src/browser/ReactBrowserEventEmitter.js @@ -26,7 +26,6 @@ var ReactEventEmitterMixin = require('ReactEventEmitterMixin'); var ViewportMetrics = require('ViewportMetrics'); var isEventSupported = require('isEventSupported'); -var merge = require('merge'); /** * Summary of `ReactBrowserEventEmitter` event handling: @@ -155,7 +154,7 @@ function getListeningForDocument(mountAt) { * * @internal */ -var ReactBrowserEventEmitter = merge(ReactEventEmitterMixin, { +var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, { /** * Injectable event backend diff --git a/src/browser/ReactPutListenerQueue.js b/src/browser/ReactPutListenerQueue.js index 0e2500e499..31256aaaaf 100644 --- a/src/browser/ReactPutListenerQueue.js +++ b/src/browser/ReactPutListenerQueue.js @@ -21,13 +21,11 @@ var PooledClass = require('PooledClass'); var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter'); -var mixInto = require('mixInto'); - function ReactPutListenerQueue() { this.listenersToPut = []; } -mixInto(ReactPutListenerQueue, { +Object.assign(ReactPutListenerQueue.prototype, { enqueuePutListener: function(rootNodeID, propKey, propValue) { this.listenersToPut.push({ rootNodeID: rootNodeID, diff --git a/src/browser/ReactReconcileTransaction.js b/src/browser/ReactReconcileTransaction.js index e4ac1ffa02..42c88cbca2 100644 --- a/src/browser/ReactReconcileTransaction.js +++ b/src/browser/ReactReconcileTransaction.js @@ -26,8 +26,6 @@ var ReactInputSelection = require('ReactInputSelection'); var ReactPutListenerQueue = require('ReactPutListenerQueue'); var Transaction = require('Transaction'); -var mixInto = require('mixInto'); - /** * Ensures that, when possible, the selection range (currently selected text * input) is not disturbed by performing the transaction. @@ -174,8 +172,7 @@ var Mixin = { }; -mixInto(ReactReconcileTransaction, Transaction.Mixin); -mixInto(ReactReconcileTransaction, Mixin); +Object.assign(ReactReconcileTransaction.prototype, Transaction.Mixin, Mixin); PooledClass.addPoolingTo(ReactReconcileTransaction); diff --git a/src/browser/ReactTextComponent.js b/src/browser/ReactTextComponent.js index 25cdd6e1bf..aa2819fff6 100644 --- a/src/browser/ReactTextComponent.js +++ b/src/browser/ReactTextComponent.js @@ -25,7 +25,6 @@ var ReactComponent = require('ReactComponent'); var ReactElement = require('ReactElement'); var escapeTextForBrowser = require('escapeTextForBrowser'); -var mixInto = require('mixInto'); /** * Text nodes violate a couple assumptions that React makes about components: @@ -46,8 +45,7 @@ var ReactTextComponent = function(props) { // This constructor and it's argument is currently used by mocks. }; -mixInto(ReactTextComponent, ReactComponent.Mixin); -mixInto(ReactTextComponent, { +Object.assign(ReactTextComponent.prototype, ReactComponent.Mixin, { /** * Creates the markup for this text node. This node is not intended to have diff --git a/src/browser/server/ReactServerRenderingTransaction.js b/src/browser/server/ReactServerRenderingTransaction.js index 2251f82f96..7b7d8f86b6 100644 --- a/src/browser/server/ReactServerRenderingTransaction.js +++ b/src/browser/server/ReactServerRenderingTransaction.js @@ -25,7 +25,6 @@ var ReactPutListenerQueue = require('ReactPutListenerQueue'); var Transaction = require('Transaction'); var emptyFunction = require('emptyFunction'); -var mixInto = require('mixInto'); /** * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks @@ -107,8 +106,11 @@ var Mixin = { }; -mixInto(ReactServerRenderingTransaction, Transaction.Mixin); -mixInto(ReactServerRenderingTransaction, Mixin); +Object.assign( + ReactServerRenderingTransaction.prototype, + Transaction.Mixin, + Mixin +); PooledClass.addPoolingTo(ReactServerRenderingTransaction); diff --git a/src/browser/syntheticEvents/SyntheticEvent.js b/src/browser/syntheticEvents/SyntheticEvent.js index f6012d59cf..ae3fb6c54b 100644 --- a/src/browser/syntheticEvents/SyntheticEvent.js +++ b/src/browser/syntheticEvents/SyntheticEvent.js @@ -23,8 +23,6 @@ var PooledClass = require('PooledClass'); var emptyFunction = require('emptyFunction'); var getEventTarget = require('getEventTarget'); -var merge = require('merge'); -var mergeInto = require('mergeInto'); /** * @interface Event @@ -91,7 +89,7 @@ function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) { this.isPropagationStopped = emptyFunction.thatReturnsFalse; } -mergeInto(SyntheticEvent.prototype, { +Object.assign(SyntheticEvent.prototype, { preventDefault: function() { this.defaultPrevented = true; @@ -149,11 +147,11 @@ SyntheticEvent.augmentClass = function(Class, Interface) { var Super = this; var prototype = Object.create(Super.prototype); - mergeInto(prototype, Class.prototype); + Object.assign(prototype, Class.prototype); Class.prototype = prototype; Class.prototype.constructor = Class; - Class.Interface = merge(Super.Interface, Interface); + Class.Interface = Object.assign({}, Super.Interface, Interface); Class.augmentClass = Super.augmentClass; PooledClass.addPoolingTo(Class, PooledClass.threeArgumentPooler); diff --git a/src/browser/ui/ReactDOMComponent.js b/src/browser/ui/ReactDOMComponent.js index cbbe776d3d..a7536c71c7 100644 --- a/src/browser/ui/ReactDOMComponent.js +++ b/src/browser/ui/ReactDOMComponent.js @@ -33,8 +33,6 @@ var escapeTextForBrowser = require('escapeTextForBrowser'); var invariant = require('invariant'); var isEventSupported = require('isEventSupported'); var keyOf = require('keyOf'); -var merge = require('merge'); -var mixInto = require('mixInto'); var monitorCodeUse = require('monitorCodeUse'); var deleteListener = ReactBrowserEventEmitter.deleteListener; @@ -207,7 +205,7 @@ ReactDOMComponent.Mixin = { } else { if (propKey === STYLE) { if (propValue) { - propValue = props.style = merge(props.style); + propValue = props.style = Object.assign({}, props.style); } propValue = CSSPropertyOperations.createMarkupForStyles(propValue); } @@ -356,7 +354,7 @@ ReactDOMComponent.Mixin = { } if (propKey === STYLE) { if (nextProp) { - nextProp = nextProps.style = merge(nextProp); + nextProp = nextProps.style = Object.assign({}, nextProp); } if (lastProp) { // Unset styles on `lastProp` but not on `nextProp`. @@ -465,9 +463,12 @@ ReactDOMComponent.Mixin = { }; -mixInto(ReactDOMComponent, ReactComponent.Mixin); -mixInto(ReactDOMComponent, ReactDOMComponent.Mixin); -mixInto(ReactDOMComponent, ReactMultiChild.Mixin); -mixInto(ReactDOMComponent, ReactBrowserComponentMixin); +Object.assign( + ReactDOMComponent.prototype, + ReactComponent.Mixin, + ReactDOMComponent.Mixin, + ReactMultiChild.Mixin, + ReactBrowserComponentMixin +); module.exports = ReactDOMComponent; diff --git a/src/browser/ui/ReactEventListener.js b/src/browser/ui/ReactEventListener.js index 5dc6683bb7..c032b5483e 100644 --- a/src/browser/ui/ReactEventListener.js +++ b/src/browser/ui/ReactEventListener.js @@ -28,7 +28,6 @@ var ReactUpdates = require('ReactUpdates'); var getEventTarget = require('getEventTarget'); var getUnboundedScrollPosition = require('getUnboundedScrollPosition'); -var mixInto = require('mixInto'); /** * Finds the parent React component of `node`. @@ -54,7 +53,7 @@ function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) { this.nativeEvent = nativeEvent; this.ancestors = []; } -mixInto(TopLevelCallbackBookKeeping, { +Object.assign(TopLevelCallbackBookKeeping.prototype, { destructor: function() { this.topLevelType = null; this.nativeEvent = null; diff --git a/src/browser/ui/__tests__/ReactDOMComponent-test.js b/src/browser/ui/__tests__/ReactDOMComponent-test.js index 3da6798f7a..7e5274c9f7 100644 --- a/src/browser/ui/__tests__/ReactDOMComponent-test.js +++ b/src/browser/ui/__tests__/ReactDOMComponent-test.js @@ -224,7 +224,6 @@ describe('ReactDOMComponent', function() { var ReactDefaultInjection = require('ReactDefaultInjection'); ReactDefaultInjection.inject(); - var mixInto = require('mixInto'); var ReactDOMComponent = require('ReactDOMComponent'); var ReactReconcileTransaction = require('ReactReconcileTransaction'); @@ -232,7 +231,7 @@ describe('ReactDOMComponent', function() { this.props = initialProps || {}; this._rootNodeID = 'test'; }; - mixInto(NodeStub, ReactDOMComponent.Mixin); + Object.assign(NodeStub.prototype, ReactDOMComponent.Mixin); genMarkup = function(props) { var transaction = new ReactReconcileTransaction(); @@ -275,7 +274,6 @@ describe('ReactDOMComponent', function() { beforeEach(function() { require('mock-modules').dumpCache(); - var mixInto = require('mixInto'); var ReactDOMComponent = require('ReactDOMComponent'); var ReactReconcileTransaction = require('ReactReconcileTransaction'); @@ -283,7 +281,7 @@ describe('ReactDOMComponent', function() { this.props = initialProps || {}; this._rootNodeID = 'test'; }; - mixInto(NodeStub, ReactDOMComponent.Mixin); + Object.assign(NodeStub.prototype, ReactDOMComponent.Mixin); genMarkup = function(props) { var transaction = new ReactReconcileTransaction(); @@ -312,7 +310,6 @@ describe('ReactDOMComponent', function() { beforeEach(function() { require('mock-modules').dumpCache(); - var mixInto = require('mixInto'); var ReactComponent = require('ReactComponent'); var ReactMultiChild = require('ReactMultiChild'); var ReactDOMComponent = require('ReactDOMComponent'); @@ -321,9 +318,9 @@ describe('ReactDOMComponent', function() { var StubNativeComponent = function(element) { ReactComponent.Mixin.construct.call(this, element); }; - mixInto(StubNativeComponent, ReactComponent.Mixin); - mixInto(StubNativeComponent, ReactDOMComponent.Mixin); - mixInto(StubNativeComponent, ReactMultiChild.Mixin); + Object.assign(StubNativeComponent.prototype, ReactComponent.Mixin); + Object.assign(StubNativeComponent.prototype, ReactDOMComponent.Mixin); + Object.assign(StubNativeComponent.prototype, ReactMultiChild.Mixin); mountComponent = function(props) { var transaction = new ReactReconcileTransaction(); diff --git a/src/browser/ui/dom/components/ReactDOMInput.js b/src/browser/ui/dom/components/ReactDOMInput.js index a653d375d6..a6fbc5c530 100644 --- a/src/browser/ui/dom/components/ReactDOMInput.js +++ b/src/browser/ui/dom/components/ReactDOMInput.js @@ -29,7 +29,6 @@ var ReactMount = require('ReactMount'); var ReactUpdates = require('ReactUpdates'); var invariant = require('invariant'); -var merge = require('merge'); // Store a reference to the `ReactDOMComponent`. TODO: use string var input = ReactElement.createFactory(ReactDOM.input.type); @@ -74,7 +73,7 @@ var ReactDOMInput = ReactCompositeComponent.createClass({ render: function() { // Clone `this.props` so we don't mutate the input. - var props = merge(this.props); + var props = Object.assign({}, this.props); props.defaultChecked = null; props.defaultValue = null; diff --git a/src/browser/ui/dom/components/ReactDOMSelect.js b/src/browser/ui/dom/components/ReactDOMSelect.js index dfd5d8d665..b385b2ba59 100644 --- a/src/browser/ui/dom/components/ReactDOMSelect.js +++ b/src/browser/ui/dom/components/ReactDOMSelect.js @@ -26,8 +26,6 @@ var ReactElement = require('ReactElement'); var ReactDOM = require('ReactDOM'); var ReactUpdates = require('ReactUpdates'); -var merge = require('merge'); - // Store a reference to the