| var Hammer = require('./module/hammer'); | |
| 
 | |
| /** | |
|  * Register a touch event, taking place before a gesture | |
|  * @param {Hammer} hammer       A hammer instance | |
|  * @param {function} callback   Callback, called as callback(event) | |
|  */ | |
| exports.onTouch = function (hammer, callback) { | |
|   callback.inputHandler = function (event) { | |
|     if (event.isFirst && !isTouching) { | |
|       callback(event); | |
| 
 | |
|       isTouching = true; | |
|       setTimeout(function () { | |
|         isTouching = false; | |
|       }, 0); | |
|     } | |
|   }; | |
| 
 | |
|   hammer.on('hammer.input', callback.inputHandler); | |
| }; | |
| 
 | |
| // isTouching is true while a touch action is being emitted | |
| // this is a hack to prevent `touch` from being fired twice | |
| var isTouching = false; | |
| 
 | |
| /** | |
|  * Register a release event, taking place after a gesture | |
|  * @param {Hammer} hammer       A hammer instance | |
|  * @param {function} callback   Callback, called as callback(event) | |
|  */ | |
| exports.onRelease = function (hammer, callback) { | |
|   callback.inputHandler = function (event) { | |
|     if (event.isFinal && !isReleasing) { | |
|       callback(event); | |
| 
 | |
|       isReleasing = true; | |
|       setTimeout(function () { | |
|         isReleasing = false; | |
|       }, 0); | |
|     } | |
|   }; | |
| 
 | |
|   return hammer.on('hammer.input', callback.inputHandler); | |
| }; | |
| 
 | |
| 
 | |
| // isReleasing is true while a release action is being emitted | |
| // this is a hack to prevent `release` from being fired twice | |
| var isReleasing = false; | |
| 
 | |
| 
 | |
| /** | |
|  * Unregister a touch event, taking place before a gesture | |
|  * @param {Hammer} hammer       A hammer instance | |
|  * @param {function} callback   Callback, called as callback(event) | |
|  */ | |
| exports.offTouch = function (hammer, callback) { | |
|   hammer.off('hammer.input', callback.inputHandler); | |
| }; | |
| 
 | |
| /** | |
|  * Unregister a release event, taking place before a gesture | |
|  * @param {Hammer} hammer       A hammer instance | |
|  * @param {function} callback   Callback, called as callback(event) | |
|  */ | |
| exports.offRelease = exports.offTouch;
 |