/** * 流程如下: * 开始 * | * <是否end阶段> - 否 - 结束 * | * 关闭定时器c1和c2 * | * 清除等待状态 * | * 是 * | * 重置状态为"可能是" * | * <是否满足单击条件> - 否 - 结束 * | * 是 * | * <是否正确连击:是否上次点击信息为空 或 与上次点击的位移/时间是否满足约束> - 否 - 点击次数=1 - 继续(<是否到达点击数要求>) * | * 是 * | * 点击次数+1 * | * <是否到达点击数要求> - 否 - 设置定时器c1(t1毫秒后状态设置为"失败") - 结束 * | * 是 * | * <是否需要其他手势失败> - 否 - 触发事件, 状态设置为"已识别",重置(点击次数,位置) - 结束 * | * 是 * | * 进入等待状态 * | * <设置定时器c2(t1毫秒后检查"需要失败"的手势是否是"失败"状态, 重置(点击次数,位置, 等待状态)> - 否 - 设置状态为"失败" - 结束 * | * 是 * | * 触发, 状态设置为"已识别", 重置(点击次数,位置) * | * 结束 */ import AnyTouch from 'any-touch'; import type { PluginContext, AnyTouchEvent } from '@any-touch/shared'; declare const DEFAULT_OPTIONS: { name: string; pointLength: number; tapTimes: number; waitNextTapTime: number; maxDistance: number; maxDistanceFromPrevTap: number; maxPressTime: number; }; /** * 实例 */ export declare type TapContext = PluginContext & typeof DEFAULT_OPTIONS; /** * 扩展插件映射 */ declare module '@any-touch/core' { interface PluginContextMap { tap: TapContext; } interface EventMap { tap: AnyTouchEvent; } } /** * "单击"识别器 * @param at AnyTouch实例 * @param options 识别器选项 */ export default function (at: AnyTouch, options?: Partial): TapContext; export {};