function addRecognizers() {
      if (typeof settings.enable === 'function') {
        settings.enable = settings.enable.bind(instance)();
      }
      if (!settings.enable) {
        return; // interaction is disabled
      }
      settings.gestures.forEach((gesture) => {
        gesture.options = gesture.options || {};
        // handle action enable
        if (gesture.options.enable === undefined) {
          gesture.options.enable = true;
        }
        if (typeof gesture.options.enable === 'function') {
          gesture.options.enable = gesture.options.enable.bind(instance);
        }
        // setup hammer gestures
        const type = getGestureType(gesture.type);
        if (Hammered && Hammered[type]) {
          gesture.options.event = gesture.options.event || gesture.type.toLowerCase();
          mc = mc || new Hammered.Manager(element);
          mc.add(new Hammered[type](gesture.options));
          Object.keys(gesture.events).forEach((eventName) => {
            gesture.events[eventName] = gesture.events[eventName].bind(instance);
            mc.on(eventName, gesture.events[eventName]);
          });
          hammerGestures.push(gesture);
        }
      });

      // setup mixing hammer gestures
      settings.gestures.forEach((gesture) => {
        const type = getGestureType(gesture.type);
        if (Hammered && Hammered[type]) {
          if (gesture.recognizeWith) {
            mc.get(gesture.options.event).recognizeWith(gesture.recognizeWith.split(' ').filter((e) => e !== ''));
          }
          if (gesture.requireFailure) {
            mc.get(gesture.options.event).requireFailure(gesture.requireFailure.split(' ').filter((e) => e !== ''));
          }
        }
      });
    }
/**
     * @private
     * add hammer recognizers based on settings
     */
@private
add hammer recognizers based on settings
@private add hammer recognizers based on settings
function addRecognizers() {
      if (typeof settings.enable === 'function') {
        settings.enable = settings.enable.bind(instance)();
      }
      if (!settings.enable) {
        return; 
      }
      settings.gestures.forEach((gesture) => {
        gesture.options = gesture.options || {};
        if (gesture.options.enable === undefined) {
          gesture.options.enable = true;
        }
        if (typeof gesture.options.enable === 'function') {
          gesture.options.enable = gesture.options.enable.bind(instance);
        }
        const type = getGestureType(gesture.type);
        if (Hammered && Hammered[type]) {
          gesture.options.event = gesture.options.event || gesture.type.toLowerCase();
          mc = mc || new Hammered.Manager(element);
          mc.add(new Hammered[type](gesture.options));
          Object.keys(gesture.events).forEach((eventName) => {
            gesture.events[eventName] = gesture.events[eventName].bind(instance);
            mc.on(eventName, gesture.events[eventName]);
          });
          hammerGestures.push(gesture);
        }
      });
      settings.gestures.forEach((gesture) => {
        const type = getGestureType(gesture.type);
        if (Hammered && Hammered[type]) {
          if (gesture.recognizeWith) {
            mc.get(gesture.options.event).recognizeWith(gesture.recognizeWith.split(' ').filter((e) => e !== ''));
          }
          if (gesture.requireFailure) {
            mc.get(gesture.options.event).requireFailure(gesture.requireFailure.split(' ').filter((e) => e !== ''));
          }
        }
      });
    }
function addRecognizers ( ) { if ( typeof settings . enable === 'function' ) { settings . enable = settings . enable . bind ( instance ) ( ) ; } if ( ! settings . enable ) { return ; } settings . gestures . forEach ( ( gesture ) => { gesture . options = gesture . options || { } ; if ( gesture . options . enable === undefined ) { gesture . options . enable = true ; } if ( typeof gesture . options . enable === 'function' ) { gesture . options . enable = gesture . options . enable . bind ( instance ) ; } const type = getGestureType ( gesture . type ) ; if ( Hammered && Hammered [ type ] ) { gesture . options . event = gesture . options . event || gesture . type . toLowerCase ( ) ; mc = mc || new Hammered . Manager ( element ) ; mc . add ( new Hammered [ type ] ( gesture . options ) ) ; Object . keys ( gesture . events ) . forEach ( ( eventName ) => { gesture . events [ eventName ] = gesture . events [ eventName ] . bind ( instance ) ; mc . on ( eventName , gesture . events [ eventName ] ) ; } ) ; hammerGestures . push ( gesture ) ; } } ) ; settings . gestures . forEach ( ( gesture ) => { const type = getGestureType ( gesture . type ) ; if ( Hammered && Hammered [ type ] ) { if ( gesture . recognizeWith ) { mc . get ( gesture . options . event ) . recognizeWith ( gesture . recognizeWith . split ( ' ' ) . filter ( ( e ) => e !== '' ) ) ; } if ( gesture . requireFailure ) { mc . get ( gesture . options . event ) . requireFailure ( gesture . requireFailure . split ( ' ' ) . filter ( ( e ) => e !== '' ) ) ; } } } ) ; }
@private
 add hammer recognizers based on settings
@private add hammer recognizers based on settings
// interaction is disabled // handle action enable // setup hammer gestures // setup mixing hammer gestures