UNPKG

4.97 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _ssrWindow = require("ssr-window");
7
8var _dom = _interopRequireDefault(require("../../utils/dom"));
9
10var _utils = require("../../utils/utils");
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
16var Keyboard = {
17 handle: function handle(event) {
18 var swiper = this;
19 var window = (0, _ssrWindow.getWindow)();
20 var document = (0, _ssrWindow.getDocument)();
21 var rtl = swiper.rtlTranslate;
22 var e = event;
23 if (e.originalEvent) e = e.originalEvent; // jquery fix
24
25 var kc = e.keyCode || e.charCode;
26 var pageUpDown = swiper.params.keyboard.pageUpDown;
27 var isPageUp = pageUpDown && kc === 33;
28 var isPageDown = pageUpDown && kc === 34;
29 var isArrowLeft = kc === 37;
30 var isArrowRight = kc === 39;
31 var isArrowUp = kc === 38;
32 var isArrowDown = kc === 40; // Directions locks
33
34 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
35 return false;
36 }
37
38 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
39 return false;
40 }
41
42 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
43 return undefined;
44 }
45
46 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
47 return undefined;
48 }
49
50 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
51 var inView = false; // Check that swiper should be inside of visible area of window
52
53 if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
54 return undefined;
55 }
56
57 var windowWidth = window.innerWidth;
58 var windowHeight = window.innerHeight;
59 var swiperOffset = swiper.$el.offset();
60 if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
61 var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
62
63 for (var i = 0; i < swiperCoord.length; i += 1) {
64 var point = swiperCoord[i];
65
66 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
67 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
68
69 inView = true;
70 }
71 }
72
73 if (!inView) return undefined;
74 }
75
76 if (swiper.isHorizontal()) {
77 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
78 if (e.preventDefault) e.preventDefault();else e.returnValue = false;
79 }
80
81 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
82 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
83 } else {
84 if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
85 if (e.preventDefault) e.preventDefault();else e.returnValue = false;
86 }
87
88 if (isPageDown || isArrowDown) swiper.slideNext();
89 if (isPageUp || isArrowUp) swiper.slidePrev();
90 }
91
92 swiper.emit('keyPress', kc);
93 return undefined;
94 },
95 enable: function enable() {
96 var swiper = this;
97 var document = (0, _ssrWindow.getDocument)();
98 if (swiper.keyboard.enabled) return;
99 (0, _dom.default)(document).on('keydown', swiper.keyboard.handle);
100 swiper.keyboard.enabled = true;
101 },
102 disable: function disable() {
103 var swiper = this;
104 var document = (0, _ssrWindow.getDocument)();
105 if (!swiper.keyboard.enabled) return;
106 (0, _dom.default)(document).off('keydown', swiper.keyboard.handle);
107 swiper.keyboard.enabled = false;
108 }
109};
110var _default = {
111 name: 'keyboard',
112 params: {
113 keyboard: {
114 enabled: false,
115 onlyInViewport: true,
116 pageUpDown: true
117 }
118 },
119 create: function create() {
120 var swiper = this;
121 (0, _utils.bindModuleMethods)(swiper, {
122 keyboard: _extends({
123 enabled: false
124 }, Keyboard)
125 });
126 },
127 on: {
128 init: function init(swiper) {
129 if (swiper.params.keyboard.enabled) {
130 swiper.keyboard.enable();
131 }
132 },
133 destroy: function destroy(swiper) {
134 if (swiper.keyboard.enabled) {
135 swiper.keyboard.disable();
136 }
137 }
138 }
139};
140exports.default = _default;
\No newline at end of file