UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

151 lines (118 loc) 5.35 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _ssrWindow = require("ssr-window"); var _onTouchStart = _interopRequireDefault(require("./onTouchStart")); var _onTouchMove = _interopRequireDefault(require("./onTouchMove")); var _onTouchEnd = _interopRequireDefault(require("./onTouchEnd")); var _onResize = _interopRequireDefault(require("./onResize")); var _onClick = _interopRequireDefault(require("./onClick")); var _onScroll = _interopRequireDefault(require("./onScroll")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var dummyEventAttached = false; function dummyEventListener() {} function attachEvents() { var swiper = this; var document = (0, _ssrWindow.getDocument)(); var params = swiper.params, touchEvents = swiper.touchEvents, el = swiper.el, wrapperEl = swiper.wrapperEl, device = swiper.device, support = swiper.support; swiper.onTouchStart = _onTouchStart.default.bind(swiper); swiper.onTouchMove = _onTouchMove.default.bind(swiper); swiper.onTouchEnd = _onTouchEnd.default.bind(swiper); if (params.cssMode) { swiper.onScroll = _onScroll.default.bind(swiper); } swiper.onClick = _onClick.default.bind(swiper); var capture = !!params.nested; // Touch Events if (!support.touch && support.pointerEvents) { el.addEventListener(touchEvents.start, swiper.onTouchStart, false); document.addEventListener(touchEvents.move, swiper.onTouchMove, capture); document.addEventListener(touchEvents.end, swiper.onTouchEnd, false); } else { if (support.touch) { var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? { passive: false, capture: capture } : capture); el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); if (touchEvents.cancel) { el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); } if (!dummyEventAttached) { document.addEventListener('touchstart', dummyEventListener); dummyEventAttached = true; } } if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) { el.addEventListener('mousedown', swiper.onTouchStart, false); document.addEventListener('mousemove', swiper.onTouchMove, capture); document.addEventListener('mouseup', swiper.onTouchEnd, false); } } // Prevent Links Clicks if (params.preventClicks || params.preventClicksPropagation) { el.addEventListener('click', swiper.onClick, true); } if (params.cssMode) { wrapperEl.addEventListener('scroll', swiper.onScroll); } // Resize handler if (params.updateOnWindowResize) { swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize.default, true); } else { swiper.on('observerUpdate', _onResize.default, true); } } function detachEvents() { var swiper = this; var document = (0, _ssrWindow.getDocument)(); var params = swiper.params, touchEvents = swiper.touchEvents, el = swiper.el, wrapperEl = swiper.wrapperEl, device = swiper.device, support = swiper.support; var capture = !!params.nested; // Touch Events if (!support.touch && support.pointerEvents) { el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); } else { if (support.touch) { var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); if (touchEvents.cancel) { el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); } } if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) { el.removeEventListener('mousedown', swiper.onTouchStart, false); document.removeEventListener('mousemove', swiper.onTouchMove, capture); document.removeEventListener('mouseup', swiper.onTouchEnd, false); } } // Prevent Links Clicks if (params.preventClicks || params.preventClicksPropagation) { el.removeEventListener('click', swiper.onClick, true); } if (params.cssMode) { wrapperEl.removeEventListener('scroll', swiper.onScroll); } // Resize handler swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize.default); } var _default = { attachEvents: attachEvents, detachEvents: detachEvents }; exports.default = _default;