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;