swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
2 lines • 2.23 kB
JavaScript
import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{d as elementParents,f as elementOffset}from"../shared/utils.min.mjs";function Keyboard({swiper:e,extendParams:t,on:n,emit:a}){const r=getDocument(),i=getWindow();function l(t){if(!e.enabled)return;const{rtlTranslate:n}=e;let l=t;l.originalEvent&&(l=l.originalEvent);const o=l.keyCode||l.charCode,s=e.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,c=39===o,p=38===o,b=40===o;if(!e.allowSlideNext&&(e.isHorizontal()&&c||e.isVertical()&&b||f))return!1;if(!e.allowSlidePrev&&(e.isHorizontal()&&m||e.isVertical()&&p||d))return!1;if(l.shiftKey||l.altKey||l.ctrlKey||l.metaKey)return;if(r.activeElement&&(r.activeElement.isContentEditable||r.activeElement.nodeName&&("input"===r.activeElement.nodeName.toLowerCase()||"textarea"===r.activeElement.nodeName.toLowerCase())))return;if(e.params.keyboard.onlyInViewport&&(d||f||m||c||p||b)){let t=!1;if(elementParents(e.el,`.${e.params.slideClass}, swiper-slide`).length>0&&0===elementParents(e.el,`.${e.params.slideActiveClass}`).length)return;const a=e.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let e=0;e<f.length;e+=1){const n=f[e];if(n[0]>=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;t=!0}}if(!t)return}const u=e.params.keyboard.speed;e.isHorizontal()?((d||f||m||c)&&(l.preventDefault?l.preventDefault():l.returnValue=!1),((f||c)&&!n||(d||m)&&n)&&e.slideNext(u),((d||m)&&!n||(f||c)&&n)&&e.slidePrev(u)):((d||f||p||b)&&(l.preventDefault?l.preventDefault():l.returnValue=!1),(f||b)&&e.slideNext(u),(d||p)&&e.slidePrev(u)),a("keyPress",o)}function o(){e.keyboard.enabled||(r.addEventListener("keydown",l),e.keyboard.enabled=!0)}function s(){e.keyboard.enabled&&(r.removeEventListener("keydown",l),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0,speed:void 0}}),n("init",()=>{e.params.keyboard.enabled&&o()}),n("destroy",()=>{e.keyboard.enabled&&s()}),Object.assign(e.keyboard,{enable:o,disable:s})}export{Keyboard as default};
//# sourceMappingURL=keyboard.min.mjs.map