UNPKG

@zoff-tech/zt-bottom-drawer

Version:
94 lines (89 loc) 2.77 kB
'use strict'; const helpers = require('./helpers-ad4a8d0f.js'); const index = require('./index-0c0ba05f.js'); /*! * (C) Ionic http://ionicframework.com - MIT License */ /** * Returns `true` if the document or host element * has a `dir` set to `rtl`. The host value will always * take priority over the root document value. */ const isRTL = (hostEl) => { if (hostEl) { if (hostEl.dir !== '') { return hostEl.dir.toLowerCase() === 'rtl'; } } return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl'; }; /*! * (C) Ionic http://ionicframework.com - MIT License */ const createSwipeBackGesture = (el, canStartHandler, onStartHandler, onMoveHandler, onEndHandler) => { const win = el.ownerDocument.defaultView; let rtl = isRTL(el); /** * Determine if a gesture is near the edge * of the screen. If true, then the swipe * to go back gesture should proceed. */ const isAtEdge = (detail) => { const threshold = 50; const { startX } = detail; if (rtl) { return startX >= win.innerWidth - threshold; } return startX <= threshold; }; const getDeltaX = (detail) => { return rtl ? -detail.deltaX : detail.deltaX; }; const getVelocityX = (detail) => { return rtl ? -detail.velocityX : detail.velocityX; }; const canStart = (detail) => { /** * The user's locale can change mid-session, * so we need to check text direction at * the beginning of every gesture. */ rtl = isRTL(el); return isAtEdge(detail) && canStartHandler(); }; const onMove = (detail) => { // set the transition animation's progress const delta = getDeltaX(detail); const stepValue = delta / win.innerWidth; onMoveHandler(stepValue); }; const onEnd = (detail) => { // the swipe back gesture has ended const delta = getDeltaX(detail); const width = win.innerWidth; const stepValue = delta / width; const velocity = getVelocityX(detail); const z = width / 2.0; const shouldComplete = velocity >= 0 && (velocity > 0.2 || delta > 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, 540); } onEndHandler(shouldComplete, stepValue <= 0 ? 0.01 : helpers.clamp(0, stepValue, 0.9999), realDur); }; return index.createGesture({ el, gestureName: 'goback-swipe', gesturePriority: 40, threshold: 10, canStart, onStart: onStartHandler, onMove, onEnd, }); }; exports.createSwipeBackGesture = createSwipeBackGesture; //# sourceMappingURL=swipe-back-3ac5d499.js.map