simred
Version:
A simple redux-like application state manager
26 lines (21 loc) • 842 B
JavaScript
// From https://github.com/TehShrike/is-mergeable-object
export default function isMergeableObject(value) {
return isNonNullObject(value) &&
!isSpecial(value)
}
function isNonNullObject(value) {
return !!value && typeof value === 'object'
}
function isSpecial(value) {
var stringValue = Object.prototype.toString.call(value)
return stringValue === '[object RegExp]' ||
stringValue === '[object Date]' ||
isReactElement(value)
}
// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
var canUseSymbol = typeof Symbol === 'function' && Symbol.for
/* istanbul ignore next */
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7
function isReactElement(value) {
return value.$$typeof === REACT_ELEMENT_TYPE
}