UNPKG

6.29 kBJavaScriptView Raw
1/**
2 * Bundle of @livelybone/mouse-events
3 * Generated: 2020-05-16
4 * Version: 1.0.0
5 * License: MIT
6 * Author: 2631541504@qq.com
7 */
8
9import { isMobile } from 'is-mobile';
10import * as MouseWheel from '@livelybone/mouse-wheel';
11
12function _defineProperty(obj, key, value) {
13 if (key in obj) {
14 Object.defineProperty(obj, key, {
15 value: value,
16 enumerable: true,
17 configurable: true,
18 writable: true
19 });
20 } else {
21 obj[key] = value;
22 }
23
24 return obj;
25}
26
27function ownKeys(object, enumerableOnly) {
28 var keys = Object.keys(object);
29
30 if (Object.getOwnPropertySymbols) {
31 var symbols = Object.getOwnPropertySymbols(object);
32 if (enumerableOnly) symbols = symbols.filter(function (sym) {
33 return Object.getOwnPropertyDescriptor(object, sym).enumerable;
34 });
35 keys.push.apply(keys, symbols);
36 }
37
38 return keys;
39}
40
41function _objectSpread2(target) {
42 for (var i = 1; i < arguments.length; i++) {
43 var source = arguments[i] != null ? arguments[i] : {};
44
45 if (i % 2) {
46 ownKeys(Object(source), true).forEach(function (key) {
47 _defineProperty(target, key, source[key]);
48 });
49 } else if (Object.getOwnPropertyDescriptors) {
50 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
51 } else {
52 ownKeys(Object(source)).forEach(function (key) {
53 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
54 });
55 }
56 }
57
58 return target;
59}
60
61function _slicedToArray(arr, i) {
62 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
63}
64
65function _arrayWithHoles(arr) {
66 if (Array.isArray(arr)) return arr;
67}
68
69function _iterableToArrayLimit(arr, i) {
70 if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
71 var _arr = [];
72 var _n = true;
73 var _d = false;
74 var _e = undefined;
75
76 try {
77 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
78 _arr.push(_s.value);
79
80 if (i && _arr.length === i) break;
81 }
82 } catch (err) {
83 _d = true;
84 _e = err;
85 } finally {
86 try {
87 if (!_n && _i["return"] != null) _i["return"]();
88 } finally {
89 if (_d) throw _e;
90 }
91 }
92
93 return _arr;
94}
95
96function _unsupportedIterableToArray(o, minLen) {
97 if (!o) return;
98 if (typeof o === "string") return _arrayLikeToArray(o, minLen);
99 var n = Object.prototype.toString.call(o).slice(8, -1);
100 if (n === "Object" && o.constructor) n = o.constructor.name;
101 if (n === "Map" || n === "Set") return Array.from(o);
102 if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
103}
104
105function _arrayLikeToArray(arr, len) {
106 if (len == null || len > arr.length) len = arr.length;
107
108 for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
109
110 return arr2;
111}
112
113function _nonIterableRest() {
114 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
115}
116
117var $isMobile = isMobile();
118var prefix = '';
119var $addEventListener = 'addEventListener';
120var $removeEventListener = 'removeEventListener';
121
122if (typeof window !== 'undefined' && typeof document !== 'undefined') {
123 // detect event model
124 if ('addEventListener' in window) {
125 $addEventListener = 'addEventListener';
126 $removeEventListener = 'removeEventListener';
127 } else {
128 $addEventListener = 'attachEvent';
129 $removeEventListener = 'detachEvent';
130 prefix = 'on';
131 }
132}
133
134function $addListener(element, eventName, listener, useCapture) {
135 var eName = prefix + eventName;
136 var addListener = element[$addEventListener].bind(element);
137 addListener(eName, listener, useCapture);
138 return function () {
139 var removeListener = element[$removeEventListener].bind(element);
140 removeListener(eName, listener, useCapture);
141 };
142}
143
144var Utils = /*#__PURE__*/Object.freeze({
145 $isMobile: $isMobile,
146 $addListener: $addListener
147});
148
149var client = $isMobile ? 'mobile' : 'pc';
150var EventType = {
151 start: {
152 pc: 'mousedown',
153 mobile: 'touchstart'
154 }[client],
155 move: {
156 pc: 'mousemove',
157 mobile: 'touchmove'
158 }[client],
159 end: {
160 pc: 'mouseup',
161 mobile: 'touchend'
162 }[client]
163};
164
165function getClientPos(ev) {
166 var touch = null;
167
168 if ($isMobile) {
169 if (ev.changedTouches.length > 0) {
170
171 var _ev$changedTouches = _slicedToArray(ev.changedTouches, 1);
172
173 touch = _ev$changedTouches[0];
174 } else if (ev.targetTouched.length > 0) {
175
176 var _ev$changedTouches2 = _slicedToArray(ev.changedTouches, 1);
177
178 touch = _ev$changedTouches2[0];
179 } else {
180
181 var _ev$touches = _slicedToArray(ev.touches, 1);
182
183 touch = _ev$touches[0];
184 }
185 }
186
187 return touch || ev;
188}
189
190function getEvent(ev, startEvent) {
191 return {
192 deltaX: getClientPos(ev).clientX - getClientPos(startEvent).clientX,
193 deltaY: getClientPos(ev).clientY - getClientPos(startEvent).clientY,
194 originalEvent: ev
195 };
196}
197
198function bind(element, listener, useCapture) {
199 if (typeof element === 'function') {
200 /* eslint-disable no-param-reassign */
201 useCapture = listener;
202 listener = element;
203 element = window;
204 }
205
206 var startEvent;
207 var unbindFn;
208
209 function $listener(ev) {
210 var event = {
211 deltaX: 0,
212 deltaY: 0,
213 originalEvent: ev,
214 type: 'dragMoveStart'
215 };
216
217 if (ev.type === EventType.start) {
218 startEvent = ev;
219 var unbindMove = $addListener(window, EventType.move, $listener, useCapture);
220 var unbindEnd = $addListener(window, EventType.end, $listener, useCapture);
221
222 unbindFn = function unbindFn() {
223 unbindMove();
224 unbindEnd();
225 };
226 } else if (ev.type === EventType.move) {
227 event = _objectSpread2(_objectSpread2({}, getEvent(ev, startEvent)), {}, {
228 type: 'dragMove'
229 });
230 } else if (ev.type === EventType.end) {
231 event = _objectSpread2(_objectSpread2({}, getEvent(ev, startEvent)), {}, {
232 type: 'dragMoveEnd'
233 });
234 if (unbindFn) unbindFn();
235 }
236
237 listener(event);
238 }
239
240 return $addListener(element, EventType.start, $listener, useCapture);
241}
242
243var DragMove = /*#__PURE__*/Object.freeze({
244 bind: bind
245});
246
247export { DragMove, MouseWheel, Utils };