code: function applyFunctions(obj, scope, propsConfig) {
      return Object.keys(obj || {}).reduce(function(prev, key) {
        var value = obj[key];
        var config = (propsConfig || {})[key] || {};
        /**
         * wrap functions in a function that ensures they are scope.$applied
         * ensures that when function is called from a React component
         * the Angular digest cycle is run
         */
        prev[key] = angular.isFunction(value) && config.wrapApply !== false
          ? applied(value, scope)
          : value;
  
        return prev;
      }, {});
    }
docs: wraps functions on obj in scope.$apply
  
  keeps backwards compatibility, as if propsConfig is not passed, it will
  work as before, wrapping all functions and won't wrap only when specified.
  
  @version 0.4.1
  @param obj react component props
  @param scope current scope
  @param propsConfig configuration object for all properties
  @returns {Object} props with the functions wrapped in scope.$apply