-
Notifications
You must be signed in to change notification settings - Fork 0
/
lc-swiper.min.js
9 lines (8 loc) · 1.79 KB
/
lc-swiper.min.js
1
2
3
4
5
6
7
8
9
/**
* lc-js-events.js - Micro vanilla javascript (ES6) class making swipe events easy!
* Version: v1.0
* Author: Luca Montanari aka LCweb
* Website: https://lcweb.it
* Licensed under the MIT license
*/
!function(){"use strict";if("function"==typeof window.lc_swiper)return!0;window.lc_swiper=function(e,i){return e?"function"!=typeof i?console.error("please use a valid callback"):(this.$elements=[],this.uniqid=Math.random().toString(36).substr(2,9),this.get_elems=function(e){return"string"!=typeof e?e instanceof Element?[e]:Object.values(e):((e.match(/(#[0-9][^\s:,]*)/g)||[]).forEach(function(i){e=e.replace(i,'[id="'+i.replace("#","")+'"]')}),document.querySelectorAll(e))},this.init=function(){const t=this;this.$elements=this.get_elems(e),this.$elements.forEach(function(e){void 0===e.lcswiper_cb&&(e.lcswiper_cb={}),e.lcswiper_cb[t.uniqid]=i,e.addEventListener("touchstart",i=>{e.lcswiper_xDown=i.touches[0].clientX,e.lcswiper_yDown=i.touches[0].clientY}),e.addEventListener("touchend",i=>{t.handleTouchDiff(e,i)})})},this.handleTouchDiff=function(e,i){if(void 0===e.lcswiper_xDown||!e.lcswiper_xDown||void 0===e.lcswiper_yDown||!e.lcswiper_yDown||void 0===e.lcswiper_cb[this.uniqid])return;const t=i.changedTouches[0].clientX,n=i.changedTouches[0].clientY,s=parseInt(e.lcswiper_xDown-t,10),c=parseInt(e.lcswiper_yDown-n,10);if(0!==Math.abs(s)||0!==Math.abs(c)){const i={up:c>0?c:0,right:s<0?Math.abs(s):0,down:c<0?Math.abs(c):0,left:s>0?s:0};e.lcswiper_cb[this.uniqid].call(this,i,e)}e.lcswiper_xDown=0,e.lcswiper_yDown=0},this.destroy=function(e){const i=this;(e?this.get_elems(e):this.$elements).forEach(function(e){void 0!==e.lcswiper_cb&&void 0!==e.lcswiper_cb[i.uniqid]&&delete e.lcswiper_cb[i.uniqid]})},this.init(),this):console.error("You must provide a valid selector or DOM object as first argument")}}();