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
72 KiB
1 line
72 KiB
{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _defineProperty2 from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\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 _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 findNodeHandle from \"react-native-web/dist/exports/findNodeHandle\";\nimport { State } from \"../../State\";\nimport { PointerType, TouchEventType, EventTypes } from \"../interfaces\";\nimport GestureHandlerOrchestrator from \"../tools/GestureHandlerOrchestrator\";\nimport InteractionManager from \"../tools/InteractionManager\";\nimport PointerEventManager from \"../tools/PointerEventManager\";\nimport PointerTracker from \"../tools/PointerTracker\";\nimport TouchEventManager from \"../tools/TouchEventManager\";\nimport { isPointerInBounds } from \"../utils\";\nvar GestureHandler = function () {\n function GestureHandler() {\n var _this = this;\n _classCallCheck(this, GestureHandler);\n _defineProperty(this, \"lastSentState\", null);\n _defineProperty(this, \"currentState\", State.UNDETERMINED);\n _defineProperty(this, \"shouldCancellWhenOutside\", false);\n _defineProperty(this, \"hasCustomActivationCriteria\", void 0);\n _defineProperty(this, \"enabled\", false);\n _defineProperty(this, \"ref\", void 0);\n _defineProperty(this, \"propsRef\", void 0);\n _defineProperty(this, \"handlerTag\", void 0);\n _defineProperty(this, \"config\", {\n enabled: false\n });\n _defineProperty(this, \"view\", void 0);\n _defineProperty(this, \"eventManagers\", []);\n _defineProperty(this, \"tracker\", new PointerTracker());\n _defineProperty(this, \"activationIndex\", 0);\n _defineProperty(this, \"awaiting\", false);\n _defineProperty(this, \"active\", false);\n _defineProperty(this, \"shouldResetProgress\", false);\n _defineProperty(this, \"pointerType\", PointerType.NONE);\n _defineProperty(this, \"sendEvent\", function (newState, oldState) {\n var _this$propsRef$curren = _this.propsRef.current,\n onGestureHandlerEvent = _this$propsRef$curren.onGestureHandlerEvent,\n onGestureHandlerStateChange = _this$propsRef$curren.onGestureHandlerStateChange;\n var resultEvent = _this.transformEventData(newState, oldState);\n if (_this.lastSentState !== newState) {\n _this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (_this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n });\n this.hasCustomActivationCriteria = false;\n }\n _createClass(GestureHandler, [{\n key: \"init\",\n value: function init(ref, propsRef) {\n this.propsRef = propsRef;\n this.ref = ref;\n this.currentState = State.UNDETERMINED;\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n }, {\n key: \"setView\",\n value: function setView() {\n if (!this.ref) {\n throw new Error(\"Cannot find HTML Element for handler \" + this.handlerTag);\n }\n this.view = findNodeHandle(this.ref);\n this.view.style['touchAction'] = 'none';\n this.view.style['WebkitTouchCallout'] = 'none';\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n }, {\n key: \"addEventManager\",\n value: function addEventManager(manager) {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n this.eventManagers.push(manager);\n }\n }, {\n key: \"onCancel\",\n value: function onCancel() {}\n }, {\n key: \"onReset\",\n value: function onReset() {}\n }, {\n key: \"resetProgress\",\n value: function resetProgress() {}\n }, {\n key: \"reset\",\n value: function reset() {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach(function (manager) {\n return manager.resetManager();\n });\n this.currentState = State.UNDETERMINED;\n }\n }, {\n key: \"moveToState\",\n value: function moveToState(newState, sendIfDisabled) {\n if (this.currentState === newState) {\n return;\n }\n var oldState = this.currentState;\n this.currentState = newState;\n if (this.tracker.getTrackedPointersCount() > 0 && this.config.needsPointerData && this.isFinished()) {\n this.cancelTouches();\n }\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(this, newState, oldState, sendIfDisabled);\n this.onStateChange(newState, oldState);\n }\n }, {\n key: \"onStateChange\",\n value: function onStateChange(_newState, _oldState) {}\n }, {\n key: \"begin\",\n value: function begin() {\n if (!this.checkHitSlop()) {\n return;\n }\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n }, {\n key: \"fail\",\n value: function fail(sendIfDisabled) {\n if (this.currentState === State.ACTIVE || this.currentState === State.BEGAN) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n this.resetProgress();\n }\n }, {\n key: \"cancel\",\n value: function cancel(sendIfDisabled) {\n if (this.currentState === State.ACTIVE || this.currentState === State.UNDETERMINED || this.currentState === State.BEGAN) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\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.UNDETERMINED || this.currentState === State.BEGAN) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n if (this.currentState === State.BEGAN || this.currentState === State.ACTIVE) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n this.resetProgress();\n }\n }, {\n key: \"isAwaiting\",\n value: function isAwaiting() {\n return this.awaiting;\n }\n }, {\n key: \"setAwaiting\",\n value: function setAwaiting(value) {\n this.awaiting = value;\n }\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.active;\n }\n }, {\n key: \"setActive\",\n value: function setActive(value) {\n this.active = value;\n }\n }, {\n key: \"getShouldResetProgress\",\n value: function getShouldResetProgress() {\n return this.shouldResetProgress;\n }\n }, {\n key: \"setShouldResetProgress\",\n value: function setShouldResetProgress(value) {\n this.shouldResetProgress = value;\n }\n }, {\n key: \"getActivationIndex\",\n value: function getActivationIndex() {\n return this.activationIndex;\n }\n }, {\n key: \"setActivationIndex\",\n value: function setActivationIndex(value) {\n this.activationIndex = value;\n }\n }, {\n key: \"shouldWaitForHandlerFailure\",\n value: function shouldWaitForHandlerFailure(handler) {\n if (handler === this) {\n return false;\n }\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(this, handler);\n }\n }, {\n key: \"shouldRequireToWaitForFailure\",\n value: function shouldRequireToWaitForFailure(handler) {\n if (handler === this) {\n return false;\n }\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(this, handler);\n }\n }, {\n key: \"shouldRecognizeSimultaneously\",\n value: function shouldRecognizeSimultaneously(handler) {\n if (handler === this) {\n return true;\n }\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(this, handler);\n }\n }, {\n key: \"shouldBeCancelledByOther\",\n value: function shouldBeCancelledByOther(handler) {\n if (handler === this) {\n return false;\n }\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(this, handler);\n }\n }, {\n key: \"onPointerDown\",\n value: function onPointerDown(event) {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerAdd\",\n value: function onPointerAdd(event) {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerUp\",\n value: function onPointerUp(event) {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerRemove\",\n value: function onPointerRemove(event) {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerOut\",\n value: function onPointerOut(event) {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerEnter\",\n value: function onPointerEnter(event) {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerCancel\",\n value: function onPointerCancel(event) {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"onPointerOutOfBounds\",\n value: function onPointerOutOfBounds(event) {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n }, {\n key: \"tryToSendMoveEvent\",\n value: function tryToSendMoveEvent(out) {\n if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n }, {\n key: \"sendTouchEvent\",\n value: function sendTouchEvent(event) {\n if (!this.enabled) {\n return;\n }\n var onGestureHandlerEvent = this.propsRef.current.onGestureHandlerEvent;\n var touchEvent = this.transformTouchEvent(event);\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n }, {\n key: \"transformEventData\",\n value: function transformEventData(newState, oldState) {\n return {\n nativeEvent: _objectSpread(_objectSpread({\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY()\n })\n }, this.transformNativeEvent()), {}, {\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined\n }),\n timeStamp: Date.now()\n };\n }\n }, {\n key: \"transformTouchEvent\",\n value: function transformTouchEvent(event) {\n var _this2 = this;\n var _event$touchEventType;\n var rect = this.view.getBoundingClientRect();\n var all = [];\n var changed = [];\n var trackerData = this.tracker.getData();\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n trackerData.forEach(function (element, key) {\n var id = _this2.tracker.getMappedTouchEventId(key);\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY\n });\n });\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y\n });\n } else {\n trackerData.forEach(function (element, key) {\n var id = _this2.tracker.getMappedTouchEventId(key);\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY\n });\n });\n }\n var eventType = TouchEventType.UNDETERMINED;\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n var numberOfTouches = all.length;\n if (event.eventType === EventTypes.UP || event.eventType === EventTypes.ADDITIONAL_POINTER_UP) {\n --numberOfTouches;\n }\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches\n },\n timeStamp: Date.now()\n };\n }\n }, {\n key: \"cancelTouches\",\n value: function cancelTouches() {\n var _this3 = this;\n var rect = this.view.getBoundingClientRect();\n var all = [];\n var changed = [];\n var trackerData = this.tracker.getData();\n if (trackerData.size === 0) {\n return;\n }\n trackerData.forEach(function (element, key) {\n var id = _this3.tracker.getMappedTouchEventId(key);\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY\n });\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY\n });\n });\n var cancelEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length\n },\n timeStamp: Date.now()\n };\n var onGestureHandlerEvent = this.propsRef.current.onGestureHandlerEvent;\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n }, {\n key: \"transformNativeEvent\",\n value: function transformNativeEvent() {\n return {};\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.config = _objectSpread({\n enabled: enabled\n }, props);\n this.enabled = enabled;\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n this.validateHitSlops();\n if (this.enabled) {\n return;\n }\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(this);\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n }, {\n key: \"checkCustomActivationCriteria\",\n value: function checkCustomActivationCriteria(criterias) {\n for (var key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n }, {\n key: \"validateHitSlops\",\n value: function validateHitSlops() {\n if (!this.config.hitSlop) {\n return;\n }\n if (this.config.hitSlop.left !== undefined && this.config.hitSlop.right !== undefined && this.config.hitSlop.width !== undefined) {\n throw new Error('HitSlop Error: Cannot define left, right and width at the same time');\n }\n if (this.config.hitSlop.width !== undefined && this.config.hitSlop.left === undefined && this.config.hitSlop.right === undefined) {\n throw new Error('HitSlop Error: When width is defined, either left or right has to be defined');\n }\n if (this.config.hitSlop.height !== undefined && this.config.hitSlop.top !== undefined && this.config.hitSlop.bottom !== undefined) {\n throw new Error('HitSlop Error: Cannot define top, bottom and height at the same time');\n }\n if (this.config.hitSlop.height !== undefined && this.config.hitSlop.top === undefined && this.config.hitSlop.bottom === undefined) {\n throw new Error('HitSlop Error: When height is defined, either top or bottom has to be defined');\n }\n }\n }, {\n key: \"checkHitSlop\",\n value: function checkHitSlop() {\n if (!this.config.hitSlop) {\n return true;\n }\n var width = this.view.getBoundingClientRect().width;\n var height = this.view.getBoundingClientRect().height;\n var left = 0;\n var top = 0;\n var right = width;\n var bottom = height;\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n var rect = this.view.getBoundingClientRect();\n var offsetX = this.tracker.getLastX() - rect.left;\n var offsetY = this.tracker.getLastY() - rect.top;\n if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {\n return true;\n }\n return false;\n }\n }, {\n key: \"isPointerInBounds\",\n value: function isPointerInBounds(_ref2) {\n var x = _ref2.x,\n y = _ref2.y;\n var rect = this.view.getBoundingClientRect();\n return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n }\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {}\n }, {\n key: \"getTag\",\n value: function getTag() {\n return this.handlerTag;\n }\n }, {\n key: \"setTag\",\n value: function setTag(tag) {\n this.handlerTag = tag;\n }\n }, {\n key: \"getConfig\",\n value: function getConfig() {\n return this.config;\n }\n }, {\n key: \"getShouldEnableGestureOnSetup\",\n value: function getShouldEnableGestureOnSetup() {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n }, {\n key: \"getView\",\n value: function getView() {\n return this.view;\n }\n }, {\n key: \"getEventManagers\",\n value: function getEventManagers() {\n return this.eventManagers;\n }\n }, {\n key: \"getTracker\",\n value: function getTracker() {\n return this.tracker;\n }\n }, {\n key: \"getTrackedPointersID\",\n value: function getTrackedPointersID() {\n return this.tracker.getTrackedPointersID();\n }\n }, {\n key: \"getState\",\n value: function getState() {\n return this.currentState;\n }\n }, {\n key: \"isEnabled\",\n value: function isEnabled() {\n return this.enabled;\n }\n }, {\n key: \"isFinished\",\n value: function isFinished() {\n return this.currentState === State.END || this.currentState === State.FAILED || this.currentState === State.CANCELLED;\n }\n }, {\n key: \"setShouldCancelWhenOutside\",\n value: function setShouldCancelWhenOutside(shouldCancel) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n }, {\n key: \"getShouldCancelWhenOutside\",\n value: function getShouldCancelWhenOutside() {\n return this.shouldCancellWhenOutside;\n }\n }, {\n key: \"getPointerType\",\n value: function getPointerType() {\n return this.pointerType;\n }\n }]);\n return GestureHandler;\n}();\nexport { GestureHandler as default };\nfunction invokeNullableMethod(method, event) {\n if (!method) {\n return;\n }\n if (typeof method === 'function') {\n method(event);\n return;\n }\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n var handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n if (!('__nodeConfig' in method)) {\n return;\n }\n var argMapping = method.__nodeConfig.argMapping;\n if (!Array.isArray(argMapping)) {\n return;\n }\n for (var _ref3 of argMapping.entries()) {\n var _ref4 = _slicedToArray(_ref3, 2);\n var index = _ref4[0];\n var _ref4$ = _slicedToArray(_ref4[1], 2);\n var key = _ref4$[0];\n var value = _ref4$[1];\n if (!(key in event.nativeEvent)) {\n continue;\n }\n var nativeValue = event.nativeEvent[key];\n if (value !== null && value !== void 0 && value.setValue) {\n value.setValue(nativeValue);\n } else {\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n return;\n}","map":{"version":3,"sources":["GestureHandler.ts"],"names":["State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerEventManager","PointerTracker","TouchEventManager","isPointerInBounds","GestureHandler","UNDETERMINED","enabled","NONE","constructor","hasCustomActivationCriteria","init","ref","propsRef","currentState","setView","addEventManager","view","Error","handlerTag","findNodeHandle","style","config","userSelect","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","newState","sendIfDisabled","oldState","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","ACTIVE","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","onGestureHandlerEvent","current","touchEvent","transformTouchEvent","invokeNullableMethod","onGestureHandlerStateChange","resultEvent","transformEventData","lastSentState","nativeEvent","undefined","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = findNodeHandle(this.ref) as unknown as HTMLElement;\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]},"metadata":{},"sourceType":"module"} |