This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

51 lines
1.2 KiB
JavaScript

import Hammer from '@egjs/hammerjs';
import State from '../State';
import PressGestureHandler from './PressGestureHandler';
import { isnan, isValidNumber } from './utils';
class LongPressGestureHandler extends PressGestureHandler {
get minDurationMs() {
return isnan(this.config.minDurationMs) ? 251 : this.config.minDurationMs;
}
get maxDist() {
return isnan(this.config.maxDist) ? 9 : this.config.maxDist;
}
updateHasCustomActivationCriteria({ maxDistSq }) {
return !isValidNumber(maxDistSq);
}
getConfig() {
if (!this._hasCustomActivationCriteria) {
// Default config
// If no params have been defined then this config should emulate the native gesture as closely as possible.
return {
shouldCancelWhenOutside: true,
maxDistSq: 10,
};
}
return this.config;
}
getHammerConfig() {
return {
...super.getHammerConfig(),
// threshold: this.maxDist,
time: this.minDurationMs,
};
}
getState(type) {
return {
[Hammer.INPUT_START]: State.ACTIVE,
[Hammer.INPUT_MOVE]: State.ACTIVE,
[Hammer.INPUT_END]: State.END,
[Hammer.INPUT_CANCEL]: State.FAILED,
}[type];
}
}
export default LongPressGestureHandler;