1 | (function (global, factory) {
|
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
3 | typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
4 | (global = global || self, factory(global.window = global.window || {}));
|
5 | }(this, (function (exports) { 'use strict';
|
6 |
|
7 | function _defineProperties(target, props) {
|
8 | for (var i = 0; i < props.length; i++) {
|
9 | var descriptor = props[i];
|
10 | descriptor.enumerable = descriptor.enumerable || false;
|
11 | descriptor.configurable = true;
|
12 | if ("value" in descriptor) descriptor.writable = true;
|
13 | Object.defineProperty(target, descriptor.key, descriptor);
|
14 | }
|
15 | }
|
16 |
|
17 | function _createClass(Constructor, protoProps, staticProps) {
|
18 | if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
19 | if (staticProps) _defineProperties(Constructor, staticProps);
|
20 | return Constructor;
|
21 | }
|
22 |
|
23 | |
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | var gsap,
|
33 | _coreInitted,
|
34 | _clamp,
|
35 | _win,
|
36 | _doc,
|
37 | _docEl,
|
38 | _body,
|
39 | _isTouch,
|
40 | _pointerType,
|
41 | ScrollTrigger,
|
42 | _root,
|
43 | _normalizer,
|
44 | _eventTypes,
|
45 | _getGSAP = function _getGSAP() {
|
46 | return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap;
|
47 | },
|
48 | _startup = 1,
|
49 | _observers = [];
|
50 | exports._scrollers = [];
|
51 | exports._proxies = [];
|
52 | var _getTime = Date.now,
|
53 | _bridge = function _bridge(name, value) {
|
54 | return value;
|
55 | },
|
56 | _integrate = function _integrate() {
|
57 | var core = ScrollTrigger.core,
|
58 | data = core.bridge || {},
|
59 | scrollers = core._scrollers,
|
60 | proxies = core._proxies;
|
61 | scrollers.push.apply(scrollers, exports._scrollers);
|
62 | proxies.push.apply(proxies, exports._proxies);
|
63 | exports._scrollers = scrollers;
|
64 | exports._proxies = proxies;
|
65 |
|
66 | _bridge = function _bridge(name, value) {
|
67 | return data[name](value);
|
68 | };
|
69 | },
|
70 | _getProxyProp = function _getProxyProp(element, property) {
|
71 | return ~exports._proxies.indexOf(element) && exports._proxies[exports._proxies.indexOf(element) + 1][property];
|
72 | },
|
73 | _isViewport = function _isViewport(el) {
|
74 | return !!~_root.indexOf(el);
|
75 | },
|
76 | _addListener = function _addListener(element, type, func, nonPassive, capture) {
|
77 | return element.addEventListener(type, func, {
|
78 | passive: !nonPassive,
|
79 | capture: !!capture
|
80 | });
|
81 | },
|
82 | _removeListener = function _removeListener(element, type, func) {
|
83 | return element.removeEventListener(type, func);
|
84 | },
|
85 | _scrollLeft = "scrollLeft",
|
86 | _scrollTop = "scrollTop",
|
87 | _onScroll = function _onScroll() {
|
88 | return _normalizer && _normalizer.isPressed || exports._scrollers.cache++;
|
89 | },
|
90 | _scrollCacheFunc = function _scrollCacheFunc(f) {
|
91 | return function (value) {
|
92 | if (value || value === 0) {
|
93 | _startup && (_win.history.scrollRestoration = "manual");
|
94 | f(value);
|
95 | f.v = value;
|
96 | f.c = exports._scrollers.cache;
|
97 | _normalizer && _normalizer.isPressed && _bridge("ss", value);
|
98 | } else if (exports._scrollers.cache !== f.c || _bridge("ref")) {
|
99 | f.c = exports._scrollers.cache;
|
100 | f.v = f();
|
101 | }
|
102 |
|
103 | return f.v;
|
104 | };
|
105 | },
|
106 | _horizontal = {
|
107 | s: _scrollLeft,
|
108 | p: "left",
|
109 | p2: "Left",
|
110 | os: "right",
|
111 | os2: "Right",
|
112 | d: "width",
|
113 | d2: "Width",
|
114 | a: "x",
|
115 | sc: _scrollCacheFunc(function (value) {
|
116 | return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;
|
117 | })
|
118 | },
|
119 | _vertical = {
|
120 | s: _scrollTop,
|
121 | p: "top",
|
122 | p2: "Top",
|
123 | os: "bottom",
|
124 | os2: "Bottom",
|
125 | d: "height",
|
126 | d2: "Height",
|
127 | a: "y",
|
128 | op: _horizontal,
|
129 | sc: _scrollCacheFunc(function (value) {
|
130 | return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;
|
131 | })
|
132 | },
|
133 | _getTarget = function _getTarget(t) {
|
134 | return gsap.utils.toArray(t)[0] || (typeof t === "string" && gsap.config().nullTargetWarn !== false ? console.warn("Element not found:", t) : null);
|
135 | },
|
136 | _getScrollFunc = function _getScrollFunc(element, _ref) {
|
137 | var s = _ref.s,
|
138 | sc = _ref.sc;
|
139 |
|
140 | var i = exports._scrollers.indexOf(element),
|
141 | offset = sc === _vertical.sc ? 1 : 2;
|
142 |
|
143 | !~i && (i = exports._scrollers.push(element) - 1);
|
144 | return exports._scrollers[i + offset] || (exports._scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {
|
145 | return arguments.length ? element[s] = value : element[s];
|
146 | })));
|
147 | },
|
148 | _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {
|
149 | var v1 = value,
|
150 | v2 = value,
|
151 | t1 = _getTime(),
|
152 | t2 = t1,
|
153 | min = minTimeRefresh || 50,
|
154 | dropToZeroTime = Math.max(500, min * 3),
|
155 | update = function update(value, force) {
|
156 | var t = _getTime();
|
157 |
|
158 | if (force || t - t1 > min) {
|
159 | v2 = v1;
|
160 | v1 = value;
|
161 | t2 = t1;
|
162 | t1 = t;
|
163 | } else if (useDelta) {
|
164 | v1 += value;
|
165 | } else {
|
166 | v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);
|
167 | }
|
168 | },
|
169 | reset = function reset() {
|
170 | v2 = v1 = useDelta ? 0 : v1;
|
171 | t2 = t1 = 0;
|
172 | },
|
173 | getVelocity = function getVelocity(latestValue) {
|
174 | var tOld = t2,
|
175 | vOld = v2,
|
176 | t = _getTime();
|
177 |
|
178 | (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);
|
179 | return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;
|
180 | };
|
181 |
|
182 | return {
|
183 | update: update,
|
184 | reset: reset,
|
185 | getVelocity: getVelocity
|
186 | };
|
187 | },
|
188 | _getEvent = function _getEvent(e, preventDefault) {
|
189 | preventDefault && !e._gsapAllow && e.preventDefault();
|
190 | return e.changedTouches ? e.changedTouches[0] : e;
|
191 | },
|
192 | _getAbsoluteMax = function _getAbsoluteMax(a) {
|
193 | var max = Math.max.apply(Math, a),
|
194 | min = Math.min.apply(Math, a);
|
195 | return Math.abs(max) >= Math.abs(min) ? max : min;
|
196 | },
|
197 | _setScrollTrigger = function _setScrollTrigger() {
|
198 | ScrollTrigger = gsap.core.globals().ScrollTrigger;
|
199 | ScrollTrigger && ScrollTrigger.core && _integrate();
|
200 | },
|
201 | _initCore = function _initCore(core) {
|
202 | gsap = core || _getGSAP();
|
203 |
|
204 | if (gsap && typeof document !== "undefined" && document.body) {
|
205 | _win = window;
|
206 | _doc = document;
|
207 | _docEl = _doc.documentElement;
|
208 | _body = _doc.body;
|
209 | _root = [_win, _doc, _docEl, _body];
|
210 | _clamp = gsap.utils.clamp;
|
211 | _pointerType = "onpointerenter" in _body ? "pointer" : "mouse";
|
212 | _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;
|
213 | _eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(",");
|
214 | setTimeout(function () {
|
215 | return _startup = 0;
|
216 | }, 500);
|
217 |
|
218 | _setScrollTrigger();
|
219 |
|
220 | _coreInitted = 1;
|
221 | }
|
222 |
|
223 | return _coreInitted;
|
224 | };
|
225 |
|
226 | _horizontal.op = _vertical;
|
227 | exports._scrollers.cache = 0;
|
228 | var Observer = function () {
|
229 | function Observer(vars) {
|
230 | this.init(vars);
|
231 | }
|
232 |
|
233 | var _proto = Observer.prototype;
|
234 |
|
235 | _proto.init = function init(vars) {
|
236 | _coreInitted || _initCore(gsap) || console.warn("Please gsap.registerPlugin(Observer)");
|
237 | ScrollTrigger || _setScrollTrigger();
|
238 | var tolerance = vars.tolerance,
|
239 | dragMinimum = vars.dragMinimum,
|
240 | type = vars.type,
|
241 | target = vars.target,
|
242 | lineHeight = vars.lineHeight,
|
243 | debounce = vars.debounce,
|
244 | preventDefault = vars.preventDefault,
|
245 | onStop = vars.onStop,
|
246 | onStopDelay = vars.onStopDelay,
|
247 | ignore = vars.ignore,
|
248 | wheelSpeed = vars.wheelSpeed,
|
249 | event = vars.event,
|
250 | onDragStart = vars.onDragStart,
|
251 | onDragEnd = vars.onDragEnd,
|
252 | onDrag = vars.onDrag,
|
253 | onPress = vars.onPress,
|
254 | onRelease = vars.onRelease,
|
255 | onRight = vars.onRight,
|
256 | onLeft = vars.onLeft,
|
257 | onUp = vars.onUp,
|
258 | onDown = vars.onDown,
|
259 | onChangeX = vars.onChangeX,
|
260 | onChangeY = vars.onChangeY,
|
261 | onChange = vars.onChange,
|
262 | onToggleX = vars.onToggleX,
|
263 | onToggleY = vars.onToggleY,
|
264 | onHover = vars.onHover,
|
265 | onHoverEnd = vars.onHoverEnd,
|
266 | onMove = vars.onMove,
|
267 | ignoreCheck = vars.ignoreCheck,
|
268 | isNormalizer = vars.isNormalizer,
|
269 | onGestureStart = vars.onGestureStart,
|
270 | onGestureEnd = vars.onGestureEnd,
|
271 | onWheel = vars.onWheel,
|
272 | onEnable = vars.onEnable,
|
273 | onDisable = vars.onDisable,
|
274 | onClick = vars.onClick,
|
275 | scrollSpeed = vars.scrollSpeed,
|
276 | capture = vars.capture,
|
277 | allowClicks = vars.allowClicks,
|
278 | lockAxis = vars.lockAxis,
|
279 | onLockAxis = vars.onLockAxis;
|
280 | this.target = target = _getTarget(target) || _docEl;
|
281 | this.vars = vars;
|
282 | ignore && (ignore = gsap.utils.toArray(ignore));
|
283 | tolerance = tolerance || 0;
|
284 | dragMinimum = dragMinimum || 0;
|
285 | wheelSpeed = wheelSpeed || 1;
|
286 | scrollSpeed = scrollSpeed || 1;
|
287 | type = type || "wheel,touch,pointer";
|
288 | debounce = debounce !== false;
|
289 | lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22);
|
290 |
|
291 | var id,
|
292 | onStopDelayedCall,
|
293 | dragged,
|
294 | moved,
|
295 | wheeled,
|
296 | locked,
|
297 | axis,
|
298 | self = this,
|
299 | prevDeltaX = 0,
|
300 | prevDeltaY = 0,
|
301 | scrollFuncX = _getScrollFunc(target, _horizontal),
|
302 | scrollFuncY = _getScrollFunc(target, _vertical),
|
303 | scrollX = scrollFuncX(),
|
304 | scrollY = scrollFuncY(),
|
305 | limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown",
|
306 | isViewport = _isViewport(target),
|
307 | ownerDoc = target.ownerDocument || _doc,
|
308 | deltaX = [0, 0, 0],
|
309 | deltaY = [0, 0, 0],
|
310 | onClickTime = 0,
|
311 | clickCapture = function clickCapture() {
|
312 | return onClickTime = _getTime();
|
313 | },
|
314 | _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {
|
315 | return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);
|
316 | },
|
317 | onStopFunc = function onStopFunc() {
|
318 | self._vx.reset();
|
319 |
|
320 | self._vy.reset();
|
321 |
|
322 | onStopDelayedCall.pause();
|
323 | onStop && onStop(self);
|
324 | },
|
325 | update = function update() {
|
326 | var dx = self.deltaX = _getAbsoluteMax(deltaX),
|
327 | dy = self.deltaY = _getAbsoluteMax(deltaY),
|
328 | changedX = Math.abs(dx) >= tolerance,
|
329 | changedY = Math.abs(dy) >= tolerance;
|
330 |
|
331 | onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY);
|
332 |
|
333 | if (changedX) {
|
334 | onRight && self.deltaX > 0 && onRight(self);
|
335 | onLeft && self.deltaX < 0 && onLeft(self);
|
336 | onChangeX && onChangeX(self);
|
337 | onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);
|
338 | prevDeltaX = self.deltaX;
|
339 | deltaX[0] = deltaX[1] = deltaX[2] = 0;
|
340 | }
|
341 |
|
342 | if (changedY) {
|
343 | onDown && self.deltaY > 0 && onDown(self);
|
344 | onUp && self.deltaY < 0 && onUp(self);
|
345 | onChangeY && onChangeY(self);
|
346 | onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);
|
347 | prevDeltaY = self.deltaY;
|
348 | deltaY[0] = deltaY[1] = deltaY[2] = 0;
|
349 | }
|
350 |
|
351 | if (moved || dragged) {
|
352 | onMove && onMove(self);
|
353 | onLockAxis && locked && onLockAxis(self);
|
354 |
|
355 | if (dragged) {
|
356 | onDrag(self);
|
357 | dragged = false;
|
358 | }
|
359 |
|
360 | moved = locked = false;
|
361 | }
|
362 |
|
363 | if (wheeled) {
|
364 | onWheel(self);
|
365 | wheeled = false;
|
366 | }
|
367 |
|
368 | id = 0;
|
369 | },
|
370 | onDelta = function onDelta(x, y, index) {
|
371 | deltaX[index] += x;
|
372 | deltaY[index] += y;
|
373 |
|
374 | self._vx.update(x);
|
375 |
|
376 | self._vy.update(y);
|
377 |
|
378 | debounce ? id || (id = requestAnimationFrame(update)) : update();
|
379 | },
|
380 | onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {
|
381 | if (axis !== "y") {
|
382 | deltaX[2] += x;
|
383 |
|
384 | self._vx.update(x, true);
|
385 | }
|
386 |
|
387 | if (axis !== "x") {
|
388 | deltaY[2] += y;
|
389 |
|
390 | self._vy.update(y, true);
|
391 | }
|
392 |
|
393 | if (lockAxis && !axis) {
|
394 | self.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y";
|
395 | locked = true;
|
396 | }
|
397 |
|
398 | debounce ? id || (id = requestAnimationFrame(update)) : update();
|
399 | },
|
400 | _onDrag = function _onDrag(e) {
|
401 | if (_ignoreCheck(e, 1)) {
|
402 | return;
|
403 | }
|
404 |
|
405 | e = _getEvent(e, preventDefault);
|
406 | var x = e.clientX,
|
407 | y = e.clientY,
|
408 | dx = x - self.x,
|
409 | dy = y - self.y,
|
410 | isDragging = self.isDragging;
|
411 | self.x = x;
|
412 | self.y = y;
|
413 |
|
414 | if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {
|
415 | onDrag && (dragged = true);
|
416 | isDragging || (self.isDragging = true);
|
417 | onTouchOrPointerDelta(dx, dy);
|
418 | isDragging || onDragStart && onDragStart(self);
|
419 | }
|
420 | },
|
421 | _onPress = self.onPress = function (e) {
|
422 | if (_ignoreCheck(e, 1)) {
|
423 | return;
|
424 | }
|
425 |
|
426 | self.axis = axis = null;
|
427 | onStopDelayedCall.pause();
|
428 | self.isPressed = true;
|
429 | e = _getEvent(e);
|
430 | prevDeltaX = prevDeltaY = 0;
|
431 | self.startX = self.x = e.clientX;
|
432 | self.startY = self.y = e.clientY;
|
433 |
|
434 | self._vx.reset();
|
435 |
|
436 | self._vy.reset();
|
437 |
|
438 | _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, preventDefault, capture);
|
439 |
|
440 | self.deltaX = self.deltaY = 0;
|
441 | onPress && onPress(self);
|
442 | },
|
443 | _onRelease = function _onRelease(e) {
|
444 | if (_ignoreCheck(e, 1)) {
|
445 | return;
|
446 | }
|
447 |
|
448 | _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag);
|
449 |
|
450 | var wasDragging = self.isDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),
|
451 | eventData = _getEvent(e);
|
452 |
|
453 | if (!wasDragging) {
|
454 | self._vx.reset();
|
455 |
|
456 | self._vy.reset();
|
457 |
|
458 | if (preventDefault && allowClicks) {
|
459 | gsap.delayedCall(0.05, function () {
|
460 | if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {
|
461 | if (e.target.click) {
|
462 | e.target.click();
|
463 | } else if (ownerDoc.createEvent) {
|
464 | var syntheticEvent = ownerDoc.createEvent("MouseEvents");
|
465 | syntheticEvent.initMouseEvent("click", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);
|
466 | e.target.dispatchEvent(syntheticEvent);
|
467 | }
|
468 | }
|
469 | });
|
470 | }
|
471 | }
|
472 |
|
473 | self.isDragging = self.isGesturing = self.isPressed = false;
|
474 | onStop && !isNormalizer && onStopDelayedCall.restart(true);
|
475 | onDragEnd && wasDragging && onDragEnd(self);
|
476 | onRelease && onRelease(self, wasDragging);
|
477 | },
|
478 | _onGestureStart = function _onGestureStart(e) {
|
479 | return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);
|
480 | },
|
481 | _onGestureEnd = function _onGestureEnd() {
|
482 | return (self.isGesturing = false) || onGestureEnd(self);
|
483 | },
|
484 | onScroll = function onScroll(e) {
|
485 | if (_ignoreCheck(e)) {
|
486 | return;
|
487 | }
|
488 |
|
489 | var x = scrollFuncX(),
|
490 | y = scrollFuncY();
|
491 | onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);
|
492 | scrollX = x;
|
493 | scrollY = y;
|
494 | onStop && onStopDelayedCall.restart(true);
|
495 | },
|
496 | _onWheel = function _onWheel(e) {
|
497 | if (_ignoreCheck(e)) {
|
498 | return;
|
499 | }
|
500 |
|
501 | e = _getEvent(e, preventDefault);
|
502 | onWheel && (wheeled = true);
|
503 | var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;
|
504 | onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);
|
505 | onStop && !isNormalizer && onStopDelayedCall.restart(true);
|
506 | },
|
507 | _onMove = function _onMove(e) {
|
508 | if (_ignoreCheck(e)) {
|
509 | return;
|
510 | }
|
511 |
|
512 | var x = e.clientX,
|
513 | y = e.clientY,
|
514 | dx = x - self.x,
|
515 | dy = y - self.y;
|
516 | self.x = x;
|
517 | self.y = y;
|
518 | moved = true;
|
519 | (dx || dy) && onTouchOrPointerDelta(dx, dy);
|
520 | },
|
521 | _onHover = function _onHover(e) {
|
522 | self.event = e;
|
523 | onHover(self);
|
524 | },
|
525 | _onHoverEnd = function _onHoverEnd(e) {
|
526 | self.event = e;
|
527 | onHoverEnd(self);
|
528 | },
|
529 | _onClick = function _onClick(e) {
|
530 | return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);
|
531 | };
|
532 |
|
533 | onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();
|
534 | self.deltaX = self.deltaY = 0;
|
535 | self._vx = _getVelocityProp(0, 50, true);
|
536 | self._vy = _getVelocityProp(0, 50, true);
|
537 | self.scrollX = scrollFuncX;
|
538 | self.scrollY = scrollFuncY;
|
539 | self.isDragging = self.isGesturing = self.isPressed = false;
|
540 |
|
541 | self.enable = function (e) {
|
542 | if (!self.isEnabled) {
|
543 | _addListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
|
544 |
|
545 | type.indexOf("scroll") >= 0 && _addListener(isViewport ? ownerDoc : target, "scroll", onScroll, preventDefault, capture);
|
546 | type.indexOf("wheel") >= 0 && _addListener(target, "wheel", _onWheel, preventDefault, capture);
|
547 |
|
548 | if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) {
|
549 | _addListener(target, _eventTypes[0], _onPress, preventDefault, capture);
|
550 |
|
551 | _addListener(ownerDoc, _eventTypes[2], _onRelease);
|
552 |
|
553 | _addListener(ownerDoc, _eventTypes[3], _onRelease);
|
554 |
|
555 | allowClicks && _addListener(target, "click", clickCapture, false, true);
|
556 | onClick && _addListener(target, "click", _onClick);
|
557 | onGestureStart && _addListener(ownerDoc, "gesturestart", _onGestureStart);
|
558 | onGestureEnd && _addListener(ownerDoc, "gestureend", _onGestureEnd);
|
559 | onHover && _addListener(target, _pointerType + "enter", _onHover);
|
560 | onHoverEnd && _addListener(target, _pointerType + "leave", _onHoverEnd);
|
561 | onMove && _addListener(target, _pointerType + "move", _onMove);
|
562 | }
|
563 |
|
564 | self.isEnabled = true;
|
565 | e && e.type && _onPress(e);
|
566 | onEnable && onEnable(self);
|
567 | }
|
568 |
|
569 | return self;
|
570 | };
|
571 |
|
572 | self.disable = function () {
|
573 | if (self.isEnabled) {
|
574 | _observers.filter(function (o) {
|
575 | return o !== self && _isViewport(o.target);
|
576 | }).length || _removeListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
|
577 |
|
578 | if (self.isPressed) {
|
579 | self._vx.reset();
|
580 |
|
581 | self._vy.reset();
|
582 |
|
583 | _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag);
|
584 | }
|
585 |
|
586 | _removeListener(isViewport ? ownerDoc : target, "scroll", onScroll);
|
587 |
|
588 | _removeListener(target, "wheel", _onWheel);
|
589 |
|
590 | _removeListener(target, _eventTypes[0], _onPress);
|
591 |
|
592 | _removeListener(ownerDoc, _eventTypes[2], _onRelease);
|
593 |
|
594 | _removeListener(ownerDoc, _eventTypes[3], _onRelease);
|
595 |
|
596 | _removeListener(target, "click", clickCapture);
|
597 |
|
598 | _removeListener(target, "click", _onClick);
|
599 |
|
600 | _removeListener(ownerDoc, "gesturestart", _onGestureStart);
|
601 |
|
602 | _removeListener(ownerDoc, "gestureend", _onGestureEnd);
|
603 |
|
604 | _removeListener(target, _pointerType + "enter", _onHover);
|
605 |
|
606 | _removeListener(target, _pointerType + "leave", _onHoverEnd);
|
607 |
|
608 | _removeListener(target, _pointerType + "move", _onMove);
|
609 |
|
610 | self.isEnabled = self.isPressed = self.isDragging = false;
|
611 | onDisable && onDisable(self);
|
612 | }
|
613 | };
|
614 |
|
615 | self.kill = function () {
|
616 | self.disable();
|
617 |
|
618 | var i = _observers.indexOf(self);
|
619 |
|
620 | i >= 0 && _observers.splice(i, 1);
|
621 | _normalizer === self && (_normalizer = 0);
|
622 | };
|
623 |
|
624 | _observers.push(self);
|
625 |
|
626 | isNormalizer && _isViewport(target) && (_normalizer = self);
|
627 | self.enable(event);
|
628 | };
|
629 |
|
630 | _createClass(Observer, [{
|
631 | key: "velocityX",
|
632 | get: function get() {
|
633 | return this._vx.getVelocity();
|
634 | }
|
635 | }, {
|
636 | key: "velocityY",
|
637 | get: function get() {
|
638 | return this._vy.getVelocity();
|
639 | }
|
640 | }]);
|
641 |
|
642 | return Observer;
|
643 | }();
|
644 | Observer.version = "3.10.3";
|
645 |
|
646 | Observer.create = function (vars) {
|
647 | return new Observer(vars);
|
648 | };
|
649 |
|
650 | Observer.register = _initCore;
|
651 |
|
652 | Observer.getAll = function () {
|
653 | return _observers.slice();
|
654 | };
|
655 |
|
656 | Observer.getById = function (id) {
|
657 | return _observers.filter(function (o) {
|
658 | return o.vars.id === id;
|
659 | })[0];
|
660 | };
|
661 |
|
662 | _getGSAP() && gsap.registerPlugin(Observer);
|
663 |
|
664 | exports.Observer = Observer;
|
665 | exports._getProxyProp = _getProxyProp;
|
666 | exports._getScrollFunc = _getScrollFunc;
|
667 | exports._getTarget = _getTarget;
|
668 | exports._getVelocityProp = _getVelocityProp;
|
669 | exports._horizontal = _horizontal;
|
670 | exports._isViewport = _isViewport;
|
671 | exports._vertical = _vertical;
|
672 | exports.default = Observer;
|
673 |
|
674 | if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;}
|
675 |
|
676 | })));
|