UNPKG

1.53 kBPlain TextView Raw
1/* eslint-disable eslint-comments/no-unlimited-disable */
2/* eslint-disable */
3import Hammer from '@egjs/hammerjs';
4
5import { State } from '../State';
6import PressGestureHandler from './PressGestureHandler';
7import { isnan, isValidNumber } from './utils';
8import { Config } from './GestureHandler';
9import { HammerInputNames } from './constants';
10
11class LongPressGestureHandler extends PressGestureHandler {
12 get minDurationMs(): number {
13 // @ts-ignore FIXNE(TS)
14 return isnan(this.config.minDurationMs) ? 251 : this.config.minDurationMs;
15 }
16
17 get maxDist() {
18 // @ts-ignore FIXNE(TS)
19 return isnan(this.config.maxDist) ? 9 : this.config.maxDist;
20 }
21
22 updateHasCustomActivationCriteria({ maxDistSq }: Config) {
23 return !isValidNumber(maxDistSq);
24 }
25
26 getConfig() {
27 if (!this.hasCustomActivationCriteria) {
28 // Default config
29 // If no params have been defined then this config should emulate the native gesture as closely as possible.
30 return {
31 shouldCancelWhenOutside: true,
32 maxDistSq: 10,
33 };
34 }
35 return this.config;
36 }
37
38 getHammerConfig() {
39 return {
40 ...super.getHammerConfig(),
41 // threshold: this.maxDist,
42 time: this.minDurationMs,
43 };
44 }
45
46 getState(type: keyof typeof HammerInputNames) {
47 return {
48 [Hammer.INPUT_START]: State.ACTIVE,
49 [Hammer.INPUT_MOVE]: State.ACTIVE,
50 [Hammer.INPUT_END]: State.END,
51 [Hammer.INPUT_CANCEL]: State.FAILED,
52 }[type];
53 }
54}
55
56export default LongPressGestureHandler;