From 436c19d87963d7cf927491996e7c72bbb6bfe49b Mon Sep 17 00:00:00 2001 From: Florian Klampfer Date: Fri, 16 Sep 2016 19:55:08 +0200 Subject: [PATCH] Fix sidebar --- public/js/hydejack.js | 64 +++++++++++++++++++++------------------ public/js/hydejack.min.js | 2 +- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/public/js/hydejack.js b/public/js/hydejack.js index d3dad558f90..29e9b51c4e9 100644 --- a/public/js/hydejack.js +++ b/public/js/hydejack.js @@ -216,6 +216,7 @@ var startTranslateX = 0; var translateX = 0; var animationFrameRequested = false; + var touching = false; var animationStartTime; var animationStartX; @@ -254,42 +255,44 @@ } function onTouchMove(e) { - var touch = getNearestTouch(e.touches); - pageX = touch.pageX; - pageY = touch.pageY; - - if (typeof isScrolling === 'undefined' && startedMoving) { - isScrolling = Math.abs(startY - pageY) > Math.abs(startX - pageX); - if (!isScrolling) { - state = START_TOUCHING; - requestAnimationLoop(); + if (touching) { + var touch = getNearestTouch(e.touches); + pageX = touch.pageX; + pageY = touch.pageY; + + if (typeof isScrolling === 'undefined' && startedMoving) { + isScrolling = Math.abs(startY - pageY) > Math.abs(startX - pageX); + if (!isScrolling) { + state = START_TOUCHING; + requestAnimationLoop(); + } } - } - if (isScrolling && !menuOpen) return; + if (isScrolling && !menuOpen) return; - e.preventDefault(); + e.preventDefault(); - startedMoving = true; + startedMoving = true; + } } function onTouchEnd(e) { - if (isScrolling || e.touches.length > 0) { - return; - } - - if (startedMoving) { - menuOpen = velocity > VELOCITY_THRESHOLD ? 1 : - velocity < -VELOCITY_THRESHOLD ? 0 : - translateX >= sliderWidth / 2 ? 1 : - 0; - } + if (touching) { + if (isScrolling || e.touches.length > 0) { + return; + } - state = START_ANIMATING; - startedMoving = false; + if (startedMoving) { + menuOpen = velocity > VELOCITY_THRESHOLD ? 1 : + velocity < -VELOCITY_THRESHOLD ? 0 : + translateX >= sliderWidth / 2 ? 1 : + 0; + } - document.removeEventListener('touchmove', onTouchMove); - document.removeEventListener('touchend', onTouchEnd); + touching = false; + state = START_ANIMATING; + startedMoving = false; + } } function onTouchStart(e) { @@ -316,8 +319,7 @@ startY = pageY = lastPageY = touch.pageY; if (menuOpen || (!menuOpen && pageX < window.innerWidth / 3/* && !isCodeBlock(e.path)*/)) { - document.addEventListener('touchmove', onTouchMove); - document.addEventListener('touchend', onTouchEnd); + touching = true; } } } @@ -431,6 +433,8 @@ function enableSlider() { document.body.classList.add('drawer'); document.addEventListener('touchstart', onTouchStart); + document.addEventListener('touchmove', onTouchMove); + document.addEventListener('touchend', onTouchEnd); menu.addEventListener('click', onMenuClick); backdrop.addEventListener('click', onBackdropClick); animateTo(menuOpen); @@ -439,6 +443,8 @@ function disableSlider() { document.body.classList.remove('drawer') document.removeEventListener('touchstart', onTouchStart); + document.removeEventListener('touchmove', onTouchMove); + document.removeEventListener('touchend', onTouchEnd); menu.removeEventListener('click', onMenuClick); backdrop.removeEventListener('click', onBackdropClick); } diff --git a/public/js/hydejack.min.js b/public/js/hydejack.min.js index fe6cbda2e3d..dd8fcf5f06a 100644 --- a/public/js/hydejack.min.js +++ b/public/js/hydejack.min.js @@ -1 +1 @@ -(function(w){"use strict";var loadCSS=function(href,before,media){var doc=w.document;var ss=doc.createElement("link");var ref;if(before){ref=before}else{var refs=(doc.body||doc.getElementsByTagName("head")[0]).childNodes;ref=refs[refs.length-1]}var sheets=doc.styleSheets;ss.rel="stylesheet";ss.href=href;ss.media="only x";function ready(cb){if(doc.body){return cb()}setTimeout(function(){ready(cb)})}ready(function(){ref.parentNode.insertBefore(ss,before?ref:ref.nextSibling)});var onloadcssdefined=function(cb){var resolvedHref=ss.href;var i=sheets.length;while(i--){if(sheets[i].href===resolvedHref){return cb()}}setTimeout(function(){onloadcssdefined(cb)})};function loadCB(){if(ss.addEventListener){ss.removeEventListener("load",loadCB)}ss.media=media||"all"}if(ss.addEventListener){ss.addEventListener("load",loadCB)}ss.onloadcssdefined=onloadcssdefined;onloadcssdefined(loadCB);return ss};if(typeof exports!=="undefined"){exports.loadCSS=loadCSS}else{w.loadCSS=loadCSS}})(typeof global!=="undefined"?global:this);(function(w){if(!w.loadCSS){return}var rp=loadCSS.relpreload={};rp.support=function(){try{return w.document.createElement("link").relList.supports("preload")}catch(e){return false}};rp.poly=function(){var links=w.document.getElementsByTagName("link");for(var i=0;iMath.abs(startX-pageX);if(!isScrolling){state=START_TOUCHING;requestAnimationLoop()}}if(isScrolling&&!menuOpen)return;e.preventDefault();startedMoving=true}function onTouchEnd(e){if(isScrolling||e.touches.length>0){return}if(startedMoving){menuOpen=velocity>VELOCITY_THRESHOLD?1:velocity<-VELOCITY_THRESHOLD?0:translateX>=sliderWidth/2?1:0}state=START_ANIMATING;startedMoving=false;document.removeEventListener("touchmove",onTouchMove);document.removeEventListener("touchend",onTouchEnd)}function onTouchStart(e){if(e.touches.length===1){isScrolling=undefined;var touch=e.touches[0];startX=pageX=lastPageX=touch.pageX;startY=pageY=lastPageY=touch.pageY;if(menuOpen||!menuOpen&&pageX0){velocity=VELOCITY_LINEAR_COMBINATION*(pageX-lastPageX)/timeDiff+(1-VELOCITY_LINEAR_COMBINATION)*velocity}var deltaX=pageX-startX;translateX=startTranslateX+deltaX;translateX=Math.max(0,Math.min(sliderWidth,translateX));updateDOM(translateX,sliderWidth);lastTime=time;lastPageX=pageX;lastPageY=pageY;requestAnimationFrame(animationLoop);break;case START_ANIMATING:sliderWidth=getMovableSliderWidth();var deltaX=pageX-startX;translateX=startTranslateX+deltaX;translateX=Math.max(0,Math.min(sliderWidth,translateX));animationStartX=translateX;animationEndX=menuOpen*sliderWidth;animationChangeInValue=animationEndX-animationStartX;animationStartTime=time;state=ANIMATING;case ANIMATING:var t=time-animationStartTime;if(t","");el.outerHTML=katex.renderToString(tex,{displayMode:el.type==="math/tex; mode=display"})})})})}})(document,window); +(function(w){"use strict";var loadCSS=function(href,before,media){var doc=w.document;var ss=doc.createElement("link");var ref;if(before){ref=before}else{var refs=(doc.body||doc.getElementsByTagName("head")[0]).childNodes;ref=refs[refs.length-1]}var sheets=doc.styleSheets;ss.rel="stylesheet";ss.href=href;ss.media="only x";function ready(cb){if(doc.body){return cb()}setTimeout(function(){ready(cb)})}ready(function(){ref.parentNode.insertBefore(ss,before?ref:ref.nextSibling)});var onloadcssdefined=function(cb){var resolvedHref=ss.href;var i=sheets.length;while(i--){if(sheets[i].href===resolvedHref){return cb()}}setTimeout(function(){onloadcssdefined(cb)})};function loadCB(){if(ss.addEventListener){ss.removeEventListener("load",loadCB)}ss.media=media||"all"}if(ss.addEventListener){ss.addEventListener("load",loadCB)}ss.onloadcssdefined=onloadcssdefined;onloadcssdefined(loadCB);return ss};if(typeof exports!=="undefined"){exports.loadCSS=loadCSS}else{w.loadCSS=loadCSS}})(typeof global!=="undefined"?global:this);(function(w){if(!w.loadCSS){return}var rp=loadCSS.relpreload={};rp.support=function(){try{return w.document.createElement("link").relList.supports("preload")}catch(e){return false}};rp.poly=function(){var links=w.document.getElementsByTagName("link");for(var i=0;iMath.abs(startX-pageX);if(!isScrolling){state=START_TOUCHING;requestAnimationLoop()}}if(isScrolling&&!menuOpen)return;e.preventDefault();startedMoving=true}}function onTouchEnd(e){if(touching){if(isScrolling||e.touches.length>0){return}if(startedMoving){menuOpen=velocity>VELOCITY_THRESHOLD?1:velocity<-VELOCITY_THRESHOLD?0:translateX>=sliderWidth/2?1:0}touching=false;state=START_ANIMATING;startedMoving=false}}function onTouchStart(e){if(e.touches.length===1){isScrolling=undefined;var touch=e.touches[0];startX=pageX=lastPageX=touch.pageX;startY=pageY=lastPageY=touch.pageY;if(menuOpen||!menuOpen&&pageX0){velocity=VELOCITY_LINEAR_COMBINATION*(pageX-lastPageX)/timeDiff+(1-VELOCITY_LINEAR_COMBINATION)*velocity}var deltaX=pageX-startX;translateX=startTranslateX+deltaX;translateX=Math.max(0,Math.min(sliderWidth,translateX));updateDOM(translateX,sliderWidth);lastTime=time;lastPageX=pageX;lastPageY=pageY;requestAnimationFrame(animationLoop);break;case START_ANIMATING:sliderWidth=getMovableSliderWidth();var deltaX=pageX-startX;translateX=startTranslateX+deltaX;translateX=Math.max(0,Math.min(sliderWidth,translateX));animationStartX=translateX;animationEndX=menuOpen*sliderWidth;animationChangeInValue=animationEndX-animationStartX;animationStartTime=time;state=ANIMATING;case ANIMATING:var t=time-animationStartTime;if(t","");el.outerHTML=katex.renderToString(tex,{displayMode:el.type==="math/tex; mode=display"})})})})}})(document,window);