index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import onTouchStart from './onTouchStart.js';
  2. import onTouchMove from './onTouchMove.js';
  3. import onTouchEnd from './onTouchEnd.js';
  4. import onResize from './onResize.js';
  5. import onClick from './onClick.js';
  6. import onScroll from './onScroll.js';
  7. let dummyEventAttached = false;
  8. function dummyEventListener() {}
  9. const events = (swiper, method) => {
  10. const {
  11. params,
  12. touchEvents,
  13. wrapperEl,
  14. device,
  15. support
  16. } = swiper;
  17. let el = swiper.native;
  18. const capture = !!params.nested;
  19. const domMethod = method === 'on' ? 'on' : 'off';
  20. const swiperMethod = method;
  21. if (!support.touch) {
  22. let desktopMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
  23. if (document.querySelector(`#${swiper.$el.swiperElId}`)) {
  24. document.querySelector(`#${swiper.$el.swiperElId}`)[desktopMethod](touchEvents.start, swiper
  25. .onTouchStart,
  26. false);
  27. }
  28. document[desktopMethod](touchEvents.move, swiper.onTouchMove, capture);
  29. document[desktopMethod](touchEvents.end, swiper.onTouchEnd, false);
  30. } else {
  31. const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params
  32. .passiveListeners ? {
  33. passive: true,
  34. capture: false
  35. } : false;
  36. }
  37. // Resize handler
  38. if (params.updateOnWindowResize) {
  39. swiper[swiperMethod](
  40. device.ios || device.android ?
  41. 'resize orientationchange observerUpdate' :
  42. 'resize observerUpdate',
  43. onResize,
  44. true,
  45. );
  46. } else {
  47. swiper[swiperMethod]('observerUpdate', onResize, true);
  48. }
  49. };
  50. function attachEvents() {
  51. const swiper = this;
  52. const {
  53. params,
  54. support
  55. } = swiper;
  56. swiper.onTouchStart = onTouchStart.bind(swiper);
  57. swiper.onTouchMove = onTouchMove.bind(swiper);
  58. swiper.onTouchEnd = onTouchEnd.bind(swiper);
  59. if (params.cssMode) {
  60. swiper.onScroll = onScroll.bind(swiper);
  61. }
  62. swiper.onClick = onClick.bind(swiper);
  63. events(swiper, 'on');
  64. }
  65. function detachEvents() {
  66. const swiper = this;
  67. events(swiper, 'off');
  68. }
  69. export default {
  70. attachEvents,
  71. detachEvents
  72. };