docs: function(typeEvents) {
      var elemClasses, elemClass;
  
      // Iterate over previously passed elements to check for any delegated events
      var activePathLength = activePath.length;
      for (var i = 0; i < activePathLength; i++) {
        elemClasses = activePath[i].classes;
        // Once stopPropagation is called stop
        if (!evt.isPropagationStopped()) {
          var elemClassesLength = elemClasses.length;
          for (var j = 0; j < elemClassesLength; j++) {
            elemClass = elemClasses[j];
            if (typeEvents[elemClass]) {
              triggerEventFunctions(activePath[i].element, typeEvents[elemClass], elemClass, elem);
            }
          }
        }
      }
  
      // Check for any non-delegated events
      if (!evt.isPropagationStopped() && typeEvents.self) {
        triggerEventFunctions(elem, typeEvents.self);
      }
    }