docs: function onDrag( register, slot, args ) {
      const that = this;
  
      register( 'hammer.pan', function ( evt ) {
          if ( evt.isFinal ) return false;
          setHammerXY( that.$, evt );
          if ( typeof that._dragX === 'undefined' ) {
              that._dragX = evt.x;
              that._dragY = evt.y;
              that._dragStart = true;
          }
          setHammerVxVy.call( that, that.$, evt );
          const domEvt = evt.srcEvent;
          slot( {
              x: evt.x,
              y: evt.y,
              x0: evt.x0,
              y0: evt.y0,
              vx: evt.vx,
              vy: evt.vy,
              sx: evt.velocityX,
              sy: evt.velocityY,
              event: evt,
              target: evt.target,
              buttons: getButtons( evt ),
              preventDefault: domEvt.preventDefault.bind( domEvt ),
              stopPropagation: domEvt.stopImmediatePropagation.bind( domEvt )
          }, args );
          return true;
      } );
  }