From b46e15e7e2fef644c0274d78201350ff9671a7af Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Thu, 13 Mar 2014 19:33:54 +0200 Subject: [PATCH 1/3] Make everything work in all browsers (hopefully). --- js/sliders.js | 33 ++++++++++++++++++++++++--------- js/toggles.js | 25 ++++++++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/js/sliders.js b/js/sliders.js index a42b13b..be9cc98 100644 --- a/js/sliders.js +++ b/js/sliders.js @@ -25,6 +25,23 @@ var scrollableArea; var startedMoving; + // Original script from http://davidwalsh.name/vendor-prefix + var getBrowserCapabilities = (function () { + var styles = window.getComputedStyle(document.documentElement, ''); + var pre = (Array.prototype.slice + .call(styles) + .join('') + .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) + )[1]; + return { + prefix: '-' + pre + '-', + transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' + }; + })(); + + var transformPrefix = getBrowserCapabilities.prefix; + var transformProperty = getBrowserCapabilities.transform; + var getSlider = function (target) { var i; var sliders = document.querySelectorAll('.slider > .slide-group'); @@ -39,11 +56,9 @@ }; var getScroll = function () { - if ('webkitTransform' in slider.style) { - var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/); - var ret = translate3d ? translate3d[1] : 0; - return parseInt(ret, 10); - } + var translate3d = slider.style[transformProperty].match(/translate3d\(([^,]*)/); + var ret = translate3d ? translate3d[1] : 0; + return parseInt(ret, 10); }; var setSlideNumber = function (offset) { @@ -76,7 +91,7 @@ setSlideNumber(0); - slider.style['-webkit-transition-duration'] = 0; + slider.style[transformPrefix + 'transition-duration'] = 0; }; var onTouchMove = function (e) { @@ -109,7 +124,7 @@ resistance = slideNumber === 0 && deltaX > 0 ? (pageX / sliderWidth) + 1.25 : slideNumber === lastSlide && deltaX < 0 ? (Math.abs(pageX) / sliderWidth) + 1.25 : 1; - slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + slider.style[transformProperty] = 'translate3d(' + offsetX + 'px,0,0)'; // started moving startedMoving = true; @@ -127,8 +142,8 @@ offsetX = slideNumber * sliderWidth; - slider.style['-webkit-transition-duration'] = '.2s'; - slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + slider.style[transformPrefix + 'transition-duration'] = '.2s'; + slider.style[transformProperty] = 'translate3d(' + offsetX + 'px,0,0)'; e = new CustomEvent('slide', { detail: { slideNumber: Math.abs(slideNumber) }, diff --git a/js/toggles.js b/js/toggles.js index cbd3f72..56d2523 100644 --- a/js/toggles.js +++ b/js/toggles.js @@ -15,6 +15,21 @@ var distanceX = false; var toggle = false; + // Original script from http://davidwalsh.name/vendor-prefix + var getBrowserCapabilities = (function () { + var styles = window.getComputedStyle(document.documentElement, ''); + var pre = (Array.prototype.slice + .call(styles) + .join('') + .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) + )[1]; + return { + transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' + }; + })(); + + var transformProperty = getBrowserCapabilities.transform; + var findToggle = function (target) { var i; var toggles = document.querySelectorAll('.toggle'); @@ -73,13 +88,13 @@ e.preventDefault(); if (distanceX < 0) { - return (handle.style.webkitTransform = 'translate3d(0,0,0)'); + return (handle.style[transformProperty] = 'translate3d(0,0,0)'); } if (distanceX > offset) { - return (handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'); + return (handle.style[transformProperty] = 'translate3d(' + offset + 'px,0,0)'); } - handle.style.webkitTransform = 'translate3d(' + distanceX + 'px,0,0)'; + handle.style[transformProperty] = 'translate3d(' + distanceX + 'px,0,0)'; toggle.classList[(distanceX > (toggleWidth / 2 - handleWidth / 2)) ? 'add' : 'remove']('active'); }); @@ -96,9 +111,9 @@ var slideOn = (!touchMove && !toggle.classList.contains('active')) || (touchMove && (distanceX > (toggleWidth / 2 - handleWidth / 2))); if (slideOn) { - handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'; + handle.style[transformProperty] = 'translate3d(' + offset + 'px,0,0)'; } else { - handle.style.webkitTransform = 'translate3d(0,0,0)'; + handle.style[transformProperty] = 'translate3d(0,0,0)'; } toggle.classList[slideOn ? 'add' : 'remove']('active'); From 791f9b10f5485bb51843857c5ccec1706a53185e Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 14 Mar 2014 12:45:34 +0200 Subject: [PATCH 2/3] Fix one more error with Firefox. --- js/push.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/push.js b/js/push.js index 02d6af5..8d091a1 100644 --- a/js/push.js +++ b/js/push.js @@ -60,7 +60,9 @@ delete cacheMapping[cacheBackStack.shift()]; } - window.history.pushState(null, '', getCached(PUSH.id).url); + if (getCached(PUSH.id).url) { + window.history.pushState(null, '', getCached(PUSH.id).url); + } cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack); cacheMapping.cacheBackStack = JSON.stringify(cacheBackStack); From 07a236dd9adc8cbd81157c748884d3ec843b180c Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 14 Mar 2014 12:45:51 +0200 Subject: [PATCH 3/3] Run `grunt`. --- dist/js/ratchet.js | 62 ++++++++++++++++++++++++++++--------- dist/js/ratchet.min.js | 2 +- docs/dist/js/ratchet.js | 62 ++++++++++++++++++++++++++++--------- docs/dist/js/ratchet.min.js | 2 +- 4 files changed, 96 insertions(+), 32 deletions(-) diff --git a/dist/js/ratchet.js b/dist/js/ratchet.js index d11a952..a49aebd 100644 --- a/dist/js/ratchet.js +++ b/dist/js/ratchet.js @@ -198,7 +198,9 @@ delete cacheMapping[cacheBackStack.shift()]; } - window.history.pushState(null, '', getCached(PUSH.id).url); + if (getCached(PUSH.id).url) { + window.history.pushState(null, '', getCached(PUSH.id).url); + } cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack); cacheMapping.cacheBackStack = JSON.stringify(cacheBackStack); @@ -740,6 +742,23 @@ var scrollableArea; var startedMoving; + // Original script from http://davidwalsh.name/vendor-prefix + var getBrowserCapabilities = (function () { + var styles = window.getComputedStyle(document.documentElement, ''); + var pre = (Array.prototype.slice + .call(styles) + .join('') + .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) + )[1]; + return { + prefix: '-' + pre + '-', + transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' + }; + })(); + + var transformPrefix = getBrowserCapabilities.prefix; + var transformProperty = getBrowserCapabilities.transform; + var getSlider = function (target) { var i; var sliders = document.querySelectorAll('.slider > .slide-group'); @@ -754,11 +773,9 @@ }; var getScroll = function () { - if ('webkitTransform' in slider.style) { - var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/); - var ret = translate3d ? translate3d[1] : 0; - return parseInt(ret, 10); - } + var translate3d = slider.style[transformProperty].match(/translate3d\(([^,]*)/); + var ret = translate3d ? translate3d[1] : 0; + return parseInt(ret, 10); }; var setSlideNumber = function (offset) { @@ -791,7 +808,7 @@ setSlideNumber(0); - slider.style['-webkit-transition-duration'] = 0; + slider.style[transformPrefix + 'transition-duration'] = 0; }; var onTouchMove = function (e) { @@ -824,7 +841,7 @@ resistance = slideNumber === 0 && deltaX > 0 ? (pageX / sliderWidth) + 1.25 : slideNumber === lastSlide && deltaX < 0 ? (Math.abs(pageX) / sliderWidth) + 1.25 : 1; - slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + slider.style[transformProperty] = 'translate3d(' + offsetX + 'px,0,0)'; // started moving startedMoving = true; @@ -842,8 +859,8 @@ offsetX = slideNumber * sliderWidth; - slider.style['-webkit-transition-duration'] = '.2s'; - slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + slider.style[transformPrefix + 'transition-duration'] = '.2s'; + slider.style[transformProperty] = 'translate3d(' + offsetX + 'px,0,0)'; e = new CustomEvent('slide', { detail: { slideNumber: Math.abs(slideNumber) }, @@ -877,6 +894,21 @@ var distanceX = false; var toggle = false; + // Original script from http://davidwalsh.name/vendor-prefix + var getBrowserCapabilities = (function () { + var styles = window.getComputedStyle(document.documentElement, ''); + var pre = (Array.prototype.slice + .call(styles) + .join('') + .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) + )[1]; + return { + transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' + }; + })(); + + var transformProperty = getBrowserCapabilities.transform; + var findToggle = function (target) { var i; var toggles = document.querySelectorAll('.toggle'); @@ -935,13 +967,13 @@ e.preventDefault(); if (distanceX < 0) { - return (handle.style.webkitTransform = 'translate3d(0,0,0)'); + return (handle.style[transformProperty] = 'translate3d(0,0,0)'); } if (distanceX > offset) { - return (handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'); + return (handle.style[transformProperty] = 'translate3d(' + offset + 'px,0,0)'); } - handle.style.webkitTransform = 'translate3d(' + distanceX + 'px,0,0)'; + handle.style[transformProperty] = 'translate3d(' + distanceX + 'px,0,0)'; toggle.classList[(distanceX > (toggleWidth / 2 - handleWidth / 2)) ? 'add' : 'remove']('active'); }); @@ -958,9 +990,9 @@ var slideOn = (!touchMove && !toggle.classList.contains('active')) || (touchMove && (distanceX > (toggleWidth / 2 - handleWidth / 2))); if (slideOn) { - handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'; + handle.style[transformProperty] = 'translate3d(' + offset + 'px,0,0)'; } else { - handle.style.webkitTransform = 'translate3d(0,0,0)'; + handle.style[transformProperty] = 'translate3d(0,0,0)'; } toggle.classList[slideOn ? 'add' : 'remove']('active'); diff --git a/dist/js/ratchet.min.js b/dist/js/ratchet.min.js index f09ab38..057da28 100644 --- a/dist/js/ratchet.min.js +++ b/dist/js/ratchet.min.js @@ -7,4 +7,4 @@ * v2.0.2 designed by @connors. * ===================================================== */ -!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},b=function(b){var c=a(b.target);return c&&c.hash?document.querySelector(c.hash):void 0};window.addEventListener("touchend",function(a){var c=b(a);c&&(c&&c.classList.contains("modal")&&c.classList.toggle("active"),a.preventDefault())})}(),!function(){"use strict";var a,b=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},c=function(){a.style.display="none",a.removeEventListener("webkitTransitionEnd",c)},d=function(){var b=document.createElement("div");return b.classList.add("backdrop"),b.addEventListener("touchend",function(){a.addEventListener("webkitTransitionEnd",c),a.classList.remove("visible"),a.parentNode.removeChild(d)}),b}(),e=function(c){var d=b(c.target);if(d&&d.hash&&!(d.hash.indexOf("/")>0)){try{a=document.querySelector(d.hash)}catch(e){a=null}if(null!==a&&a&&a.classList.contains("popover"))return a}},f=function(a){var b=e(a);b&&(b.style.display="block",b.offsetHeight,b.classList.add("visible"),b.parentNode.appendChild(d))};window.addEventListener("touchend",f)}(),!function(){"use strict";function a(){f[p.id]=document.body.cloneNode(!0)}var b,c=function(){},d=20,e=sessionStorage,f={},g={"slide-in":"slide-out","slide-out":"slide-in",fade:"fade"},h={bartab:".bar-tab",barnav:".bar-nav",barfooter:".bar-footer",barheadersecondary:".bar-header-secondary"},i=function(a,b){p.id=a.id,b&&(a=l(a.id)),e[a.id]=JSON.stringify(a),window.history.replaceState(a.id,a.title,a.url)},j=function(){var a=p.id,b=JSON.parse(e.cacheForwardStack||"[]"),c=JSON.parse(e.cacheBackStack||"[]");for(c.push(a);b.length;)delete e[b.shift()];for(;c.length>d;)delete e[c.shift()];window.history.pushState(null,"",l(p.id).url),e.cacheForwardStack=JSON.stringify(b),e.cacheBackStack=JSON.stringify(c)},k=function(a,b){var c="forward"===b,d=JSON.parse(e.cacheForwardStack||"[]"),f=JSON.parse(e.cacheBackStack||"[]"),g=c?f:d,h=c?d:f;p.id&&g.push(p.id),h.pop(),e.cacheForwardStack=JSON.stringify(d),e.cacheBackStack=JSON.stringify(f)},l=function(a){return JSON.parse(e[a]||null)||{}},m=function(a){var c=u(a.target);if(!(!c||a.which>1||a.metaKey||a.ctrlKey||b||location.protocol!==c.protocol||location.host!==c.host||!c.hash&&/#/.test(c.href)||c.hash&&c.href.replace(c.hash,"")===location.href.replace(location.hash,"")||"push"===c.getAttribute("data-ignore")))return c},n=function(a){var b=m(a);b&&(a.preventDefault(),p({url:b.href,hash:b.hash,timeout:b.getAttribute("data-timeout"),transition:b.getAttribute("data-transition")}))},o=function(a){var b,c,d,i,j,m,n,o,q=a.state;if(q&&e[q]){if(j=p.id]*>([\s\S.]*)<\/head>/i)[0],d.innerHTML=f.match(/]*>([\s\S.]*)<\/body>/i)[0]):(c=d=document.createElement("div"),c.innerHTML=f),e.title=c.querySelector("title");var g="innerText"in e.title?"innerText":"textContent";return e.title=e.title&&e.title[g].trim(),b.transition?e=w(e,".content",d):e.contents=d,e};window.addEventListener("touchstart",function(){b=!1}),window.addEventListener("touchmove",function(){b=!0}),window.addEventListener("touchend",n),window.addEventListener("click",function(a){m(a)&&a.preventDefault()}),window.addEventListener("popstate",o),window.PUSH=p}(),!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll(".segmented-control .control-item");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchend",function(b){var c,d,e,f=a(b.target),g="active",h="."+g;if(f&&(c=f.parentNode.querySelector(h),c&&c.classList.remove(g),f.classList.add(g),f.hash&&(e=document.querySelector(f.hash)))){d=e.parentNode.querySelectorAll(h);for(var i=0;i .slide-group");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},p=function(){if("webkitTransform"in c.style){var a=c.style.webkitTransform.match(/translate3d\(([^,]*)/),b=a?a[1]:0;return parseInt(b,10)}},q=function(a){var b=a?0>d?"ceil":"floor":"round";k=Math[b](p()/(m/c.children.length)),k+=a,k=Math.min(k,0),k=Math.max(-(c.children.length-1),k)},r=function(f){if(c=o(f.target)){var k=c.querySelector(".slide");m=k.offsetWidth*c.children.length,l=void 0,j=c.offsetWidth,i=1,g=-(c.children.length-1),h=+new Date,a=f.touches[0].pageX,b=f.touches[0].pageY,d=0,e=0,q(0),c.style["-webkit-transition-duration"]=0}},s=function(h){h.touches.length>1||!c||(n||(a+=h.touches[0].pageX-a-1),d=h.touches[0].pageX-a,e=h.touches[0].pageY-b,a=h.touches[0].pageX,b=h.touches[0].pageY,"undefined"==typeof l&&n&&(l=Math.abs(e)>Math.abs(d)),l||(f=d/i+p(),h.preventDefault(),i=0===k&&d>0?a/j+1.25:k===g&&0>d?Math.abs(a)/j+1.25:1,c.style.webkitTransform="translate3d("+f+"px,0,0)",n=!0))},t=function(a){c&&!l&&(n=!1,q(+new Date-h<1e3&&Math.abs(d)>15?0>d?-1:1:0),f=k*j,c.style["-webkit-transition-duration"]=".2s",c.style.webkitTransform="translate3d("+f+"px,0,0)",a=new CustomEvent("slide",{detail:{slideNumber:Math.abs(k)},bubbles:!0,cancelable:!0}),c.parentNode.dispatchEvent(a))};window.addEventListener("touchstart",r),window.addEventListener("touchmove",s),window.addEventListener("touchend",t)}(),!function(){"use strict";var a={},b=!1,c=!1,d=!1,e=function(a){for(var b,c=document.querySelectorAll(".toggle");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchstart",function(c){if(c=c.originalEvent||c,d=e(c.target)){var f=d.querySelector(".toggle-handle"),g=d.clientWidth,h=f.clientWidth,i=d.classList.contains("active")?g-h:0;a={pageX:c.touches[0].pageX-i,pageY:c.touches[0].pageY},b=!1}}),window.addEventListener("touchmove",function(e){if(e=e.originalEvent||e,!(e.touches.length>1)&&d){var f=d.querySelector(".toggle-handle"),g=e.touches[0],h=d.clientWidth,i=f.clientWidth,j=h-i;if(b=!0,c=g.pageX-a.pageX,!(Math.abs(c)c)return f.style.webkitTransform="translate3d(0,0,0)";if(c>j)return f.style.webkitTransform="translate3d("+j+"px,0,0)";f.style.webkitTransform="translate3d("+c+"px,0,0)",d.classList[c>h/2-i/2?"add":"remove"]("active")}}}),window.addEventListener("touchend",function(a){if(d){var e=d.querySelector(".toggle-handle"),f=d.clientWidth,g=e.clientWidth,h=f-g,i=!b&&!d.classList.contains("active")||b&&c>f/2-g/2;e.style.webkitTransform=i?"translate3d("+h+"px,0,0)":"translate3d(0,0,0)",d.classList[i?"add":"remove"]("active"),a=new CustomEvent("toggle",{detail:{isActive:i},bubbles:!0,cancelable:!0}),d.dispatchEvent(a),b=!1,d=!1}})}(); \ No newline at end of file +!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},b=function(b){var c=a(b.target);return c&&c.hash?document.querySelector(c.hash):void 0};window.addEventListener("touchend",function(a){var c=b(a);c&&(c&&c.classList.contains("modal")&&c.classList.toggle("active"),a.preventDefault())})}(),!function(){"use strict";var a,b=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},c=function(){a.style.display="none",a.removeEventListener("webkitTransitionEnd",c)},d=function(){var b=document.createElement("div");return b.classList.add("backdrop"),b.addEventListener("touchend",function(){a.addEventListener("webkitTransitionEnd",c),a.classList.remove("visible"),a.parentNode.removeChild(d)}),b}(),e=function(c){var d=b(c.target);if(d&&d.hash&&!(d.hash.indexOf("/")>0)){try{a=document.querySelector(d.hash)}catch(e){a=null}if(null!==a&&a&&a.classList.contains("popover"))return a}},f=function(a){var b=e(a);b&&(b.style.display="block",b.offsetHeight,b.classList.add("visible"),b.parentNode.appendChild(d))};window.addEventListener("touchend",f)}(),!function(){"use strict";function a(){f[p.id]=document.body.cloneNode(!0)}var b,c=function(){},d=20,e=sessionStorage,f={},g={"slide-in":"slide-out","slide-out":"slide-in",fade:"fade"},h={bartab:".bar-tab",barnav:".bar-nav",barfooter:".bar-footer",barheadersecondary:".bar-header-secondary"},i=function(a,b){p.id=a.id,b&&(a=l(a.id)),e[a.id]=JSON.stringify(a),window.history.replaceState(a.id,a.title,a.url)},j=function(){var a=p.id,b=JSON.parse(e.cacheForwardStack||"[]"),c=JSON.parse(e.cacheBackStack||"[]");for(c.push(a);b.length;)delete e[b.shift()];for(;c.length>d;)delete e[c.shift()];l(p.id).url&&window.history.pushState(null,"",l(p.id).url),e.cacheForwardStack=JSON.stringify(b),e.cacheBackStack=JSON.stringify(c)},k=function(a,b){var c="forward"===b,d=JSON.parse(e.cacheForwardStack||"[]"),f=JSON.parse(e.cacheBackStack||"[]"),g=c?f:d,h=c?d:f;p.id&&g.push(p.id),h.pop(),e.cacheForwardStack=JSON.stringify(d),e.cacheBackStack=JSON.stringify(f)},l=function(a){return JSON.parse(e[a]||null)||{}},m=function(a){var c=u(a.target);if(!(!c||a.which>1||a.metaKey||a.ctrlKey||b||location.protocol!==c.protocol||location.host!==c.host||!c.hash&&/#/.test(c.href)||c.hash&&c.href.replace(c.hash,"")===location.href.replace(location.hash,"")||"push"===c.getAttribute("data-ignore")))return c},n=function(a){var b=m(a);b&&(a.preventDefault(),p({url:b.href,hash:b.hash,timeout:b.getAttribute("data-timeout"),transition:b.getAttribute("data-transition")}))},o=function(a){var b,c,d,i,j,m,n,o,q=a.state;if(q&&e[q]){if(j=p.id]*>([\s\S.]*)<\/head>/i)[0],d.innerHTML=f.match(/]*>([\s\S.]*)<\/body>/i)[0]):(c=d=document.createElement("div"),c.innerHTML=f),e.title=c.querySelector("title");var g="innerText"in e.title?"innerText":"textContent";return e.title=e.title&&e.title[g].trim(),b.transition?e=w(e,".content",d):e.contents=d,e};window.addEventListener("touchstart",function(){b=!1}),window.addEventListener("touchmove",function(){b=!0}),window.addEventListener("touchend",n),window.addEventListener("click",function(a){m(a)&&a.preventDefault()}),window.addEventListener("popstate",o),window.PUSH=p}(),!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll(".segmented-control .control-item");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchend",function(b){var c,d,e,f=a(b.target),g="active",h="."+g;if(f&&(c=f.parentNode.querySelector(h),c&&c.classList.remove(g),f.classList.add(g),f.hash&&(e=document.querySelector(f.hash)))){d=e.parentNode.querySelectorAll(h);for(var i=0;i .slide-group");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},s=function(){var a=c.style[q].match(/translate3d\(([^,]*)/),b=a?a[1]:0;return parseInt(b,10)},t=function(a){var b=a?0>d?"ceil":"floor":"round";k=Math[b](s()/(m/c.children.length)),k+=a,k=Math.min(k,0),k=Math.max(-(c.children.length-1),k)},u=function(f){if(c=r(f.target)){var k=c.querySelector(".slide");m=k.offsetWidth*c.children.length,l=void 0,j=c.offsetWidth,i=1,g=-(c.children.length-1),h=+new Date,a=f.touches[0].pageX,b=f.touches[0].pageY,d=0,e=0,t(0),c.style[p+"transition-duration"]=0}},v=function(h){h.touches.length>1||!c||(n||(a+=h.touches[0].pageX-a-1),d=h.touches[0].pageX-a,e=h.touches[0].pageY-b,a=h.touches[0].pageX,b=h.touches[0].pageY,"undefined"==typeof l&&n&&(l=Math.abs(e)>Math.abs(d)),l||(f=d/i+s(),h.preventDefault(),i=0===k&&d>0?a/j+1.25:k===g&&0>d?Math.abs(a)/j+1.25:1,c.style[q]="translate3d("+f+"px,0,0)",n=!0))},w=function(a){c&&!l&&(n=!1,t(+new Date-h<1e3&&Math.abs(d)>15?0>d?-1:1:0),f=k*j,c.style[p+"transition-duration"]=".2s",c.style[q]="translate3d("+f+"px,0,0)",a=new CustomEvent("slide",{detail:{slideNumber:Math.abs(k)},bubbles:!0,cancelable:!0}),c.parentNode.dispatchEvent(a))};window.addEventListener("touchstart",u),window.addEventListener("touchmove",v),window.addEventListener("touchend",w)}(),!function(){"use strict";var a={},b=!1,c=!1,d=!1,e=function(){var a=window.getComputedStyle(document.documentElement,""),b=(Array.prototype.slice.call(a).join("").match(/-(moz|webkit|ms)-/)||""===a.OLink&&["","o"])[1];return{transform:b[0].toUpperCase()+b.substr(1)+"Transform"}}(),f=e.transform,g=function(a){for(var b,c=document.querySelectorAll(".toggle");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchstart",function(c){if(c=c.originalEvent||c,d=g(c.target)){var e=d.querySelector(".toggle-handle"),f=d.clientWidth,h=e.clientWidth,i=d.classList.contains("active")?f-h:0;a={pageX:c.touches[0].pageX-i,pageY:c.touches[0].pageY},b=!1}}),window.addEventListener("touchmove",function(e){if(e=e.originalEvent||e,!(e.touches.length>1)&&d){var g=d.querySelector(".toggle-handle"),h=e.touches[0],i=d.clientWidth,j=g.clientWidth,k=i-j;if(b=!0,c=h.pageX-a.pageX,!(Math.abs(c)c)return g.style[f]="translate3d(0,0,0)";if(c>k)return g.style[f]="translate3d("+k+"px,0,0)";g.style[f]="translate3d("+c+"px,0,0)",d.classList[c>i/2-j/2?"add":"remove"]("active")}}}),window.addEventListener("touchend",function(a){if(d){var e=d.querySelector(".toggle-handle"),g=d.clientWidth,h=e.clientWidth,i=g-h,j=!b&&!d.classList.contains("active")||b&&c>g/2-h/2;e.style[f]=j?"translate3d("+i+"px,0,0)":"translate3d(0,0,0)",d.classList[j?"add":"remove"]("active"),a=new CustomEvent("toggle",{detail:{isActive:j},bubbles:!0,cancelable:!0}),d.dispatchEvent(a),b=!1,d=!1}})}(); \ No newline at end of file diff --git a/docs/dist/js/ratchet.js b/docs/dist/js/ratchet.js index d11a952..a49aebd 100644 --- a/docs/dist/js/ratchet.js +++ b/docs/dist/js/ratchet.js @@ -198,7 +198,9 @@ delete cacheMapping[cacheBackStack.shift()]; } - window.history.pushState(null, '', getCached(PUSH.id).url); + if (getCached(PUSH.id).url) { + window.history.pushState(null, '', getCached(PUSH.id).url); + } cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack); cacheMapping.cacheBackStack = JSON.stringify(cacheBackStack); @@ -740,6 +742,23 @@ var scrollableArea; var startedMoving; + // Original script from http://davidwalsh.name/vendor-prefix + var getBrowserCapabilities = (function () { + var styles = window.getComputedStyle(document.documentElement, ''); + var pre = (Array.prototype.slice + .call(styles) + .join('') + .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) + )[1]; + return { + prefix: '-' + pre + '-', + transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' + }; + })(); + + var transformPrefix = getBrowserCapabilities.prefix; + var transformProperty = getBrowserCapabilities.transform; + var getSlider = function (target) { var i; var sliders = document.querySelectorAll('.slider > .slide-group'); @@ -754,11 +773,9 @@ }; var getScroll = function () { - if ('webkitTransform' in slider.style) { - var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/); - var ret = translate3d ? translate3d[1] : 0; - return parseInt(ret, 10); - } + var translate3d = slider.style[transformProperty].match(/translate3d\(([^,]*)/); + var ret = translate3d ? translate3d[1] : 0; + return parseInt(ret, 10); }; var setSlideNumber = function (offset) { @@ -791,7 +808,7 @@ setSlideNumber(0); - slider.style['-webkit-transition-duration'] = 0; + slider.style[transformPrefix + 'transition-duration'] = 0; }; var onTouchMove = function (e) { @@ -824,7 +841,7 @@ resistance = slideNumber === 0 && deltaX > 0 ? (pageX / sliderWidth) + 1.25 : slideNumber === lastSlide && deltaX < 0 ? (Math.abs(pageX) / sliderWidth) + 1.25 : 1; - slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + slider.style[transformProperty] = 'translate3d(' + offsetX + 'px,0,0)'; // started moving startedMoving = true; @@ -842,8 +859,8 @@ offsetX = slideNumber * sliderWidth; - slider.style['-webkit-transition-duration'] = '.2s'; - slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + slider.style[transformPrefix + 'transition-duration'] = '.2s'; + slider.style[transformProperty] = 'translate3d(' + offsetX + 'px,0,0)'; e = new CustomEvent('slide', { detail: { slideNumber: Math.abs(slideNumber) }, @@ -877,6 +894,21 @@ var distanceX = false; var toggle = false; + // Original script from http://davidwalsh.name/vendor-prefix + var getBrowserCapabilities = (function () { + var styles = window.getComputedStyle(document.documentElement, ''); + var pre = (Array.prototype.slice + .call(styles) + .join('') + .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) + )[1]; + return { + transform: pre[0].toUpperCase() + pre.substr(1) + 'Transform' + }; + })(); + + var transformProperty = getBrowserCapabilities.transform; + var findToggle = function (target) { var i; var toggles = document.querySelectorAll('.toggle'); @@ -935,13 +967,13 @@ e.preventDefault(); if (distanceX < 0) { - return (handle.style.webkitTransform = 'translate3d(0,0,0)'); + return (handle.style[transformProperty] = 'translate3d(0,0,0)'); } if (distanceX > offset) { - return (handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'); + return (handle.style[transformProperty] = 'translate3d(' + offset + 'px,0,0)'); } - handle.style.webkitTransform = 'translate3d(' + distanceX + 'px,0,0)'; + handle.style[transformProperty] = 'translate3d(' + distanceX + 'px,0,0)'; toggle.classList[(distanceX > (toggleWidth / 2 - handleWidth / 2)) ? 'add' : 'remove']('active'); }); @@ -958,9 +990,9 @@ var slideOn = (!touchMove && !toggle.classList.contains('active')) || (touchMove && (distanceX > (toggleWidth / 2 - handleWidth / 2))); if (slideOn) { - handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'; + handle.style[transformProperty] = 'translate3d(' + offset + 'px,0,0)'; } else { - handle.style.webkitTransform = 'translate3d(0,0,0)'; + handle.style[transformProperty] = 'translate3d(0,0,0)'; } toggle.classList[slideOn ? 'add' : 'remove']('active'); diff --git a/docs/dist/js/ratchet.min.js b/docs/dist/js/ratchet.min.js index f09ab38..057da28 100644 --- a/docs/dist/js/ratchet.min.js +++ b/docs/dist/js/ratchet.min.js @@ -7,4 +7,4 @@ * v2.0.2 designed by @connors. * ===================================================== */ -!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},b=function(b){var c=a(b.target);return c&&c.hash?document.querySelector(c.hash):void 0};window.addEventListener("touchend",function(a){var c=b(a);c&&(c&&c.classList.contains("modal")&&c.classList.toggle("active"),a.preventDefault())})}(),!function(){"use strict";var a,b=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},c=function(){a.style.display="none",a.removeEventListener("webkitTransitionEnd",c)},d=function(){var b=document.createElement("div");return b.classList.add("backdrop"),b.addEventListener("touchend",function(){a.addEventListener("webkitTransitionEnd",c),a.classList.remove("visible"),a.parentNode.removeChild(d)}),b}(),e=function(c){var d=b(c.target);if(d&&d.hash&&!(d.hash.indexOf("/")>0)){try{a=document.querySelector(d.hash)}catch(e){a=null}if(null!==a&&a&&a.classList.contains("popover"))return a}},f=function(a){var b=e(a);b&&(b.style.display="block",b.offsetHeight,b.classList.add("visible"),b.parentNode.appendChild(d))};window.addEventListener("touchend",f)}(),!function(){"use strict";function a(){f[p.id]=document.body.cloneNode(!0)}var b,c=function(){},d=20,e=sessionStorage,f={},g={"slide-in":"slide-out","slide-out":"slide-in",fade:"fade"},h={bartab:".bar-tab",barnav:".bar-nav",barfooter:".bar-footer",barheadersecondary:".bar-header-secondary"},i=function(a,b){p.id=a.id,b&&(a=l(a.id)),e[a.id]=JSON.stringify(a),window.history.replaceState(a.id,a.title,a.url)},j=function(){var a=p.id,b=JSON.parse(e.cacheForwardStack||"[]"),c=JSON.parse(e.cacheBackStack||"[]");for(c.push(a);b.length;)delete e[b.shift()];for(;c.length>d;)delete e[c.shift()];window.history.pushState(null,"",l(p.id).url),e.cacheForwardStack=JSON.stringify(b),e.cacheBackStack=JSON.stringify(c)},k=function(a,b){var c="forward"===b,d=JSON.parse(e.cacheForwardStack||"[]"),f=JSON.parse(e.cacheBackStack||"[]"),g=c?f:d,h=c?d:f;p.id&&g.push(p.id),h.pop(),e.cacheForwardStack=JSON.stringify(d),e.cacheBackStack=JSON.stringify(f)},l=function(a){return JSON.parse(e[a]||null)||{}},m=function(a){var c=u(a.target);if(!(!c||a.which>1||a.metaKey||a.ctrlKey||b||location.protocol!==c.protocol||location.host!==c.host||!c.hash&&/#/.test(c.href)||c.hash&&c.href.replace(c.hash,"")===location.href.replace(location.hash,"")||"push"===c.getAttribute("data-ignore")))return c},n=function(a){var b=m(a);b&&(a.preventDefault(),p({url:b.href,hash:b.hash,timeout:b.getAttribute("data-timeout"),transition:b.getAttribute("data-transition")}))},o=function(a){var b,c,d,i,j,m,n,o,q=a.state;if(q&&e[q]){if(j=p.id]*>([\s\S.]*)<\/head>/i)[0],d.innerHTML=f.match(/]*>([\s\S.]*)<\/body>/i)[0]):(c=d=document.createElement("div"),c.innerHTML=f),e.title=c.querySelector("title");var g="innerText"in e.title?"innerText":"textContent";return e.title=e.title&&e.title[g].trim(),b.transition?e=w(e,".content",d):e.contents=d,e};window.addEventListener("touchstart",function(){b=!1}),window.addEventListener("touchmove",function(){b=!0}),window.addEventListener("touchend",n),window.addEventListener("click",function(a){m(a)&&a.preventDefault()}),window.addEventListener("popstate",o),window.PUSH=p}(),!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll(".segmented-control .control-item");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchend",function(b){var c,d,e,f=a(b.target),g="active",h="."+g;if(f&&(c=f.parentNode.querySelector(h),c&&c.classList.remove(g),f.classList.add(g),f.hash&&(e=document.querySelector(f.hash)))){d=e.parentNode.querySelectorAll(h);for(var i=0;i .slide-group");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},p=function(){if("webkitTransform"in c.style){var a=c.style.webkitTransform.match(/translate3d\(([^,]*)/),b=a?a[1]:0;return parseInt(b,10)}},q=function(a){var b=a?0>d?"ceil":"floor":"round";k=Math[b](p()/(m/c.children.length)),k+=a,k=Math.min(k,0),k=Math.max(-(c.children.length-1),k)},r=function(f){if(c=o(f.target)){var k=c.querySelector(".slide");m=k.offsetWidth*c.children.length,l=void 0,j=c.offsetWidth,i=1,g=-(c.children.length-1),h=+new Date,a=f.touches[0].pageX,b=f.touches[0].pageY,d=0,e=0,q(0),c.style["-webkit-transition-duration"]=0}},s=function(h){h.touches.length>1||!c||(n||(a+=h.touches[0].pageX-a-1),d=h.touches[0].pageX-a,e=h.touches[0].pageY-b,a=h.touches[0].pageX,b=h.touches[0].pageY,"undefined"==typeof l&&n&&(l=Math.abs(e)>Math.abs(d)),l||(f=d/i+p(),h.preventDefault(),i=0===k&&d>0?a/j+1.25:k===g&&0>d?Math.abs(a)/j+1.25:1,c.style.webkitTransform="translate3d("+f+"px,0,0)",n=!0))},t=function(a){c&&!l&&(n=!1,q(+new Date-h<1e3&&Math.abs(d)>15?0>d?-1:1:0),f=k*j,c.style["-webkit-transition-duration"]=".2s",c.style.webkitTransform="translate3d("+f+"px,0,0)",a=new CustomEvent("slide",{detail:{slideNumber:Math.abs(k)},bubbles:!0,cancelable:!0}),c.parentNode.dispatchEvent(a))};window.addEventListener("touchstart",r),window.addEventListener("touchmove",s),window.addEventListener("touchend",t)}(),!function(){"use strict";var a={},b=!1,c=!1,d=!1,e=function(a){for(var b,c=document.querySelectorAll(".toggle");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchstart",function(c){if(c=c.originalEvent||c,d=e(c.target)){var f=d.querySelector(".toggle-handle"),g=d.clientWidth,h=f.clientWidth,i=d.classList.contains("active")?g-h:0;a={pageX:c.touches[0].pageX-i,pageY:c.touches[0].pageY},b=!1}}),window.addEventListener("touchmove",function(e){if(e=e.originalEvent||e,!(e.touches.length>1)&&d){var f=d.querySelector(".toggle-handle"),g=e.touches[0],h=d.clientWidth,i=f.clientWidth,j=h-i;if(b=!0,c=g.pageX-a.pageX,!(Math.abs(c)c)return f.style.webkitTransform="translate3d(0,0,0)";if(c>j)return f.style.webkitTransform="translate3d("+j+"px,0,0)";f.style.webkitTransform="translate3d("+c+"px,0,0)",d.classList[c>h/2-i/2?"add":"remove"]("active")}}}),window.addEventListener("touchend",function(a){if(d){var e=d.querySelector(".toggle-handle"),f=d.clientWidth,g=e.clientWidth,h=f-g,i=!b&&!d.classList.contains("active")||b&&c>f/2-g/2;e.style.webkitTransform=i?"translate3d("+h+"px,0,0)":"translate3d(0,0,0)",d.classList[i?"add":"remove"]("active"),a=new CustomEvent("toggle",{detail:{isActive:i},bubbles:!0,cancelable:!0}),d.dispatchEvent(a),b=!1,d=!1}})}(); \ No newline at end of file +!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},b=function(b){var c=a(b.target);return c&&c.hash?document.querySelector(c.hash):void 0};window.addEventListener("touchend",function(a){var c=b(a);c&&(c&&c.classList.contains("modal")&&c.classList.toggle("active"),a.preventDefault())})}(),!function(){"use strict";var a,b=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},c=function(){a.style.display="none",a.removeEventListener("webkitTransitionEnd",c)},d=function(){var b=document.createElement("div");return b.classList.add("backdrop"),b.addEventListener("touchend",function(){a.addEventListener("webkitTransitionEnd",c),a.classList.remove("visible"),a.parentNode.removeChild(d)}),b}(),e=function(c){var d=b(c.target);if(d&&d.hash&&!(d.hash.indexOf("/")>0)){try{a=document.querySelector(d.hash)}catch(e){a=null}if(null!==a&&a&&a.classList.contains("popover"))return a}},f=function(a){var b=e(a);b&&(b.style.display="block",b.offsetHeight,b.classList.add("visible"),b.parentNode.appendChild(d))};window.addEventListener("touchend",f)}(),!function(){"use strict";function a(){f[p.id]=document.body.cloneNode(!0)}var b,c=function(){},d=20,e=sessionStorage,f={},g={"slide-in":"slide-out","slide-out":"slide-in",fade:"fade"},h={bartab:".bar-tab",barnav:".bar-nav",barfooter:".bar-footer",barheadersecondary:".bar-header-secondary"},i=function(a,b){p.id=a.id,b&&(a=l(a.id)),e[a.id]=JSON.stringify(a),window.history.replaceState(a.id,a.title,a.url)},j=function(){var a=p.id,b=JSON.parse(e.cacheForwardStack||"[]"),c=JSON.parse(e.cacheBackStack||"[]");for(c.push(a);b.length;)delete e[b.shift()];for(;c.length>d;)delete e[c.shift()];l(p.id).url&&window.history.pushState(null,"",l(p.id).url),e.cacheForwardStack=JSON.stringify(b),e.cacheBackStack=JSON.stringify(c)},k=function(a,b){var c="forward"===b,d=JSON.parse(e.cacheForwardStack||"[]"),f=JSON.parse(e.cacheBackStack||"[]"),g=c?f:d,h=c?d:f;p.id&&g.push(p.id),h.pop(),e.cacheForwardStack=JSON.stringify(d),e.cacheBackStack=JSON.stringify(f)},l=function(a){return JSON.parse(e[a]||null)||{}},m=function(a){var c=u(a.target);if(!(!c||a.which>1||a.metaKey||a.ctrlKey||b||location.protocol!==c.protocol||location.host!==c.host||!c.hash&&/#/.test(c.href)||c.hash&&c.href.replace(c.hash,"")===location.href.replace(location.hash,"")||"push"===c.getAttribute("data-ignore")))return c},n=function(a){var b=m(a);b&&(a.preventDefault(),p({url:b.href,hash:b.hash,timeout:b.getAttribute("data-timeout"),transition:b.getAttribute("data-transition")}))},o=function(a){var b,c,d,i,j,m,n,o,q=a.state;if(q&&e[q]){if(j=p.id]*>([\s\S.]*)<\/head>/i)[0],d.innerHTML=f.match(/]*>([\s\S.]*)<\/body>/i)[0]):(c=d=document.createElement("div"),c.innerHTML=f),e.title=c.querySelector("title");var g="innerText"in e.title?"innerText":"textContent";return e.title=e.title&&e.title[g].trim(),b.transition?e=w(e,".content",d):e.contents=d,e};window.addEventListener("touchstart",function(){b=!1}),window.addEventListener("touchmove",function(){b=!0}),window.addEventListener("touchend",n),window.addEventListener("click",function(a){m(a)&&a.preventDefault()}),window.addEventListener("popstate",o),window.PUSH=p}(),!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll(".segmented-control .control-item");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchend",function(b){var c,d,e,f=a(b.target),g="active",h="."+g;if(f&&(c=f.parentNode.querySelector(h),c&&c.classList.remove(g),f.classList.add(g),f.hash&&(e=document.querySelector(f.hash)))){d=e.parentNode.querySelectorAll(h);for(var i=0;i .slide-group");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},s=function(){var a=c.style[q].match(/translate3d\(([^,]*)/),b=a?a[1]:0;return parseInt(b,10)},t=function(a){var b=a?0>d?"ceil":"floor":"round";k=Math[b](s()/(m/c.children.length)),k+=a,k=Math.min(k,0),k=Math.max(-(c.children.length-1),k)},u=function(f){if(c=r(f.target)){var k=c.querySelector(".slide");m=k.offsetWidth*c.children.length,l=void 0,j=c.offsetWidth,i=1,g=-(c.children.length-1),h=+new Date,a=f.touches[0].pageX,b=f.touches[0].pageY,d=0,e=0,t(0),c.style[p+"transition-duration"]=0}},v=function(h){h.touches.length>1||!c||(n||(a+=h.touches[0].pageX-a-1),d=h.touches[0].pageX-a,e=h.touches[0].pageY-b,a=h.touches[0].pageX,b=h.touches[0].pageY,"undefined"==typeof l&&n&&(l=Math.abs(e)>Math.abs(d)),l||(f=d/i+s(),h.preventDefault(),i=0===k&&d>0?a/j+1.25:k===g&&0>d?Math.abs(a)/j+1.25:1,c.style[q]="translate3d("+f+"px,0,0)",n=!0))},w=function(a){c&&!l&&(n=!1,t(+new Date-h<1e3&&Math.abs(d)>15?0>d?-1:1:0),f=k*j,c.style[p+"transition-duration"]=".2s",c.style[q]="translate3d("+f+"px,0,0)",a=new CustomEvent("slide",{detail:{slideNumber:Math.abs(k)},bubbles:!0,cancelable:!0}),c.parentNode.dispatchEvent(a))};window.addEventListener("touchstart",u),window.addEventListener("touchmove",v),window.addEventListener("touchend",w)}(),!function(){"use strict";var a={},b=!1,c=!1,d=!1,e=function(){var a=window.getComputedStyle(document.documentElement,""),b=(Array.prototype.slice.call(a).join("").match(/-(moz|webkit|ms)-/)||""===a.OLink&&["","o"])[1];return{transform:b[0].toUpperCase()+b.substr(1)+"Transform"}}(),f=e.transform,g=function(a){for(var b,c=document.querySelectorAll(".toggle");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchstart",function(c){if(c=c.originalEvent||c,d=g(c.target)){var e=d.querySelector(".toggle-handle"),f=d.clientWidth,h=e.clientWidth,i=d.classList.contains("active")?f-h:0;a={pageX:c.touches[0].pageX-i,pageY:c.touches[0].pageY},b=!1}}),window.addEventListener("touchmove",function(e){if(e=e.originalEvent||e,!(e.touches.length>1)&&d){var g=d.querySelector(".toggle-handle"),h=e.touches[0],i=d.clientWidth,j=g.clientWidth,k=i-j;if(b=!0,c=h.pageX-a.pageX,!(Math.abs(c)c)return g.style[f]="translate3d(0,0,0)";if(c>k)return g.style[f]="translate3d("+k+"px,0,0)";g.style[f]="translate3d("+c+"px,0,0)",d.classList[c>i/2-j/2?"add":"remove"]("active")}}}),window.addEventListener("touchend",function(a){if(d){var e=d.querySelector(".toggle-handle"),g=d.clientWidth,h=e.clientWidth,i=g-h,j=!b&&!d.classList.contains("active")||b&&c>g/2-h/2;e.style[f]=j?"translate3d("+i+"px,0,0)":"translate3d(0,0,0)",d.classList[j?"add":"remove"]("active"),a=new CustomEvent("toggle",{detail:{isActive:j},bubbles:!0,cancelable:!0}),d.dispatchEvent(a),b=!1,d=!1}})}(); \ No newline at end of file