import { AllHTMLAttributes, Component, ElementType, RefCallback } from 'react';
import { TouchEventHandler, TouchProps } from '../Touch/Touch';
import { VKUITouchEventHander } from '../../lib/touch';
import { HasPlatform, HasRootRef, Ref } from '../../types';
import { AdaptivityProps } from '../../hoc/withAdaptivity';
export interface TappableProps extends AllHTMLAttributes, HasRootRef, HasPlatform, AdaptivityProps {
Component?: ElementType;
activeEffectDelay?: number;
stopPropagation?: boolean;
hasHover?: boolean;
hasActive?: boolean;
}
export interface TappableState {
clicks?: {
[index: string]: {
x: number;
y: number;
};
};
hovered?: boolean;
active?: boolean;
ts?: number;
hasHover?: boolean;
hasActive?: boolean;
}
export interface RootComponentProps extends TouchProps {
ref?: Ref;
}
export interface StorageItem {
activeTimeout: number;
timeout?: number;
stop(): void;
}
export interface Storage {
[index: string]: StorageItem;
}
export declare type GetStorage = () => StorageItem;
export declare const ACTIVE_DELAY = 70;
export declare const ACTIVE_EFFECT_DELAY = 600;
declare class Tappable extends Component {
constructor(props: TappableProps);
id: string;
isSlide: boolean;
insideTouchRoot: boolean;
container: HTMLElement;
timeout: number;
wavesTimeout: number;
static defaultProps: {
Component: string;
role: string;
stopPropagation: boolean;
disabled: boolean;
hasHover: boolean;
hasActive: boolean;
activeEffectDelay: number;
};
onStart: TouchEventHandler;
onMove: TouchEventHandler;
onEnd: TouchEventHandler;
onDown: VKUITouchEventHander;
onEnter: () => void;
onLeave: () => void;
start: VoidFunction;
stop: VoidFunction;
getStorage: GetStorage;
getRef: RefCallback;
containerHasTransparentBackground: () => boolean;
componentWillUnmount(): void;
componentDidUpdate(prevProps: TappableProps): void;
render(): JSX.Element;
}
declare const _default: typeof Tappable;
export default _default;