Provides a custom pinch event for touch devices
if (Browser.Features.Touch) (function(){
var name = 'pinch',
thresholdKey = name + ':threshold',
disabled, active;
var events = {
touchstart: function(event){
if (event.targetTouches.length == 2) active = true;
},
touchmove: function(event){
event.preventDefault();
if (disabled || !active) return;
var threshold = this.retrieve(thresholdKey, 0.5);
if (event.scale < (1 + threshold) && event.scale > (1 - threshold)) return;
active = false;
event.pinch = (event.scale > 1) ? 'in' : 'out';
this.fireEvent(name, event);
}
};
Element.defineCustomEvent(name, {
onSetup: function(){
this.addEvents(events);
},
onTeardown: function(){
this.removeEvents(events);
},
onEnable: function(){
disabled = false;
},
onDisable: function(){
disabled = true;
}
});
})();