123456789 |
- /**
- * jQuery asHoverScroll v0.3.7
- * https://github.com/amazingSurge/jquery-asHoverScroll
- *
- * Copyright (c) amazingSurge
- * Released under the LGPL-3.0 license
- */
- !function(t,e){if("function"==typeof define&&define.amd)define(["jquery"],e);else if("undefined"!=typeof exports)e(require("jquery"));else{var i={exports:{}};e(t.jQuery),t.jqueryAsHoverScrollEs=i.exports}}(this,function(t){"use strict";function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(t){return t&&t.__esModule?t:{default:t}}(t),n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),s={namespace:"asHoverScroll",list:"> ul",item:"> li",exception:null,direction:"vertical",fixed:!1,mouseMove:!0,touchScroll:!0,pointerScroll:!0,useCssTransforms:!0,useCssTransforms3d:!0,boundary:10,throttle:20,onEnter:function(){$(this).siblings().removeClass("is-active"),$(this).addClass("is-active")},onLeave:function(){$(this).removeClass("is-active")}},o={};!function(t){var e={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},n=["webkit","Moz","O","ms"],s=(0,i.default)("<support>").get(0).style,o={csstransforms:function(){return Boolean(r("transform"))},csstransforms3d:function(){return Boolean(r("perspective"))},csstransitions:function(){return Boolean(r("transition"))},cssanimations:function(){return Boolean(r("animation"))}},r=function(t,e){var o=!1,r=t.charAt(0).toUpperCase()+t.slice(1);return void 0!==s[t]&&(o=t),o||i.default.each(n,function(t,e){return void 0===s[e+r]||(o="-"+e.toLowerCase()+"-"+r,!1)}),e?o:!!o},a=function(t){return r(t,!0)};o.csstransitions()&&(t.transition=new String(a("transition")),t.transition.end=e.transition.end[t.transition]),o.cssanimations()&&(t.animation=new String(a("animation")),t.animation.end=e.animation.end[t.animation]),o.csstransforms()&&(t.transform=new String(a("transform")),t.transform3d=o.csstransforms3d()),"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch?t.touch=!0:t.touch=!1,window.PointerEvent||window.MSPointerEvent?t.pointer=!0:t.pointer=!1,t.convertMatrixToArray=function(t){return!(!t||"matrix"!==t.substr(0,6))&&t.replace(/^.*\((.*)\)$/g,"$1").replace(/px/g,"").split(/, +/)},t.prefixPointerEvent=function(t){return window.MSPointerEvent?"MSPointer"+t.charAt(9).toUpperCase()+t.substr(10):t}}(o);var r=0,a=function(){function t(n,o){e(this,t),this.element=n,this.$element=(0,i.default)(n),this.options=i.default.extend({},s,o,this.$element.data()),this.$list=(0,i.default)(this.options.list,this.$element),this.classes={disabled:this.options.namespace+"-disabled"},"vertical"===this.options.direction?this.attributes={page:"pageY",axis:"Y",position:"top",length:"height",offset:"offsetTop",client:"clientY",clientLength:"clientHeight"}:"horizontal"===this.options.direction&&(this.attributes={page:"pageX",axis:"X",position:"left",length:"width",offset:"offsetLeft",client:"clientX",clientLength:"clientWidth"}),this._states={},this._scroll={time:null,pointer:null},this.instanceId=++r,this.trigger("init"),this.init()}return n(t,[{key:"init",value:function(){this.initPosition(),this.updateLength(),this.bindEvents()}},{key:"bindEvents",value:function(){var t=this,e=this,n=["enter"],s=[];this.options.mouseMove&&(this.$element.on(this.eventName("mousemove"),i.default.proxy(this.onMove,this)),n.push("mouseenter"),s.push("mouseleave")),this.options.touchScroll&&o.touch&&(this.$element.on(this.eventName("touchstart"),i.default.proxy(this.onScrollStart,this)),this.$element.on(this.eventName("touchcancel"),i.default.proxy(this.onScrollEnd,this))),this.options.pointerScroll&&o.pointer&&(this.$element.on(this.eventName(o.prefixPointerEvent("pointerdown")),i.default.proxy(this.onScrollStart,this)),this.$element.on(this.eventName(o.prefixPointerEvent("pointercancel")),i.default.proxy(this.onScrollEnd,this))),this.$list.on(this.eventName(n.join(" ")),this.options.item,function(){e.is("scrolling")||e.options.onEnter.call(t)}),this.$list.on(this.eventName(s.join(" ")),this.options.item,function(){e.is("scrolling")||e.options.onLeave.call(t)}),(0,i.default)(window).on(this.eventNameWithId("orientationchange"),function(){e.update()}),(0,i.default)(window).on(this.eventNameWithId("resize"),this.throttle(function(){e.update()},this.options.throttle))}},{key:"unbindEvents",value:function(){this.$element.off(this.eventName()),this.$list.off(this.eventName()),(0,i.default)(window).off(this.eventNameWithId())}},{key:"onScrollStart",value:function(t){var e=this,n=this;if(!(this.is("scrolling")||3===t.which||(0,i.default)(t.target).closest(this.options.exception).length>0)){this._scroll.time=(new Date).getTime(),this._scroll.pointer=this.pointer(t),this._scroll.start=this.getPosition(),this._scroll.moved=!1;var s=function(){e.enter("scrolling"),e.trigger("scroll")};this.options.touchScroll&&o.touch&&((0,i.default)(document).on(this.eventName("touchend"),i.default.proxy(this.onScrollEnd,this)),(0,i.default)(document).one(this.eventName("touchmove"),i.default.proxy(function(){this.is("scrolling")||((0,i.default)(document).on(n.eventName("touchmove"),i.default.proxy(this.onScrollMove,this)),s())},this))),this.options.pointerScroll&&o.pointer&&((0,i.default)(document).on(this.eventName(o.prefixPointerEvent("pointerup")),i.default.proxy(this.onScrollEnd,this)),(0,i.default)(document).one(this.eventName(o.prefixPointerEvent("pointermove")),i.default.proxy(function(){this.is("scrolling")||((0,i.default)(document).on(n.eventName(o.prefixPointerEvent("pointermove")),i.default.proxy(this.onScrollMove,this)),s())},this))),(0,i.default)(document).on(this.eventName("blur"),i.default.proxy(this.onScrollEnd,this)),t.preventDefault()}}},{key:"onScrollMove",value:function(t){this._scroll.updated=this.pointer(t);var e=this.distance(this._scroll.pointer,this._scroll.updated);if((Math.abs(this._scroll.pointer.x-this._scroll.updated.x)>10||Math.abs(this._scroll.pointer.y-this._scroll.updated.y)>10)&&(this._scroll.moved=!0),this.is("scrolling")){t.preventDefault();var i=this._scroll.start+e;this.canScroll()&&(i>0?i=0:i<this.containerLength-this.listLength&&(i=this.containerLength-this.listLength),this.updatePosition(i))}}},{key:"onScrollEnd",value:function(t){this._scroll.moved||(0,i.default)(t.target).trigger("tap"),this.options.touchScroll&&o.touch&&(0,i.default)(document).off(this.eventName("touchmove touchend")),this.options.pointerScroll&&o.pointer&&(0,i.default)(document).off(this.eventName(o.prefixPointerEvent("pointermove pointerup"))),(0,i.default)(document).off(this.eventName("blur")),this.leave("scrolling"),this.trigger("scrolled")}},{key:"pointer",value:function(t){var e={x:null,y:null};return(t=this.getEvent(t)).pageX&&!this.options.fixed?(e.x=t.pageX,e.y=t.pageY):(e.x=t.clientX,e.y=t.clientY),e}},{key:"getEvent",value:function(t){return t=t.originalEvent||t||window.event,t=t.touches&&t.touches.length?t.touches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t}},{key:"distance",value:function(t,e){return"vertical"===this.options.direction?e.y-t.y:e.x-t.x}},{key:"onMove",value:function(t){if(t=this.getEvent(t),!this.is("scrolling")&&this.isMatchScroll(t)){var e=void 0,i=void 0;(i=(t[this.attributes.page]&&!this.options.fixed?t[this.attributes.page]:t[this.attributes.client])-this.element[this.attributes.offset])<this.options.boundary?e=0:(e=(i-this.options.boundary)*this.multiplier)>this.listLength-this.containerLength&&(e=this.listLength-this.containerLength),this.updatePosition(-e)}}},{key:"isMatchScroll",value:function(t){return!(this.is("disabled")||!this.canScroll())&&(!this.options.exception||0===(0,i.default)(t.target).closest(this.options.exception).length)}},{key:"canScroll",value:function(){return this.listLength>this.containerLength}},{key:"getContainerLength",value:function(){return this.element[this.attributes.clientLength]}},{key:"getListhLength",value:function(){return this.$list[0][this.attributes.clientLength]}},{key:"updateLength",value:function(){this.containerLength=this.getContainerLength(),this.listLength=this.getListhLength(),this.multiplier=(this.listLength-this.containerLength)/(this.containerLength-2*this.options.boundary)}},{key:"initPosition",value:function(){var t=this.makePositionStyle(0);this.$list.css(t)}},{key:"getPosition",value:function(){var t=void 0;if(this.options.useCssTransforms&&o.transform){if(!(t=(this.options.useCssTransforms3d&&o.transform3d,o.convertMatrixToArray(this.$list.css(o.transform)))))return 0;t="X"===this.attributes.axis?t[12]||t[4]:t[13]||t[5]}else t=this.$list.css(this.attributes.position);return parseFloat(t.replace("px",""))}},{key:"makePositionStyle",value:function(t){var e=void 0,i="0px",n="0px";this.options.useCssTransforms&&o.transform?("X"===this.attributes.axis?i=t+"px":n=t+"px",e=o.transform.toString(),t=this.options.useCssTransforms3d&&o.transform3d?"translate3d("+i+","+n+",0px)":"translate("+i+","+n+")"):e=this.attributes.position;var s={};return s[e]=t,s}},{key:"updatePosition",value:function(t){var e=this.makePositionStyle(t);this.$list.css(e)}},{key:"update",value:function(){this.is("disabled")||(this.updateLength(),this.canScroll()||this.initPosition())}},{key:"eventName",value:function(t){if("string"!=typeof t||""===t)return".asHoverScroll";for(var e=(t=t.split(" ")).length,i=0;i<e;i++)t[i]=t[i]+".asHoverScroll";return t.join(" ")}},{key:"eventNameWithId",value:function(t){if("string"!=typeof t||""===t)return"."+this.options.namespace+"-"+this.instanceId;for(var e=(t=t.split(" ")).length,i=0;i<e;i++)t[i]=t[i]+"."+this.options.namespace+"-"+this.instanceId;return t.join(" ")}},{key:"trigger",value:function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];var s=[this].concat(i);this.$element.trigger("asHoverScroll::"+t,s);var o="on"+(t=t.replace(/\b\w+\b/g,function(t){return t.substring(0,1).toUpperCase()+t.substring(1)}));"function"==typeof this.options[o]&&this.options[o].apply(this,i)}},{key:"is",value:function(t){return this._states[t]&&this._states[t]>0}},{key:"enter",value:function(t){void 0===this._states[t]&&(this._states[t]=0),this._states[t]=1}},{key:"leave",value:function(t){this._states[t]=0}},{key:"throttle",value:function(t,e){var i=this,n=Date.now||function(){return(new Date).getTime()},s=void 0,o=void 0,r=void 0,a=void 0,l=0,h=function(){l=n(),s=null,a=t.apply(o,r),s||(o=r=null)};return function(){for(var u=arguments.length,c=Array(u),f=0;f<u;f++)c[f]=arguments[f];var d=n(),p=e-(d-l);return o=i,r=c,p<=0||p>e?(s&&(clearTimeout(s),s=null),l=d,a=t.apply(o,r),s||(o=r=null)):s||(s=setTimeout(h,p)),a}}},{key:"enable",value:function(){this.is("disabled")&&(this.leave("disabled"),this.$element.removeClass(this.classes.disabled),this.bindEvents()),this.trigger("enable")}},{key:"disable",value:function(){this.is("disabled")||(this.enter("disabled"),this.initPosition(),this.$element.addClass(this.classes.disabled),this.unbindEvents()),this.trigger("disable")}},{key:"destroy",value:function(){this.$element.removeClass(this.classes.disabled),this.unbindEvents(),this.$element.data("asHoverScroll",null),this.trigger("destroy")}}],[{key:"setDefaults",value:function(t){i.default.extend(s,i.default.isPlainObject(t)&&t)}}]),t}(),l={version:"0.3.7"},h=i.default.fn.asHoverScroll,u=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),s=1;s<e;s++)n[s-1]=arguments[s];if("string"==typeof t){var o=t;if(/^_/.test(o))return!1;if(!/^(get)/.test(o))return this.each(function(){var t=i.default.data(this,"asHoverScroll");t&&"function"==typeof t[o]&&t[o].apply(t,n)});var r=this.first().data("asHoverScroll");if(r&&"function"==typeof r[o])return r[o].apply(r,n)}return this.each(function(){(0,i.default)(this).data("asHoverScroll")||(0,i.default)(this).data("asHoverScroll",new a(this,t))})};i.default.fn.asHoverScroll=u,i.default.asHoverScroll=i.default.extend({setDefaults:a.setDefaults,noConflict:function(){return i.default.fn.asHoverScroll=h,u}},l)});
- //# sourceMappingURL=jquery-asHoverScroll.min.js.map
|