@react-native-oh-tpl/react-native-gesture-handler 2.14.16 → 2.14.17-rc.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 (95) hide show
  1. package/DrawerLayout/index.ts +2 -2
  2. package/Swipeable/index.ts +2 -2
  3. package/harmony/gesture_handler.har +0 -0
  4. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  5. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
  6. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  7. package/lib/commonjs/index.js.map +1 -1
  8. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -1
  9. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  10. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  11. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  12. package/lib/module/components/GestureHandlerRootView.js.map +1 -1
  13. package/lib/module/handlers/createHandler.js.map +1 -1
  14. package/lib/module/index.js.map +1 -1
  15. package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -1
  16. package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  17. package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  18. package/lib/typescript/RNGestureHandlerModule.d.ts +2 -2
  19. package/lib/typescript/components/GestureHandlerRootView.d.ts +6 -6
  20. package/lib/typescript/handlers/createHandler.d.ts +11 -11
  21. package/lib/typescript/index.d.ts +47 -47
  22. package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +14 -14
  23. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +14 -14
  24. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +6 -6
  25. package/package.json +79 -78
  26. package/src/RNGestureHandlerModule.ts +4 -4
  27. package/src/components/GestureHandlerRootView.tsx +23 -23
  28. package/src/handlers/createHandler.tsx +534 -534
  29. package/src/index.ts +172 -172
  30. package/src/specs/NativeRNGestureHandlerModule.ts +26 -26
  31. package/src/specs/RNGestureHandlerButtonNativeComponent.ts +18 -18
  32. package/src/specs/RNGestureHandlerRootViewNativeComponent.ts +6 -6
  33. package/harmony/gesture_handler/BuildProfile.ets +0 -17
  34. package/harmony/gesture_handler/build-profile.json5 +0 -12
  35. package/harmony/gesture_handler/hvigorfile.ts +0 -2
  36. package/harmony/gesture_handler/index.ets +0 -2
  37. package/harmony/gesture_handler/oh-package-lock.json5 +0 -19
  38. package/harmony/gesture_handler/oh-package.json5 +0 -12
  39. package/harmony/gesture_handler/src/main/cpp/CMakeLists.txt +0 -8
  40. package/harmony/gesture_handler/src/main/cpp/GestureHandlerPackage.h +0 -12
  41. package/harmony/gesture_handler/src/main/cpp/RnohReactNativeHarmonyGestureHandlerPackage.cpp +0 -123
  42. package/harmony/gesture_handler/src/main/cpp/RnohReactNativeHarmonyGestureHandlerPackage.h +0 -15
  43. package/harmony/gesture_handler/src/main/cpp/componentInstances/RNGestureHandlerButtonComponentInstance.h +0 -27
  44. package/harmony/gesture_handler/src/main/cpp/componentInstances/RNGestureHandlerRootViewComponentInstance.h +0 -245
  45. package/harmony/gesture_handler/src/main/ets/RNOHPackage.ets +0 -17
  46. package/harmony/gesture_handler/src/main/ets/core/CircularBuffer.ts +0 -42
  47. package/harmony/gesture_handler/src/main/ets/core/GestureHandler.ts +0 -739
  48. package/harmony/gesture_handler/src/main/ets/core/GestureHandlerOrchestrator.ts +0 -344
  49. package/harmony/gesture_handler/src/main/ets/core/GestureHandlerRegistry.ts +0 -63
  50. package/harmony/gesture_handler/src/main/ets/core/IncomingEvent.ts +0 -78
  51. package/harmony/gesture_handler/src/main/ets/core/InteractionManager.ts +0 -144
  52. package/harmony/gesture_handler/src/main/ets/core/LeastSquareSolver.ts +0 -182
  53. package/harmony/gesture_handler/src/main/ets/core/Multiset.ts +0 -26
  54. package/harmony/gesture_handler/src/main/ets/core/OutgoingEvent.ts +0 -34
  55. package/harmony/gesture_handler/src/main/ets/core/OutgoingEventDispatcher.ts +0 -12
  56. package/harmony/gesture_handler/src/main/ets/core/PointerTracker.ts +0 -239
  57. package/harmony/gesture_handler/src/main/ets/core/RNGHError.ts +0 -5
  58. package/harmony/gesture_handler/src/main/ets/core/RNGHLogger.ts +0 -16
  59. package/harmony/gesture_handler/src/main/ets/core/State.ts +0 -47
  60. package/harmony/gesture_handler/src/main/ets/core/Vector2D.ts +0 -80
  61. package/harmony/gesture_handler/src/main/ets/core/VelocityTracker.ts +0 -106
  62. package/harmony/gesture_handler/src/main/ets/core/View.ts +0 -21
  63. package/harmony/gesture_handler/src/main/ets/core/ViewRegistry.ts +0 -7
  64. package/harmony/gesture_handler/src/main/ets/core/index.ts +0 -15
  65. package/harmony/gesture_handler/src/main/ets/detectors/ScaleGestureDetector.ts +0 -169
  66. package/harmony/gesture_handler/src/main/ets/gesture-handlers/FlingGestureHandler.ts +0 -219
  67. package/harmony/gesture_handler/src/main/ets/gesture-handlers/GestureHandlerFactory.ts +0 -67
  68. package/harmony/gesture_handler/src/main/ets/gesture-handlers/LongPressGestureHandler.ts +0 -139
  69. package/harmony/gesture_handler/src/main/ets/gesture-handlers/ManualGestureHandler.ts +0 -50
  70. package/harmony/gesture_handler/src/main/ets/gesture-handlers/NativeViewGestureHandler.ts +0 -124
  71. package/harmony/gesture_handler/src/main/ets/gesture-handlers/PanGestureHandler.ts +0 -375
  72. package/harmony/gesture_handler/src/main/ets/gesture-handlers/PinchGestureHandler.ts +0 -174
  73. package/harmony/gesture_handler/src/main/ets/gesture-handlers/RotationGestureHandler.ts +0 -172
  74. package/harmony/gesture_handler/src/main/ets/gesture-handlers/TapGestureHandler.ts +0 -216
  75. package/harmony/gesture_handler/src/main/ets/gesture-handlers/detectors/RotationGestureDetector.ts +0 -167
  76. package/harmony/gesture_handler/src/main/ets/gesture-handlers/index.ts +0 -1
  77. package/harmony/gesture_handler/src/main/ets/rnoh/GestureHandlerPackage.ts +0 -25
  78. package/harmony/gesture_handler/src/main/ets/rnoh/Logger.ts +0 -107
  79. package/harmony/gesture_handler/src/main/ets/rnoh/OutgoingEventDispatchers.ts +0 -94
  80. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHRootViewController.ts +0 -196
  81. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHView.ts +0 -89
  82. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHViewController.ts +0 -255
  83. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHViewRegistry.ts +0 -19
  84. package/harmony/gesture_handler/src/main/ets/rnoh/RNGestureHandlerModule.ts +0 -267
  85. package/harmony/gesture_handler/src/main/ets/rnoh/RNOHGestureResponder.ts +0 -15
  86. package/harmony/gesture_handler/src/main/ets/rnoh/RNOHScrollLocker.ts +0 -25
  87. package/harmony/gesture_handler/src/main/ets/rnoh/types.ts +0 -25
  88. package/harmony/gesture_handler/src/main/module.json5 +0 -9
  89. package/harmony/gesture_handler/src/main/resources/base/element/color.json +0 -8
  90. package/harmony/gesture_handler/src/main/resources/base/element/string.json +0 -16
  91. package/harmony/gesture_handler/src/main/resources/base/media/icon.png +0 -0
  92. package/harmony/gesture_handler/src/main/resources/base/profile/main_pages.json +0 -5
  93. package/harmony/gesture_handler/src/main/resources/en_US/element/string.json +0 -16
  94. package/harmony/gesture_handler/src/main/resources/zh_CN/element/string.json +0 -16
  95. package/harmony/gesture_handler/ts.ts +0 -2
