@react-native-oh-tpl/react-native-gesture-handler 2.14.13 → 2.14.15

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 (49) hide show
  1. package/harmony/gesture_handler/BuildProfile.ets +1 -1
  2. package/harmony/gesture_handler/build-profile.json5 +0 -7
  3. package/harmony/gesture_handler/index.ets +1 -2
  4. package/harmony/gesture_handler/oh-package-lock.json5 +1 -1
  5. package/harmony/gesture_handler/oh-package.json5 +2 -2
  6. package/harmony/gesture_handler/src/main/cpp/CMakeLists.txt +1 -1
  7. package/harmony/gesture_handler/src/main/cpp/GestureHandlerPackage.h +9 -18
  8. package/harmony/gesture_handler/src/main/cpp/RnohReactNativeHarmonyGestureHandlerPackage.cpp +157 -0
  9. package/harmony/gesture_handler/src/main/cpp/RnohReactNativeHarmonyGestureHandlerPackage.h +21 -0
  10. package/harmony/gesture_handler/src/main/cpp/componentInstances/RNGestureHandlerButtonComponentInstance.h +16 -16
  11. package/harmony/gesture_handler/src/main/cpp/componentInstances/RNGestureHandlerRootViewComponentInstance.h +202 -199
  12. package/harmony/gesture_handler/src/main/ets/RNOHPackage.ets +17 -0
  13. package/harmony/gesture_handler/src/main/ets/core/GestureHandler.ts +84 -35
  14. package/harmony/gesture_handler/src/main/ets/core/GestureHandlerOrchestrator.ts +20 -11
  15. package/harmony/gesture_handler/src/main/ets/core/GestureHandlerRegistry.ts +2 -2
  16. package/harmony/gesture_handler/src/main/ets/core/InteractionManager.ts +4 -4
  17. package/harmony/gesture_handler/src/main/ets/core/Multiset.ts +26 -0
  18. package/harmony/gesture_handler/src/main/ets/core/RNGHLogger.ts +7 -3
  19. package/harmony/gesture_handler/src/main/ets/core/ViewRegistry.ts +1 -2
  20. package/harmony/gesture_handler/src/main/ets/core/index.ts +2 -2
  21. package/harmony/gesture_handler/src/main/ets/gesture-handlers/FlingGestureHandler.ts +12 -4
  22. package/harmony/gesture_handler/src/main/ets/gesture-handlers/GestureHandlerFactory.ts +8 -5
  23. package/harmony/gesture_handler/src/main/ets/gesture-handlers/LongPressGestureHandler.ts +14 -2
  24. package/harmony/gesture_handler/src/main/ets/gesture-handlers/ManualGestureHandler.ts +9 -1
  25. package/harmony/gesture_handler/src/main/ets/gesture-handlers/NativeViewGestureHandler.ts +13 -4
  26. package/harmony/gesture_handler/src/main/ets/gesture-handlers/PanGestureHandler.ts +45 -12
  27. package/harmony/gesture_handler/src/main/ets/gesture-handlers/PinchGestureHandler.ts +145 -130
  28. package/harmony/gesture_handler/src/main/ets/gesture-handlers/RotationGestureHandler.ts +9 -1
  29. package/harmony/gesture_handler/src/main/ets/gesture-handlers/TapGestureHandler.ts +15 -5
  30. package/harmony/gesture_handler/src/main/ets/rnoh/GestureHandlerPackage.ts +6 -3
  31. package/harmony/gesture_handler/src/main/ets/rnoh/Logger.ts +74 -16
  32. package/harmony/gesture_handler/src/main/ets/rnoh/OutgoingEventDispatchers.ts +35 -12
  33. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHRootViewController.ts +196 -0
  34. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHView.ts +85 -0
  35. package/harmony/gesture_handler/src/main/ets/rnoh/{GestureHandlerArkUIAdapter.ts → RNGHViewController.ts} +45 -30
  36. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHViewRegistry.ts +19 -0
  37. package/harmony/gesture_handler/src/main/ets/rnoh/RNGestureHandlerModule.ts +127 -93
  38. package/harmony/gesture_handler/src/main/ets/rnoh/RNOHGestureResponder.ts +0 -9
  39. package/harmony/gesture_handler/src/main/ets/rnoh/RNOHScrollLocker.ts +1 -8
  40. package/harmony/gesture_handler.har +0 -0
  41. package/package.json +7 -3
  42. package/harmony/gesture_handler/src/main/cpp/GestureHandlerPackage.cpp +0 -149
  43. package/harmony/gesture_handler/src/main/ets/core/ViewFinder.ts +0 -11
  44. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHRootTouchHandlerArkTS.ts +0 -98
  45. package/harmony/gesture_handler/src/main/ets/rnoh/RNGHRootTouchHandlerCAPI.ts +0 -110
  46. package/harmony/gesture_handler/src/main/ets/rnoh/RNGestureHandlerButton.ets +0 -38
  47. package/harmony/gesture_handler/src/main/ets/rnoh/RNGestureHandlerRootView.ets +0 -53
  48. package/harmony/gesture_handler/src/main/ets/rnoh/View.ts +0 -134
  49. package/harmony/gesture_handler/src/main/ets/rnoh/ViewRegistry.ts +0 -97
