UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

2 lines 2.02 kB
import{j as elementParents,h as elementOffset}from"../shared/utils.min.mjs";const Keyboard=({swiper:e,extendParams:t,on:n,emit:a})=>{function l(){return e.params.keyboard}function i(t){if(!e.enabled)return;const{rtlTranslate:n}=e,i="originalEvent"in t&&t.originalEvent?t.originalEvent:t,r=i.keyCode||i.charCode,o=l(),s=!!o.pageUpDown,d=s&&33===r,f=s&&34===r,c=37===r,b=39===r,m=38===r,p=40===r;if(!e.allowSlideNext&&(e.isHorizontal()&&b||e.isVertical()&&p||f))return!1;if(!e.allowSlidePrev&&(e.isHorizontal()&&c||e.isVertical()&&m||d))return!1;if(i.shiftKey||i.altKey||i.ctrlKey||i.metaKey)return;const u=document.activeElement;if(u&&(u.isContentEditable||u.nodeName&&("input"===u.nodeName.toLowerCase()||"textarea"===u.nodeName.toLowerCase())))return;if(o.onlyInViewport&&(d||f||c||b||m||p)){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,l=a.clientWidth,i=a.clientHeight,r=window.innerWidth,o=window.innerHeight,s=elementOffset(a);n&&(s.left-=a.scrollLeft);const d=[[s.left,s.top],[s.left+l,s.top],[s.left,s.top+i],[s.left+l,s.top+i]];for(let e=0;e<d.length;e+=1){const n=d[e];if(n[0]>=0&&n[0]<=r&&n[1]>=0&&n[1]<=o){if(0===n[0]&&0===n[1])continue;t=!0}}if(!t)return}const y=o.speed;e.isHorizontal()?((d||f||c||b)&&i.cancelable&&i.preventDefault(),((f||b)&&!n||(d||c)&&n)&&e.slideNext(y),((d||c)&&!n||(f||b)&&n)&&e.slidePrev(y)):((d||f||m||p)&&i.cancelable&&i.preventDefault(),(f||p)&&e.slideNext(y),(d||m)&&e.slidePrev(y)),a("keyPress",r)}function r(){e.keyboard.enabled||(document.addEventListener("keydown",i),e.keyboard.enabled=!0)}function o(){e.keyboard.enabled&&(document.removeEventListener("keydown",i),e.keyboard.enabled=!1)}t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0,speed:void 0}}),e.keyboard={enabled:!1,enable:r,disable:o},n("init",()=>{l().enabled&&r()}),n("destroy",()=>{e.keyboard.enabled&&o()})};export{Keyboard as default}; //# sourceMappingURL=keyboard.min.mjs.map