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
50 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 Hammer from '@egjs/hammerjs';\nimport findNodeHandle from \"react-native-web/dist/exports/findNodeHandle\";\nimport { State } from \"../State\";\nimport { EventMap } from \"./constants\";\nimport * as NodeManager from \"./NodeManager\";\nvar gestureInstances = 0;\nvar GestureHandler = function () {\n function GestureHandler() {\n var _this = this;\n _classCallCheck(this, GestureHandler);\n _defineProperty(this, \"handlerTag\", void 0);\n _defineProperty(this, \"isGestureRunning\", false);\n _defineProperty(this, \"view\", null);\n _defineProperty(this, \"hasCustomActivationCriteria\", void 0);\n _defineProperty(this, \"hasGestureFailed\", false);\n _defineProperty(this, \"hammer\", null);\n _defineProperty(this, \"initialRotation\", null);\n _defineProperty(this, \"__initialX\", void 0);\n _defineProperty(this, \"__initialY\", void 0);\n _defineProperty(this, \"config\", {});\n _defineProperty(this, \"previousState\", State.UNDETERMINED);\n _defineProperty(this, \"pendingGestures\", {});\n _defineProperty(this, \"oldState\", State.UNDETERMINED);\n _defineProperty(this, \"lastSentState\", null);\n _defineProperty(this, \"gestureInstance\", void 0);\n _defineProperty(this, \"_stillWaiting\", void 0);\n _defineProperty(this, \"propsRef\", void 0);\n _defineProperty(this, \"ref\", void 0);\n _defineProperty(this, \"clearSelfAsPending\", function () {\n if (Array.isArray(_this.config.waitFor)) {\n for (var gesture of _this.config.waitFor) {\n gesture.removePendingGesture(_this.id);\n }\n }\n });\n _defineProperty(this, \"destroy\", function () {\n _this.clearSelfAsPending();\n if (_this.hammer) {\n _this.hammer.stop(false);\n _this.hammer.destroy();\n }\n _this.hammer = null;\n });\n _defineProperty(this, \"isPointInView\", function (_ref) {\n var x = _ref.x,\n y = _ref.y;\n var rect = _this.view.getBoundingClientRect();\n var pointerInside = x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n return pointerInside;\n });\n _defineProperty(this, \"sendEvent\", function (nativeEvent) {\n var _this$propsRef$curren = _this.propsRef.current,\n onGestureHandlerEvent = _this$propsRef$curren.onGestureHandlerEvent,\n onGestureHandlerStateChange = _this$propsRef$curren.onGestureHandlerStateChange;\n var event = _this.transformEventData(nativeEvent);\n invokeNullableMethod(onGestureHandlerEvent, event);\n if (_this.lastSentState !== event.nativeEvent.state) {\n _this.lastSentState = event.nativeEvent.state;\n invokeNullableMethod(onGestureHandlerStateChange, event);\n }\n });\n _defineProperty(this, \"sync\", function () {\n var gesture = _this.hammer.get(_this.name);\n if (!gesture) return;\n var enable = function enable(recognizer, inputData) {\n if (!_this.config.enabled) {\n _this.isGestureRunning = false;\n _this.hasGestureFailed = false;\n return false;\n }\n if (!inputData || !recognizer.options || typeof inputData.maxPointers === 'undefined') {\n return _this.shouldEnableGestureOnSetup;\n }\n if (_this.hasGestureFailed) {\n return false;\n }\n if (!_this.isDiscrete) {\n if (_this.isGestureRunning) {\n return true;\n }\n _this._stillWaiting = _this._getPendingGestures();\n if (_this._stillWaiting.length) {\n for (var _gesture2 of _this._stillWaiting) {\n if (!_gesture2.isDiscrete && _gesture2.isGestureRunning) {\n _this.hasGestureFailed = true;\n _this.isGestureRunning = false;\n return false;\n }\n }\n return false;\n }\n }\n if (!_this.hasCustomActivationCriteria) {\n return true;\n }\n var deltaRotation = _this.initialRotation == null ? 0 : inputData.rotation - _this.initialRotation;\n var _this$isGestureEnable = _this.isGestureEnabledForEvent(_this.getConfig(), recognizer, _objectSpread(_objectSpread({}, inputData), {}, {\n deltaRotation: deltaRotation\n })),\n success = _this$isGestureEnable.success,\n failed = _this$isGestureEnable.failed;\n if (failed) {\n _this.simulateCancelEvent(inputData);\n _this.hasGestureFailed = true;\n }\n return success;\n };\n var params = _this.getHammerConfig();\n gesture.set(_objectSpread(_objectSpread({}, params), {}, {\n enable: enable\n }));\n });\n this.gestureInstance = gestureInstances++;\n this.hasCustomActivationCriteria = false;\n }\n _createClass(GestureHandler, [{\n key: \"id\",\n get: function get() {\n return \"\" + this.name + this.gestureInstance;\n }\n }, {\n key: \"isNative\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isDiscrete\",\n get: function get() {\n return false;\n }\n }, {\n key: \"shouldEnableGestureOnSetup\",\n get: function get() {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n }, {\n key: \"getConfig\",\n value: function getConfig() {\n return this.config;\n }\n }, {\n key: \"onWaitingEnded\",\n value: function onWaitingEnded(_gesture) {}\n }, {\n key: \"removePendingGesture\",\n value: function removePendingGesture(id) {\n delete this.pendingGestures[id];\n }\n }, {\n key: \"addPendingGesture\",\n value: function addPendingGesture(gesture) {\n this.pendingGestures[gesture.id] = gesture;\n }\n }, {\n key: \"isGestureEnabledForEvent\",\n value: function isGestureEnabledForEvent(_config, _recognizer, _event) {\n return {\n success: true\n };\n }\n }, {\n key: \"NativeGestureClass\",\n get: function get() {\n throw new Error('Must override GestureHandler.NativeGestureClass');\n }\n }, {\n key: \"updateHasCustomActivationCriteria\",\n value: function updateHasCustomActivationCriteria(_config) {\n return true;\n }\n }, {\n key: \"updateGestureConfig\",\n value: function updateGestureConfig(_ref2) {\n var _ref2$enabled = _ref2.enabled,\n enabled = _ref2$enabled === void 0 ? true : _ref2$enabled,\n props = _objectWithoutProperties(_ref2, _excluded);\n this.clearSelfAsPending();\n this.config = this.ensureConfig(_objectSpread({\n enabled: enabled\n }, props));\n this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(this.config);\n if (Array.isArray(this.config.waitFor)) {\n for (var gesture of this.config.waitFor) {\n gesture.addPendingGesture(this);\n }\n }\n if (this.hammer) {\n this.sync();\n }\n return this.config;\n }\n }, {\n key: \"getState\",\n value: function getState(type) {\n if (type == 0) {\n return 0;\n }\n return EventMap[type];\n }\n }, {\n key: \"transformEventData\",\n value: function transformEventData(event) {\n var eventType = event.eventType,\n numberOfPointers = event.maxPointers;\n var changedTouch = event.changedPointers[0];\n var pointerInside = this.isPointInView({\n x: changedTouch.clientX,\n y: changedTouch.clientY\n });\n var state = this.getState(eventType);\n if (state !== this.previousState) {\n this.oldState = this.previousState;\n this.previousState = state;\n }\n return {\n nativeEvent: _objectSpread(_objectSpread({\n numberOfPointers: numberOfPointers,\n state: state,\n pointerInside: pointerInside\n }, this.transformNativeEvent(event)), {}, {\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: state !== this.previousState || state != 4 ? this.oldState : undefined\n }),\n timeStamp: Date.now()\n };\n }\n }, {\n key: \"transformNativeEvent\",\n value: function transformNativeEvent(_event) {\n return {};\n }\n }, {\n key: \"cancelPendingGestures\",\n value: function cancelPendingGestures(event) {\n for (var gesture of Object.values(this.pendingGestures)) {\n if (gesture && gesture.isGestureRunning) {\n gesture.hasGestureFailed = true;\n gesture.cancelEvent(event);\n }\n }\n }\n }, {\n key: \"notifyPendingGestures\",\n value: function notifyPendingGestures() {\n for (var gesture of Object.values(this.pendingGestures)) {\n if (gesture) {\n gesture.onWaitingEnded(this);\n }\n }\n }\n }, {\n key: \"onGestureEnded\",\n value: function onGestureEnded(event) {\n this.isGestureRunning = false;\n this.cancelPendingGestures(event);\n }\n }, {\n key: \"forceInvalidate\",\n value: function forceInvalidate(event) {\n if (this.isGestureRunning) {\n this.hasGestureFailed = true;\n this.cancelEvent(event);\n }\n }\n }, {\n key: \"cancelEvent\",\n value: function cancelEvent(event) {\n this.notifyPendingGestures();\n this.sendEvent(_objectSpread(_objectSpread({}, event), {}, {\n eventType: Hammer.INPUT_CANCEL,\n isFinal: true\n }));\n this.onGestureEnded(event);\n }\n }, {\n key: \"onRawEvent\",\n value: function onRawEvent(_ref3) {\n var isFirst = _ref3.isFirst;\n if (isFirst) {\n this.hasGestureFailed = false;\n }\n }\n }, {\n key: \"shouldUseTouchEvents\",\n value: function shouldUseTouchEvents(config) {\n var _config$simultaneousH, _config$simultaneousH2;\n return (_config$simultaneousH = (_config$simultaneousH2 = config.simultaneousHandlers) === null || _config$simultaneousH2 === void 0 ? void 0 : _config$simultaneousH2.some(function (handler) {\n return handler.isNative;\n })) !== null && _config$simultaneousH !== void 0 ? _config$simultaneousH : false;\n }\n }, {\n key: \"setView\",\n value: function setView(ref, propsRef) {\n var _this2 = this;\n if (ref == null) {\n this.destroy();\n this.view = null;\n return;\n }\n var SUPPORTS_TOUCH = ('ontouchstart' in window);\n this.propsRef = propsRef;\n this.ref = ref;\n this.view = findNodeHandle(ref);\n this.hammer = SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config) ? new Hammer.Manager(this.view, {\n inputClass: Hammer.TouchInput\n }) : new Hammer.Manager(this.view);\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n var NativeGestureClass = this.NativeGestureClass;\n var gesture = new NativeGestureClass(this.getHammerConfig());\n this.hammer.add(gesture);\n this.hammer.on('hammer.input', function (ev) {\n if (!_this2.config.enabled) {\n _this2.hasGestureFailed = false;\n _this2.isGestureRunning = false;\n return;\n }\n _this2.onRawEvent(ev);\n if (_this2.initialRotation === null && ev.rotation !== 0) {\n _this2.initialRotation = ev.rotation;\n }\n if (ev.isFinal) {\n setTimeout(function () {\n _this2.initialRotation = null;\n _this2.hasGestureFailed = false;\n });\n }\n });\n this.setupEvents();\n this.sync();\n }\n }, {\n key: \"setupEvents\",\n value: function setupEvents() {\n var _this3 = this;\n if (!this.isDiscrete) {\n this.hammer.on(this.name + \"start\", function (event) {\n return _this3.onStart(event);\n });\n this.hammer.on(this.name + \"end \" + this.name + \"cancel\", function (event) {\n _this3.onGestureEnded(event);\n });\n }\n this.hammer.on(this.name, function (ev) {\n return _this3.onGestureActivated(ev);\n });\n }\n }, {\n key: \"onStart\",\n value: function onStart(_ref4) {\n var deltaX = _ref4.deltaX,\n deltaY = _ref4.deltaY,\n rotation = _ref4.rotation;\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n this.isGestureRunning = true;\n this.__initialX = deltaX;\n this.__initialY = deltaY;\n this.initialRotation = rotation;\n }\n }, {\n key: \"onGestureActivated\",\n value: function onGestureActivated(ev) {\n this.sendEvent(ev);\n }\n }, {\n key: \"onSuccess\",\n value: function onSuccess() {}\n }, {\n key: \"_getPendingGestures\",\n value: function _getPendingGestures() {\n if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) {\n var stillWaiting = this.config.waitFor.filter(function (_ref5) {\n var hasGestureFailed = _ref5.hasGestureFailed;\n return hasGestureFailed === false;\n });\n return stillWaiting;\n }\n return [];\n }\n }, {\n key: \"getHammerConfig\",\n value: function getHammerConfig() {\n var pointers = this.config.minPointers === this.config.maxPointers ? this.config.minPointers : 0;\n return {\n pointers: pointers\n };\n }\n }, {\n key: \"simulateCancelEvent\",\n value: function simulateCancelEvent(_inputData) {}\n }, {\n key: \"ensureConfig\",\n value: function ensureConfig(config) {\n var _this4 = this;\n var props = _objectSpread({}, config);\n if ('minDist' in config) {\n props.minDist = config.minDist;\n props.minDistSq = props.minDist * props.minDist;\n }\n if ('minVelocity' in config) {\n props.minVelocity = config.minVelocity;\n props.minVelocitySq = props.minVelocity * props.minVelocity;\n }\n if ('maxDist' in config) {\n props.maxDist = config.maxDist;\n props.maxDistSq = config.maxDist * config.maxDist;\n }\n if ('waitFor' in config) {\n props.waitFor = asArray(config.waitFor).map(function (_ref6) {\n var handlerTag = _ref6.handlerTag;\n return NodeManager.getHandler(handlerTag);\n }).filter(function (v) {\n return v;\n });\n } else {\n props.waitFor = null;\n }\n if ('simultaneousHandlers' in config) {\n var shouldUseTouchEvents = this.shouldUseTouchEvents(this.config);\n props.simultaneousHandlers = asArray(config.simultaneousHandlers).map(function (handler) {\n if (typeof handler === 'number') {\n return NodeManager.getHandler(handler);\n } else {\n return NodeManager.getHandler(handler.handlerTag);\n }\n }).filter(function (v) {\n return v;\n });\n if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {\n requestAnimationFrame(function () {\n _this4.destroy();\n _this4.setView(_this4.ref, _this4.propsRef);\n });\n }\n } else {\n props.simultaneousHandlers = null;\n }\n var configProps = ['minPointers', 'maxPointers', 'minDist', 'maxDist', 'maxDistSq', 'minVelocitySq', 'minDistSq', 'minVelocity', 'failOffsetXStart', 'failOffsetYStart', 'failOffsetXEnd', 'failOffsetYEnd', 'activeOffsetXStart', 'activeOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd'];\n configProps.forEach(function (prop) {\n if (typeof props[prop] === 'undefined') {\n props[prop] = Number.NaN;\n }\n });\n return props;\n }\n }]);\n return GestureHandler;\n}();\nfunction invokeNullableMethod(method, event) {\n if (method) {\n if (typeof method === 'function') {\n method(event);\n } else {\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n var handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n } else {\n if ('__nodeConfig' in method) {\n var argMapping = method.__nodeConfig.argMapping;\n if (Array.isArray(argMapping)) {\n for (var _ref7 of argMapping.entries()) {\n var _ref8 = _slicedToArray(_ref7, 2);\n var index = _ref8[0];\n var _ref8$ = _slicedToArray(_ref8[1], 2);\n var key = _ref8$[0];\n var value = _ref8$[1];\n if (key in event.nativeEvent) {\n var nativeValue = event.nativeEvent[key];\n if (value && value.setValue) {\n value.setValue(nativeValue);\n } else {\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n }\n }\n }\n }\n }\n }\n}\nfunction asArray(value) {\n return value == null ? [] : Array.isArray(value) ? value : [value];\n}\nexport default GestureHandler;","map":{"version":3,"mappings":"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","names":["Hammer","State","EventMap","NodeManager","gestureInstances","GestureHandler","constructor","_defineProperty","UNDETERMINED","Array","isArray","config","waitFor","gesture","removePendingGesture","id","clearSelfAsPending","hammer","stop","destroy","x","y","rect","view","getBoundingClientRect","pointerInside","left","right","top","bottom","nativeEvent","propsRef","current","onGestureHandlerEvent","onGestureHandlerStateChange","event","transformEventData","invokeNullableMethod","lastSentState","state","get","name","enable","recognizer","inputData","enabled","isGestureRunning","hasGestureFailed","options","maxPointers","shouldEnableGestureOnSetup","isDiscrete","_stillWaiting","_getPendingGestures","length","hasCustomActivationCriteria","deltaRotation","initialRotation","rotation","isGestureEnabledForEvent","getConfig","success","failed","simulateCancelEvent","params","getHammerConfig","set","gestureInstance","Error","onWaitingEnded","_gesture","pendingGestures","addPendingGesture","_config","_recognizer","_event","updateHasCustomActivationCriteria","updateGestureConfig","props","ensureConfig","sync","getState","type","eventType","numberOfPointers","changedTouch","changedPointers","isPointInView","clientX","clientY","previousState","oldState","transformNativeEvent","handlerTag","target","ref","undefined","timeStamp","Date","now","cancelPendingGestures","Object","values","cancelEvent","notifyPendingGestures","onGestureEnded","forceInvalidate","sendEvent","INPUT_CANCEL","isFinal","onRawEvent","isFirst","shouldUseTouchEvents","simultaneousHandlers","_config$simultaneousH2","some","handler","isNative","setView","SUPPORTS_TOUCH","window","findNodeHandle","Manager","inputClass","TouchInput","NativeGestureClass","add","on","ev","setTimeout","setupEvents","onStart","onGestureActivated","deltaX","deltaY","__initialX","__initialY","onSuccess","stillWaiting","filter","pointers","minPointers","_inputData","minDist","minDistSq","minVelocity","minVelocitySq","maxDist","maxDistSq","asArray","map","getHandler","v","requestAnimationFrame","configProps","forEach","prop","Number","NaN","method","__getHandler","argMapping","__nodeConfig","entries","index","key","value","nativeValue","setValue"],"sources":["/Users/mathildejean/Documents/BUT/LaSuperMeteo/LaSuperMeteo/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.ts"],"sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\nimport { findNodeHandle } from 'react-native';\n\nimport { State } from '../State';\nimport { EventMap } from './constants';\nimport * as NodeManager from './NodeManager';\n\n// TODO(TS) Replace with HammerInput if https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438/files is merged\nexport type HammerInputExt = Omit<HammerInput, 'destroy' | 'handler' | 'init'>;\n\nexport type Config = Partial<{\n enabled: boolean;\n minPointers: number;\n maxPointers: number;\n minDist: number;\n minDistSq: number;\n minVelocity: number;\n minVelocitySq: number;\n maxDist: number;\n maxDistSq: number;\n failOffsetXStart: number;\n failOffsetYStart: number;\n failOffsetXEnd: number;\n failOffsetYEnd: number;\n activeOffsetXStart: number;\n activeOffsetXEnd: number;\n activeOffsetYStart: number;\n activeOffsetYEnd: number;\n waitFor: any[] | null;\n simultaneousHandlers: any[] | null;\n}>;\n\ntype NativeEvent = ReturnType<GestureHandler['transformEventData']>;\n\nlet gestureInstances = 0;\n\nabstract class GestureHandler {\n public handlerTag: any;\n public isGestureRunning = false;\n public view: number | null = null;\n protected hasCustomActivationCriteria: boolean;\n protected hasGestureFailed = false;\n protected hammer: HammerManager | null = null;\n protected initialRotation: number | null = null;\n protected __initialX: any;\n protected __initialY: any;\n protected config: Config = {};\n protected previousState: State = State.UNDETERMINED;\n private pendingGestures: Record<string, this> = {};\n private oldState: State = State.UNDETERMINED;\n private lastSentState: State | null = null;\n private gestureInstance: number;\n private _stillWaiting: any;\n private propsRef: any;\n private ref: any;\n\n abstract get name(): string;\n\n get id() {\n return `${this.name}${this.gestureInstance}`;\n }\n\n // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it\n // here to use instanceof would cause import cycle\n get isNative() {\n return false;\n }\n\n get isDiscrete() {\n return false;\n }\n\n get shouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n constructor() {\n this.gestureInstance = gestureInstances++;\n this.hasCustomActivationCriteria = false;\n }\n\n getConfig() {\n return this.config;\n }\n\n onWaitingEnded(_gesture: this) {}\n\n removePendingGesture(id: string) {\n delete this.pendingGestures[id];\n }\n\n addPendingGesture(gesture: this) {\n this.pendingGestures[gesture.id] = gesture;\n }\n\n isGestureEnabledForEvent(\n _config: any,\n _recognizer: any,\n _event: any\n ): { failed?: boolean; success?: boolean } {\n return { success: true };\n }\n\n get NativeGestureClass(): RecognizerStatic {\n throw new Error('Must override GestureHandler.NativeGestureClass');\n }\n\n updateHasCustomActivationCriteria(_config: Config) {\n return true;\n }\n\n clearSelfAsPending = () => {\n if (Array.isArray(this.config.waitFor)) {\n for (const gesture of this.config.waitFor) {\n gesture.removePendingGesture(this.id);\n }\n }\n };\n\n updateGestureConfig({ enabled = true, ...props }) {\n this.clearSelfAsPending();\n\n this.config = this.ensureConfig({ enabled, ...props });\n this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(\n this.config\n );\n if (Array.isArray(this.config.waitFor)) {\n for (const gesture of this.config.waitFor) {\n gesture.addPendingGesture(this);\n }\n }\n\n if (this.hammer) {\n this.sync();\n }\n return this.config;\n }\n\n destroy = () => {\n this.clearSelfAsPending();\n\n if (this.hammer) {\n this.hammer.stop(false);\n this.hammer.destroy();\n }\n this.hammer = null;\n };\n\n isPointInView = ({ x, y }: { x: number; y: number }) => {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n const pointerInside =\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n return pointerInside;\n };\n\n getState(type: keyof typeof EventMap): State {\n // @ts-ignore TODO(TS) check if this is needed\n if (type == 0) {\n return 0;\n }\n return EventMap[type];\n }\n\n transformEventData(event: HammerInputExt) {\n const { eventType, maxPointers: numberOfPointers } = event;\n // const direction = DirectionMap[ev.direction];\n const changedTouch = event.changedPointers[0];\n const pointerInside = this.isPointInView({\n x: changedTouch.clientX,\n y: changedTouch.clientY,\n });\n\n // TODO(TS) Remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50966 is merged.\n const state = this.getState(eventType as 1 | 2 | 4 | 8);\n if (state !== this.previousState) {\n this.oldState = this.previousState;\n this.previousState = state;\n }\n\n return {\n nativeEvent: {\n numberOfPointers,\n state,\n pointerInside,\n ...this.transformNativeEvent(event),\n // onHandlerStateChange only\n handlerTag: this.handlerTag,\n target: this.ref,\n // send oldState only when the state was changed, or is different than ACTIVE\n // GestureDetector relies on the presence of `oldState` to differentiate between\n // update events and state change events\n oldState:\n state !== this.previousState || state != 4\n ? this.oldState\n : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n transformNativeEvent(_event: HammerInputExt) {\n return {};\n }\n\n sendEvent = (nativeEvent: HammerInputExt) => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange } =\n this.propsRef.current;\n\n const event = this.transformEventData(nativeEvent);\n\n invokeNullableMethod(onGestureHandlerEvent, event);\n if (this.lastSentState !== event.nativeEvent.state) {\n this.lastSentState = event.nativeEvent.state as State;\n invokeNullableMethod(onGestureHandlerStateChange, event);\n }\n };\n\n cancelPendingGestures(event: HammerInputExt) {\n for (const gesture of Object.values(this.pendingGestures)) {\n if (gesture && gesture.isGestureRunning) {\n gesture.hasGestureFailed = true;\n gesture.cancelEvent(event);\n }\n }\n }\n\n notifyPendingGestures() {\n for (const gesture of Object.values(this.pendingGestures)) {\n if (gesture) {\n gesture.onWaitingEnded(this);\n }\n }\n }\n\n // FIXME event is undefined in runtime when firstly invoked (see Draggable example), check other functions taking event as input\n onGestureEnded(event: HammerInputExt) {\n this.isGestureRunning = false;\n this.cancelPendingGestures(event);\n }\n\n forceInvalidate(event: HammerInputExt) {\n if (this.isGestureRunning) {\n this.hasGestureFailed = true;\n this.cancelEvent(event);\n }\n }\n\n cancelEvent(event: HammerInputExt) {\n this.notifyPendingGestures();\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_CANCEL,\n isFinal: true,\n });\n this.onGestureEnded(event);\n }\n\n onRawEvent({ isFirst }: HammerInputExt) {\n if (isFirst) {\n this.hasGestureFailed = false;\n }\n }\n\n shouldUseTouchEvents(config: Config) {\n return (\n config.simultaneousHandlers?.some((handler) => handler.isNative) ?? false\n );\n }\n\n setView(ref: Parameters<typeof findNodeHandle>['0'], propsRef: any) {\n if (ref == null) {\n this.destroy();\n this.view = null;\n return;\n }\n\n // @ts-ignore window doesn't exist on global type as we don't want to use Node types\n const SUPPORTS_TOUCH = 'ontouchstart' in window;\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.view = findNodeHandle(ref);\n\n // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops\n // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous\n // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible.\n this.hammer =\n SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config)\n ? new Hammer.Manager(this.view as any, {\n inputClass: Hammer.TouchInput,\n })\n : new Hammer.Manager(this.view as any);\n\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n\n const { NativeGestureClass } = this;\n // @ts-ignore TODO(TS)\n const gesture = new NativeGestureClass(this.getHammerConfig());\n this.hammer.add(gesture);\n\n this.hammer.on('hammer.input', (ev: HammerInput) => {\n if (!this.config.enabled) {\n this.hasGestureFailed = false;\n this.isGestureRunning = false;\n return;\n }\n\n this.onRawEvent(ev as unknown as HammerInputExt);\n\n // TODO: Bacon: Check against something other than null\n // The isFirst value is not called when the first rotation is calculated.\n if (this.initialRotation === null && ev.rotation !== 0) {\n this.initialRotation = ev.rotation;\n }\n if (ev.isFinal) {\n // in favor of a willFail otherwise the last frame of the gesture will be captured.\n setTimeout(() => {\n this.initialRotation = null;\n this.hasGestureFailed = false;\n });\n }\n });\n\n this.setupEvents();\n this.sync();\n }\n\n setupEvents() {\n // TODO(TS) Hammer types aren't exactly that what we get in runtime\n if (!this.isDiscrete) {\n this.hammer!.on(`${this.name}start`, (event: HammerInput) =>\n this.onStart(event as unknown as HammerInputExt)\n );\n this.hammer!.on(\n `${this.name}end ${this.name}cancel`,\n (event: HammerInput) => {\n this.onGestureEnded(event as unknown as HammerInputExt);\n }\n );\n }\n this.hammer!.on(this.name, (ev: HammerInput) =>\n this.onGestureActivated(ev as unknown as HammerInputExt)\n ); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged\n }\n\n onStart({ deltaX, deltaY, rotation }: HammerInputExt) {\n // Reset the state for the next gesture\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n\n this.isGestureRunning = true;\n this.__initialX = deltaX;\n this.__initialY = deltaY;\n this.initialRotation = rotation;\n }\n\n onGestureActivated(ev: HammerInputExt) {\n this.sendEvent(ev);\n }\n\n onSuccess() {}\n\n _getPendingGestures() {\n if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) {\n // Get the list of gestures that this gesture is still waiting for.\n // Use `=== false` in case a ref that isn't a gesture handler is used.\n const stillWaiting = this.config.waitFor.filter(\n ({ hasGestureFailed }) => hasGestureFailed === false\n );\n return stillWaiting;\n }\n return [];\n }\n\n getHammerConfig() {\n const pointers =\n this.config.minPointers === this.config.maxPointers\n ? this.config.minPointers\n : 0;\n return {\n pointers,\n };\n }\n\n sync = () => {\n const gesture = this.hammer!.get(this.name);\n if (!gesture) return;\n\n const enable = (recognizer: any, inputData: any) => {\n if (!this.config.enabled) {\n this.isGestureRunning = false;\n this.hasGestureFailed = false;\n return false;\n }\n\n // Prevent events before the system is ready.\n if (\n !inputData ||\n !recognizer.options ||\n typeof inputData.maxPointers === 'undefined'\n ) {\n return this.shouldEnableGestureOnSetup;\n }\n\n if (this.hasGestureFailed) {\n return false;\n }\n\n if (!this.isDiscrete) {\n if (this.isGestureRunning) {\n return true;\n }\n // The built-in hammer.js \"waitFor\" doesn't work across multiple views.\n // Only process if there are views to wait for.\n this._stillWaiting = this._getPendingGestures();\n // This gesture should continue waiting.\n if (this._stillWaiting.length) {\n // Check to see if one of the gestures you're waiting for has started.\n // If it has then the gesture should fail.\n for (const gesture of this._stillWaiting) {\n // When the target gesture has started, this gesture must force fail.\n if (!gesture.isDiscrete && gesture.isGestureRunning) {\n this.hasGestureFailed = true;\n this.isGestureRunning = false;\n return false;\n }\n }\n // This gesture shouldn't start until the others have finished.\n return false;\n }\n }\n\n // Use default behaviour\n if (!this.hasCustomActivationCriteria) {\n return true;\n }\n\n const deltaRotation =\n this.initialRotation == null\n ? 0\n : inputData.rotation - this.initialRotation;\n // @ts-ignore FIXME(TS)\n const { success, failed } = this.isGestureEnabledForEvent(\n this.getConfig(),\n recognizer,\n {\n ...inputData,\n deltaRotation,\n }\n );\n\n if (failed) {\n this.simulateCancelEvent(inputData);\n this.hasGestureFailed = true;\n }\n return success;\n };\n\n const params = this.getHammerConfig();\n // @ts-ignore FIXME(TS)\n gesture.set({ ...params, enable });\n };\n\n simulateCancelEvent(_inputData: any) {}\n\n // Validate the props\n ensureConfig(config: Config): Required<Config> {\n const props = { ...config };\n\n // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)\n if ('minDist' in config) {\n props.minDist = config.minDist;\n props.minDistSq = props.minDist! * props.minDist!;\n }\n if ('minVelocity' in config) {\n props.minVelocity = config.minVelocity;\n props.minVelocitySq = props.minVelocity! * props.minVelocity!;\n }\n if ('maxDist' in config) {\n props.maxDist = config.maxDist;\n props.maxDistSq = config.maxDist! * config.maxDist!;\n }\n if ('waitFor' in config) {\n props.waitFor = asArray(config.waitFor)\n .map(({ handlerTag }: { handlerTag: number }) =>\n NodeManager.getHandler(handlerTag)\n )\n .filter((v) => v);\n } else {\n props.waitFor = null;\n }\n if ('simultaneousHandlers' in config) {\n const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config);\n props.simultaneousHandlers = asArray(config.simultaneousHandlers)\n .map((handler: number | GestureHandler) => {\n if (typeof handler === 'number') {\n return NodeManager.getHandler(handler);\n } else {\n return NodeManager.getHandler(handler.handlerTag);\n }\n })\n .filter((v) => v);\n\n if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {\n requestAnimationFrame(() => {\n // if the undelying event API needs to be changed, we need to unmount and mount\n // the hammer instance again.\n this.destroy();\n this.setView(this.ref, this.propsRef);\n });\n }\n } else {\n props.simultaneousHandlers = null;\n }\n\n const configProps = [\n 'minPointers',\n 'maxPointers',\n 'minDist',\n 'maxDist',\n 'maxDistSq',\n 'minVelocitySq',\n 'minDistSq',\n 'minVelocity',\n 'failOffsetXStart',\n 'failOffsetYStart',\n 'failOffsetXEnd',\n 'failOffsetYEnd',\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n ] as const;\n configProps.forEach((prop: typeof configProps[number]) => {\n if (typeof props[prop] === 'undefined') {\n props[prop] = Number.NaN;\n }\n });\n return props as Required<Config>; // TODO(TS) how to convince TS that props are filled?\n }\n}\n\n// TODO(TS) investigate this method\n// Used for sending data to a callback or AnimatedEvent\nfunction invokeNullableMethod(\n method:\n | ((event: NativeEvent) => void)\n | { __getHandler: () => (event: NativeEvent) => void }\n | { __nodeConfig: { argMapping: any } },\n event: NativeEvent\n) {\n if (method) {\n if (typeof method === 'function') {\n method(event);\n } else {\n // For use with reanimated's AnimatedEvent\n if (\n '__getHandler' in method &&\n typeof method.__getHandler === 'function'\n ) {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n } else {\n if ('__nodeConfig' in method) {\n const { argMapping } = method.__nodeConfig;\n if (Array.isArray(argMapping)) {\n for (const [index, [key, value]] of argMapping.entries()) {\n if (key in event.nativeEvent) {\n // @ts-ignore fix method type\n const nativeValue = event.nativeEvent[key];\n if (value && value.setValue) {\n // Reanimated API\n value.setValue(nativeValue);\n } else {\n // RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction asArray<T>(value: T | T[]) {\n // TODO(TS) use config.waitFor type\n return value == null ? [] : Array.isArray(value) ? value : [value];\n}\n\nexport default GestureHandler;\n"]},"metadata":{},"sourceType":"module","externalDependencies":[]}