-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscrolltosmooth.pkgd.min.js
More file actions
6 lines (6 loc) · 9.81 KB
/
scrolltosmooth.pkgd.min.js
File metadata and controls
6 lines (6 loc) · 9.81 KB
1
2
3
4
5
6
/*!
* ScrollToSmooth
* Author: Bastian Fießinger
* Version: 3.0.1
*/
var scrollToSmooth=function(){"use strict";var t=document,n=t.documentElement,e=t.body,i=window;function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,n){for(var e=0;e<n.length;e++){var i=n[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var e=[],i=!0,r=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(e.push(s.value),!n||e.length!==n);i=!0);}catch(t){r=!0,o=t}finally{try{i||null==a.return||a.return()}finally{if(r)throw o}}return e}(t,n)||function(t,n){if(!t)return;if("string"==typeof t)return a(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return a(t,n)}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var u,c=function(t){return t},l=function(t){var n=7.5625,e=2.75;return t<1/e?n*t*t:t<2/e?n*(t-=1.5/e)*t+.75:t<2.5/e?n*(t-=2.25/e)*t+.9375:n*(t-=2.625/e)*t+.984375},h=i.requestAnimationFrame||i.mozRequestAnimationFrame||i.webkitRequestAnimationFrame||i.msRequestAnimationFrame,f=i.cancelAnimationFrame||i.mozCancelAnimationFrame,p=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return e.querySelector(n)},g=function(t,n){Array.prototype.forEach.call(t,n)},y=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=!0;try{"string"==typeof n?p(n,e):d(n)&&e.contains(n)}catch(t){i=!1}return i},d=function(t){return function(t){try{return t instanceof Node}catch(n){return"object"===r(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName&&"object"===r(t.ownerDocument)}}(t)||function(t){try{return t instanceof HTMLElement}catch(n){return"object"===r(t)&&1===t.nodeType&&"object"===r(t.style)&&"object"===r(t.ownerDocument)}}(t)},v=function(){return i.pageYOffset||e.scrollTop||n.scrollTop},m=function(){return i.performance&&"now"in i.performance?performance.now():(new Date).getTime()},b=function(n){var e=new RegExp("("+location.hash+")?$");return(n.baseURI||t.URL).replace(e,"")},M=function(){return Math.max(e.scrollHeight,e.offsetHeight,e.clientHeight,n.scrollHeight,n.offsetHeight,n.clientHeight)},w=function(){return i.innerHeight||n.clientHeight||e.clientHeight},S=function(t){return t+"px"},O="data-scrolltosmooth-expand",I="top",A="bottom";function E(t){var n="";return"href"===this.settings.targetAttribute&&t.href?n=t.href.replace(b(t),""):t.getAttribute(this.settings.targetAttribute)&&(n=t.getAttribute(this.settings.targetAttribute)),this.settings.topOnEmptyHash&&"#"==n?this.container:(console.log(n,y(n,this.container)),y(n,this.container)?p(n,this.container):null)}function x(){var t=this,n=[];return g(this.elements,(function(e){E.call(t,e)&&("href"===t.settings.targetAttribute&&-1!=e.href.indexOf(b(e))&&-1!=e.href.indexOf("#")&&(""!=e.hash||t.settings.topOnEmptyHash)||"href"!=t.settings.targetAttribute)&&n.push(e)})),n}function P(t,n){n.stopPropagation(),n.preventDefault();var e=E.call(this,t);e&&this.scrollTo(e)}function j(t){var n=Math.max(1,this.settings.duration);if(this.settings.durationRelative){var e="number"==typeof this.settings.durationRelative?this.settings.durationRelative:1e3;n=Math.max(this.settings.duration,t*(n/e))}return this.settings.durationMin&&n<this.settings.durationMin&&(n=this.settings.durationMin),this.settings.durationMax&&n>this.settings.durationMax&&(n=this.settings.durationMax),n}function C(t,n,e){var i=function(t,n,e){var i=n-e;return t<0?{to:I,px:-1*t}:t>i&&{to:A,px:-1*(i-t)}}(t,n,e),r=k.call(this),o=r.filter((function(t){return t.getAttribute(O)===I}))[0],s=r.filter((function(t){return t.getAttribute(O)===A}))[0];i&&o&&i.to===I?o.style.height=S(i.px):i&&s&&i.to===A?s.style.height=S(i.px):g(r,(function(t){t.style.removeProperty("height")}))}function k(){return Array.prototype.slice.call(this.container.children).filter((function(t){return t.hasAttribute(O)}))}function H(t,n,e,r,o){var s=this,a=t-n,c=a<0?-1*a:a,l=j.call(this,c),f=Math.min(l,m()-e),p=f/l,g="string"==typeof this.settings.easing?function(t,n){return Function('"use strict"; return ('+t+"("+n+"))")()}(this.settings.easing,p):this.settings.easing(p),y=n+a*g;this.settings.onScrollUpdate&&"function"==typeof this.settings.onScrollUpdate&&this.settings.onScrollUpdate({startPosition:n,currentPosition:y,endPosition:t}),i.scroll(0,y),r||(r=M()),o||(o=w()),C.call(this,y,r,o),f>=l?this.settings.onScrollEnd&&"function"==typeof this.settings.onScrollEnd&&this.settings.onScrollEnd({startPosition:n,endPosition:t}):u=h((function(){H.call(s,t,n,e,r,o)}))}var R=function(){function a(i,r){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,a);var o={container:t,targetAttribute:"href",topOnEmptyHash:!0,offset:null,duration:400,durationRelative:!1,durationMin:null,durationMax:null,easing:c,onScrollStart:null,onScrollUpdate:null,onScrollEnd:null};for(var s in r=r||o,o)Object.prototype.hasOwnProperty.call(o,s)&&!Object.prototype.hasOwnProperty.call(r,s)&&(r[s]=o[s]);this.settings=r;var u=e;"string"==typeof this.settings.container&&y(this.settings.container)?u=p(this.settings.container):"string"!=typeof this.settings.container&&d(this.settings.container)&&y(this.settings.container)&&(u=this.settings.container),u=u===t||u===n?e:u,this.container=u,this.elements="string"==typeof i?function(n){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:t).querySelectorAll(n)}(i,this.container):i}var l,h,b;return l=a,(h=[{key:"init",value:function(){var n=this;this.destroy();var e=t.createElement("div");e.setAttribute(O,I),this.container.insertBefore(e,this.container.firstChild);var r=t.createElement("div");r.setAttribute(O,A),this.container.appendChild(r),g(x.call(this),(function(t){t.addEventListener("click",P.bind(n,t),!1)})),g(["mousewheel","wheel","touchmove"],(function(t){i.addEventListener(t,(function(){n.cancelScroll()}))}))}},{key:"destroy",value:function(){var t=this;this.settings&&(this.cancelScroll(),g(k.call(this),(function(t){t.parentNode.removeChild(t)})),g(x.call(this),(function(n){n.removeEventListener("click",P.bind(t,n),!1)})))}},{key:"scrollTo",value:function(t){var n=v(),e=M(),i=w(),o=0;if(isNaN(t)){if(("object"===r(t)||"string"==typeof t)&&y(t,this.container)){"string"==typeof t&&(t=p(t,this.container));var s=t.getBoundingClientRect().top+n;o=e-s<i?e-i:s}}else"string"==typeof t&&(t=parseFloat(t)),o=t=e-t<i?e-i:t;if(null!==this.settings.offset){var a=0;if(y(this.settings.offset,this.container)){var u=this.settings.offset;"string"==typeof u&&(u=p(this.settings.offset)),d(u)&&(a=u.getBoundingClientRect().height)}else isNaN(this.settings.offset)||"string"==typeof(a=this.settings.offset)&&(a=parseFloat(a));o-=a}o=o<0?0:o,this.settings.onScrollStart&&"function"==typeof this.settings.onScrollStart&&this.settings.onScrollStart({startPosition:n,endPosition:o}),H.call(this,o,n,m(),e,i)}},{key:"scrollBy",value:function(t){this.scrollTo(v()+t)}},{key:"cancelScroll",value:function(){u&&f(u)}},{key:"update",value:function(t){if("object"===r(t))for(var n=0,e=Object.entries(t);n<e.length;n++){var i=s(e[n],2),o=i[0],a=i[1];this.settings[o]=a}}}])&&o(l.prototype,h),b&&o(l,b),a}();return i.linear=c,i.easeInQuad=function(t){return t*t},i.easeOutQuad=function(t){return 1-(1-t)*(1-t)},i.easeInOutQuad=function(t){return t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2},i.easeInCubic=function(t){return t*t*t},i.easeOutCubic=function(t){return 1-Math.pow(1-t,3)},i.easeInOutCubic=function(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2},i.easeInQuart=function(t){return t*t*t*t},i.easeOutQuart=function(t){return 1-Math.pow(1-t,4)},i.easeInOutQuart=function(t){return t<.5?8*t*t*t*t:1-Math.pow(-2*t+2,4)/2},i.easeInQuint=function(t){return t*t*t*t*t},i.easeOutQuint=function(t){return 1-Math.pow(1-t,5)},i.easeInOutQuint=function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t},i.easeInSine=function(t){return 1-Math.cos(t*Math.PI/2)},i.easeOutSine=function(t){return Math.sin(t*Math.PI/2)},i.easeInOutSine=function(t){return-(Math.cos(Math.PI*t)-1)/2},i.easeInExpo=function(t){return 0===t?0:Math.pow(2,10*t-10)},i.easeOutExpo=function(t){return 1===t?1:1-Math.pow(2,-10*t)},i.easeInOutExpo=function(t){return 0===t?0:1===t?1:t<.5?Math.pow(2,20*t-10)/2:(2-Math.pow(2,-20*t+10))/2},i.easeInCirc=function(t){return 1-Math.sqrt(1-Math.pow(t,2))},i.easeOutCirc=function(t){return Math.sqrt(1-Math.pow(t-1,2))},i.easeInOutCirc=function(t){return t<.5?(1-Math.sqrt(1-Math.pow(2*t,2)))/2:(Math.sqrt(1-Math.pow(-2*t+2,2))+1)/2},i.easeInElastic=function(t){var n=2*Math.PI/3;return 0===t?0:1===t?1:-Math.pow(2,10*t-10)*Math.sin((10*t-10.75)*n)},i.easeOutElastic=function(t){var n=2*Math.PI/3;return 0===t?0:1===t?1:Math.pow(2,-10*t)*Math.sin((10*t-.75)*n)+1},i.easeInOutElastic=function(t){var n=2*Math.PI/4.5;return 0===t?0:1===t?1:t<.5?-Math.pow(2,20*t-10)*Math.sin((20*t-11.125)*n)/2:Math.pow(2,-20*t+10)*Math.sin((20*t-11.125)*n)/2+1},i.easeInBack=function(t){var n=1.70158;return 2.70158*t*t*t-n*t*t},i.easeOutBack=function(t){var n=1.70158;return 1+2.70158*Math.pow(t-1,3)+n*Math.pow(t-1,2)},i.easeInOutBack=function(t){var n=2.5949095;return t<.5?Math.pow(2*t,2)*(7.189819*t-n)/2:(Math.pow(2*t-2,2)*((n+1)*(2*t-2)+n)+2)/2},i.easeInBounce=function(t){return 1-l(1-t)},i.easeOutBounce=l,i.easeInOutBounce=function(t){return t<.5?(1-l(1-2*t))/2:(1+l(2*t-1))/2},R}();