@ionic/core
Version:
Base components for Ionic
45 lines (41 loc) • 1.47 kB
JavaScript
import { h } from '../ionic.core.js';
import { createGesture } from './chunk-f56eaea8.js';
function createSwipeBackGesture(el, queue, canStartHandler, onStartHandler, onMoveHandler, onEndHandler) {
const win = el.ownerDocument.defaultView;
function canStart(detail) {
return detail.startX <= 50 && canStartHandler();
}
function onMove(detail) {
const delta = detail.deltaX;
const stepValue = delta / win.innerWidth;
onMoveHandler(stepValue);
}
function onEnd(detail) {
const delta = detail.deltaX;
const width = win.innerWidth;
const stepValue = delta / width;
const velocity = detail.velocityX;
const z = width / 2.0;
const shouldComplete = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);
const missing = shouldComplete ? 1 - stepValue : stepValue;
const missingDistance = missing * width;
let realDur = 0;
if (missingDistance > 5) {
const dur = missingDistance / Math.abs(velocity);
realDur = Math.min(dur, 300);
}
onEndHandler(shouldComplete, stepValue, realDur);
}
return createGesture({
el,
queue,
gestureName: 'goback-swipe',
gesturePriority: 40,
threshold: 10,
canStart,
onStart: onStartHandler,
onMove,
onEnd
});
}
export { createSwipeBackGesture };