|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { eventScope, TouchRecord, } from '../utils/';
- var activeScrollbar;
- export function touchHandler(scrollbar) {
- var MIN_EAING_MOMENTUM = 50;
- var EASING_MULTIPLIER = /Android/.test(navigator.userAgent) ? 3 : 2;
- var target = scrollbar.options.delegateTo || scrollbar.containerEl;
- var touchRecord = new TouchRecord();
- var addEvent = eventScope(scrollbar);
- var damping;
- var pointerCount = 0;
- addEvent(target, 'touchstart', function (evt) {
- // start records
- touchRecord.track(evt);
- // stop scrolling
- scrollbar.setMomentum(0, 0);
- // save damping
- if (pointerCount === 0) {
- damping = scrollbar.options.damping;
- scrollbar.options.damping = Math.max(damping, 0.5); // less frames on touchmove
- }
- pointerCount++;
- });
- addEvent(target, 'touchmove', function (evt) {
- if (activeScrollbar && activeScrollbar !== scrollbar)
- return;
- touchRecord.update(evt);
- var _a = touchRecord.getDelta(), x = _a.x, y = _a.y;
- scrollbar.addTransformableMomentum(x, y, evt, function (willScroll) {
- if (willScroll) {
- evt.preventDefault();
- activeScrollbar = scrollbar;
- }
- });
- });
- addEvent(target, 'touchcancel touchend', function (evt) {
- var velocity = touchRecord.getVelocity();
- var momentum = { x: 0, y: 0 };
- Object.keys(velocity).forEach(function (dir) {
- var s = velocity[dir] / damping;
- // throw small values
- momentum[dir] = Math.abs(s) < MIN_EAING_MOMENTUM ? 0 : s * EASING_MULTIPLIER;
- });
- scrollbar.addTransformableMomentum(momentum.x, momentum.y, evt);
- pointerCount--;
- // restore damping
- if (pointerCount === 0) {
- scrollbar.options.damping = damping;
- }
- touchRecord.release(evt);
- activeScrollbar = null;
- });
- }
- //# sourceMappingURL=touch.js.map
|