swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
2 lines • 4.95 kB
JavaScript
import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,h as now}from"../shared/utils.min.mjs";function Mousewheel({swiper:e,extendParams:t,on:a,emit:s}){const n=getWindow();let l;t({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),e.mousewheel={enabled:!1};let i,r=now();const o=[];function d(){e.enabled&&(e.mouseEntered=!0)}function m(){e.enabled&&(e.mouseEntered=!1)}function p(t){return!(e.params.mousewheel.thresholdDelta&&t.delta<e.params.mousewheel.thresholdDelta)&&(!(e.params.mousewheel.thresholdTime&&now()-r<e.params.mousewheel.thresholdTime)&&(t.delta>=6&&now()-r<60||(t.direction<0?e.isEnd&&!e.params.loop||e.animating||(e.slideNext(),s("scroll",t.raw)):e.isBeginning&&!e.params.loop||e.animating||(e.slidePrev(),s("scroll",t.raw)),r=(new n.Date).getTime(),!1)))}function u(t){let a=t,n=!0;if(!e.enabled)return;if(t.target.closest(`.${e.params.mousewheel.noMousewheelClass}`))return;const r=e.params.mousewheel;e.params.cssMode&&a.preventDefault();let d=e.el;"container"!==e.params.mousewheel.eventsTarget&&(d=document.querySelector(e.params.mousewheel.eventsTarget));const m=d&&d.contains(a.target);if(!e.mouseEntered&&!m&&!r.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let u=0;const h=e.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(r.forceToAxis)if(e.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;u=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;u=-c.pixelY}else u=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===u)return!0;r.invert&&(u=-u);let w=e.getTranslate()+u*r.sensitivity;if(w>=e.minTranslate()&&(w=e.minTranslate()),w<=e.maxTranslate()&&(w=e.maxTranslate()),n=!!e.params.loop||!(w===e.minTranslate()||w===e.maxTranslate()),n&&e.params.nested&&a.stopPropagation(),e.params.freeMode&&e.params.freeMode.enabled){const t={time:now(),delta:Math.abs(u),direction:Math.sign(u)},n=i&&t.time<i.time+500&&t.delta<=i.delta&&t.direction===i.direction;if(!n){i=void 0;let d=e.getTranslate()+u*r.sensitivity;const m=e.isBeginning,p=e.isEnd;if(d>=e.minTranslate()&&(d=e.minTranslate()),d<=e.maxTranslate()&&(d=e.maxTranslate()),e.setTransition(0),e.setTranslate(d),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses(),(!m&&e.isBeginning||!p&&e.isEnd)&&e.updateSlidesClasses(),e.params.loop&&e.loopFix({direction:t.direction<0?"next":"prev",byMousewheel:!0}),e.params.freeMode.sticky){clearTimeout(l),l=void 0,o.length>=15&&o.shift();const a=o.length?o[o.length-1]:void 0,s=o[0];if(o.push(t),a&&(t.delta>a.delta||t.direction!==a.direction))o.splice(0);else if(o.length>=15&&t.time-s.time<500&&s.delta-t.delta>=1&&t.delta<=6){const a=u>0?.8:.2;i=t,o.splice(0),l=nextTick(()=>{!e.destroyed&&e.params&&e.slideToClosest(e.params.speed,!0,void 0,a)},0)}l||(l=nextTick(()=>{if(e.destroyed||!e.params)return;i=t,o.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)},500))}if(n||s("scroll",a),e.params.autoplay&&e.params.autoplay.disableOnInteraction&&e.autoplay.stop(),r.releaseOnEdges&&(d===e.minTranslate()||d===e.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(u),direction:Math.sign(u),raw:t};o.length>=2&&o.shift();const s=o.length?o[o.length-1]:void 0;if(o.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&p(a):p(a),function(t){const a=e.params.mousewheel;if(t.direction<0){if(e.isEnd&&!e.params.loop&&a.releaseOnEdges)return!0}else if(e.isBeginning&&!e.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function h(t){let a=e.el;"container"!==e.params.mousewheel.eventsTarget&&(a=document.querySelector(e.params.mousewheel.eventsTarget)),a[t]("mouseenter",d),a[t]("mouseleave",m),a[t]("wheel",u)}function c(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",u),!0):!e.mousewheel.enabled&&(h("addEventListener"),e.mousewheel.enabled=!0,!0)}function w(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,u),!0):!!e.mousewheel.enabled&&(h("removeEventListener"),e.mousewheel.enabled=!1,!0)}a("init",()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&w(),e.params.mousewheel.enabled&&c()}),a("destroy",()=>{e.params.cssMode&&c(),e.mousewheel.enabled&&w()}),Object.assign(e.mousewheel,{enable:c,disable:w})}export{Mousewheel as default};
//# sourceMappingURL=mousewheel.min.mjs.map