react-native-gesture-handler 2.12.1 → 2.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/RNGestureHandler.podspec +0 -15
  2. package/android/build.gradle +5 -76
  3. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +16 -1
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +43 -18
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +120 -0
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +7 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +5 -0
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +43 -16
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +21 -0
  10. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +9 -1
  11. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +10 -0
  12. package/ios/Handlers/RNHoverHandler.h +12 -0
  13. package/ios/Handlers/RNHoverHandler.m +152 -0
  14. package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
  15. package/ios/RNGestureHandlerEvents.h +1 -0
  16. package/ios/RNGestureHandlerEvents.m +10 -0
  17. package/ios/RNGestureHandlerManager.mm +2 -0
  18. package/ios/RNManualActivationRecognizer.m +2 -1
  19. package/ios/RNRootViewGestureRecognizer.m +7 -2
  20. package/lib/commonjs/RNGestureHandlerModule.macos.js +3 -1
  21. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  22. package/lib/commonjs/RNGestureHandlerModule.web.js +7 -2
  23. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  24. package/lib/commonjs/RNGestureHandlerModule.windows.js +3 -1
  25. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  26. package/lib/commonjs/components/DrawerLayout.js +1 -0
  27. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  28. package/lib/commonjs/components/touchables/GenericTouchable.js +1 -2
  29. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  30. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
  31. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  32. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  33. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  34. package/lib/commonjs/components/touchables/index.js.map +1 -1
  35. package/lib/commonjs/handlers/createHandler.js +3 -3
  36. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  37. package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
  38. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  39. package/lib/commonjs/handlers/gestures/GestureDetector.js +3 -1
  40. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  41. package/lib/commonjs/handlers/gestures/gesture.js +5 -0
  42. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  43. package/lib/commonjs/handlers/gestures/gestureObjects.js +5 -0
  44. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  45. package/lib/commonjs/handlers/gestures/hoverGesture.js +74 -0
  46. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -0
  47. package/lib/commonjs/index.js +8 -0
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -10
  50. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  51. package/lib/commonjs/web/handlers/GestureHandler.js +61 -88
  52. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/handlers/HoverGestureHandler.js +62 -0
  54. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -0
  55. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +6 -7
  56. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  57. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +12 -4
  58. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  59. package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -7
  60. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  61. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -10
  62. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  63. package/lib/commonjs/web/interfaces.js +1 -1
  64. package/lib/commonjs/web/interfaces.js.map +1 -1
  65. package/lib/commonjs/web/tools/EventManager.js +18 -4
  66. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  67. package/lib/commonjs/web/tools/GestureHandlerDelegate.js +6 -0
  68. package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -0
  69. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +5 -7
  70. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  71. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +118 -0
  72. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -0
  73. package/lib/commonjs/web/tools/PointerEventManager.js +38 -5
  74. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  75. package/lib/commonjs/web/tools/TouchEventManager.js +2 -2
  76. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  77. package/lib/module/RNGestureHandlerModule.macos.js +2 -1
  78. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  79. package/lib/module/RNGestureHandlerModule.web.js +6 -3
  80. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  81. package/lib/module/RNGestureHandlerModule.windows.js +2 -1
  82. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  83. package/lib/module/components/DrawerLayout.js +1 -0
  84. package/lib/module/components/DrawerLayout.js.map +1 -1
  85. package/lib/module/components/touchables/GenericTouchable.js +1 -2
  86. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  87. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
  88. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  89. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  90. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  91. package/lib/module/components/touchables/index.js.map +1 -1
  92. package/lib/module/handlers/createHandler.js +3 -3
  93. package/lib/module/handlers/createHandler.js.map +1 -1
  94. package/lib/module/handlers/gestureHandlerCommon.js +1 -1
  95. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  96. package/lib/module/handlers/gestures/GestureDetector.js +2 -1
  97. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  98. package/lib/module/handlers/gestures/gesture.js +5 -0
  99. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  100. package/lib/module/handlers/gestures/gestureObjects.js +4 -0
  101. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  102. package/lib/module/handlers/gestures/hoverGesture.js +62 -0
  103. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -0
  104. package/lib/module/index.js +1 -0
  105. package/lib/module/index.js.map +1 -1
  106. package/lib/module/web/handlers/FlingGestureHandler.js +0 -10
  107. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  108. package/lib/module/web/handlers/GestureHandler.js +61 -84
  109. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  110. package/lib/module/web/handlers/HoverGestureHandler.js +47 -0
  111. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -0
  112. package/lib/module/web/handlers/LongPressGestureHandler.js +5 -7
  113. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  114. package/lib/module/web/handlers/NativeViewGestureHandler.js +11 -4
  115. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/PanGestureHandler.js +2 -7
  117. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  118. package/lib/module/web/handlers/TapGestureHandler.js +0 -10
  119. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  120. package/lib/module/web/interfaces.js +1 -1
  121. package/lib/module/web/interfaces.js.map +1 -1
  122. package/lib/module/web/tools/EventManager.js +18 -4
  123. package/lib/module/web/tools/EventManager.js.map +1 -1
  124. package/lib/module/web/tools/GestureHandlerDelegate.js +2 -0
  125. package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -0
  126. package/lib/module/web/tools/GestureHandlerOrchestrator.js +5 -6
  127. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  128. package/lib/module/web/tools/GestureHandlerWebDelegate.js +102 -0
  129. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -0
  130. package/lib/module/web/tools/PointerEventManager.js +39 -6
  131. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  132. package/lib/module/web/tools/TouchEventManager.js +2 -2
  133. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  134. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  135. package/lib/typescript/RNGestureHandlerModule.web.d.ts +3 -1
  136. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -1
  137. package/lib/typescript/components/DrawerLayout.d.ts +7 -1
  138. package/lib/typescript/components/touchables/GenericTouchable.d.ts +3 -2
  139. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
  140. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -2
  141. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +4 -5
  142. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
  143. package/lib/typescript/components/touchables/index.d.ts +3 -0
  144. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  145. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
  146. package/lib/typescript/handlers/gestures/gesture.d.ts +2 -1
  147. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +2 -0
  148. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +32 -0
  149. package/lib/typescript/index.d.ts +4 -0
  150. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -6
  151. package/lib/typescript/web/handlers/GestureHandler.d.ts +12 -17
  152. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +10 -0
  153. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -4
  154. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -1
  155. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -4
  156. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -6
  157. package/lib/typescript/web/interfaces.d.ts +4 -3
  158. package/lib/typescript/web/tools/EventManager.d.ts +9 -5
  159. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +22 -0
  160. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +21 -0
  161. package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
  162. package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -1
  163. package/lib/typescript/web/tools/TouchEventManager.d.ts +1 -1
  164. package/package.json +2 -2
  165. package/src/RNGestureHandlerModule.macos.ts +5 -1
  166. package/src/RNGestureHandlerModule.web.ts +7 -1
  167. package/src/RNGestureHandlerModule.windows.ts +5 -1
  168. package/src/components/DrawerLayout.tsx +9 -0
  169. package/src/components/touchables/GenericTouchable.tsx +4 -4
  170. package/src/components/touchables/TouchableHighlight.tsx +6 -3
  171. package/src/components/touchables/TouchableNativeFeedback.android.tsx +5 -4
  172. package/src/components/touchables/TouchableOpacity.tsx +6 -7
  173. package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -1
  174. package/src/components/touchables/index.ts +3 -0
  175. package/src/handlers/createHandler.tsx +4 -2
  176. package/src/handlers/gestureHandlerCommon.ts +39 -0
  177. package/src/handlers/gestures/GestureDetector.tsx +2 -0
  178. package/src/handlers/gestures/gesture.ts +6 -0
  179. package/src/handlers/gestures/gestureObjects.ts +5 -0
  180. package/src/handlers/gestures/hoverGesture.ts +83 -0
  181. package/src/index.ts +8 -0
  182. package/src/web/handlers/FlingGestureHandler.ts +0 -11
  183. package/src/web/handlers/GestureHandler.ts +68 -88
  184. package/src/web/handlers/HoverGestureHandler.ts +43 -0
  185. package/src/web/handlers/LongPressGestureHandler.ts +5 -7
  186. package/src/web/handlers/NativeViewGestureHandler.ts +11 -4
  187. package/src/web/handlers/PanGestureHandler.ts +1 -6
  188. package/src/web/handlers/TapGestureHandler.ts +0 -11
  189. package/src/web/interfaces.ts +4 -2
  190. package/src/web/tools/EventManager.ts +15 -7
  191. package/src/web/tools/GestureHandlerDelegate.ts +23 -0
  192. package/src/web/tools/GestureHandlerOrchestrator.ts +7 -6
  193. package/src/web/tools/GestureHandlerWebDelegate.ts +115 -0
  194. package/src/web/tools/PointerEventManager.ts +46 -16
  195. package/src/web/tools/TouchEventManager.ts +3 -3
@@ -65,16 +65,6 @@ class FlingGestureHandler extends _GestureHandler.default {
65
65
  }
