docs: function (iEvent) {
              if (!(iEvent && iEvent.type) || !contains(eventTypes, iEvent.type)) {
                  return this;
              }
  
              var listeners,
                  i,
                  len,
                  onEvent = 'on' + iEvent.type,
                  funcName = '';
  
              // Interactable#on() listeners
              if (iEvent.type in this._iEvents) {
                  listeners = this._iEvents[iEvent.type];
  
                  for (i = 0, len = listeners.length; i < len && !iEvent.immediatePropagationStopped; i++) {
                      funcName = listeners[i].name;
                      listeners[i](iEvent);
                  }
              }
  
              // interactable.onevent listener
              if (isFunction(this[onEvent])) {
                  funcName = this[onEvent].name;
                  this[onEvent](iEvent);
              }
  
              // interact.on() listeners
              if (iEvent.type in globalEvents && (listeners = globalEvents[iEvent.type]))  {
  
                  for (i = 0, len = listeners.length; i < len && !iEvent.immediatePropagationStopped; i++) {
                      funcName = listeners[i].name;
                      listeners[i](iEvent);
                  }
              }
  
              return this;
          }