From 0025018cc512db8bf7e7d304f88eca15c9b1e008 Mon Sep 17 00:00:00 2001 From: Dave Furfero Date: Wed, 27 Oct 2010 21:42:29 -0400 Subject: [PATCH] first --- README.md | 1 + jquery.ui.touch-punch.js | 84 ++++++++++++++++++++++++++++++++++++ jquery.ui.touch-punch.min.js | 11 +++++ 3 files changed, 96 insertions(+) create mode 100644 README.md create mode 100755 jquery.ui.touch-punch.js create mode 100644 jquery.ui.touch-punch.min.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..017b53e --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Check out some live examples at http://furf.com/exp/touch-punch/ \ No newline at end of file diff --git a/jquery.ui.touch-punch.js b/jquery.ui.touch-punch.js new file mode 100755 index 0000000..d753e77 --- /dev/null +++ b/jquery.ui.touch-punch.js @@ -0,0 +1,84 @@ +/*! + * jQuery UI Touch Punch 0.1.0 + * + * Copyright 2010, Dave Furfero + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Depends: + * jquery.ui.widget.js + * jquery.ui.mouse.js + */ +(function ($) { + + $.support.touch = typeof Touch === 'object'; + + if (!$.support.touch) { + return; + } + + var mouseProto = $.ui.mouse.prototype, + _mouseInit = mouseProto._mouseInit, + _mouseDown = mouseProto._mouseDown, + _mouseUp = mouseProto._mouseUp, + + mouseEvents = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup' + }; + + function makeMouseEvent (event) { + + var touch = event.originalEvent.touches[0]; + + return $.extend(event, { + type: mouseEvents[event.type], + which: 1, + pageX: touch.pageX, + pageY: touch.pageY, + screenX: touch.screenX, + screenY: touch.screenY, + clientX: touch.clientX, + clientY: touch.clientY + }); + } + + mouseProto._mouseInit = function () { + + var self = this; + + self.element.bind('touchstart.' + self.widgetName, function (event) { + return self._mouseDown(makeMouseEvent(event)); + }); + + _mouseInit.call(self); + }; + + mouseProto._mouseDown = function (event) { + + var self = this, + ret = _mouseDown.call(self, event); + + self._touchMoveDelegate = function (event) { + return self._mouseMove(makeMouseEvent(event)); + }; + + $(document) + .bind('touchmove.' + self.widgetName, self._touchMoveDelegate) + .bind('touchend.' + self.widgetName, self._mouseUpDelegate); + + return ret; + }; + + mouseProto._mouseUp = function (event) { + + var self = this; + + $(document) + .unbind('touchmove.' + self.widgetName, self._touchMoveDelegate) + .unbind('touchend.' + self.widgetName, self._touchEndDelegate); + + return _mouseUp.call(self, event); + }; + +})(jQuery); diff --git a/jquery.ui.touch-punch.min.js b/jquery.ui.touch-punch.min.js new file mode 100644 index 0000000..ccdef88 --- /dev/null +++ b/jquery.ui.touch-punch.min.js @@ -0,0 +1,11 @@ +/*! + * jQuery UI Touch Punch 0.1.0 + * + * Copyright 2010, Dave Furfero + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Depends: + * jquery.ui.widget.js + * jquery.ui.mouse.js + */ +(function(c){c.support.touch=typeof Touch==="object";if(!c.support.touch){return;}var f=c.ui.mouse.prototype,g=f._mouseInit,a=f._mouseDown,e=f._mouseUp,b={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"};function d(h){var i=h.originalEvent.touches[0];return c.extend(h,{type:b[h.type],which:1,pageX:i.pageX,pageY:i.pageY,screenX:i.screenX,screenY:i.screenY,clientX:i.clientX,clientY:i.clientY});}f._mouseInit=function(){var h=this;h.element.bind("touchstart."+h.widgetName,function(i){return h._mouseDown(d(i));});g.call(h);};f._mouseDown=function(j){var h=this,i=a.call(h,j);h._touchMoveDelegate=function(k){return h._mouseMove(d(k));};c(document).bind("touchmove."+h.widgetName,h._touchMoveDelegate).bind("touchend."+h.widgetName,h._mouseUpDelegate);return i;};f._mouseUp=function(i){var h=this;c(document).unbind("touchmove."+h.widgetName,h._touchMoveDelegate).unbind("touchend."+h.widgetName,h._touchEndDelegate);return e.call(h,i);};})(jQuery); \ No newline at end of file