UNPKG

react-redux

Version:

Official React bindings for Redux

34 lines (32 loc) 1.29 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import verifyPlainObject from '../utils/verifyPlainObject'; export function defaultMergeProps(stateProps, dispatchProps, ownProps) { return _extends({}, ownProps, stateProps, dispatchProps); } export function wrapMergePropsFunc(mergeProps) { return function initMergePropsProxy(dispatch, { displayName, areMergedPropsEqual }) { let hasRunOnce = false; let mergedProps; return function mergePropsProxy(stateProps, dispatchProps, ownProps) { const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps); if (hasRunOnce) { if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps; } else { hasRunOnce = true; mergedProps = nextMergedProps; if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps'); } return mergedProps; }; }; } export function whenMergePropsIsFunction(mergeProps) { return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined; } export function whenMergePropsIsOmitted(mergeProps) { return !mergeProps ? () => defaultMergeProps : undefined; } export default [whenMergePropsIsFunction, whenMergePropsIsOmitted];