66
66
  }
67
67
 
68
- transformNativeEvent() {
69
- const rect = this.view.getBoundingClientRect();
70
- return {
71
- x: this.tracker.getLastAvgX() - rect.left,
72
- y: this.tracker.getLastAvgY() - rect.top,
73
- absoluteX: this.tracker.getLastAvgX(),
74
- absoluteY: this.tracker.getLastAvgY()
75
- };
76
- }
77
-
78
68
  startFling() {
79
69
  this.startX = this.tracker.getLastX(this.keyPointer);
80
70
  this.startY = this.tracker.getLastY(this.keyPointer);
@@ -1 +1 @@
1
- {"version":3,"sources":["FlingGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","Direction","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","GestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","startFling","startX","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","State","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\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 super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
1
+ {"version":3,"sources":["FlingGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","Direction","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","GestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","startFling","startX","tracker","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","State","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;;;;;AAEA,MAAMA,uBAAuB,GAAG,GAAhC;AACA,MAAMC,4BAA4B,GAAG,GAArC;AACA,MAAMC,iBAAiB,GAAGC,qBAAUC,KAApC;AACA,MAAMC,kCAAkC,GAAG,CAA3C;;AAEe,MAAMC,mBAAN,SAAkCC,uBAAlC,CAAiD;AAAA;AAAA;;AAAA,sDAC3BF,kCAD2B;;AAAA,uCAE1CH,iBAF0C;;AAAA,2CAItCF,uBAJsC;;AAAA,gDAKjCC,4BALiC;;AAAA;;AAAA,oCAQ7C,CAR6C;;AAAA,oCAS7C,CAT6C;;AAAA,+DAWlB,CAXkB;;AAAA,wCAYzCO,GAZyC;AAAA;;AAcvDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAwD;AACjE,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;;AAEA,QAAI,KAAKC,MAAL,CAAYC,SAAhB,EAA2B;AACzB,WAAKA,SAAL,GAAiB,KAAKD,MAAL,CAAYC,SAA7B;AACD;;AAED,QAAI,KAAKD,MAAL,CAAYE,gBAAhB,EAAkC;AAChC,WAAKC,wBAAL,GAAgC,KAAKH,MAAL,CAAYE,gBAA5C;AACD;AACF;;AAEOE,EAAAA,UAAU,GAAS;AACzB,SAAKC,MAAL,GAAc,KAAKC,OAAL,CAAaC,QAAb,CAAsB,KAAKC,UAA3B,CAAd;AACA,SAAKC,MAAL,GAAc,KAAKH,OAAL,CAAaI,QAAb,CAAsB,KAAKF,UAA3B,CAAd;AAEA,SAAKG,KAAL;AAEA,SAAKC,iCAAL,GAAyC,CAAzC;AAEA,SAAKC,YAAL,GAAoBC,UAAU,CAAC,MAAM,KAAKC,IAAL,EAAP,EAAoB,KAAKC,aAAzB,CAA9B;AACD;;AAEOC,EAAAA,WAAW,GAAY;AAC7B,QACE,KAAKL,iCAAL,KACE,KAAKT,wBADP,KAEE,KAAKF,SAAL,GAAiBb,qBAAUC,KAA3B,IACA,KAAKiB,OAAL,CAAaC,QAAb,CAAsB,KAAKC,UAA3B,IAAyC,KAAKH,MAA9C,GACE,KAAKa,kBAFR,IAGE,KAAKjB,SAAL,GAAiBb,qBAAU+B,IAA3B,IACC,KAAKd,MAAL,GAAc,KAAKC,OAAL,CAAaC,QAAb,CAAsB,KAAKC,UAA3B,CAAd,GACE,KAAKU,kBALV,IAME,KAAKjB,SAAL,GAAiBb,qBAAUgC,EAA3B,IACC,KAAKX,MAAL,GAAc,KAAKH,OAAL,CAAaI,QAAb,CAAsB,KAAKF,UAA3B,CAAd,GACE,KAAKU,kBARV,IASE,KAAKjB,SAAL,GAAiBb,qBAAUiC,IAA3B,IACC,KAAKf,OAAL,CAAaI,QAAb,CAAsB,KAAKF,UAA3B,IAAyC,KAAKC,MAA9C,GACE,KAAKS,kBAbX,CADF,EAeE;AACAI,MAAAA,YAAY,CAAC,KAAKT,YAAN,CAAZ;AACA,WAAKU,QAAL;AAEA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD;;AAEOC,EAAAA,QAAQ,GAAG;AACjB,QAAI,CAAC,KAAKP,WAAL,EAAL,EAAyB;AACvB,WAAKF,IAAL;AACD;AACF;;AAESU,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,SAAKlB,UAAL,GAAkBkB,KAAK,CAACE,SAAxB;AAEA,UAAMH,aAAN,CAAoBC,KAApB;AACA,SAAKG,gBAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACA,SAAKG,gBAAL;AACD;;AAEOA,EAAAA,gBAAgB,GAAS;AAC/B,QAAI,KAAKE,YAAL,KAAsBC,aAAMC,YAAhC,EAA8C;AAC5C,WAAK7B,UAAL;AACD;;AAED,QAAI,KAAK2B,YAAL,KAAsBC,aAAME,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKjB,WAAL;;AAEA,QACE,KAAKX,OAAL,CAAa6B,uBAAb,KACA,KAAKvB,iCAFP,EAGE;AACA,WAAKA,iCAAL,GACE,KAAKN,OAAL,CAAa6B,uBAAb,EADF;AAED;AACF;;AAESC,EAAAA,aAAa,CAACV,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAa+B,KAAb,CAAmBX,KAAnB;;AAEA,QAAI,KAAKK,YAAL,KAAsBC,aAAME,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKjB,WAAL;AAEA,UAAMmB,aAAN,CAAoBV,KAApB;AACD;;AAESY,EAAAA,WAAW,CAACZ,KAAD,EAA4B;AAC/C,UAAMY,WAAN,CAAkBZ,KAAlB;AACA,SAAKa,IAAL,CAAUb,KAAV;AAEA,SAAKlB,UAAL,GAAkBf,GAAlB;AACD;;AAES+C,EAAAA,eAAe,CAACd,KAAD,EAA4B;AACnD,UAAMc,eAAN,CAAsBd,KAAtB;AACA,SAAKa,IAAL,CAAUb,KAAV;AACD;;AAEOa,EAAAA,IAAI,CAACb,KAAD,EAA4B;AACtC,SAAKpB,OAAL,CAAamC,iBAAb,CAA+Bf,KAAK,CAACE,SAArC;;AACA,QAAI,KAAKG,YAAL,KAAsBC,aAAME,KAAhC,EAAuC;AACrC;AACD;;AACD,SAAKV,QAAL;AACD;;AAEMD,EAAAA,QAAQ,CAACmB,KAAD,EAAwB;AACrC,UAAMnB,QAAN,CAAemB,KAAf;AACA,SAAKC,GAAL;AACD;;AAESC,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACA,SAAKzC,wBAAL,GAAgCb,kCAAhC;AACA,SAAKW,SAAL,GAAiBd,iBAAjB;AACD;;AApJ6D","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\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 super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _reactNative = require("react-native");
9
-
10
8
  var _State = require("../../State");
11
9
 
12
10
  var _interfaces = require("../interfaces");
@@ -15,32 +13,26 @@ var _GestureHandlerOrchestrator = _interopRequireDefault(require("../tools/Gestu
15
13
 
16
14
  var _InteractionManager = _interopRequireDefault(require("../tools/InteractionManager"));
17
15
 
18
- var _PointerEventManager = _interopRequireDefault(require("../tools/PointerEventManager"));
19
-
20
16
  var _PointerTracker = _interopRequireDefault(require("../tools/PointerTracker"));
21
17
 
22
- var _TouchEventManager = _interopRequireDefault(require("../tools/TouchEventManager"));
23
-
24
- var _utils = require("../utils");
25
-
26
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
19
 
28
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
29
21
 
30
22
  class GestureHandler {
31
23
  // Orchestrator properties
32
- constructor() {
24
+ constructor(delegate) {
33
25
  _defineProperty(this, "lastSentState", null);
34
26
 
35
27
  _defineProperty(this, "currentState", _State.State.UNDETERMINED);
36
28
 
37
29
  _defineProperty(this, "shouldCancellWhenOutside", false);
38
30
 
39
- _defineProperty(this, "hasCustomActivationCriteria", void 0);
31
+ _defineProperty(this, "hasCustomActivationCriteria", false);
40
32
 
41
33
  _defineProperty(this, "enabled", false);
42
34
 
43
- _defineProperty(this, "ref", void 0);
35
+ _defineProperty(this, "viewRef", void 0);
44
36
 
45
37
  _defineProperty(this, "propsRef", void 0);
46
38
 
@@ -50,10 +42,6 @@ class GestureHandler {
50
42
  enabled: false
51
43
  });
52
44
 
53
- _defineProperty(this, "view", void 0);
54
-
55
- _defineProperty(this, "eventManagers", []);
56
-
57
45
  _defineProperty(this, "tracker", new _PointerTracker.default());
58
46
 
59
47
  _defineProperty(this, "activationIndex", 0);
@@ -66,6 +54,8 @@ class GestureHandler {
66
54
 
67
55
  _defineProperty(this, "pointerType", _interfaces.PointerType.NONE);
68
56
 
57
+ _defineProperty(this, "delegate", void 0);
58
+
69
59
  _defineProperty(this, "sendEvent", (newState, oldState) => {
70
60
  const {
71
61
  onGestureHandlerEvent,
@@ -87,52 +77,32 @@ class GestureHandler {
87
77
  }
88
78
  });
89
79
 
90
- this.hasCustomActivationCriteria = false;
80
+ this.delegate = delegate;
91
81
  } //
92
82
  // Initializing handler
93
83
  //
94
84
 
95
85
 
96
- init(ref, propsRef) {
86
+ init(viewRef, propsRef) {
97
87
  this.propsRef = propsRef;
98
- this.ref = ref;
88
+ this.viewRef = viewRef;
99
89
  this.currentState = _State.State.UNDETERMINED;
100
- this.setView();
101
- this.addEventManager(new _PointerEventManager.default(this.view));
102
- this.addEventManager(new _TouchEventManager.default(this.view));
103
- }
104
-
105
- setView() {
106
- if (!this.ref) {
107
- throw new Error(`Cannot find HTML Element for handler ${this.handlerTag}`);
108
- }
109
-
110
- this.view = (0, _reactNative.findNodeHandle)(this.ref);
111
- this.view.style['touchAction'] = 'none'; //@ts-ignore This one disables default events on Safari
112
-
113
- this.view.style['WebkitTouchCallout'] = 'none';
114
-
115
- if (!this.config.userSelect) {
116
- this.view.style['webkitUserSelect'] = 'none';
117
- this.view.style['userSelect'] = 'none';
118
- } else {
119
- this.view.style['webkitUserSelect'] = this.config.userSelect;
120
- this.view.style['userSelect'] = this.config.userSelect;
121
- }
90
+ this.delegate.init(viewRef, this);
122
91
  }
123
92
 
124
- addEventManager(manager) {
93
+ attachEventManager(manager) {
125
94
  manager.setOnPointerDown(this.onPointerDown.bind(this));
126
95
  manager.setOnPointerAdd(this.onPointerAdd.bind(this));
127
96
  manager.setOnPointerUp(this.onPointerUp.bind(this));
128
97
  manager.setOnPointerRemove(this.onPointerRemove.bind(this));
129
98
  manager.setOnPointerMove(this.onPointerMove.bind(this));
130
99
  manager.setOnPointerEnter(this.onPointerEnter.bind(this));
131
- manager.setOnPointerOut(this.onPointerOut.bind(this));
100
+ manager.setOnPointerLeave(this.onPointerLeave.bind(this));
132
101
  manager.setOnPointerCancel(this.onPointerCancel.bind(this));
133
102
  manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
103
+ manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));
104
+ manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));
134
105
  manager.setListeners();
135
- this.eventManagers.push(manager);
136
106
  } //
137
107
  // Resetting handler
138
108
  //
@@ -148,7 +118,7 @@ class GestureHandler {
148
118
  this.tracker.resetTracker();
149
119
  this.onReset();
150
120
  this.resetProgress();
151
- this.eventManagers.forEach(manager => manager.resetManager());
121
+ this.delegate.reset();
152
122
  this.currentState = _State.State.UNDETERMINED;
153
123
  } //
154
124
  // State logic
@@ -190,8 +160,10 @@ class GestureHandler {
190
160
 
191
161
  fail(sendIfDisabled) {
192
162
  if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) {
163
+ // Here the order of calling the delegate and moveToState is important.
164
+ // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.
165
+ this.delegate.onFail();
193
166
  this.moveToState(_State.State.FAILED, sendIfDisabled);
194
- this.view.style.cursor = 'auto';
195
167
  }
196
168
 
197
169
  this.resetProgress();
@@ -203,23 +175,25 @@ class GestureHandler {
203
175
 
204
176
  cancel(sendIfDisabled) {
205
177
  if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
206
- this.onCancel();
178
+ this.onCancel(); // Same as above - order matters
179
+
180
+ this.delegate.onCancel();
207
181
  this.moveToState(_State.State.CANCELLED, sendIfDisabled);
208
- this.view.style.cursor = 'auto';
209
182
  }
210
183
  }
211
184
 
212
185
  activate(_force = false) {
213
186
  if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
187
+ this.delegate.onActivate();
214
188
  this.moveToState(_State.State.ACTIVE);
215
- this.view.style.cursor = 'grab';
216
189
  }
217
190
  }
218
191
 
219
192
  end() {
220
193
  if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) {
194
+ // Same as above - order matters
195
+ this.delegate.onEnd();
221
196
  this.moveToState(_State.State.END);
222
- this.view.style.cursor = 'auto';
223
197
  }
224
198
 
225
199
  this.resetProgress();
@@ -337,7 +311,7 @@ class GestureHandler {
337
311
  }
338
312
  }
339
313
 
340
- onPointerOut(event) {
314
+ onPointerLeave(event) {
341
315
  if (this.shouldCancellWhenOutside) {
342
316
  switch (this.currentState) {
343
317
  case _State.State.ACTIVE:
@@ -380,6 +354,12 @@ class GestureHandler {
380
354
  }
381
355
  }
382
356
 
357
+ onPointerMoveOver(_event) {// used only by hover gesture handler atm
358
+ }
359
+
360
+ onPointerMoveOut(_event) {// used only by hover gesture handler atm
361
+ }
362
+
383
363
  tryToSendMoveEvent(out) {
384
364
  if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) {
385
365
  this.sendEvent(this.currentState, this.currentState);
@@ -409,13 +389,13 @@ class GestureHandler {
409
389
  nativeEvent: {
410
390
  numberOfPointers: this.tracker.getTrackedPointersCount(),
411
391
  state: newState,
412
- pointerInside: (0, _utils.isPointerInBounds)(this.view, {
392
+ pointerInside: this.delegate.isPointerInBounds({
413
393
  x: this.tracker.getLastAvgX(),
414
394
  y: this.tracker.getLastAvgY()
415
395
  }),
416
396
  ...this.transformNativeEvent(),
417
397
  handlerTag: this.handlerTag,
418
- target: this.ref,
398
+ target: this.viewRef,
419
399
  oldState: newState !== oldState ? oldState : undefined
420
400
  },
421
401
  timeStamp: Date.now()
@@ -425,7 +405,7 @@ class GestureHandler {
425
405
  transformTouchEvent(event) {
426
406
  var _event$touchEventType;
427
407
 
428
- const rect = this.view.getBoundingClientRect();
408
+ const rect = this.delegate.measureView();
429
409
  const all = [];
430
410
  const changed = [];
431
411
  const trackerData = this.tracker.getData(); // This if handles edge case where all pointers have been cancelled
@@ -441,8 +421,8 @@ class GestureHandler {
441
421
  const id = this.tracker.getMappedTouchEventId(key);
442
422
  all.push({
443
423
  id: id,
444
- x: element.lastX - rect.left,
445
- y: element.lastY - rect.top,
424
+ x: element.lastX - rect.pageX,
425
+ y: element.lastY - rect.pageY,
446
426
  absoluteX: element.lastX,
447
427
  absoluteY: element.lastY
448
428
  });
@@ -452,8 +432,8 @@ class GestureHandler {
452
432
  if (event.eventType !== _interfaces.EventTypes.CANCEL) {
453
433
  changed.push({
454
434
  id: this.tracker.getMappedTouchEventId(event.pointerId),
455
- x: event.x - rect.left,
456
- y: event.y - rect.top,
435
+ x: event.x - rect.pageX,
436
+ y: event.y - rect.pageY,
457
437
  absoluteX: event.x,
458
438
  absoluteY: event.y
459
439
  });
@@ -462,8 +442,8 @@ class GestureHandler {
462
442
  const id = this.tracker.getMappedTouchEventId(key);
463
443
  changed.push({
464
444
  id: id,
465
- x: element.lastX - rect.left,
466
- y: element.lastY - rect.top,
445
+ x: element.lastX - rect.pageX,
446
+ y: element.lastY - rect.pageY,
467
447
  absoluteX: element.lastX,
468
448
  absoluteY: element.lastY
469
449
  });
@@ -515,7 +495,7 @@ class GestureHandler {
515
495
  }
516
496
 
517
497
  cancelTouches() {
518
- const rect = this.view.getBoundingClientRect();
498
+ const rect = this.delegate.measureView();
519
499
  const all = [];
520
500
  const changed = [];
521
501
  const trackerData = this.tracker.getData();
@@ -528,15 +508,15 @@ class GestureHandler {
528
508
  const id = this.tracker.getMappedTouchEventId(key);
529
509
  all.push({
530
510
  id: id,
531
- x: element.lastX - rect.left,
532
- y: element.lastY - rect.top,
511
+ x: element.lastX - rect.pageX,
512
+ y: element.lastY - rect.pageY,
533
513
  absoluteX: element.lastX,
534
514
  absoluteY: element.lastY
535
515
  });
536
516
  changed.push({
537
517
  id: id,
538
- x: element.lastX - rect.left,
539
- y: element.lastY - rect.top,
518
+ x: element.lastX - rect.pageX,
519
+ y: element.lastY - rect.pageY,
540
520
  absoluteX: element.lastX,
541
521
  absoluteY: element.lastY
542
522
  });
@@ -559,7 +539,14 @@ class GestureHandler {
559
539
  }
560
540
 
561
541
  transformNativeEvent() {
562
- return {};
542
+ // those properties are shared by most handlers and if not this method will be overriden
543
+ const rect = this.delegate.measureView();
544
+ return {
545
+ x: this.tracker.getLastAvgX() - rect.pageX,
546
+ y: this.tracker.getLastAvgY() - rect.pageY,
547
+ absoluteX: this.tracker.getLastAvgX(),
548
+ absoluteY: this.tracker.getLastAvgY()
549
+ };
563
550
  } //
564
551
  // Handling config
565
552
  //
@@ -636,8 +623,10 @@ class GestureHandler {
636
623
  return true;
637
624
  }
638
625
 
639
- const width = this.view.getBoundingClientRect().width;
640
- const height = this.view.getBoundingClientRect().height;
626
+ const {
627
+ width,
628
+ height
629
+ } = this.delegate.measureView();
641
630
  let left = 0;
642
631
  let top = 0;
643
632
  let right = width;
@@ -685,9 +674,9 @@ class GestureHandler {
685
674
  }
686
675
  }
687
676
 
688
- const rect = this.view.getBoundingClientRect();
689
- const offsetX = this.tracker.getLastX() - rect.left;
690
- const offsetY = this.tracker.getLastY() - rect.top;
677
+ const rect = this.delegate.measureView();
678
+ const offsetX = this.tracker.getLastX() - rect.pageX;
679
+ const offsetY = this.tracker.getLastY() - rect.pageY;
691
680
 
692
681
  if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {
693
682
  return true;
@@ -696,14 +685,6 @@ class GestureHandler {
696
685
  return false;
697
686
  }
698
687
 
699
- isPointerInBounds({
700
- x,
701
- y
702
- }) {
703
- const rect = this.view.getBoundingClientRect();
704
- return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
705
- }
706
-
707
688
  resetConfig() {} //
708
689
  // Getters and setters
709
690
  //
@@ -721,16 +702,8 @@ class GestureHandler {
721
702
  return this.config;
722
703
  }
723
704
 
724
- getShouldEnableGestureOnSetup() {
725
- throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');
726
- }
727
-
728
- getView() {
729
- return this.view;
730
- }
731
-
732
- getEventManagers() {
733
- return this.eventManagers;
705
+ getDelegate() {
706
+ return this.delegate;
734
707
  }
735
708
 
736
709
  getTracker() {
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","PointerEventManager","view","TouchEventManager","Error","handlerTag","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","sendIfDisabled","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","touchEvent","transformTouchEvent","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","EventTypes","CANCEL","TouchEventType","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","isPointerInBounds","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":";;;;;;;AACA;;AACA;;AACA;;AAYA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEe,MAAeA,cAAf,CAA8B;AAiB3C;AAOOC,EAAAA,WAAW,GAAG;AAAA,2CAvBiB,IAuBjB;;AAAA,0CAtBWC,aAAMC,YAsBjB;;AAAA,sDApBgB,KAoBhB;;AAAA;;AAAA,qCAlBD,KAkBC;;AAAA;;AAAA;;AAAA;;AAAA,oCAbM;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAaN;;AAAA;;AAAA,2CAVqB,EAUrB;;AAAA,qCATe,IAAIC,uBAAJ,EASf;;AAAA,6CANO,CAMP;;AAAA,sCALA,KAKA;;AAAA,oCAJF,KAIE;;AAAA,iDAHW,KAGX;;AAAA,yCAFgBC,wBAAYC,IAE5B;;AAAA,uCA4VF,CAACC,QAAD,EAAkBC,QAAlB,KAA4C;AAC7D,YAAM;AAAEC,QAAAA,qBAAF;AAAyBC,QAAAA;AAAzB,UACJ,KAAKC,QAAL,CAAcC,OADhB;AAGA,YAAMC,WAAwB,GAAG,KAAKC,kBAAL,CAC/BP,QAD+B,EAE/BC,QAF+B,CAAjC,CAJ6D,CAS7D;AACA;AACA;AACA;;AAEA,UAAI,KAAKO,aAAL,KAAuBR,QAA3B,EAAqC;AACnC,aAAKQ,aAAL,GAAqBR,QAArB;AACAS,QAAAA,oBAAoB,CAACN,2BAAD,EAA8BG,WAA9B,CAApB;AACD;;AACD,UAAI,KAAKI,YAAL,KAAsBhB,aAAMiB,MAAhC,EAAwC;AACtCL,QAAAA,WAAW,CAACM,WAAZ,CAAwBX,QAAxB,GAAmCY,SAAnC;AACAJ,QAAAA,oBAAoB,CAACP,qBAAD,EAAwBI,WAAxB,CAApB;AACD;AACF,KAlXoB;;AACnB,SAAKQ,2BAAL,GAAmC,KAAnC;AACD,GA1B0C,CA4B3C;AACA;AACA;;;AAEUC,EAAAA,IAAI,CAACC,GAAD,EAAcZ,QAAd,EAAkD;AAC9D,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKY,GAAL,GAAWA,GAAX;AAEA,SAAKN,YAAL,GAAoBhB,aAAMC,YAA1B;AAEA,SAAKsB,OAAL;AACA,SAAKC,eAAL,CAAqB,IAAIC,4BAAJ,CAAwB,KAAKC,IAA7B,CAArB;AACA,SAAKF,eAAL,CAAqB,IAAIG,0BAAJ,CAAsB,KAAKD,IAA3B,CAArB;AACD;;AAEOH,EAAAA,OAAO,GAAG;AAChB,QAAI,CAAC,KAAKD,GAAV,EAAe;AACb,YAAM,IAAIM,KAAJ,CACH,wCAAuC,KAAKC,UAAW,EADpD,CAAN;AAGD;;AAED,SAAKH,IAAL,GAAY,iCAAe,KAAKJ,GAApB,CAAZ;AACA,SAAKI,IAAL,CAAUI,KAAV,CAAgB,aAAhB,IAAiC,MAAjC,CARgB,CAShB;;AACA,SAAKJ,IAAL,CAAUI,KAAV,CAAgB,oBAAhB,IAAwC,MAAxC;;AAEA,QAAI,CAAC,KAAKC,MAAL,CAAYC,UAAjB,EAA6B;AAC3B,WAAKN,IAAL,CAAUI,KAAV,CAAgB,kBAAhB,IAAsC,MAAtC;AACA,WAAKJ,IAAL,CAAUI,KAAV,CAAgB,YAAhB,IAAgC,MAAhC;AACD,KAHD,MAGO;AACL,WAAKJ,IAAL,CAAUI,KAAV,CAAgB,kBAAhB,IAAsC,KAAKC,MAAL,CAAYC,UAAlD;AACA,WAAKN,IAAL,CAAUI,KAAV,CAAgB,YAAhB,IAAgC,KAAKC,MAAL,CAAYC,UAA5C;AACD;AACF;;AAEOR,EAAAA,eAAe,CAACS,OAAD,EAA8B;AACnDA,IAAAA,OAAO,CAACC,gBAAR,CAAyB,KAAKC,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAAzB;AACAH,IAAAA,OAAO,CAACI,eAAR,CAAwB,KAAKC,YAAL,CAAkBF,IAAlB,CAAuB,IAAvB,CAAxB;AACAH,IAAAA,OAAO,CAACM,cAAR,CAAuB,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CAAvB;AACAH,IAAAA,OAAO,CAACQ,kBAAR,CAA2B,KAAKC,eAAL,CAAqBN,IAArB,CAA0B,IAA1B,CAA3B;AACAH,IAAAA,OAAO,CAACU,gBAAR,CAAyB,KAAKC,aAAL,CAAmBR,IAAnB,CAAwB,IAAxB,CAAzB;AACAH,IAAAA,OAAO,CAACY,iBAAR,CAA0B,KAAKC,cAAL,CAAoBV,IAApB,CAAyB,IAAzB,CAA1B;AACAH,IAAAA,OAAO,CAACc,eAAR,CAAwB,KAAKC,YAAL,CAAkBZ,IAAlB,CAAuB,IAAvB,CAAxB;AACAH,IAAAA,OAAO,CAACgB,kBAAR,CAA2B,KAAKC,eAAL,CAAqBd,IAArB,CAA0B,IAA1B,CAA3B;AACAH,IAAAA,OAAO,CAACkB,uBAAR,CAAgC,KAAKC,oBAAL,CAA0BhB,IAA1B,CAA+B,IAA/B,CAAhC;AACAH,IAAAA,OAAO,CAACoB,YAAR;AAEA,SAAKC,aAAL,CAAmBC,IAAnB,CAAwBtB,OAAxB;AACD,GA7E0C,CA+E3C;AACA;AACA;;;AAEUuB,EAAAA,QAAQ,GAAS,CAAE;;AACnBC,EAAAA,OAAO,GAAS,CAAE;;AAClBC,EAAAA,aAAa,GAAS,CAAE;;AAE3BC,EAAAA,KAAK,GAAS;AACnB,SAAKC,OAAL,CAAaC,YAAb;AACA,SAAKJ,OAAL;AACA,SAAKC,aAAL;AACA,SAAKJ,aAAL,CAAmBQ,OAAnB,CAA4B7B,OAAD,IACzBA,OAAO,CAAC8B,YAAR,EADF;AAGA,SAAK/C,YAAL,GAAoBhB,aAAMC,YAA1B;AACD,GA/F0C,CAiG3C;AACA;AACA;;;AAEO+D,EAAAA,WAAW,CAAC1D,QAAD,EAAkB2D,cAAlB,EAA4C;AAC5D,QAAI,KAAKjD,YAAL,KAAsBV,QAA1B,EAAoC;AAClC;AACD;;AAED,UAAMC,QAAQ,GAAG,KAAKS,YAAtB;AACA,SAAKA,YAAL,GAAoBV,QAApB;;AAEA,QACE,KAAKsD,OAAL,CAAaM,uBAAb,KAAyC,CAAzC,IACA,KAAKnC,MAAL,CAAYoC,gBADZ,IAEA,KAAKC,UAAL,EAHF,EAIE;AACA,WAAKC,aAAL;AACD;;AAEDC,wCAA2BC,WAA3B,GAAyCC,oBAAzC,CACE,IADF,EAEElE,QAFF,EAGEC,QAHF,EAIE0D,cAJF;;AAOA,SAAKQ,aAAL,CAAmBnE,QAAnB,EAA6BC,QAA7B;AACD;;AAESkE,EAAAA,aAAa,CAACC,SAAD,EAAmBC,SAAnB,EAA2C,CAAE;;AAE7DC,EAAAA,KAAK,GAAS;AACnB,QAAI,CAAC,KAAKC,YAAL,EAAL,EAA0B;AACxB;AACD;;AAED,QAAI,KAAK7D,YAAL,KAAsBhB,aAAMC,YAAhC,EAA8C;AAC5C,WAAK+D,WAAL,CAAiBhE,aAAM8E,KAAvB;AACD;AACF;AAED;AACF;AACA;;;AACSC,EAAAA,IAAI,CAACd,cAAD,EAAiC;AAC1C,QACE,KAAKjD,YAAL,KAAsBhB,aAAMiB,MAA5B,IACA,KAAKD,YAAL,KAAsBhB,aAAM8E,KAF9B,EAGE;AACA,WAAKd,WAAL,CAAiBhE,aAAMgF,MAAvB,EAA+Bf,cAA/B;AACA,WAAKvC,IAAL,CAAUI,KAAV,CAAgBmD,MAAhB,GAAyB,MAAzB;AACD;;AAED,SAAKvB,aAAL;AACD;AAED;AACF;AACA;;;AACSwB,EAAAA,MAAM,CAACjB,cAAD,EAAiC;AAC5C,QACE,KAAKjD,YAAL,KAAsBhB,aAAMiB,MAA5B,IACA,KAAKD,YAAL,KAAsBhB,aAAMC,YAD5B,IAEA,KAAKe,YAAL,KAAsBhB,aAAM8E,KAH9B,EAIE;AACA,WAAKtB,QAAL;AACA,WAAKQ,WAAL,CAAiBhE,aAAMmF,SAAvB,EAAkClB,cAAlC;AACA,WAAKvC,IAAL,CAAUI,KAAV,CAAgBmD,MAAhB,GAAyB,MAAzB;AACD;AACF;;AAEMG,EAAAA,QAAQ,CAACC,MAAM,GAAG,KAAV,EAAiB;AAC9B,QACE,KAAKrE,YAAL,KAAsBhB,aAAMC,YAA5B,IACA,KAAKe,YAAL,KAAsBhB,aAAM8E,KAF9B,EAGE;AACA,WAAKd,WAAL,CAAiBhE,aAAMiB,MAAvB;AACA,WAAKS,IAAL,CAAUI,KAAV,CAAgBmD,MAAhB,GAAyB,MAAzB;AACD;AACF;;AAEMK,EAAAA,GAAG,GAAG;AACX,QACE,KAAKtE,YAAL,KAAsBhB,aAAM8E,KAA5B,IACA,KAAK9D,YAAL,KAAsBhB,aAAMiB,MAF9B,EAGE;AACA,WAAK+C,WAAL,CAAiBhE,aAAMuF,GAAvB;AACA,WAAK7D,IAAL,CAAUI,KAAV,CAAgBmD,MAAhB,GAAyB,MAAzB;AACD;;AAED,SAAKvB,aAAL;AACD,GA7L0C,CA+L3C;AACA;AACA;;;AAEO8B,EAAAA,UAAU,GAAY;AAC3B,WAAO,KAAKC,QAAZ;AACD;;AACMC,EAAAA,WAAW,CAACC,KAAD,EAAuB;AACvC,SAAKF,QAAL,GAAgBE,KAAhB;AACD;;AAEMC,EAAAA,QAAQ,GAAY;AACzB,WAAO,KAAKC,MAAZ;AACD;;AACMC,EAAAA,SAAS,CAACH,KAAD,EAAuB;AACrC,SAAKE,MAAL,GAAcF,KAAd;AACD;;AAEMI,EAAAA,sBAAsB,GAAY;AACvC,WAAO,KAAKC,mBAAZ;AACD;;AACMC,EAAAA,sBAAsB,CAACN,KAAD,EAAuB;AAClD,SAAKK,mBAAL,GAA2BL,KAA3B;AACD;;AAEMO,EAAAA,kBAAkB,GAAW;AAClC,WAAO,KAAKC,eAAZ;AACD;;AACMC,EAAAA,kBAAkB,CAACT,KAAD,EAAsB;AAC7C,SAAKQ,eAAL,GAAuBR,KAAvB;AACD;;AAEMU,EAAAA,2BAA2B,CAACC,OAAD,EAAmC;AACnE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,WAAOC,4BAAmBhC,WAAnB,GAAiC8B,2BAAjC,CACL,IADK,EAELC,OAFK,CAAP;AAID;;AAEME,EAAAA,6BAA6B,CAACF,OAAD,EAAmC;AACrE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,WAAOC,4BAAmBhC,WAAnB,GAAiCkC,oCAAjC,CACL,IADK,EAELH,OAFK,CAAP;AAID;;AAEMI,EAAAA,6BAA6B,CAACJ,OAAD,EAAmC;AACrE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,IAAP;AACD;;AAED,WAAOC,4BAAmBhC,WAAnB,GAAiCmC,6BAAjC,CACL,IADK,EAELJ,OAFK,CAAP;AAID;;AAEMK,EAAAA,wBAAwB,CAACL,OAAD,EAAmC;AAChE,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,WAAOC,4BAAmBhC,WAAnB,GAAiCqC,0BAAjC,CACL,IADK,EAELN,OAFK,CAAP;AAID,GAzQ0C,CA2Q3C;AACA;AACA;;;AAEUnE,EAAAA,aAAa,CAAC0E,KAAD,EAA4B;AACjDvC,wCAA2BC,WAA3B,GAAyCuC,yBAAzC,CAAmE,IAAnE;;AACA,SAAKC,WAAL,GAAmBF,KAAK,CAACE,WAAzB;;AAEA,QAAI,KAAKA,WAAL,KAAqB3G,wBAAY4G,KAArC,EAA4C;AAC1C1C,0CAA2BC,WAA3B,GAAyC0C,yBAAzC,CAAmE,IAAnE;AACD;;AAED,QAAI,KAAKlF,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF,GA1R0C,CA2R3C;;;AACUvE,EAAAA,YAAY,CAACuE,KAAD,EAA4B;AAChD,QAAI,KAAK9E,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF;;AACSrE,EAAAA,WAAW,CAACqE,KAAD,EAA4B;AAC/C,QAAI,KAAK9E,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF,GArS0C,CAsS3C;;;AACUnE,EAAAA,eAAe,CAACmE,KAAD,EAA4B;AACnD,QAAI,KAAK9E,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF;;AACSjE,EAAAA,aAAa,CAACiE,KAAD,EAA4B;AACjD,SAAKM,kBAAL,CAAwB,KAAxB;;AACA,QAAI,KAAKpF,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF;;AACS7D,EAAAA,YAAY,CAAC6D,KAAD,EAA4B;AAChD,QAAI,KAAKO,wBAAT,EAAmC;AACjC,cAAQ,KAAKpG,YAAb;AACE,aAAKhB,aAAMiB,MAAX;AACE,eAAKiE,MAAL;AACA;;AACF,aAAKlF,aAAM8E,KAAX;AACE,eAAKC,IAAL;AACA;AANJ;;AAQA;AACD;;AAED,QAAI,KAAKhD,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF;;AACS/D,EAAAA,cAAc,CAAC+D,KAAD,EAA4B;AAClD,QAAI,KAAK9E,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF;;AACS3D,EAAAA,eAAe,CAAC2D,KAAD,EAA4B;AACnD,QAAI,KAAK9E,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;;AAED,SAAK3B,MAAL;AACA,SAAKvB,KAAL;AACD;;AACSP,EAAAA,oBAAoB,CAACyD,KAAD,EAA4B;AACxD,SAAKM,kBAAL,CAAwB,IAAxB;;AACA,QAAI,KAAKpF,MAAL,CAAYoC,gBAAhB,EAAkC;AAChC,WAAK+C,cAAL,CAAoBL,KAApB;AACD;AACF;;AACOM,EAAAA,kBAAkB,CAACE,GAAD,EAAqB;AAC7C,QACE,KAAKnH,OAAL,IACA,KAAK2F,MADL,KAEC,CAACwB,GAAD,IAASA,GAAG,IAAI,CAAC,KAAKD,wBAFvB,CADF,EAIE;AACA,WAAKE,SAAL,CAAe,KAAKtG,YAApB,EAAkC,KAAKA,YAAvC;AACD;AACF;;AAEMkG,EAAAA,cAAc,CAACL,KAAD,EAA4B;AAC/C,QAAI,CAAC,KAAK3G,OAAV,EAAmB;AACjB;AACD;;AAED,UAAM;AAAEM,MAAAA;AAAF,QAAsC,KAAKE,QAAL,CACzCC,OADH;AAGA,UAAM4G,UAAwC,GAC5C,KAAKC,mBAAL,CAAyBX,KAAzB,CADF;;AAGA,QAAIU,UAAJ,EAAgB;AACdxG,MAAAA,oBAAoB,CAACP,qBAAD,EAAwB+G,UAAxB,CAApB;AACD;AACF,GA9W0C,CAgX3C;AACA;AACA;;;AA0BQ1G,EAAAA,kBAAkB,CAACP,QAAD,EAAkBC,QAAlB,EAAgD;AACxE,WAAO;AACLW,MAAAA,WAAW,EAAE;AACXuG,QAAAA,gBAAgB,EAAE,KAAK7D,OAAL,CAAaM,uBAAb,EADP;AAEXwD,QAAAA,KAAK,EAAEpH,QAFI;AAGXqH,QAAAA,aAAa,EAAE,8BAAkB,KAAKjG,IAAvB,EAA6B;AAC1CkG,UAAAA,CAAC,EAAE,KAAKhE,OAAL,CAAaiE,WAAb,EADuC;AAE1CC,UAAAA,CAAC,EAAE,KAAKlE,OAAL,CAAamE,WAAb;AAFuC,SAA7B,CAHJ;AAOX,WAAG,KAAKC,oBAAL,EAPQ;AAQXnG,QAAAA,UAAU,EAAE,KAAKA,UARN;AASXoG,QAAAA,MAAM,EAAE,KAAK3G,GATF;AAUXf,QAAAA,QAAQ,EAAED,QAAQ,KAAKC,QAAb,GAAwBA,QAAxB,GAAmCY;AAVlC,OADR;AAaL+G,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL;AAbN,KAAP;AAeD;;AAEOZ,EAAAA,mBAAmB,CACzBX,KADyB,EAEK;AAAA;;AAC9B,UAAMwB,IAAI,GAAG,KAAK3G,IAAL,CAAU4G,qBAAV,EAAb;AAEA,UAAMC,GAAkB,GAAG,EAA3B;AACA,UAAMC,OAAsB,GAAG,EAA/B;AAEA,UAAMC,WAAW,GAAG,KAAK7E,OAAL,CAAa8E,OAAb,EAApB,CAN8B,CAQ9B;AACA;AACA;AACA;;AACA,QAAID,WAAW,CAACE,IAAZ,KAAqB,CAArB,IAA0B,CAACF,WAAW,CAACG,GAAZ,CAAgB/B,KAAK,CAACgC,SAAtB,CAA/B,EAAiE;AAC/D;AACD;;AAEDJ,IAAAA,WAAW,CAAC3E,OAAZ,CAAoB,CAACgF,OAAD,EAA0BC,GAA1B,KAAgD;AAClE,YAAMC,EAAU,GAAG,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCF,GAAnC,CAAnB;AAEAR,MAAAA,GAAG,CAAChF,IAAJ,CAAS;AACPyF,QAAAA,EAAE,EAAEA,EADG;AAEPpB,QAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFjB;AAGPrB,QAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHjB;AAIPC,QAAAA,SAAS,EAAER,OAAO,CAACI,KAJZ;AAKPK,QAAAA,SAAS,EAAET,OAAO,CAACM;AALZ,OAAT;AAOD,KAVD,EAhB8B,CA4B9B;AACA;;AACA,QAAIvC,KAAK,CAAC2C,SAAN,KAAoBC,uBAAWC,MAAnC,EAA2C;AACzClB,MAAAA,OAAO,CAACjF,IAAR,CAAa;AACXyF,QAAAA,EAAE,EAAE,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCpC,KAAK,CAACgC,SAAzC,CADO;AAEXjB,QAAAA,CAAC,EAAEf,KAAK,CAACe,CAAN,GAAUS,IAAI,CAACc,IAFP;AAGXrB,QAAAA,CAAC,EAAEjB,KAAK,CAACiB,CAAN,GAAUO,IAAI,CAACgB,GAHP;AAIXC,QAAAA,SAAS,EAAEzC,KAAK,CAACe,CAJN;AAKX2B,QAAAA,SAAS,EAAE1C,KAAK,CAACiB;AALN,OAAb;AAOD,KARD,MAQO;AACLW,MAAAA,WAAW,CAAC3E,OAAZ,CAAoB,CAACgF,OAAD,EAA0BC,GAA1B,KAAgD;AAClE,cAAMC,EAAU,GAAG,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCF,GAAnC,CAAnB;AAEAP,QAAAA,OAAO,CAACjF,IAAR,CAAa;AACXyF,UAAAA,EAAE,EAAEA,EADO;AAEXpB,UAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFb;AAGXrB,UAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHb;AAIXC,UAAAA,SAAS,EAAER,OAAO,CAACI,KAJR;AAKXK,UAAAA,SAAS,EAAET,OAAO,CAACM;AALR,SAAb;AAOD,OAVD;AAWD;;AAED,QAAII,SAAyB,GAAGG,2BAAe1J,YAA/C;;AAEA,YAAQ4G,KAAK,CAAC2C,SAAd;AACE,WAAKC,uBAAWG,IAAhB;AACA,WAAKH,uBAAWI,uBAAhB;AACEL,QAAAA,SAAS,GAAGG,2BAAeC,IAA3B;AACA;;AACF,WAAKH,uBAAWK,EAAhB;AACA,WAAKL,uBAAWM,qBAAhB;AACEP,QAAAA,SAAS,GAAGG,2BAAeG,EAA3B;AACA;;AACF,WAAKL,uBAAWO,IAAhB;AACER,QAAAA,SAAS,GAAGG,2BAAeK,IAA3B;AACA;;AACF,WAAKP,uBAAWC,MAAhB;AACEF,QAAAA,SAAS,GAAGG,2BAAexE,SAA3B;AACA;AAdJ,KAtD8B,CAuE9B;AACA;AACA;;;AACA,QAAI8E,eAAuB,GAAG1B,GAAG,CAAC2B,MAAlC;;AAEA,QACErD,KAAK,CAAC2C,SAAN,KAAoBC,uBAAWK,EAA/B,IACAjD,KAAK,CAAC2C,SAAN,KAAoBC,uBAAWM,qBAFjC,EAGE;AACA,QAAEE,eAAF;AACD;;AAED,WAAO;AACL/I,MAAAA,WAAW,EAAE;AACXW,QAAAA,UAAU,EAAE,KAAKA,UADN;AAEX6F,QAAAA,KAAK,EAAE,KAAK1G,YAFD;AAGXwI,QAAAA,SAAS,2BAAE3C,KAAK,CAACsD,cAAR,yEAA0BX,SAHxB;AAIXY,QAAAA,cAAc,EAAE5B,OAJL;AAKX6B,QAAAA,UAAU,EAAE9B,GALD;AAMX0B,QAAAA,eAAe,EAAEA;AANN,OADR;AASL/B,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL;AATN,KAAP;AAWD;;AAEO/D,EAAAA,aAAa,GAAS;AAC5B,UAAMgE,IAAI,GAAG,KAAK3G,IAAL,CAAU4G,qBAAV,EAAb;AAEA,UAAMC,GAAkB,GAAG,EAA3B;AACA,UAAMC,OAAsB,GAAG,EAA/B;AAEA,UAAMC,WAAW,GAAG,KAAK7E,OAAL,CAAa8E,OAAb,EAApB;;AAEA,QAAID,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;AAC1B;AACD;;AAEDF,IAAAA,WAAW,CAAC3E,OAAZ,CAAoB,CAACgF,OAAD,EAA0BC,GAA1B,KAAgD;AAClE,YAAMC,EAAU,GAAG,KAAKpF,OAAL,CAAaqF,qBAAb,CAAmCF,GAAnC,CAAnB;AAEAR,MAAAA,GAAG,CAAChF,IAAJ,CAAS;AACPyF,QAAAA,EAAE,EAAEA,EADG;AAEPpB,QAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFjB;AAGPrB,QAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHjB;AAIPC,QAAAA,SAAS,EAAER,OAAO,CAACI,KAJZ;AAKPK,QAAAA,SAAS,EAAET,OAAO,CAACM;AALZ,OAAT;AAQAZ,MAAAA,OAAO,CAACjF,IAAR,CAAa;AACXyF,QAAAA,EAAE,EAAEA,EADO;AAEXpB,QAAAA,CAAC,EAAEkB,OAAO,CAACI,KAAR,GAAgBb,IAAI,CAACc,IAFb;AAGXrB,QAAAA,CAAC,EAAEgB,OAAO,CAACM,KAAR,GAAgBf,IAAI,CAACgB,GAHb;AAIXC,QAAAA,SAAS,EAAER,OAAO,CAACI,KAJR;AAKXK,QAAAA,SAAS,EAAET,OAAO,CAACM;AALR,OAAb;AAOD,KAlBD;AAoBA,UAAMkB,WAA6B,GAAG;AACpCpJ,MAAAA,WAAW,EAAE;AACXW,QAAAA,UAAU,EAAE,KAAKA,UADN;AAEX6F,QAAAA,KAAK,EAAE,KAAK1G,YAFD;AAGXwI,QAAAA,SAAS,EAAEG,2BAAexE,SAHf;AAIXiF,QAAAA,cAAc,EAAE5B,OAJL;AAKX6B,QAAAA,UAAU,EAAE9B,GALD;AAMX0B,QAAAA,eAAe,EAAE1B,GAAG,CAAC2B;AANV,OADuB;AASpChC,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL;AATyB,KAAtC;AAYA,UAAM;AAAE5H,MAAAA;AAAF,QAAsC,KAAKE,QAAL,CACzCC,OADH;AAGAI,IAAAA,oBAAoB,CAACP,qBAAD,EAAwB8J,WAAxB,CAApB;AACD;;AAEStC,EAAAA,oBAAoB,GAAG;AAC/B,WAAO,EAAP;AACD,GApjB0C,CAsjB3C;AACA;AACA;;;AAEOuC,EAAAA,mBAAmB,CAAC;AAAErK,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGsK;AAArB,GAAD,EAA6C;AACrE,SAAKzI,MAAL,GAAc;AAAE7B,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGsK;AAAvB,KAAd;AACA,SAAKtK,OAAL,GAAeA,OAAf;;AAEA,QAAI,KAAK6B,MAAL,CAAY0I,uBAAZ,KAAwCtJ,SAA5C,EAAuD;AACrD,WAAKuJ,0BAAL,CAAgC,KAAK3I,MAAL,CAAY0I,uBAA5C;AACD;;AAED,SAAKE,gBAAL;;AAEA,QAAI,KAAKzK,OAAT,EAAkB;AAChB;AACD;;AAED,YAAQ,KAAKc,YAAb;AACE,WAAKhB,aAAMiB,MAAX;AACE,aAAK8D,IAAL,CAAU,IAAV;AACA;;AACF,WAAK/E,aAAMC,YAAX;AACEqE,4CAA2BC,WAA3B,GAAyCqG,6BAAzC,CACE,IADF;;AAGA;;AACF;AACE,aAAK1F,MAAL,CAAY,IAAZ;AACA;AAXJ;AAaD;;AAES2F,EAAAA,6BAA6B,CAACC,SAAD,EAA4B;AACjE,SAAK,MAAM/B,GAAX,IAAkB,KAAKhH,MAAvB,EAA+B;AAC7B,UAAI+I,SAAS,CAACC,OAAV,CAAkBhC,GAAlB,KAA0B,CAA9B,EAAiC;AAC/B,aAAK3H,2BAAL,GAAmC,IAAnC;AACD;AACF;AACF;;AAEOuJ,EAAAA,gBAAgB,GAAS;AAC/B,QAAI,CAAC,KAAK5I,MAAL,CAAYiJ,OAAjB,EAA0B;AACxB;AACD;;AAED,QACE,KAAKjJ,MAAL,CAAYiJ,OAAZ,CAAoB7B,IAApB,KAA6BhI,SAA7B,IACA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoBC,KAApB,KAA8B9J,SAD9B,IAEA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoBE,KAApB,KAA8B/J,SAHhC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,qEADI,CAAN;AAGD;;AAED,QACE,KAAKG,MAAL,CAAYiJ,OAAZ,CAAoBE,KAApB,KAA8B/J,SAA9B,IACA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoB7B,IAApB,KAA6BhI,SAD7B,IAEA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoBC,KAApB,KAA8B9J,SAHhC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,8EADI,CAAN;AAGD;;AAED,QACE,KAAKG,MAAL,CAAYiJ,OAAZ,CAAoBG,MAApB,KAA+BhK,SAA/B,IACA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoB3B,GAApB,KAA4BlI,SAD5B,IAEA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoBI,MAApB,KAA+BjK,SAHjC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,sEADI,CAAN;AAGD;;AAED,QACE,KAAKG,MAAL,CAAYiJ,OAAZ,CAAoBG,MAApB,KAA+BhK,SAA/B,IACA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoB3B,GAApB,KAA4BlI,SAD5B,IAEA,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoBI,MAApB,KAA+BjK,SAHjC,EAIE;AACA,YAAM,IAAIS,KAAJ,CACJ,+EADI,CAAN;AAGD;AACF;;AAEOiD,EAAAA,YAAY,GAAY;AAC9B,QAAI,CAAC,KAAK9C,MAAL,CAAYiJ,OAAjB,EAA0B;AACxB,aAAO,IAAP;AACD;;AAED,UAAME,KAAK,GAAG,KAAKxJ,IAAL,CAAU4G,qBAAV,GAAkC4C,KAAhD;AACA,UAAMC,MAAM,GAAG,KAAKzJ,IAAL,CAAU4G,qBAAV,GAAkC6C,MAAjD;AAEA,QAAIhC,IAAI,GAAG,CAAX;AACA,QAAIE,GAAG,GAAG,CAAV;AACA,QAAI4B,KAAa,GAAGC,KAApB;AACA,QAAIE,MAAc,GAAGD,MAArB;;AAEA,QAAI,KAAKpJ,MAAL,CAAYiJ,OAAZ,CAAoBK,UAApB,KAAmClK,SAAvC,EAAkD;AAChDgI,MAAAA,IAAI,IAAI,KAAKpH,MAAL,CAAYiJ,OAAZ,CAAoBK,UAA5B;AACAJ,MAAAA,KAAK,IAAI,KAAKlJ,MAAL,CAAYiJ,OAAZ,CAAoBK,UAA7B;AACD;;AAED,QAAI,KAAKtJ,MAAL,CAAYiJ,OAAZ,CAAoBM,QAApB,KAAiCnK,SAArC,EAAgD;AAC9CkI,MAAAA,GAAG,IAAI,KAAKtH,MAAL,CAAYiJ,OAAZ,CAAoBM,QAA3B;AACAF,MAAAA,MAAM,IAAI,KAAKrJ,MAAL,CAAYiJ,OAAZ,CAAoBM,QAA9B;AACD;;AAED,QAAI,KAAKvJ,MAAL,CAAYiJ,OAAZ,CAAoB7B,IAApB,KAA6BhI,SAAjC,EAA4C;AAC1CgI,MAAAA,IAAI,GAAG,CAAC,KAAKpH,MAAL,CAAYiJ,OAAZ,CAAoB7B,IAA5B;AACD;;AAED,QAAI,KAAKpH,MAAL,CAAYiJ,OAAZ,CAAoBC,KAApB,KAA8B9J,SAAlC,EAA6C;AAC3C8J,MAAAA,KAAK,GAAGC,KAAK,GAAG,KAAKnJ,MAAL,CAAYiJ,OAAZ,CAAoBC,KAApC;AACD;;AAED,QAAI,KAAKlJ,MAAL,CAAYiJ,OAAZ,CAAoB3B,GAApB,KAA4BlI,SAAhC,EAA2C;AACzCkI,MAAAA,GAAG,GAAG,CAAC,KAAKtH,MAAL,CAAYiJ,OAAZ,CAAoB3B,GAA3B;AACD;;AAED,QAAI,KAAKtH,MAAL,CAAYiJ,OAAZ,CAAoBI,MAApB,KAA+BjK,SAAnC,EAA8C;AAC5CiK,MAAAA,MAAM,GAAGF,KAAK,GAAG,KAAKnJ,MAAL,CAAYiJ,OAAZ,CAAoBI,MAArC;AACD;;AACD,QAAI,KAAKrJ,MAAL,CAAYiJ,OAAZ,CAAoBE,KAApB,KAA8B/J,SAAlC,EAA6C;AAC3C,UAAI,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoB7B,IAApB,KAA6BhI,SAAjC,EAA4C;AAC1C8J,QAAAA,KAAK,GAAG9B,IAAI,GAAG,KAAKpH,MAAL,CAAYiJ,OAAZ,CAAoBE,KAAnC;AACD,OAFD,MAEO,IAAI,KAAKnJ,MAAL,CAAYiJ,OAAZ,CAAoBC,KAApB,KAA8B9J,SAAlC,EAA6C;AAClDgI,QAAAA,IAAI,GAAG8B,KAAK,GAAG,KAAKlJ,MAAL,CAAYiJ,OAAZ,CAAoBE,KAAnC;AACD;AACF;;AAED,QAAI,KAAKnJ,MAAL,CAAYiJ,OAAZ,CAAoBG,MAApB,KAA+BhK,SAAnC,EAA8C;AAC5C,UAAI,KAAKY,MAAL,CAAYiJ,OAAZ,CAAoB3B,GAApB,KAA4BlI,SAAhC,EAA2C;AACzCiK,QAAAA,MAAM,GAAG/B,GAAG,GAAG,KAAKtH,MAAL,CAAYiJ,OAAZ,CAAoBG,MAAnC;AACD,OAFD,MAEO,IAAI,KAAKpJ,MAAL,CAAYiJ,OAAZ,CAAoBI,MAApB,KAA+BjK,SAAnC,EAA8C;AACnDkI,QAAAA,GAAG,GAAG+B,MAAM,GAAG,KAAKrJ,MAAL,CAAYiJ,OAAZ,CAAoBG,MAAnC;AACD;AACF;;AAED,UAAM9C,IAAa,GAAG,KAAK3G,IAAL,CAAU4G,qBAAV,EAAtB;AACA,UAAMiD,OAAe,GAAG,KAAK3H,OAAL,CAAa4H,QAAb,KAA0BnD,IAAI,CAACc,IAAvD;AACA,UAAMsC,OAAe,GAAG,KAAK7H,OAAL,CAAa8H,QAAb,KAA0BrD,IAAI,CAACgB,GAAvD;;AAEA,QACEkC,OAAO,IAAIpC,IAAX,IACAoC,OAAO,IAAIN,KADX,IAEAQ,OAAO,IAAIpC,GAFX,IAGAoC,OAAO,IAAIL,MAJb,EAKE;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEMO,EAAAA,iBAAiB,CAAC;AAAE/D,IAAAA,CAAF;AAAKE,IAAAA;AAAL,GAAD,EAA8C;AACpE,UAAMO,IAAa,GAAG,KAAK3G,IAAL,CAAU4G,qBAAV,EAAtB;AAEA,WACEV,CAAC,IAAIS,IAAI,CAACc,IAAV,IAAkBvB,CAAC,IAAIS,IAAI,CAAC4C,KAA5B,IAAqCnD,CAAC,IAAIO,IAAI,CAACgB,GAA/C,IAAsDvB,CAAC,IAAIO,IAAI,CAAC+C,MADlE;AAGD;;AAESQ,EAAAA,WAAW,GAAS,CAAE,CA1tBW,CA4tB3C;AACA;AACA;;;AAEOC,EAAAA,MAAM,GAAW;AACtB,WAAO,KAAKhK,UAAZ;AACD;;AACMiK,EAAAA,MAAM,CAACC,GAAD,EAAoB;AAC/B,SAAKlK,UAAL,GAAkBkK,GAAlB;AACD;;AAESC,EAAAA,SAAS,GAAG;AACpB,WAAO,KAAKjK,MAAZ;AACD;;AAEMkK,EAAAA,6BAA6B,GAAY;AAC9C,UAAM,IAAIrK,KAAJ,CAAU,yDAAV,CAAN;AACD;;AAEMsK,EAAAA,OAAO,GAAgB;AAC5B,WAAO,KAAKxK,IAAZ;AACD;;AAEMyK,EAAAA,gBAAgB,GAAmB;AACxC,WAAO,KAAK7I,aAAZ;AACD;;AAEM8I,EAAAA,UAAU,GAAmB;AAClC,WAAO,KAAKxI,OAAZ;AACD;;AAEMyI,EAAAA,oBAAoB,GAAa;AACtC,WAAO,KAAKzI,OAAL,CAAayI,oBAAb,EAAP;AACD;;AAEMC,EAAAA,QAAQ,GAAU;AACvB,WAAO,KAAKtL,YAAZ;AACD;;AAEMuL,EAAAA,SAAS,GAAY;AAC1B,WAAO,KAAKrM,OAAZ;AACD;;AAEOkE,EAAAA,UAAU,GAAY;AAC5B,WACE,KAAKpD,YAAL,KAAsBhB,aAAMuF,GAA5B,IACA,KAAKvE,YAAL,KAAsBhB,aAAMgF,MAD5B,IAEA,KAAKhE,YAAL,KAAsBhB,aAAMmF,SAH9B;AAKD;;AAESuF,EAAAA,0BAA0B,CAAC8B,YAAD,EAAwB;AAC1D,SAAKpF,wBAAL,GAAgCoF,YAAhC;AACD;;AACSC,EAAAA,0BAA0B,GAAY;AAC9C,WAAO,KAAKrF,wBAAZ;AACD;;AAEMsF,EAAAA,cAAc,GAAgB;AACnC,WAAO,KAAK3F,WAAZ;AACD;;AAxxB0C;;;;AA2xB7C,SAAShG,oBAAT,CACE4L,MADF,EAKE9F,KALF,EAMQ;AACN,MAAI,CAAC8F,MAAL,EAAa;AACX;AACD;;AAED,MAAI,OAAOA,MAAP,KAAkB,UAAtB,EAAkC;AAChCA,IAAAA,MAAM,CAAC9F,KAAD,CAAN;AACA;AACD;;AAED,MAAI,kBAAkB8F,MAAlB,IAA4B,OAAOA,MAAM,CAACC,YAAd,KAA+B,UAA/D,EAA2E;AACzE,UAAMtG,OAAO,GAAGqG,MAAM,CAACC,YAAP,EAAhB;;AACA7L,IAAAA,oBAAoB,CAACuF,OAAD,EAAUO,KAAV,CAApB;AACA;AACD;;AAED,MAAI,EAAE,kBAAkB8F,MAApB,CAAJ,EAAiC;AAC/B;AACD;;AAED,QAAM;AAAEE,IAAAA;AAAF,MAAiBF,MAAM,CAACG,YAA9B;;AACA,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcH,UAAd,CAAL,EAAgC;AAC9B;AACD;;AAED,OAAK,MAAM,CAACI,KAAD,EAAQ,CAAClE,GAAD,EAAMpD,KAAN,CAAR,CAAX,IAAoCkH,UAAU,CAACK,OAAX,EAApC,EAA0D;AACxD,QAAI,EAAEnE,GAAG,IAAIlC,KAAK,CAAC3F,WAAf,CAAJ,EAAiC;AAC/B;AACD,KAHuD,CAKxD;;;AACA,UAAMiM,WAAW,GAAGtG,KAAK,CAAC3F,WAAN,CAAkB6H,GAAlB,CAApB,CANwD,CAQxD;;AACA,QAAIpD,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEyH,QAAX,EAAqB;AACnB;AACA;AACAzH,MAAAA,KAAK,CAACyH,QAAN,CAAeD,WAAf;AACD,KAJD,MAIO;AACL;AACAR,MAAAA,MAAM,CAACG,YAAP,CAAoBD,UAApB,CAA+BI,KAA/B,IAAwC,CAAClE,GAAD,EAAMoE,WAAN,CAAxC;AACD;AACF;;AAED;AACD","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 this.cancel();\n this.reset();\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"]}
1
+ {"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","delegate","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","setListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","_force","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getDelegate","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 { 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 PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\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 = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\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 protected delegate: GestureHandlerDelegate<unknown>;\n\n public constructor(delegate: GestureHandlerDelegate<unknown>) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): 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.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n manager.setListeners();\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.delegate.reset();\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 // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\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\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.delegate.onActivate();\n\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\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 onPointerLeave(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 this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\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: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\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.delegate.measureView();\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.pageX,\n y: element.lastY - rect.pageY,\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.pageX,\n y: event.y - rect.pageY,\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.pageX,\n y: element.lastY - rect.pageY,\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.delegate.measureView();\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.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\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(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\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, height } = this.delegate.measureView();\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 = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\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 protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown> {\n return this.delegate;\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\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"]}