docs: function shallowEqualWithoutReactElements(thisProps, nextProps) {
      var equals = false;
      if (thisProps === nextProps) {
          equals = true;
      } else if ((typeof thisProps === 'undefined' ? 'undefined' : _typeof(thisProps)) === 'object' && (typeof nextProps === 'undefined' ? 'undefined' : _typeof(nextProps)) === 'object') {
          equals = true;
          var propNames = new Set(Object.keys(thisProps), Object.keys(nextProps));
          var _iteratorNormalCompletion = true;
          var _didIteratorError = false;
          var _iteratorError = undefined;
  
          try {
              for (var _iterator = propNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                  var propName = _step.value;
  
                  if (thisProps[propName] !== nextProps[propName] && !isReactElement(thisProps[propName])) {
                      // No need to check nextProps[propName] as well, as we know they are not equal
                      equals = false;
                      break;
                  }
              }
          } catch (err) {
              _didIteratorError = true;
              _iteratorError = err;
          } finally {
              try {
                  if (!_iteratorNormalCompletion && _iterator.return) {
                      _iterator.return();
                  }
              } finally {
                  if (_didIteratorError) {
                      throw _iteratorError;
                  }
              }
          }
      }
      return equals;
  }