@@ -1,139 +0,0 @@
1
- import { GestureHandler, IncomingEvent, GestureConfig, State, GestureHandlerDependencies } from '../core';
2
-
3
- const DEFAULT_MIN_DURATION_MS = 500;
4
- const DEFAULT_MAX_DIST_DP = 10;
5
- const SCALING_FACTOR = 10;
6
-
7
- export class LongPressGestureHandler extends GestureHandler {
8
- private minDurationMs = DEFAULT_MIN_DURATION_MS;
9
- private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;
10
-
11
- private maxDistSq = this.defaultMaxDistSq;
12
- private startX = 0;
13
- private startY = 0;
14
-
15
- private startTime = 0;
16
- private previousTime = 0;
17
-
18
- private activationTimeout: number | undefined;
19
-
20
- constructor(deps: GestureHandlerDependencies) {
21
- super({ ...deps, logger: deps.logger.cloneAndJoinPrefix("LongPressGestureHandler") })
22
- }
23
-
24
- override getName(): string {
25
- return "LongPressGestureHandler"
26
- }
27
-
28
- public override isGestureContinuous(): boolean {
29
- return false
30
- }
31
-
32
- public getDefaultConfig() {
33
- return {}
34
- }
35
-
36
- protected transformNativeEvent() {
37
- return {
38
- ...super.transformNativeEvent(),
39
- duration: Date.now() - this.startTime,
40
- };
41
- }
42
-
43
- public updateGestureConfig({ enabled = true, ...props }: GestureConfig): void {
44
- super.updateGestureConfig({ enabled: enabled, ...props });
45
-
46
- if (this.config.minDurationMs !== undefined) {
47
- this.minDurationMs = this.config.minDurationMs;
48
- }
49
-
50
- if (this.config.maxDist !== undefined) {
51
- this.maxDistSq = this.config.maxDist * this.config.maxDist;
52
- }
53
- }
54
-
55
-
56
- protected resetConfig(): void {
57
- super.resetConfig();
58
- this.minDurationMs = DEFAULT_MIN_DURATION_MS;
59
- this.maxDistSq = this.defaultMaxDistSq;
60
- }
61
-
62
- protected onStateChange(newState: State, oldState: State): void {
63
- super.onStateChange(newState, oldState)
64
- clearTimeout(this.activationTimeout);
65
- }
66
-
67
- public onPointerDown(event: IncomingEvent): void {
68
- this.tracker.addToTracker(event);
69
- super.onPointerDown(event);
70
- this.tryBegin(event);
71
- this.tryActivate();
72
- this.checkDistanceFail(event);
73
- }
74
-
75
- public onPointerMove(event: IncomingEvent): void {
76
- super.onPointerMove(event);
77
- this.tracker.track(event);
78
- this.checkDistanceFail(event);
79
- }
80
-
81
- public onPointerOutOfBounds(e: IncomingEvent): void {
82
- this.tracker.track(e);
83
- super.onPointerOutOfBounds(e);
84
- }
85
-
86
- public onPointerUp(event: IncomingEvent): void {
87
- super.onPointerUp(event);
88
- this.tracker.removeFromTracker(event.pointerId);
89
-
90
- if (this.currentState === State.ACTIVE) {
91
- this.end();
92
- } else {
93
- this.fail();
94
- }
95
- }
96
-
97
- private tryBegin(event: IncomingEvent): void {
98
- if (this.currentState !== State.UNDETERMINED) {
99
- return;
100
- }
101
-
102
- this.previousTime = Date.now();
103
- this.startTime = this.previousTime;
104
-
105
- this.begin();
106
-
107
- this.startX = event.x;
108
- this.startY = event.y;
109
- }
110
-
111
- private tryActivate(): void {
112
- if (this.minDurationMs > 0) {
113
- if (this.activationTimeout) {
114
- clearTimeout(this.activationTimeout)
115
- }
116
- this.activationTimeout = setTimeout(() => {
117
- this.activate();
118
- }, this.minDurationMs);
119
- } else if (this.minDurationMs === 0) {
120
- this.activate();
121
- }
122
- }
123
-
124
- private checkDistanceFail(event: IncomingEvent): void {
125
- const dx = event.x - this.startX;
126
- const dy = event.y - this.startY;
127
- const distSq = dx * dx + dy * dy;
128
-
129
- if (distSq <= this.maxDistSq) {
130
- return;
131
- }
132
-
133
- if (this.currentState === State.ACTIVE) {
134
- this.cancel();
135
- } else {
136
- this.fail();
137
- }
138
- }
139
- }
@@ -1,50 +0,0 @@
1
- import { GestureHandler, GestureHandlerDependencies, IncomingEvent } from '../core';
2
-
3
- export class ManualGestureHandler extends GestureHandler {
4
- constructor(deps: GestureHandlerDependencies) {
5
- super({...deps, logger: deps.logger.cloneAndJoinPrefix("ManualGestureHandler")})
6
- }
7
-
8
- public override getName(): string {
9
- return "ManualGestureHandler"
10
- }
11
-
12
- public override isGestureContinuous(): boolean {
13
- return false
14
- }
15
-
16
- public getDefaultConfig() {
17
- return {}
18
- }
19
-
20
- public onPointerDown(event: IncomingEvent): void {
21
- this.tracker.addToTracker(event);
22
- super.onPointerDown(event);
23
- this.begin();
24
- }
25
-
26
- public onAdditionalPointerAdd(event: IncomingEvent): void {
27
- this.tracker.addToTracker(event);
28
- super.onAdditionalPointerAdd(event);
29
- }
30
-
31
- public onPointerMove(event: IncomingEvent): void {
32
- this.tracker.track(event);
33
- super.onPointerMove(event);
34
- }
35
-
36
- public onPointerOutOfBounds(event: IncomingEvent): void {
37
- this.tracker.track(event);
38
- super.onPointerOutOfBounds(event);
39
- }
40
-
41
- public onPointerUp(event: IncomingEvent): void {
42
- super.onPointerUp(event);
43
- this.tracker.removeFromTracker(event.pointerId);
44
- }
45
-
46
- public onAdditionalPointerRemove(event: IncomingEvent): void {
47
- super.onAdditionalPointerRemove(event);
48
- this.tracker.removeFromTracker(event.pointerId);
49
- }
50
- }
@@ -1,124 +0,0 @@
1
- import { GestureHandler, GestureHandlerDependencies, DEFAULT_TOUCH_SLOP, Vector2D, State, IncomingEvent } from "../core"
2
-
3
-
4
- export class NativeViewGestureHandler extends GestureHandler {
5
- private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;
6
-
7
- protected startPos = new Vector2D()
8
-
9
- public canBeInterrupted() {
10
- return !(this.config.disallowInterruption ?? false)
11
- }
12
-
13
- constructor(deps: GestureHandlerDependencies) {
14
- super({ ...deps, logger: deps.logger.cloneAndJoinPrefix("NativeViewGestureHandler") })
15
- }
16
-
17
- public override getName(): string {
18
- return "NativeViewGestureHandler"
19
- }
20
-
21
- public override isGestureContinuous(): boolean {
22
- return false
23
- }
24
-
25
- public getDefaultConfig() {
26
- return {}
27
- }
28
-
29
- public onPointerDown(e: IncomingEvent) {
30
- this.tracker.addToTracker(e);
31
- super.onPointerDown(e);
32
- this.onNewPointer();
33
- }
34
-
35
- protected onNewPointer() {
36
- this.startPos = this.tracker.getLastAvgPos();
37
- if (this.currentState !== State.UNDETERMINED) {
38
- return;
39
- }
40
- this.begin();
41
- if (this.view.hasButtonRole()) {
42
- this.activate();
43
- }
44
- }
45
-
46
- public onAdditionalPointerAdd(e: IncomingEvent) {
47
- this.tracker.addToTracker(e);
48
- super.onPointerDown(e);
49
- this.onNewPointer();
50
- }
51
-
52
- public onPointerMove(e: IncomingEvent): void {
53
- this.tracker.track(e);
54
- const { x: dx, y: dy } = this.startPos.clone().subtract(this.tracker.getLastAvgPos()).value
55
- const distSq = dx * dx + dy * dy;
56
-
57
- if (distSq >= this.minDistSq) {
58
- if (this.view.hasButtonRole() && this.currentState === State.ACTIVE) {
59
- this.cancel();
60
- } else if (!this.view.hasButtonRole() && this.currentState === State.BEGAN) {
61
- this.activate();
62
- }
63
- }
64
- }
65
-
66
- public onPointerLeave(): void {
67
- // TODO: add this method to GestureHandler
68
- if (this.currentState === State.BEGAN || this.currentState === State.ACTIVE) {
69
- this.cancel();
70
- }
71
- }
72
-
73
- public onPointerUp(event: IncomingEvent): void {
74
- super.onPointerUp(event);
75
- this.onAnyPointerUp(event);
76
- }
77
-
78
- private onAnyPointerUp(e: IncomingEvent) {
79
- this.tracker.removeFromTracker(e.pointerId);
80
- if (this.tracker.getTrackedPointersCount() === 0) {
81
- if (this.currentState === State.ACTIVE) {
82
- this.end();
83
- } else {
84
- this.fail();
85
- }
86
- }
87
- }
88
-
89
- public onAdditionalPointerRemove(e: IncomingEvent) {
90
- super.onAdditionalPointerRemove(e)
91
- this.onAnyPointerUp(e)
92
- }
93
-
94
- public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {
95
- if (super.shouldRecognizeSimultaneously(handler)) {
96
- return true;
97
- }
98
- if (
99
- handler instanceof NativeViewGestureHandler &&
100
- handler.getState() === State.ACTIVE &&
101
- !handler.canBeInterrupted()
102
- ) {
103
- return false;
104
- }
105
-
106
- if (
107
- this.currentState === State.ACTIVE &&
108
- handler.getState() === State.ACTIVE &&
109
- this.canBeInterrupted()
110
- ) {
111
- return false;
112
- }
113
-
114
- return (
115
- this.currentState === State.ACTIVE &&
116
- this.canBeInterrupted() &&
117
- handler.getTag() > 0
118
- );
119
- }
120
-
121
- public shouldBeCancelledByOther(_handler: GestureHandler): boolean {
122
- return this.canBeInterrupted();
123
- }
124
- }
@@ -1,375 +0,0 @@
1
- import {
2
- GestureHandler,
3
- GestureConfig,
4
- GestureHandlerDependencies,
5
- DEFAULT_TOUCH_SLOP,
6
- IncomingEvent,
7
- State,
8
- Vector2D,
9
- getStateName
10
- } from "../core"
11
-
12
-
13
- const DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;
14
-
15
- type PanGestureHandlerConfig = GestureConfig
16
-
17
- export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
18
- private startPos = new Vector2D();
19
- private offset = new Vector2D()
20
- private lastPos = new Vector2D();
21
- private velocity = new Vector2D();
22
- private activationTimeout = 0;
23
-
24
- public override getName(): string {
25
- return "PanGestureHandler"
26
- }
27
-
28
- public override isGestureContinuous(): boolean {
29
- return true
30
- }
31
-
32
- private get failOffsetXStart() {
33
- if (this.config.failOffsetXStart === undefined
34
- && this.config.failOffsetXEnd === undefined) {
35
- return undefined
36
- }
37
- return this.config.failOffsetXStart ?? Number.MIN_SAFE_INTEGER
38
- }
39
-
40
- private get failOffsetXEnd() {
41
- if (this.config.failOffsetXStart === undefined
42
- && this.config.failOffsetXEnd === undefined) {
43
- return undefined
44
- }
45
- return this.config.failOffsetXEnd ?? Number.MAX_SAFE_INTEGER
46
- }
47
-
48
- private get failOffsetYStart() {
49
- if (this.config.failOffsetYStart === undefined
50
- && this.config.failOffsetYEnd === undefined) {
51
- return undefined
52
- }
53
- return this.config.failOffsetYStart ?? Number.MIN_SAFE_INTEGER
54
- }
55
-
56
- private get failOffsetYEnd() {
57
- return this.config.failOffsetYEnd ?? Number.MAX_SAFE_INTEGER
58
- }
59
-
60
- private get activeOffsetXStart() {
61
- if (this.config.activeOffsetXStart === undefined
62
- && this.config.activeOffsetXEnd === undefined) {
63
- return undefined
64
- }
65
- return this.config.activeOffsetXStart ?? Number.MIN_SAFE_INTEGER
66
- }
67
-
68
- private get activeOffsetXEnd() {
69
- if (this.config.activeOffsetXStart === undefined
70
- && this.config.activeOffsetXEnd === undefined) {
71
- return undefined
72
- }
73
- return this.config.activeOffsetXEnd ?? Number.MAX_SAFE_INTEGER
74
- }
75
-
76
- private get activeOffsetYStart() {
77
- if (this.config.activeOffsetYStart === undefined
78
- && this.config.activeOffsetYEnd === undefined) {
79
- return undefined
80
- }
81
- return this.config.activeOffsetYStart ?? Number.MIN_SAFE_INTEGER
82
- }
83
-
84
- private get activeOffsetYEnd() {
85
- if (this.config.activeOffsetYStart === undefined
86
- && this.config.activeOffsetYEnd === undefined) {
87
- return undefined
88
- }
89
- return this.config.activeOffsetYEnd ?? Number.MAX_SAFE_INTEGER
90
- }
91
-
92
- private get minVelocityX() {
93
- return this.config.minVelocityX ?? this.config.minVelocity ?? Number.MAX_SAFE_INTEGER
94
- }
95
-
96
- private get minVelocityY() {
97
- return this.config.minVelocityY ?? this.config.minVelocityY ?? Number.MAX_SAFE_INTEGER
98
- }
99
-
100
- private minVelocitySq = Number.MAX_SAFE_INTEGER
101
-
102
- private get minPointers() {
103
- return this.config.minPointers ?? 1
104
- }
105
-
106
- private unlockScrolls: (() => void) | undefined
107
- private unlockRNGestureResponder: (() => void) | undefined
108
-
109
- public constructor(deps: GestureHandlerDependencies) {
110
- super({ ...deps, logger: deps.logger.cloneAndJoinPrefix("PanGestureHandler") })
111
- }
112
-
113
- public onPointerDown(e) {
114
- this.tracker.addToTracker(e);
115
- super.onPointerDown(e);
116
- this.lastPos = this.tracker.getLastAvgPos()
117
- this.startPos = this.lastPos.clone()
118
- this.tryBegin(e);
119
- this.tryActivating();
120
- }
121
-
122
- private tryActivating(): void {
123
- if (this.currentState === State.BEGAN) {
124
- if (this.shouldFail()) {
125
- this.fail();
126
- } else if (this.shouldActivate()) {
127
- this.activate();
128
- }
129
- }
130
- }
131
-
132
- private shouldFail(): boolean {
133
- const { x: dx, y: dy } = this.getTranslation().value;
134
- const distanceSq = dx * dx + dy * dy;
135
- if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {
136
- this.clearActivationTimeout();
137
- return true;
138
- }
139
- if (this.failOffsetXStart !== Number.MIN_SAFE_INTEGER && dx < this.failOffsetXStart) {
140
- return true;
141
- }
142
- if (this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER && dx > this.failOffsetXEnd) {
143
- return true;
144
- }
145
- if (this.failOffsetYStart !== Number.MIN_SAFE_INTEGER && dy < this.failOffsetYStart) {
146
- return true;
147
- }
148
- return (this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER && dy > this.failOffsetYEnd);
149
- }
150
-
151
- private getTranslation() {
152
- return this.lastPos.clone().subtract(this.startPos).add(this.offset)
153
- }
154
-
155
- private shouldActivate(): boolean {
156
- const { x: dx, y: dy } = this.getTranslation().value;
157
- if (this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER && dx < this.activeOffsetXStart
158
- ) {
159
- return true;
160
- }
161
- if (this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER && dx > this.activeOffsetXEnd) {
162
- return true;
163
- }
164
- if (this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER && dy < this.activeOffsetYStart) {
165
- return true;
166
- }
167
- if (this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER && dy > this.activeOffsetYEnd) {
168
- return true;
169
- }
170
- const distanceSq: number = dx * dx + dy * dy;
171
- if (this.minDistSq !== Number.MAX_SAFE_INTEGER && distanceSq >= this.minDistSq) {
172
- return true;
173
- }
174
- const { x: vx, y: vy } = this.velocity
175
- if (
176
- this.minVelocityX !== Number.MAX_SAFE_INTEGER &&
177
- ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||
178
- (this.minVelocityX >= 0 && this.minVelocityX <= vx))
179
- ) {
180
- return true;
181
- }
182
- if (
183
- this.minVelocityY !== Number.MAX_SAFE_INTEGER &&
184
- ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||
185
- (this.minVelocityY >= 0 && this.minVelocityY <= vy))
186
- ) {
187
- return true;
188
- }
189
- const velocitySq: number = vx * vx + vy * vy;
190
- return (
191
- this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&
192
- velocitySq >= this.minVelocitySq
193
- );
194
- }
195
-
196
- private clearActivationTimeout(): void {
197
- clearTimeout(this.activationTimeout);
198
- }
199
-
200
- private tryBegin(e: IncomingEvent): void {
201
- this.logger.cloneAndJoinPrefix("tryBegin").debug({
202
- currentState: getStateName(this.currentState),
203
- trackedPointersCount: this.tracker.getTrackedPointersCount(),
204
- minPointers: this.minPointers
205
- })
206
- if (
207
- (this.currentState === State.UNDETERMINED) &&
208
- this.tracker.getTrackedPointersCount() >= this.minPointers
209
- ) {
210
- this.resetProgress();
211
- this.offset = new Vector2D();
212
- this.velocity = new Vector2D();
213
-
214
- this.begin();
215
-
216
- if (this.activateAfterLongPress > 0) {
217
- this.activationTimeout = setTimeout(() => {
218
- this.activate();
219
- }, this.activateAfterLongPress);
220
- }
221
- } else {
222
- this.velocity = this.tracker.getVelocity(e.pointerId)
223
- }
224
- }
225
-
226
- public getDefaultConfig() {
227
- return {}
228
- }
229
-
230
- private get activateAfterLongPress() {
231
- return this.config.activateAfterLongPress ?? 0
232
- }
233
-
234
- private get minDistSq() {
235
- if (this.config.minDist !== undefined) {
236
- return this.config.minDist * this.config.minDist;
237
- } else if (this.hasCustomActivationCriteria()) {
238
- return Number.MAX_SAFE_INTEGER;
239
- }
240
- return DEFAULT_MIN_DIST_SQ
241
- }
242
-
243
- private hasCustomActivationCriteria() {
244
- const criterias: (keyof PanGestureHandlerConfig)[] = [
245
- 'activeOffsetXStart',
246
- 'activeOffsetXEnd',
247
- 'failOffsetXStart',
248
- 'failOffsetXEnd',
249
- 'activeOffsetYStart',
250
- 'activeOffsetYEnd',
251
- 'failOffsetYStart',
252
- 'failOffsetYEnd',
253
- 'minVelocityX',
254
- 'minVelocityY',
255
- ]
256
- for (const key in this.config) {
257
- if (criterias.indexOf(key as keyof PanGestureHandlerConfig) >= 0) {
258
- return true
259
- }
260
- }
261
- return false
262
- }
263
-
264
- public onAdditionalPointerAdd(event: IncomingEvent): void {
265
- this.tracker.addToTracker(event);
266
- super.onAdditionalPointerAdd(event);
267
- this.tryBegin(event);
268
- this.offset.add(this.lastPos).subtract(this.startPos)
269
- this.lastPos = this.tracker.getLastAvgPos()
270
- this.startPos = this.lastPos.clone()
271
- if (this.tracker.getTrackedPointersCount() > (this.config.maxPointers ?? 10)) {
272
- if (this.currentState === State.ACTIVE) {
273
- this.cancel();
274
- } else {
275
- this.fail();
276
- }
277
- } else {
278
- this.tryActivating();
279
- }
280
- }
281
-
282
- public onPointerUp(event: IncomingEvent): void {
283
- super.onPointerUp(event);
284
- if (this.currentState === State.ACTIVE) {
285
- this.lastPos = this.tracker.getLastAvgPos();
286
- }
287
-
288
- this.tracker.removeFromTracker(event.pointerId);
289
-
290
- if (this.tracker.getTrackedPointersCount() === 0) {
291
- this.clearActivationTimeout();
292
- }
293
-
294
- if (this.currentState === State.ACTIVE) {
295
- this.end();
296
- } else {
297
- this.resetProgress();
298
- this.fail();
299
- }
300
- }
301
-
302
- public onAdditionalPointerRemove(event: IncomingEvent): void {
303
- super.onAdditionalPointerRemove(event);
304
- this.tracker.removeFromTracker(event.pointerId);
305
- this.offset.add(this.lastPos).subtract(this.startPos)
306
- this.lastPos = this.tracker.getLastAvgPos()
307
- this.startPos = this.lastPos.clone()
308
- if (
309
- !(
310
- this.currentState === State.ACTIVE &&
311
- this.tracker.getTrackedPointersCount() < this.minPointers
312
- )
313
- ) {
314
- this.tryActivating();
315
- }
316
- }
317
-
318
- public onPointerMove(event: IncomingEvent): void {
319
- this.tracker.track(event);
320
- this.lastPos = this.tracker.getLastAvgPos()
321
- this.velocity = this.tracker.getVelocity(event.pointerId)
322
- this.tryActivating();
323
- super.onPointerMove(event);
324
- }
325
-
326
- public onPointerOutOfBounds(event: IncomingEvent): void {
327
- if (this.shouldCancelWhenOutside) {
328
- return;
329
- }
330
- this.tracker.track(event);
331
- this.lastPos = this.tracker.getLastAvgPos()
332
- this.velocity = this.tracker.getVelocity(event.pointerId)
333
- this.tryActivating();
334
- if (this.currentState === State.ACTIVE) {
335
- super.onPointerOutOfBounds(event);
336
- }
337
- }
338
-
339
- protected transformNativeEvent() {
340
- const rect = this.view.getBoundingRect();
341
- const translation = this.getTranslation()
342
- return {
343
- translationX: translation.x,
344
- translationY: translation.y,
345
- absoluteX: this.tracker.getLastAvgX(),
346
- absoluteY: this.tracker.getLastAvgY(),
347
- velocityX: this.velocity.x,
348
- velocityY: this.velocity.y,
349
- x: this.tracker.getLastAvgX() - rect.x,
350
- y: this.tracker.getLastAvgY() - rect.y,
351
- };
352
- }
353
-
354
- protected onStateChange(newState: State, oldState: State) {
355
- super.onStateChange(newState, oldState)
356
- if (newState === State.BEGAN) {
357
- this.unlockScrolls = this.scrollLocker.lockScrollContainingViewTag(this.view.getTag())
358
- } else if (newState !== State.ACTIVE) {
359
- this.unlockScrolls?.()
360
- }
361
- if (newState === State.ACTIVE) {
362
- this.unlockRNGestureResponder = this.rnGestureResponder.lock(this.view.getTag())
363
- } else {
364
- this.unlockRNGestureResponder?.()
365
- }
366
- }
367
-
368
- protected onCancel(): void {
369
- this.clearActivationTimeout();
370
- }
371
-
372
- protected onReset(): void {
373
- this.clearActivationTimeout();
374
- }
375
- }