|
|
@ -25,7 +25,8 @@ var Reveal = (function(){ |
|
|
|
mouseWheel: true, |
|
|
|
rollingLinks: true, |
|
|
|
transition: 'default', |
|
|
|
theme: 'default' |
|
|
|
theme: 'default', |
|
|
|
swipeDistance: 30 |
|
|
|
}, |
|
|
|
|
|
|
|
// Slides may hold a data-state attribute which we pick up and apply
|
|
|
@ -82,6 +83,8 @@ var Reveal = (function(){ |
|
|
|
// Bind all view events
|
|
|
|
document.addEventListener( 'keydown', onDocumentKeyDown, false ); |
|
|
|
document.addEventListener( 'touchstart', onDocumentTouchStart, false ); |
|
|
|
document.addEventListener( 'touchmove', onDocumentTouchMove, false ); |
|
|
|
document.addEventListener( 'touchend', onDocumentTouchEnd, false ); |
|
|
|
window.addEventListener( 'hashchange', onWindowHashChange, false ); |
|
|
|
dom.controlsLeft.addEventListener( 'click', preventAndForward( navigateLeft ), false ); |
|
|
|
dom.controlsRight.addEventListener( 'click', preventAndForward( navigateRight ), false ); |
|
|
@ -235,6 +238,8 @@ var Reveal = (function(){ |
|
|
|
* |
|
|
|
* @param {Object} event |
|
|
|
*/ |
|
|
|
var touchStart = {} |
|
|
|
var gesture = false; |
|
|
|
function onDocumentTouchStart( event ) { |
|
|
|
// We're only interested in one point taps
|
|
|
|
if (event.touches.length === 1) { |
|
|
@ -245,34 +250,66 @@ var Reveal = (function(){ |
|
|
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
|
|
var point = { |
|
|
|
touchStart = { |
|
|
|
x: event.touches[0].clientX, |
|
|
|
y: event.touches[0].clientY |
|
|
|
}; |
|
|
|
|
|
|
|
slide(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function onDocumentTouchMove( event ) { |
|
|
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
|
|
if(!gesture) { |
|
|
|
var touch = { |
|
|
|
x: event.touches[0].clientX, |
|
|
|
y: event.touches[0].clientY |
|
|
|
}; |
|
|
|
if((touch.x - touchStart.x) > config.swipeDistance){ |
|
|
|
gesture = true; |
|
|
|
navigateLeft(); |
|
|
|
} else if((touch.x - touchStart.x) < -config.swipeDistance){ |
|
|
|
gesture = true; |
|
|
|
navigateRight(); |
|
|
|
} else if((touch.y - touchStart.y) > config.swipeDistance){ |
|
|
|
gesture = true; |
|
|
|
navigateUp(); |
|
|
|
} else if((touch.y - touchStart.y) < -config.swipeDistance){ |
|
|
|
gesture = true; |
|
|
|
navigateDown(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
function onDocumentTouchEnd( event ) { |
|
|
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
|
|
if(!gesture){//only check for control tap if no gesture is performed
|
|
|
|
|
|
|
|
// Define the extent of the areas that may be tapped
|
|
|
|
// to navigate
|
|
|
|
var wt = window.innerWidth * 0.3; |
|
|
|
var ht = window.innerHeight * 0.3; |
|
|
|
|
|
|
|
if( point.x < wt ) { |
|
|
|
if( touchStart.x < wt ) { |
|
|
|
navigateLeft(); |
|
|
|
} |
|
|
|
else if( point.x > window.innerWidth - wt ) { |
|
|
|
else if( touchStart.x > window.innerWidth - wt ) { |
|
|
|
navigateRight(); |
|
|
|
} |
|
|
|
else if( point.y < ht ) { |
|
|
|
else if( touchStart.y < ht ) { |
|
|
|
navigateUp(); |
|
|
|
} |
|
|
|
else if( point.y > window.innerHeight - ht ) { |
|
|
|
else if( touchStart.y > window.innerHeight - ht ) { |
|
|
|
navigateDown(); |
|
|
|
} |
|
|
|
|
|
|
|
slide(); |
|
|
|
} |
|
|
|
gesture = false; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Handles mouse wheel scrolling, throttled to avoid |
|
|
|
* skipping multiple slides. |
|
|
|