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