Sha256: f70685f2092afd161ad48bd00b1ee29ad21fe0e7352cc32f76f1b0d9502146ca
Contents?: true
Size: 1.63 KB
Versions: 7
Compression:
Stored size: 1.63 KB
Contents
/* --- name: Swipe description: Provides a custom swipe event for touch devices authors: Christopher Beloch (@C_BHole), Christoph Pojer (@cpojer), Ian Collins (@3n) license: MIT-style license. requires: [Core/Element.Event, Custom-Event/Element.defineCustomEvent, Browser.Features.Touch] provides: Swipe ... */ (function(){ var name = 'swipe', distanceKey = name + ':distance', cancelKey = name + ':cancelVertical', dflt = 50; var start = {}, disabled, active; var clean = function(){ active = false; }; var events = { touchstart: function(event){ if (event.touches.length > 1) return; var touch = event.touches[0]; active = true; start = {x: touch.pageX, y: touch.pageY}; }, touchmove: function(event){ event.preventDefault(); if (disabled || !active) return; var touch = event.changedTouches[0]; var end = {x: touch.pageX, y: touch.pageY}; if (this.retrieve(cancelKey) && Math.abs(start.y - end.y) > Math.abs(start.x - end.x)){ active = false; return; } var distance = this.retrieve(distanceKey, dflt), diff = end.x - start.x, isLeftSwipe = diff < -distance, isRightSwipe = diff > distance; if (!isRightSwipe && !isLeftSwipe) return; active = false; event.direction = (isLeftSwipe ? 'left' : 'right'); event.start = start; event.end = end; this.fireEvent(name, event); }, touchend: clean, touchcancel: clean }; Element.defineCustomEvent(name, { onSetup: function(){ this.addEvents(events); }, onTeardown: function(){ this.removeEvents(events); }, onEnable: function(){ disabled = false; }, onDisable: function(){ disabled = true; clean(); } }); })();
Version data entries
7 entries across 7 versions & 1 rubygems