diff --git a/examples/demos/Game2048/Game2048.js b/examples/demos/Game2048/Game2048.js
index 7004185d..5d8b7d92 100644
--- a/examples/demos/Game2048/Game2048.js
+++ b/examples/demos/Game2048/Game2048.js
@@ -23,7 +23,7 @@ var {
AppRegistry,
StyleSheet,
Text,
- TouchableBounce,
+ TouchableOpacity,
View,
} = ReactNative;
@@ -139,9 +139,9 @@ class GameEndOverlay extends React.Component {
return (
{message}
-
+
Try Again?
-
+
);
}
diff --git a/package.json b/package.json
index 98ed02ce..3ff0607a 100644
--- a/package.json
+++ b/package.json
@@ -19,11 +19,13 @@
},
"dependencies": {
"animated": "^0.1.3",
+ "array-find-index": "^1.0.2",
"babel-plugin-transform-react-remove-prop-types": "^0.2.11",
"babel-runtime": "^6.11.6",
+ "debounce": "^1.0.0",
+ "deep-assign": "^2.0.0",
"fbjs": "^0.8.4",
"inline-style-prefixer": "^2.0.1",
- "lodash": "^4.15.0",
"react-dom": "~15.3.2",
"react-textarea-autosize": "^4.0.4",
"react-timer-mixin": "^0.13.3",
diff --git a/src/apis/AppRegistry/index.js b/src/apis/AppRegistry/index.js
index bec7bc21..e6374288 100644
--- a/src/apis/AppRegistry/index.js
+++ b/src/apis/AppRegistry/index.js
@@ -9,7 +9,7 @@
import { Component } from 'react';
import invariant from 'fbjs/lib/invariant';
import { unmountComponentAtNode } from 'react/lib/ReactMount';
-import renderApplication, { prerenderApplication } from './renderApplication';
+import renderApplication, { getApplication } from './renderApplication';
const runnables = {};
diff --git a/src/apis/AppRegistry/renderApplication.js b/src/apis/AppRegistry/renderApplication.js
index 37f8391e..e7a6d7b5 100644
--- a/src/apis/AppRegistry/renderApplication.js
+++ b/src/apis/AppRegistry/renderApplication.js
@@ -8,7 +8,6 @@
import invariant from 'fbjs/lib/invariant';
import { render } from 'react/lib/ReactMount';
-import ReactDOMServer from 'react-dom/server';
import ReactNativeApp from './ReactNativeApp';
import StyleSheet from '../../apis/StyleSheet';
import React, { Component } from 'react';
diff --git a/src/apis/AppState/index.js b/src/apis/AppState/index.js
index 2b0d6aec..e69bedd0 100644
--- a/src/apis/AppState/index.js
+++ b/src/apis/AppState/index.js
@@ -1,5 +1,5 @@
import ExecutionEnvironment from 'fbjs/lib/ExecutionEnvironment';
-import findIndex from 'lodash/findIndex';
+import findIndex from 'array-find-index';
import invariant from 'fbjs/lib/invariant';
const EVENT_TYPES = [ 'change' ];
diff --git a/src/apis/AsyncStorage/index.js b/src/apis/AsyncStorage/index.js
index 227c9e80..059aa3f7 100644
--- a/src/apis/AsyncStorage/index.js
+++ b/src/apis/AsyncStorage/index.js
@@ -3,7 +3,7 @@
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*/
-import merge from 'lodash/merge';
+import merge from 'deep-assign';
const mergeLocalStorageItem = (key, value) => {
const oldValue = window.localStorage.getItem(key);
diff --git a/src/apis/Dimensions/index.js b/src/apis/Dimensions/index.js
index 84f01b0c..9cb93363 100644
--- a/src/apis/Dimensions/index.js
+++ b/src/apis/Dimensions/index.js
@@ -6,7 +6,7 @@
* @flow
*/
-import debounce from 'lodash/debounce';
+import debounce from 'debounce';
import ExecutionEnvironment from 'fbjs/lib/ExecutionEnvironment';
import invariant from 'fbjs/lib/invariant';
diff --git a/src/apis/InteractionManager/index.js b/src/apis/InteractionManager/index.js
index 2f3a9cb3..b3d8b271 100644
--- a/src/apis/InteractionManager/index.js
+++ b/src/apis/InteractionManager/index.js
@@ -6,13 +6,12 @@
*/
import invariant from 'fbjs/lib/invariant';
-import keyMirror from 'fbjs/lib/keyMirror';
const InteractionManager = {
- Events: keyMirror({
- interactionStart: true,
- interactionComplete: true
- }),
+ Events: {
+ interactionStart: 'interactionStart',
+ interactionComplete: 'interactionComplete'
+ },
/**
* Schedule a function to run after all interactions have completed.
diff --git a/src/apis/NetInfo/index.js b/src/apis/NetInfo/index.js
index cad84df0..287ee119 100644
--- a/src/apis/NetInfo/index.js
+++ b/src/apis/NetInfo/index.js
@@ -7,7 +7,7 @@
*/
import ExecutionEnvironment from 'fbjs/lib/ExecutionEnvironment';
-import findIndex from 'lodash/findIndex';
+import findIndex from 'array-find-index';
import invariant from 'fbjs/lib/invariant';
const connection = ExecutionEnvironment.canUseDOM && (
diff --git a/src/apis/StyleSheet/__tests__/index-test.js b/src/apis/StyleSheet/__tests__/index-test.js
index 9c714c37..dbffb76f 100644
--- a/src/apis/StyleSheet/__tests__/index-test.js
+++ b/src/apis/StyleSheet/__tests__/index-test.js
@@ -1,9 +1,19 @@
/* eslint-env jasmine, jest */
import { getDefaultStyleSheet } from '../css';
-import isPlainObject from 'lodash/isPlainObject';
import StyleSheet from '..';
+const isPlainObject = (x) => {
+ const toString = Object.prototype.toString;
+ let proto;
+ /* eslint-disable */
+ return (
+ toString.call(x) === '[object Object]' &&
+ (proto = Object.getPrototypeOf(x), proto === null || proto === Object.getPrototypeOf({}))
+ );
+ /* eslint-enable */
+};
+
describe('apis/StyleSheet', () => {
beforeEach(() => {
StyleSheet._reset();
diff --git a/src/apis/StyleSheet/index.js b/src/apis/StyleSheet/index.js
index 50555a73..d88fca43 100644
--- a/src/apis/StyleSheet/index.js
+++ b/src/apis/StyleSheet/index.js
@@ -4,7 +4,6 @@ import ExecutionEnvironment from 'fbjs/lib/ExecutionEnvironment';
import flattenStyle from '../../modules/flattenStyle';
import React from 'react';
import ReactNativePropRegistry from '../../modules/ReactNativePropRegistry';
-import StyleSheetValidation from './StyleSheetValidation';
let styleElement;
let shouldInsertStyleSheet = ExecutionEnvironment.canUseDOM;
@@ -52,7 +51,9 @@ module.exports = {
const result = {};
for (const key in styles) {
- StyleSheetValidation.validateStyle(key, styles);
+ if (process.env.NODE_ENV !== 'production') {
+ require('./StyleSheetValidation').validateStyle(key, styles);
+ }
result[key] = ReactNativePropRegistry.register(styles[key]);
}
return result;
diff --git a/src/components/ListView/index.js b/src/components/ListView/index.js
index fe6f4e35..4843c9a3 100644
--- a/src/components/ListView/index.js
+++ b/src/components/ListView/index.js
@@ -1,13 +1,10 @@
import applyNativeMethods from '../../modules/applyNativeMethods';
import ListViewDataSource from './ListViewDataSource';
import ListViewPropTypes from './ListViewPropTypes';
-import pick from 'lodash/pick';
import ScrollView from '../ScrollView';
import View from '../View';
import React, { Component } from 'react';
-const scrollViewProps = Object.keys(ScrollView.propTypes);
-
class ListView extends Component {
static propTypes = ListViewPropTypes;
@@ -90,9 +87,7 @@ class ListView extends Component {
}
}
- const props = pick(this.props, scrollViewProps);
-
- return React.cloneElement(this.props.renderScrollComponent(props), {
+ return React.cloneElement(this.props.renderScrollComponent(this.props), {
ref: this._setScrollViewRef
}, header, children, footer);
}
diff --git a/src/components/ScrollView/ScrollViewBase.js b/src/components/ScrollView/ScrollViewBase.js
index dbbd5167..367a3305 100644
--- a/src/components/ScrollView/ScrollViewBase.js
+++ b/src/components/ScrollView/ScrollViewBase.js
@@ -6,7 +6,7 @@
* @flow
*/
-import debounce from 'lodash/debounce';
+import debounce from 'debounce';
import View from '../View';
import React, { Component, PropTypes } from 'react';
diff --git a/src/components/Touchable/Touchable.js b/src/components/Touchable/Touchable.js
index 7e2027dd..e0e4cb41 100644
--- a/src/components/Touchable/Touchable.js
+++ b/src/components/Touchable/Touchable.js
@@ -14,7 +14,6 @@
/* @edit start */
const BoundingDimensions = require('./BoundingDimensions');
-const keyMirror = require('fbjs/lib/keyMirror');
const normalizeColor = require('../../modules/normalizeColor');
const Position = require('./Position');
const React = require('react');
@@ -111,16 +110,16 @@ const View = require('../../components/View');
/**
* Touchable states.
*/
-var States = keyMirror({
- NOT_RESPONDER: null, // Not the responder
- RESPONDER_INACTIVE_PRESS_IN: null, // Responder, inactive, in the `PressRect`
- RESPONDER_INACTIVE_PRESS_OUT: null, // Responder, inactive, out of `PressRect`
- RESPONDER_ACTIVE_PRESS_IN: null, // Responder, active, in the `PressRect`
- RESPONDER_ACTIVE_PRESS_OUT: null, // Responder, active, out of `PressRect`
- RESPONDER_ACTIVE_LONG_PRESS_IN: null, // Responder, active, in the `PressRect`, after long press threshold
- RESPONDER_ACTIVE_LONG_PRESS_OUT: null, // Responder, active, out of `PressRect`, after long press threshold
- ERROR: null
-});
+var States = {
+ NOT_RESPONDER: 'NOT_RESPONDER', // Not the responder
+ RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN', // Responder, inactive, in the `PressRect`
+ RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT', // Responder, inactive, out of `PressRect`
+ RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN', // Responder, active, in the `PressRect`
+ RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT', // Responder, active, out of `PressRect`
+ RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN', // Responder, active, in the `PressRect`, after long press threshold
+ RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT', // Responder, active, out of `PressRect`, after long press threshold
+ ERROR: 'ERROR'
+};
/**
* Quick lookup map for states that are considered to be "active"
@@ -147,15 +146,15 @@ var IsLongPressingIn = {
/**
* Inputs to the state machine.
*/
-var Signals = keyMirror({
- DELAY: null,
- RESPONDER_GRANT: null,
- RESPONDER_RELEASE: null,
- RESPONDER_TERMINATED: null,
- ENTER_PRESS_RECT: null,
- LEAVE_PRESS_RECT: null,
- LONG_PRESS_DETECTED: null,
-});
+var Signals = {
+ DELAY: 'DELAY',
+ RESPONDER_GRANT: 'RESPONDER_GRANT',
+ RESPONDER_RELEASE: 'RESPONDER_RELEASE',
+ RESPONDER_TERMINATED: 'RESPONDER_TERMINATED',
+ ENTER_PRESS_RECT: 'ENTER_PRESS_RECT',
+ LEAVE_PRESS_RECT: 'LEAVE_PRESS_RECT',
+ LONG_PRESS_DETECTED: 'LONG_PRESS_DETECTED',
+};
/**
* Mapping from States x Signals => States
diff --git a/src/components/Touchable/TouchableBounce.js b/src/components/Touchable/TouchableBounce.js
deleted file mode 100644
index ee7f2e53..00000000
--- a/src/components/Touchable/TouchableBounce.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/* eslint-disable */
-/**
- * Copyright (c) 2015-present, 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 TouchableBounce
- * @flow
- */
-'use strict';
-
-var Animated = require('../../apis/Animated');
-var EdgeInsetsPropType = require('../../propTypes/EdgeInsetsPropType');
-var NativeMethodsMixin = require('../../modules/NativeMethodsMixin');
-var React = require('react');
-var StyleSheet = require('../../apis/StyleSheet');
-var Touchable = require('./Touchable');
-
-type Event = Object;
-
-type State = {
- animationID: ?number;
- scale: Animated.Value;
-};
-
-var PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};
-
-/**
- * Example of using the `TouchableMixin` to play well with other responder
- * locking views including `ScrollView`. `TouchableMixin` provides touchable
- * hooks (`this.touchableHandle*`) that we forward events to. In turn,
- * `TouchableMixin` expects us to implement some abstract methods to handle
- * interesting interactions such as `handleTouchablePress`.
- */
-var TouchableBounce = React.createClass({
- mixins: [Touchable.Mixin, NativeMethodsMixin],
-
- propTypes: {
- onPress: React.PropTypes.func,
- onPressIn: React.PropTypes.func,
- onPressOut: React.PropTypes.func,
- // The function passed takes a callback to start the animation which should
- // be run after this onPress handler is done. You can use this (for example)
- // to update UI before starting the animation.
- onPressWithCompletion: React.PropTypes.func,
- // the function passed is called after the animation is complete
- onPressAnimationComplete: React.PropTypes.func,
- /**
- * When the scroll view is disabled, this defines how far your touch may
- * move off of the button, before deactivating the button. Once deactivated,
- * try moving it back and you'll see that the button is once again
- * reactivated! Move it back and forth several times while the scroll view
- * is disabled. Ensure you pass in a constant to reduce memory allocations.
- */
- pressRetentionOffset: EdgeInsetsPropType,
- /**
- * This defines how far your touch can start away from the button. This is
- * added to `pressRetentionOffset` when moving off of the button.
- * ** NOTE **
- * The touch area never extends past the parent view bounds and the Z-index
- * of sibling views always takes precedence if a touch hits two overlapping
- * views.
- */
- hitSlop: EdgeInsetsPropType,
- },
-
- getInitialState: function(): State {
- return {
- ...this.touchableGetInitialState(),
- scale: new Animated.Value(1),
- };
- },
-
- bounceTo: function(
- value: number,
- velocity: number,
- bounciness: number,
- callback?: ?Function
- ) {
- Animated.spring(this.state.scale, {
- toValue: value,
- velocity,
- bounciness,
- }).start(callback);
- },
-
- /**
- * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are
- * defined on your component.
- */
- touchableHandleActivePressIn: function(e: Event) {
- this.bounceTo(0.93, 0.1, 0);
- this.props.onPressIn && this.props.onPressIn(e);
- },
-
- touchableHandleActivePressOut: function(e: Event) {
- this.bounceTo(1, 0.4, 0);
- this.props.onPressOut && this.props.onPressOut(e);
- },
-
- touchableHandlePress: function(e: Event) {
- var onPressWithCompletion = this.props.onPressWithCompletion;
- if (onPressWithCompletion) {
- onPressWithCompletion(() => {
- this.state.scale.setValue(0.93);
- this.bounceTo(1, 10, 10, this.props.onPressAnimationComplete);
- });
- return;
- }
-
- this.bounceTo(1, 10, 10, this.props.onPressAnimationComplete);
- this.props.onPress && this.props.onPress(e);
- },
-
- touchableGetPressRectOffset: function(): typeof PRESS_RETENTION_OFFSET {
- return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;
- },
-
- touchableGetHitSlop: function(): ?Object {
- return this.props.hitSlop;
- },
-
- touchableGetHighlightDelayMS: function(): number {
- return 0;
- },
-
- render: function(): ReactElement {
- const scaleTransform = [{ scale: this.state.scale }];
- const propsTransform = this.props.style.transform;
- const transform = propsTransform && Array.isArray(propsTransform) ? propsTransform.concat(scaleTransform) : scaleTransform;
-
- return (
-
- {this.props.children}
-
- );
- }
-});
-
-const styles = StyleSheet.create({
- root: {
- cursor: 'pointer',
- userSelect: 'none'
- }
-});
-
-module.exports = TouchableBounce;
diff --git a/src/components/Touchable/TouchableHighlight.js b/src/components/Touchable/TouchableHighlight.js
index 49605cfe..3281f5c7 100644
--- a/src/components/Touchable/TouchableHighlight.js
+++ b/src/components/Touchable/TouchableHighlight.js
@@ -26,7 +26,6 @@ var View = require('../View');
var ensureComponentIsNative = require('./ensureComponentIsNative');
var ensurePositiveDelayProps = require('./ensurePositiveDelayProps');
var keyOf = require('fbjs/lib/keyOf');
-var merge = require('../../modules/merge');
type Event = Object;
@@ -115,7 +114,7 @@ var TouchableHighlight = React.createClass({
},
getInitialState: function() {
- return merge(this.touchableGetInitialState(), this.computeSyntheticState(this.props))
+ return { ...this.touchableGetInitialState(), ...this.computeSyntheticState(this.props) }
},
componentDidMount: function() {
diff --git a/src/index.js b/src/index.js
index a3844248..efe835f7 100644
--- a/src/index.js
+++ b/src/index.js
@@ -28,7 +28,6 @@ import Switch from './components/Switch';
import Text from './components/Text';
import TextInput from './components/TextInput';
import Touchable from './components/Touchable/Touchable';
-import TouchableBounce from './components/Touchable/TouchableBounce';
import TouchableHighlight from './components/Touchable/TouchableHighlight';
import TouchableOpacity from './components/Touchable/TouchableOpacity';
import TouchableWithoutFeedback from './components/Touchable/TouchableWithoutFeedback';
@@ -76,7 +75,6 @@ const ReactNative = {
Text,
TextInput,
Touchable,
- TouchableBounce,
TouchableHighlight,
TouchableOpacity,
TouchableWithoutFeedback,
diff --git a/src/modules/merge/index.js b/src/modules/merge/index.js
deleted file mode 100644
index f1a268f3..00000000
--- a/src/modules/merge/index.js
+++ /dev/null
@@ -1,222 +0,0 @@
-/* eslint-disable */
-/**
- * @generated SignedSource<>
- *
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- * !! This file is a check-in of a static_upstream project! !!
- * !! !!
- * !! You should not modify this file directly. Instead: !!
- * !! 1) Use `fjs use-upstream` to temporarily replace this with !!
- * !! the latest version from upstream. !!
- * !! 2) Make your changes, test them, etc. !!
- * !! 3) Use `fjs push-upstream` to copy your changes back to !!
- * !! static_upstream. !!
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- *
- * Copyright 2013-2014 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 mergeHelpers
- *
- * requiresPolyfills: Array.isArray
- */
-
-"use strict";
-
-var invariant = require('fbjs/lib/invariant');
-var keyMirror = require('fbjs/lib/keyMirror');
-
-/**
- * Maximum number of levels to traverse. Will catch circular structures.
- * @const
- */
-var MAX_MERGE_DEPTH = 36;
-
-/**
- * We won't worry about edge cases like new String('x') or new Boolean(true).
- * Functions are considered terminals, and arrays are not.
- * @param {*} o The item/object/value to test.
- * @return {boolean} true iff the argument is a terminal.
- */
-var isTerminal = function(o) {
- return typeof o !== 'object' || o === null;
-};
-
-var mergeHelpers = {
-
- MAX_MERGE_DEPTH: MAX_MERGE_DEPTH,
-
- isTerminal: isTerminal,
-
- /**
- * Converts null/undefined values into empty object.
- *
- * @param {?Object=} arg Argument to be normalized (nullable optional)
- * @return {!Object}
- */
- normalizeMergeArg: function(arg) {
- return arg === undefined || arg === null ? {} : arg;
- },
-
- /**
- * If merging Arrays, a merge strategy *must* be supplied. If not, it is
- * likely the caller's fault. If this function is ever called with anything
- * but `one` and `two` being `Array`s, it is the fault of the merge utilities.
- *
- * @param {*} one Array to merge into.
- * @param {*} two Array to merge from.
- */
- checkMergeArrayArgs: function(one, two) {
- invariant(
- Array.isArray(one) && Array.isArray(two),
- 'Tried to merge arrays, instead got %s and %s.',
- one,
- two
- );
- },
-
- /**
- * @param {*} one Object to merge into.
- * @param {*} two Object to merge from.
- */
- checkMergeObjectArgs: function(one, two) {
- mergeHelpers.checkMergeObjectArg(one);
- mergeHelpers.checkMergeObjectArg(two);
- },
-
- /**
- * @param {*} arg
- */
- checkMergeObjectArg: function(arg) {
- invariant(
- !isTerminal(arg) && !Array.isArray(arg),
- 'Tried to merge an object, instead got %s.',
- arg
- );
- },
-
- /**
- * @param {*} arg
- */
- checkMergeIntoObjectArg: function(arg) {
- invariant(
- (!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),
- 'Tried to merge into an object, instead got %s.',
- arg
- );
- },
-
- /**
- * Checks that a merge was not given a circular object or an object that had
- * too great of depth.
- *
- * @param {number} Level of recursion to validate against maximum.
- */
- checkMergeLevel: function(level) {
- invariant(
- level < MAX_MERGE_DEPTH,
- 'Maximum deep merge depth exceeded. You may be attempting to merge ' +
- 'circular structures in an unsupported way.'
- );
- },
-
- /**
- * Checks that the supplied merge strategy is valid.
- *
- * @param {string} Array merge strategy.
- */
- checkArrayStrategy: function(strategy) {
- invariant(
- strategy === undefined || strategy in mergeHelpers.ArrayStrategies,
- 'You must provide an array strategy to deep merge functions to ' +
- 'instruct the deep merge how to resolve merging two arrays.'
- );
- },
-
- /**
- * Set of possible behaviors of merge algorithms when encountering two Arrays
- * that must be merged together.
- * - `clobber`: The left `Array` is ignored.
- * - `indexByIndex`: The result is achieved by recursively deep merging at
- * each index. (not yet supported.)
- */
- ArrayStrategies: keyMirror({
- Clobber: true,
- IndexByIndex: true
- })
-
-};
-
-/**
- * @generated SignedSource<>
- *
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- * !! This file is a check-in of a static_upstream project! !!
- * !! !!
- * !! You should not modify this file directly. Instead: !!
- * !! 1) Use `fjs use-upstream` to temporarily replace this with !!
- * !! the latest version from upstream. !!
- * !! 2) Make your changes, test them, etc. !!
- * !! 3) Use `fjs push-upstream` to copy your changes back to !!
- * !! static_upstream. !!
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- *
- * Copyright 2013-2014 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 mergeInto
- * @typechecks static-only
- */
-
-var checkMergeObjectArg = mergeHelpers.checkMergeObjectArg;
-var checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg;
-
-/**
- * Shallow merges two structures by mutating the first parameter.
- *
- * @param {object|function} one Object to be merged into.
- * @param {?object} two Optional object with properties to merge from.
- */
-function mergeInto(one, two) {
- checkMergeIntoObjectArg(one);
- if (two != null) {
- checkMergeObjectArg(two);
- for (var key in two) {
- if (!two.hasOwnProperty(key)) {
- continue;
- }
- one[key] = two[key];
- }
- }
-}
-
-var merge = function(one, two) {
- var result = {};
- mergeInto(result, one);
- mergeInto(result, two);
- return result;
-};
-
-module.exports = merge;
diff --git a/src/propTypes/createStrictShapeTypeChecker.js b/src/propTypes/createStrictShapeTypeChecker.js
index d76a0098..547fd434 100644
--- a/src/propTypes/createStrictShapeTypeChecker.js
+++ b/src/propTypes/createStrictShapeTypeChecker.js
@@ -12,7 +12,6 @@
*/
import invariant from 'fbjs/lib/invariant'
-import merge from '../modules/merge'
import ReactPropTypeLocationNames from 'react/lib/ReactPropTypeLocationNames'
import ReactPropTypesSecret from 'react/lib/ReactPropTypesSecret'
@@ -43,7 +42,7 @@ function createStrictShapeTypeChecker(
}
// We need to check all keys in case some are required but missing from
// props.
- var allKeys = merge(props[propName], shapeTypes);
+ var allKeys = { ...props[propName], ...shapeTypes };
for (var key in allKeys) {
var checker = shapeTypes[key];
if (!checker) {
diff --git a/webpack.config.js b/webpack.config.js
index 1ff897a2..9005ed10 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -25,7 +25,10 @@ module.exports = {
path: DIST_DIRECTORY
},
plugins: [
- new BundleAnalyzerPlugin({ analyzerMode: 'static' }),
+ new BundleAnalyzerPlugin({
+ analyzerMode: 'static',
+ openAnalyzer: false
+ }),
new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }),
new webpack.optimize.DedupePlugin(),
// https://github.com/animatedjs/animated/issues/40
diff --git a/yarn.lock b/yarn.lock
index db68e23b..81c0ba82 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -253,7 +253,7 @@ array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
-array-find-index@^1.0.1:
+array-find-index, array-find-index@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
@@ -1769,6 +1769,16 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+date-now@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-1.0.1.tgz#bb7d086438debe4182a485fb3df3fbfb99d6153c"
+
+debounce:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.0.0.tgz#0948af513d2e4ce407916f8506a423d3f9cf72d8"
+ dependencies:
+ date-now "1.0.1"
+
debug@^2.1.1, debug@^2.2.0:
version "2.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c"
@@ -1785,6 +1795,12 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+deep-assign:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572"
+ dependencies:
+ is-obj "^1.0.0"
+
deep-equal@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@@ -3659,7 +3675,7 @@ lodash.words@^3.0.0:
dependencies:
lodash._root "^3.0.0"
-lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@4.x.x:
+lodash@^4.0.0, lodash@^4.16.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@4.x.x:
version "4.17.2"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42"