docs: function (action, interactable, element) {
              if (this.interacting()
                  || !this.pointerIsDown
                  || this.pointerIds.length < (action.name === 'gesture'? 2 : 1)) {
                  return;
              }
  
              // if this interaction had been removed after stopping
              // add it back
              if (indexOf(interactions, this) === -1) {
                  interactions.push(this);
              }
  
              // set the startCoords if there was no prepared action
              if (!this.prepared.name) {
                  this.setEventXY(this.startCoords);
              }
  
              this.prepared.name  = action.name;
              this.prepared.axis  = action.axis;
              this.prepared.edges = action.edges;
              this.target         = interactable;
              this.element        = element;
  
              this.setStartOffsets(action.name, interactable, element);
              this.setModifications(this.startCoords.page);
  
              this.prevEvent = this[this.prepared.name + 'Start'](this.downEvent);
          }