You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
47 KiB

{"ast":null,"code":"import _defineProperty2 from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _get from \"@babel/runtime/helpers/get\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nvar _excluded = [\"enabled\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty2(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport PixelRatio from \"react-native-web/dist/exports/PixelRatio\";\nimport { State } from \"../../State\";\nimport { DEFAULT_TOUCH_SLOP } from \"../constants\";\nimport GestureHandler from \"./GestureHandler\";\nvar DEFAULT_MIN_POINTERS = 1;\nvar DEFAULT_MAX_POINTERS = 10;\nvar DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\nvar PanGestureHandler = function (_GestureHandler) {\n _inherits(PanGestureHandler, _GestureHandler);\n var _super = _createSuper(PanGestureHandler);\n function PanGestureHandler() {\n var _this;\n _classCallCheck(this, PanGestureHandler);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"customActivationProperties\", ['activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetXStart', 'failOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd', 'failOffsetYStart', 'failOffsetYEnd', 'minVelocityX', 'minVelocityY']);\n _defineProperty(_assertThisInitialized(_this), \"velocityX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"velocityY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"minDistSq\", DEFAULT_MIN_DIST_SQ);\n _defineProperty(_assertThisInitialized(_this), \"activeOffsetXStart\", -Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"activeOffsetXEnd\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"failOffsetXStart\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"failOffsetXEnd\", Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"activeOffsetYStart\", Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"activeOffsetYEnd\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"failOffsetYStart\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"failOffsetYEnd\", Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"minVelocityX\", Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"minVelocityY\", Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"minVelocitySq\", Number.MAX_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"minPointers\", DEFAULT_MIN_POINTERS);\n _defineProperty(_assertThisInitialized(_this), \"maxPointers\", DEFAULT_MAX_POINTERS);\n _defineProperty(_assertThisInitialized(_this), \"startX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"startY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"offsetX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"offsetY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"lastX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"lastY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"activateAfterLongPress\", 0);\n _defineProperty(_assertThisInitialized(_this), \"activationTimeout\", 0);\n return _this;\n }\n _createClass(PanGestureHandler, [{\n key: \"init\",\n value: function init(ref, propsRef) {\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"init\", this).call(this, ref, propsRef);\n }\n }, {\n key: \"updateGestureConfig\",\n value: function updateGestureConfig(_ref) {\n var _ref$enabled = _ref.enabled,\n enabled = _ref$enabled === void 0 ? true : _ref$enabled,\n props = _objectWithoutProperties(_ref, _excluded);\n this.resetConfig();\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"updateGestureConfig\", this).call(this, _objectSpread({\n enabled: enabled\n }, props));\n this.checkCustomActivationCriteria(this.customActivationProperties);\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"resetConfig\", this).call(this);\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n this.activateAfterLongPress = 0;\n }\n }, {\n key: \"transformNativeEvent\",\n value: function transformNativeEvent() {\n var rect = this.view.getBoundingClientRect();\n var ratio = PixelRatio.get();\n var translationX = this.getTranslationX();\n var translationY = this.getTranslationY();\n return {\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n velocityX: this.velocityX * ratio * 10,\n velocityY: this.velocityY * ratio * 10,\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top\n };\n }\n }, {\n key: \"getTranslationX\",\n value: function getTranslationX() {\n return this.lastX - this.startX + this.offsetX;\n }\n }, {\n key: \"getTranslationY\",\n value: function getTranslationY() {\n return this.lastY - this.startY + this.offsetY;\n }\n }, {\n key: \"clearActivationTimeout\",\n value: function clearActivationTimeout() {\n clearTimeout(this.activationTimeout);\n }\n }, {\n key: \"onPointerDown\",\n value: function onPointerDown(event) {\n this.tracker.addToTracker(event);\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerDown\", this).call(this, event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.tryBegin(event);\n this.checkBegan();\n }\n }, {\n key: \"onPointerAdd\",\n value: function onPointerAdd(event) {\n this.tracker.addToTracker(event);\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerAdd\", this).call(this, event);\n this.tryBegin(event);\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.startX = this.lastX;\n this.startY = this.lastY;\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n }, {\n key: \"onPointerUp\",\n value: function onPointerUp(event) {\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerUp\", this).call(this, event);\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n }, {\n key: \"onPointerRemove\",\n value: function onPointerRemove(event) {\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerRemove\", this).call(this, event);\n this.tracker.removeFromTracker(event.pointerId);\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.startX = this.lastX;\n this.startY = this.lastY;\n if (!(this.currentState === State.ACTIVE && this.tracker.getTrackedPointersCount() < this.minPointers)) {\n this.checkBegan();\n }\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n this.tracker.track(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n this.checkBegan();\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerMove\", this).call(this, event);\n }\n }, {\n key: \"onPointerCancel\",\n value: function onPointerCancel(event) {\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerCancel\", this).call(this, event);\n this.reset();\n }\n }, {\n key: \"onPointerOutOfBounds\",\n value: function onPointerOutOfBounds(event) {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n this.tracker.track(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n this.checkBegan();\n if (this.currentState === State.ACTIVE) {\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"onPointerOutOfBounds\", this).call(this, event);\n }\n }\n }, {\n key: \"shouldActivate\",\n value: function shouldActivate() {\n var dx = this.getTranslationX();\n if (this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER && dx < this.activeOffsetXStart) {\n return true;\n }\n if (this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER && dx > this.activeOffsetXEnd) {\n return true;\n }\n var dy = this.getTranslationY();\n if (this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER && dy < this.activeOffsetYStart) {\n return true;\n }\n if (this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER && dy > this.activeOffsetYEnd) {\n return true;\n }\n var distanceSq = dx * dx + dy * dy;\n if (this.minDistSq !== Number.MAX_SAFE_INTEGER && distanceSq >= this.minDistSq) {\n return true;\n }\n var vx = this.velocityX;\n if (this.minVelocityX !== Number.MAX_SAFE_INTEGER && (this.minVelocityX < 0 && vx <= this.minVelocityX || this.minVelocityX >= 0 && this.minVelocityX <= vx)) {\n return true;\n }\n var vy = this.velocityY;\n if (this.minVelocityY !== Number.MAX_SAFE_INTEGER && (this.minVelocityY < 0 && vy <= this.minVelocityY || this.minVelocityY >= 0 && this.minVelocityY <= vy)) {\n return true;\n }\n var velocitySq = vx * vx + vy * vy;\n return this.minVelocitySq !== Number.MAX_SAFE_INTEGER && velocitySq >= this.minVelocitySq;\n }\n }, {\n key: \"shouldFail\",\n value: function shouldFail() {\n var dx = this.getTranslationX();\n var dy = this.getTranslationY();\n var distanceSq = dx * dx + dy * dy;\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n if (this.failOffsetXStart !== Number.MIN_SAFE_INTEGER && dx < this.failOffsetXStart) {\n return true;\n }\n if (this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER && dx > this.failOffsetXEnd) {\n return true;\n }\n if (this.failOffsetYStart !== Number.MIN_SAFE_INTEGER && dy < this.failOffsetYStart) {\n return true;\n }\n return this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER && dy > this.failOffsetYEnd;\n }\n }, {\n key: \"tryBegin\",\n value: function tryBegin(event) {\n var _this2 = this;\n if (this.currentState === State.UNDETERMINED && this.tracker.getTrackedPointersCount() >= this.minPointers) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n this.begin();\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(function () {\n _this2.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n }, {\n key: \"checkBegan\",\n value: function checkBegan() {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n }, {\n key: \"activate\",\n value: function activate() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n _get(_getPrototypeOf(PanGestureHandler.prototype), \"activate\", this).call(this, force);\n }\n }, {\n key: \"onCancel\",\n value: function onCancel() {\n this.clearActivationTimeout();\n }\n }, {\n key: \"onReset\",\n value: function onReset() {\n this.clearActivationTimeout();\n }\n }, {\n key: \"resetProgress\",\n value: function resetProgress() {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n }]);\n return PanGestureHandler;\n}(GestureHandler);\nexport { PanGestureHandler as default };","map":{"version":3,"sources":["PanGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","rect","view","getBoundingClientRect","ratio","PixelRatio","get","translationX","getTranslationX","translationY","getTranslationY","isNaN","absoluteX","tracker","getLastAvgX","absoluteY","getLastAvgY","velocityX","velocityY","x","left","y","top","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerCancel","reset","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { PixelRatio } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n const ratio = PixelRatio.get();\n\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n velocityX: this.velocityX * ratio * 10,\n velocityY: this.velocityY * ratio * 10,\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]},"metadata":{},"sourceType":"module"}