@@ -18,7 +18,15 @@ export class LongPressGestureHandler extends GestureHandler {
18
18
  private activationTimeout: number | undefined;
19
19
 
20
20
  constructor(deps: GestureHandlerDependencies) {
21
- super({...deps, logger: deps.logger.cloneWithPrefix("LongPressGestureHandler")})
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
22
30
  }
23
31
 
24
32
  public getDefaultConfig() {
@@ -45,7 +53,6 @@ export class LongPressGestureHandler extends GestureHandler {
45
53
  }
46
54
 
47
55
 
48
-
49
56
  protected resetConfig(): void {
50
57
  super.resetConfig();
51
58
  this.minDurationMs = DEFAULT_MIN_DURATION_MS;
@@ -71,6 +78,11 @@ export class LongPressGestureHandler extends GestureHandler {
71
78
  this.checkDistanceFail(event);
72
79
  }
73
80
 
81
+ public onPointerOutOfBounds(e: IncomingEvent): void {
82
+ this.tracker.track(e);
83
+ super.onPointerOutOfBounds(e);
84
+ }
85
+
74
86
  public onPointerUp(event: IncomingEvent): void {
75
87
  super.onPointerUp(event);
76
88
  this.tracker.removeFromTracker(event.pointerId);
@@ -2,7 +2,15 @@ import { GestureHandler, GestureHandlerDependencies, IncomingEvent } from '../co
2
2
 
3
3
  export class ManualGestureHandler extends GestureHandler {
4
4
  constructor(deps: GestureHandlerDependencies) {
5
- super({...deps, logger: deps.logger.cloneWithPrefix("ManualGestureHandler")})
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
6
14
  }
7
15
 
8
16
  public getDefaultConfig() {
@@ -11,7 +11,15 @@ export class NativeViewGestureHandler extends GestureHandler {
11
11
  }
12
12
 
13
13
  constructor(deps: GestureHandlerDependencies) {
14
- super({ ...deps, logger: deps.logger.cloneWithPrefix("NativeViewGestureHandler") })
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
15
23
  }
16
24
 
17
25
  public getDefaultConfig() {
@@ -26,10 +34,11 @@ export class NativeViewGestureHandler extends GestureHandler {
26
34
 
27
35
  protected onNewPointer() {
28
36
  this.startPos = this.tracker.getLastAvgPos();
29
- if (this.currentState !== State.UNDETERMINED)
37
+ if (this.currentState !== State.UNDETERMINED) {
30
38
  return;
39
+ }
31
40
  this.begin();
32
- if(this.view.hasButtonRole()) {
41
+ if (this.view.hasButtonRole()) {
33
42
  this.activate();
34
43
  }
35
44
  }
@@ -42,7 +51,7 @@ export class NativeViewGestureHandler extends GestureHandler {
42
51
 
43
52
  public onPointerMove(e: IncomingEvent): void {
44
53
  this.tracker.track(e);
45
- const {x: dx, y: dy} = this.startPos.clone().subtract(this.tracker.getLastAvgPos()).value
54
+ const { x: dx, y: dy } = this.startPos.clone().subtract(this.tracker.getLastAvgPos()).value
46
55
  const distSq = dx * dx + dy * dy;
47
56
 
48
57
  if (distSq >= this.minDistSq) {
@@ -21,24 +21,35 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
21
21
  private velocity = new Vector2D();
22
22
  private activationTimeout = 0;
23
23
 
24
+ public override getName(): string {
25
+ return "PanGestureHandler"
26
+ }
27
+
28
+ public override isGestureContinuous(): boolean {
29
+ return true
30
+ }
31
+
24
32
  private get failOffsetXStart() {
25
33
  if (this.config.failOffsetXStart === undefined
26
- && this.config.failOffsetXEnd === undefined)
34
+ && this.config.failOffsetXEnd === undefined) {
27
35
  return undefined
36
+ }
28
37
  return this.config.failOffsetXStart ?? Number.MIN_SAFE_INTEGER
29
38
  }
30
39
 
31
40
  private get failOffsetXEnd() {
32
41
  if (this.config.failOffsetXStart === undefined
33
- && this.config.failOffsetXEnd === undefined)
42
+ && this.config.failOffsetXEnd === undefined) {
34
43
  return undefined
44
+ }
35
45
  return this.config.failOffsetXEnd ?? Number.MAX_SAFE_INTEGER
36
46
  }
37
47
 
38
48
  private get failOffsetYStart() {
39
49
  if (this.config.failOffsetYStart === undefined
40
- && this.config.failOffsetYEnd === undefined)
50
+ && this.config.failOffsetYEnd === undefined) {
41
51
  return undefined
52
+ }
42
53
  return this.config.failOffsetYStart ?? Number.MIN_SAFE_INTEGER
43
54
  }
44
55
 
@@ -48,29 +59,33 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
48
59
 
49
60
  private get activeOffsetXStart() {
50
61
  if (this.config.activeOffsetXStart === undefined
51
- && this.config.activeOffsetXEnd === undefined)
62
+ && this.config.activeOffsetXEnd === undefined) {
52
63
  return undefined
64
+ }
53
65
  return this.config.activeOffsetXStart ?? Number.MIN_SAFE_INTEGER
54
66
  }
55
67
 
56
68
  private get activeOffsetXEnd() {
57
69
  if (this.config.activeOffsetXStart === undefined
58
- && this.config.activeOffsetXEnd === undefined)
70
+ && this.config.activeOffsetXEnd === undefined) {
59
71
  return undefined
72
+ }
60
73
  return this.config.activeOffsetXEnd ?? Number.MAX_SAFE_INTEGER
61
74
  }
62
75
 
63
76
  private get activeOffsetYStart() {
64
77
  if (this.config.activeOffsetYStart === undefined
65
- && this.config.activeOffsetYEnd === undefined)
78
+ && this.config.activeOffsetYEnd === undefined) {
66
79
  return undefined
80
+ }
67
81
  return this.config.activeOffsetYStart ?? Number.MIN_SAFE_INTEGER
68
82
  }
69
83
 
70
84
  private get activeOffsetYEnd() {
71
85
  if (this.config.activeOffsetYStart === undefined
72
- && this.config.activeOffsetYEnd === undefined)
86
+ && this.config.activeOffsetYEnd === undefined) {
73
87
  return undefined
88
+ }
74
89
  return this.config.activeOffsetYEnd ?? Number.MAX_SAFE_INTEGER
75
90
  }
76
91
 
@@ -92,7 +107,7 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
92
107
  private unlockRNGestureResponder: (() => void) | undefined
93
108
 
94
109
  public constructor(deps: GestureHandlerDependencies) {
95
- super({ ...deps, logger: deps.logger.cloneWithPrefix("PanGestureHandler") })
110
+ super({ ...deps, logger: deps.logger.cloneAndJoinPrefix("PanGestureHandler") })
96
111
  }
97
112
 
98
113
  public onPointerDown(e) {
@@ -115,7 +130,7 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
115
130
  }
116
131
 
117
132
  private shouldFail(): boolean {
118
- const {x: dx, y: dy} = this.getTranslation().value;
133
+ const { x: dx, y: dy } = this.getTranslation().value;
119
134
  const distanceSq = dx * dx + dy * dy;
120
135
  if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {
121
136
  this.clearActivationTimeout();
@@ -138,7 +153,7 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
138
153
  }
139
154
 
140
155
  private shouldActivate(): boolean {
141
- const {x: dx, y: dy} = this.getTranslation().value;
156
+ const { x: dx, y: dy } = this.getTranslation().value;
142
157
  if (this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER && dx < this.activeOffsetXStart
143
158
  ) {
144
159
  return true;
@@ -156,7 +171,7 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
156
171
  if (this.minDistSq !== Number.MAX_SAFE_INTEGER && distanceSq >= this.minDistSq) {
157
172
  return true;
158
173
  }
159
- const {x: vx, y: vy} = this.velocity
174
+ const { x: vx, y: vy } = this.velocity
160
175
  if (
161
176
  this.minVelocityX !== Number.MAX_SAFE_INTEGER &&
162
177
  ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||
@@ -183,7 +198,11 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
183
198
  }
184
199
 
185
200
  private tryBegin(e: IncomingEvent): void {
186
- this.logger.cloneWithPrefix("tryBegin").debug({currentState: getStateName(this.currentState), trackedPointersCount: this.tracker.getTrackedPointersCount(), minPointers: this.minPointers})
201
+ this.logger.cloneAndJoinPrefix("tryBegin").debug({
202
+ currentState: getStateName(this.currentState),
203
+ trackedPointersCount: this.tracker.getTrackedPointersCount(),
204
+ minPointers: this.minPointers
205
+ })
187
206
  if (
188
207
  (this.currentState === State.UNDETERMINED) &&
189
208
  this.tracker.getTrackedPointersCount() >= this.minPointers
@@ -265,7 +284,13 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
265
284
  if (this.currentState === State.ACTIVE) {
266
285
  this.lastPos = this.tracker.getLastAvgPos();
267
286
  }
287
+
268
288
  this.tracker.removeFromTracker(event.pointerId);
289
+
290
+ if (this.tracker.getTrackedPointersCount() === 0) {
291
+ this.clearActivationTimeout();
292
+ }
293
+
269
294
  if (this.currentState === State.ACTIVE) {
270
295
  this.end();
271
296
  } else {
@@ -339,4 +364,12 @@ export class PanGestureHandler extends GestureHandler<PanGestureHandlerConfig> {
339
364
  this.unlockRNGestureResponder?.()
340
365
  }
341
366
  }
367
+
368
+ protected onCancel(): void {
369
+ this.clearActivationTimeout();
370
+ }
371
+
372
+ protected onReset(): void {
373
+ this.clearActivationTimeout();
374
+ }
342
375
  }
@@ -1,159 +1,174 @@
1
- import { GestureHandler, DEFAULT_TOUCH_SLOP, IncomingEvent, GestureConfig, State, GestureHandlerDependencies } from "../core"
1
+ import {
2
+ GestureHandler,
3
+ DEFAULT_TOUCH_SLOP,
4
+ IncomingEvent,
5
+ GestureConfig,
6
+ State,
7
+ GestureHandlerDependencies
8
+ } from "../core"
2
9
  import ScaleGestureDetector, { ScaleGestureListener } from "../detectors/ScaleGestureDetector";
3
10
 
4
11
 
5
-
6
12
  export class PinchGestureHandler extends GestureHandler {
7
- private scale = 1;
8
- private velocity = 0;
9
-
10
- private startingSpan = 0;
11
- private spanSlop = DEFAULT_TOUCH_SLOP;
12
-
13
- private scaleDetectorListener: ScaleGestureListener = {
14
- onScaleBegin: (detector: ScaleGestureDetector): boolean => {
15
- this.startingSpan = detector.getCurrentSpan();
16
- return true;
17
- },
18
- onScale: (detector: ScaleGestureDetector): boolean => {
19
- const prevScaleFactor: number = this.scale;
20
- this.scale *= detector.getScaleFactor(
21
- this.tracker.getTrackedPointersCount()
22
- );
23
-
24
- const delta = detector.getTimeDelta();
25
- if (delta > 0) {
26
- this.velocity = (this.scale - prevScaleFactor) / delta;
27
- }
28
-
29
- if (
30
- Math.abs(this.startingSpan - detector.getCurrentSpan()) >=
31
- this.spanSlop &&
13
+ private scale = 1;
14
+ private velocity = 0;
15
+
16
+ private startingSpan = 0;
17
+ private spanSlop = DEFAULT_TOUCH_SLOP;
18
+
19
+ private scaleDetectorListener: ScaleGestureListener = {
20
+ onScaleBegin: (detector: ScaleGestureDetector): boolean => {
21
+ this.startingSpan = detector.getCurrentSpan();
22
+ return true;
23
+ },
24
+ onScale: (detector: ScaleGestureDetector): boolean => {
25
+ const prevScaleFactor: number = this.scale;
26
+ this.scale *= detector.getScaleFactor(
27
+ this.tracker.getTrackedPointersCount()
28
+ );
29
+
30
+ const delta = detector.getTimeDelta();
31
+ if (delta > 0) {
32
+ this.velocity = (this.scale - prevScaleFactor) / delta;
33
+ }
34
+
35
+ if (
36
+ Math.abs(this.startingSpan - detector.getCurrentSpan()) >=
37
+ this.spanSlop &&
32
38
  this.currentState === State.BEGAN
33
- ) {
34
- this.activate();
35
- }
36
- return true;
37
- },
38
- onScaleEnd: (
39
- _detector: ScaleGestureDetector
40
- // eslint-disable-next-line @typescript-eslint/no-empty-function
41
- ): void => {},
39
+ ) {
40
+ this.activate();
41
+ }
42
+ return true;
43
+ },
44
+ onScaleEnd: (
45
+ _detector: ScaleGestureDetector
46
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
47
+ ): void => {
48
+ },
49
+ };
50
+
51
+ private scaleGestureDetector: ScaleGestureDetector = new ScaleGestureDetector(
52
+ this.scaleDetectorListener
53
+ );
54
+
55
+
56
+ public constructor(deps: GestureHandlerDependencies) {
57
+ super({ ...deps, logger: deps.logger.cloneAndJoinPrefix("PinchGestureHandler") })
58
+ this.setShouldCancelWhenOutside(false);
59
+ }
60
+
61
+ public getName(): string {
62
+ return "PinchGestureHandler"
63
+ }
64
+
65
+ public override isGestureContinuous(): boolean {
66
+ return true
67
+ }
68
+
69
+ public getDefaultConfig() {
70
+ return {}
71
+ }
72
+
73
+ public updateGestureConfig({ enabled = true, ...props }: GestureConfig): void {
74
+ super.updateGestureConfig({ enabled: enabled, ...props });
75
+ }
76
+
77
+ protected transformNativeEvent() {
78
+ return {
79
+ focalX: this.scaleGestureDetector.getFocusX(),
80
+ focalY: this.scaleGestureDetector.getFocusY(),
81
+ velocity: this.velocity,
82
+ scale: this.scale,
42
83
  };
43
-
44
- private scaleGestureDetector: ScaleGestureDetector = new ScaleGestureDetector(
45
- this.scaleDetectorListener
46
- );
47
-
48
-
49
- public constructor(deps: GestureHandlerDependencies) {
50
- super({ ...deps, logger: deps.logger.cloneWithPrefix("PinchGestureHandler") })
51
- this.setShouldCancelWhenOutside(false);
52
- }
53
-
54
- public getDefaultConfig() {
55
- return {}
56
- }
57
-
58
- public updateGestureConfig({ enabled = true, ...props }: GestureConfig): void {
59
- super.updateGestureConfig({ enabled: enabled, ...props });
60
- }
61
-
62
- protected transformNativeEvent() {
63
- return {
64
- focalX: this.scaleGestureDetector.getFocusX(),
65
- focalY: this.scaleGestureDetector.getFocusY(),
66
- velocity: this.velocity,
67
- scale: this.scale,
68
- };
69
- }
70
-
71
- public onPointerDown(event: IncomingEvent): void {
72
- this.tracker.addToTracker(event);
73
- super.onPointerDown(event);
84
+ }
85
+
86
+ public onPointerDown(event: IncomingEvent): void {
87
+ this.tracker.addToTracker(event);
88
+ super.onPointerDown(event);
89
+ }
90
+
91
+ public onAdditionalPointerAdd(event: IncomingEvent): void {
92
+ this.tracker.addToTracker(event);
93
+ super.onAdditionalPointerAdd(event);
94
+ this.tryBegin();
95
+ this.scaleGestureDetector.onTouchEvent(event, this.tracker);
96
+ }
97
+
98
+ public onPointerUp(event: IncomingEvent): void {
99
+ super.onPointerUp(event);
100
+ this.tracker.removeFromTracker(event.pointerId);
101
+ if (this.currentState !== State.ACTIVE) {
102
+ return;
74
103
  }
104
+ this.scaleGestureDetector.onTouchEvent(event, this.tracker);
75
105
 
76
- public onAdditionalPointerAdd(event: IncomingEvent): void {
77
- this.tracker.addToTracker(event);
78
- super.onAdditionalPointerAdd(event);
79
- this.tryBegin();
80
- this.scaleGestureDetector.onTouchEvent(event, this.tracker);
106
+ if (this.currentState === State.ACTIVE) {
107
+ this.end();
108
+ } else {
109
+ this.fail();
81
110
  }
111
+ }
82
112
 
83
- public onPointerUp(event: IncomingEvent): void {
84
- super.onPointerUp(event);
85
- this.tracker.removeFromTracker(event.pointerId);
86
- if (this.currentState !== State.ACTIVE) {
87
- return;
88
- }
89
- this.scaleGestureDetector.onTouchEvent(event, this.tracker);
113
+ public onAdditionalPointerRemove(event: IncomingEvent): void {
114
+ super.onAdditionalPointerRemove(event);
115
+ this.scaleGestureDetector.onTouchEvent(event, this.tracker);
116
+ this.tracker.removeFromTracker(event.pointerId);
90
117
 
91
- if (this.currentState === State.ACTIVE) {
92
- this.end();
93
- } else {
94
- this.fail();
95
- }
118
+ if (
119
+ this.currentState === State.ACTIVE &&
120
+ this.tracker.getTrackedPointersCount() < 2
121
+ ) {
122
+ this.end();
96
123
  }
124
+ }
97
125
 
98
- public onAdditionalPointerRemove(event: IncomingEvent): void {
99
- super.onAdditionalPointerRemove(event);
100
- this.scaleGestureDetector.onTouchEvent(event, this.tracker);
101
- this.tracker.removeFromTracker(event.pointerId);
102
-
103
- if (
104
- this.currentState === State.ACTIVE &&
105
- this.tracker.getTrackedPointersCount() < 2
106
- ) {
107
- this.end();
108
- }
126
+ public onPointerMove(event: IncomingEvent): void {
127
+ if (this.tracker.getTrackedPointersCount() < 2) {
128
+ return;
109
129
  }
130
+ this.tracker.track(event);
110
131
 
111
- public onPointerMove(event: IncomingEvent): void {
112
- if (this.tracker.getTrackedPointersCount() < 2) {
113
- return;
114
- }
115
- this.tracker.track(event);
132
+ this.scaleGestureDetector.onTouchEvent(event, this.tracker);
133
+ super.onPointerMove(event);
134
+ }
116
135
 
117
- this.scaleGestureDetector.onTouchEvent(event, this.tracker);
118
- super.onPointerMove(event);
136
+ public onPointerOutOfBounds(event: IncomingEvent): void {
137
+ if (this.tracker.getTrackedPointersCount() < 2) {
138
+ return;
119
139
  }
140
+ this.tracker.track(event);
120
141
 
121
- public onPointerOutOfBounds(event: IncomingEvent): void {
122
- if (this.tracker.getTrackedPointersCount() < 2) {
123
- return;
124
- }
125
- this.tracker.track(event);
142
+ this.scaleGestureDetector.onTouchEvent(event, this.tracker);
143
+ super.onPointerOutOfBounds(event);
144
+ }
126
145
 
127
- this.scaleGestureDetector.onTouchEvent(event, this.tracker);
128
- super.onPointerOutOfBounds(event);
146
+ private tryBegin(): void {
147
+ if (this.currentState !== State.UNDETERMINED) {
148
+ return;
129
149
  }
130
150
 
131
- private tryBegin(): void {
132
- if (this.currentState !== State.UNDETERMINED) {
133
- return;
134
- }
151
+ this.resetProgress();
152
+ this.begin();
153
+ }
135
154
 
155
+ public activate(force?: boolean): void {
156
+ if (this.currentState !== State.ACTIVE) {
136
157
  this.resetProgress();
137
- this.begin();
138
158
  }
139
159
 
140
- public activate(force?: boolean): void {
141
- if (this.currentState !== State.ACTIVE) {
142
- this.resetProgress();
143
- }
144
-
145
- super.activate();
146
- }
160
+ super.activate();
161
+ }
147
162
 
148
- protected onReset(): void {
149
- this.resetProgress();
150
- }
163
+ protected onReset(): void {
164
+ this.resetProgress();
165
+ }
151
166
 
152
- protected resetProgress(): void {
153
- if (this.currentState === State.ACTIVE) {
154
- return;
155
- }
156
- this.velocity = 0;
157
- this.scale = 1;
167
+ protected resetProgress(): void {
168
+ if (this.currentState === State.ACTIVE) {
169
+ return;
158
170
  }
171
+ this.velocity = 0;
172
+ this.scale = 1;
173
+ }
159
174
  }
@@ -12,7 +12,15 @@ export class RotationGestureHandler extends GestureHandler {
12
12
  private unlockScrolls: (() => void) | undefined
13
13
 
14
14
  constructor(deps: GestureHandlerDependencies) {
15
- super({ ...deps, logger: deps.logger.cloneWithPrefix("RotationGestureHandler") })
15
+ super({ ...deps, logger: deps.logger.cloneAndJoinPrefix("RotationGestureHandler") })
16
+ }
17
+
18
+ public override getName(): string {
19
+ return "RotationGestureHandler"
20
+ }
21
+
22
+ public override isGestureContinuous(): boolean {
23
+ return true
16
24
  }
17
25
 
18
26
  private rotationGestureListener: RotationGestureListener = {
@@ -17,7 +17,15 @@ export class TapGestureHandler extends GestureHandler {
17
17
  private delayTimeout: number | undefined;
18
18
 
19
19
  constructor(deps: GestureHandlerDependencies) {
20
- super({...deps, logger: deps.logger.cloneWithPrefix(`TapGestureHandler${deps.handlerTag}`)})
20
+ super({ ...deps, logger: deps.logger.cloneAndJoinPrefix(`TapGestureHandler${deps.handlerTag}`) })
21
+ }
22
+
23
+ public override getName(): string {
24
+ return "TapGestureHandler"
25
+ }
26
+
27
+ public override isGestureContinuous(): boolean {
28
+ return false
21
29
  }
22
30
 
23
31
  onPointerDown(event) {
@@ -101,7 +109,9 @@ export class TapGestureHandler extends GestureHandler {
101
109
  }
102
110
 
103
111
  private trySettingPosition(event: IncomingEvent): void {
104
- if (this.currentState !== State.UNDETERMINED) return;
112
+ if (this.currentState !== State.UNDETERMINED) {
113
+ return;
114
+ }
105
115
  this.offsetX = 0;
106
116
  this.offsetY = 0;
107
117
  this.startX = event.x;
@@ -109,7 +119,7 @@ export class TapGestureHandler extends GestureHandler {
109
119
  }
110
120
 
111
121
  private updateState(event: IncomingEvent): void {
112
- const logger = this.logger.cloneWithPrefix("updateState")
122
+ const logger = this.logger.cloneAndJoinPrefix("updateState")
113
123
  if (this.maxNumberOfPointersSoFar < this.tracker.getTrackedPointersCount()) {
114
124
  this.maxNumberOfPointersSoFar = this.tracker.getTrackedPointersCount()
115
125
  }
@@ -175,13 +185,13 @@ export class TapGestureHandler extends GestureHandler {
175
185
  }
176
186
 
177
187
  private endTap() {
178
- const logger = this.logger.cloneWithPrefix("endTap")
188
+ const logger = this.logger.cloneAndJoinPrefix("endTap")
179
189
  this.clearTimeouts();
180
190
  if (
181
191
  ++this.numberOfTapsSoFar === (this.config.numberOfTaps ?? DEFAULT_NUMBER_OF_TAPS) &&
182
192
  this.maxNumberOfPointersSoFar >= (this.config.minNumberOfPointers ?? 0)
183
193
  ) {
184
- logger.info(JSON.stringify({numberOfTapsSoFar: this.numberOfTapsSoFar}))
194
+ logger.info(JSON.stringify({ numberOfTapsSoFar: this.numberOfTapsSoFar }))
185
195
  this.activate();
186
196
  } else {
187
197
  this.delayTimeout = setTimeout(() => this.fail(), this.config.maxDelayMs ?? DEFAULT_MAX_DELAY_MS);
@@ -2,7 +2,7 @@ import {RNPackage, TurboModulesFactory} from "@rnoh/react-native-openharmony/ts"
2
2
  import type {TurboModule, TurboModuleContext} from "@rnoh/react-native-openharmony/ts";
3
3
  import {RNGestureHandlerModule} from './RNGestureHandlerModule';
4
4
 
5
- class GestureHandlerTurboModulesFactory extends TurboModulesFactory {
5
+ class GestureHandlerTurboModuleFactory extends TurboModulesFactory {
6
6
  createTurboModule(name: string): TurboModule | null {
7
7
  if (name === RNGestureHandlerModule.NAME) {
8
8
  return new RNGestureHandlerModule(this.ctx);
@@ -15,8 +15,11 @@ class GestureHandlerTurboModulesFactory extends TurboModulesFactory {
15
15
  }
16
16
  }
17
17
 
18
+ /**
19
+ * @deprecated: Use the package class exported from ../RNOHPackage.ets (2024-10-10)
20
+ */
18
21
  export class GestureHandlerPackage extends RNPackage {
19
22
  createTurboModulesFactory(ctx: TurboModuleContext): TurboModulesFactory {
20
- return new GestureHandlerTurboModulesFactory(ctx);
23
+ return new GestureHandlerTurboModuleFactory(ctx);
21
24
  }
22
- }
25
+ }