@@ -36,11 +36,14 @@ export interface PointerEventHandlers {
36
36
end : EventDescriptor ;
37
37
}
38
38
39
- export type PointerActivationConstraint = DistanceConstraint | DelayConstraint ;
39
+ export type PointerActivationConstraint =
40
+ | DelayConstraint
41
+ | DistanceConstraint
42
+ | ( DelayConstraint & DistanceConstraint ) ;
40
43
41
44
function isDistanceConstraint (
42
45
constraint : PointerActivationConstraint
43
- ) : constraint is DistanceConstraint {
46
+ ) : constraint is PointerActivationConstraint & DistanceConstraint {
44
47
return Boolean ( constraint && 'distance' in constraint ) ;
45
48
}
46
49
@@ -55,7 +58,8 @@ export interface AbstractPointerSensorOptions extends SensorOptions {
55
58
onActivation ?( { event} : { event : Event } ) : void ;
56
59
}
57
60
58
- export type AbstractPointerSensorProps = SensorProps < AbstractPointerSensorOptions > ;
61
+ export type AbstractPointerSensorProps =
62
+ SensorProps < AbstractPointerSensorOptions > ;
59
63
60
64
export class AbstractPointerSensor implements SensorInstance {
61
65
public autoScrollEnabled = true ;
@@ -109,17 +113,17 @@ export class AbstractPointerSensor implements SensorInstance {
109
113
this . documentListeners . add ( EventName . Keydown , this . handleKeydown ) ;
110
114
111
115
if ( activationConstraint ) {
112
- if ( isDistanceConstraint ( activationConstraint ) ) {
113
- return ;
114
- }
115
-
116
116
if ( isDelayConstraint ( activationConstraint ) ) {
117
117
this . timeoutId = setTimeout (
118
118
this . handleStart ,
119
119
activationConstraint . delay
120
120
) ;
121
121
return ;
122
122
}
123
+
124
+ if ( isDistanceConstraint ( activationConstraint ) ) {
125
+ return ;
126
+ }
123
127
}
124
128
125
129
this . handleStart ( ) ;
@@ -178,29 +182,28 @@ export class AbstractPointerSensor implements SensorInstance {
178
182
const coordinates = getEventCoordinates ( event ) ?? defaultCoordinates ;
179
183
const delta = getCoordinatesDelta ( initialCoordinates , coordinates ) ;
180
184
185
+ // Constraint validation
181
186
if ( ! activated && activationConstraint ) {
182
- // Constraint validation
183
- if ( isDelayConstraint ( activationConstraint ) ) {
184
- if ( hasExceededDistance ( delta , activationConstraint . tolerance ) ) {
185
- return this . handleCancel ( ) ;
186
- }
187
-
188
- return ;
189
- }
190
-
191
187
if ( isDistanceConstraint ( activationConstraint ) ) {
192
188
if (
193
189
activationConstraint . tolerance != null &&
194
190
hasExceededDistance ( delta , activationConstraint . tolerance )
195
191
) {
196
192
return this . handleCancel ( ) ;
197
193
}
194
+
198
195
if ( hasExceededDistance ( delta , activationConstraint . distance ) ) {
199
196
return this . handleStart ( ) ;
200
197
}
198
+ }
201
199
202
- return ;
200
+ if ( isDelayConstraint ( activationConstraint ) ) {
201
+ if ( hasExceededDistance ( delta , activationConstraint . tolerance ) ) {
202
+ return this . handleCancel ( ) ;
203
+ }
203
204
}
205
+
206
+ return ;
204
207
}
205
208
206
209
if ( event . cancelable ) {
0 commit comments