///
import type { ComponentType, CSSProperties, DetailedHTMLProps, ForwardRefExoticComponent, HTMLProps, ImgHTMLAttributes, TouchEvent as ReactTouchEvent } from 'react';
import type { Modifier, Options, Placement } from '@popperjs/core';
export declare type Interactions = {
touch: 'touch';
tap: 'tap';
doubleTap: 'double_tap';
press: 'press';
click: 'click';
hover: 'hover';
};
export declare type MagnifiedImagePosition = Placement | 'over';
export declare type ActivationChangeEvent = {
isActive: boolean;
};
export declare type OnIsActiveChangedHandler = (event: ActivationChangeEvent) => void;
export declare type TimerHandle = {
name: string;
id: number | NodeJS.Timeout;
};
export declare type DetectedInputType = {
isMouseDetected: boolean;
isTouchDetected: boolean;
};
export declare type Point = {
x: number;
y: number;
};
export declare type PositionChangeEvent = {
isPositionOutside: boolean;
position: Point;
};
export declare type TouchEvent = {
e: ReactTouchEvent;
position: Point;
};
export declare type InputType = {
mouse: 'mouse';
touch: 'touch';
};
export declare type ContainerDimensions = {
height: number;
width: number;
};
export declare type MagnifiedImageProps = DetailedHTMLProps, HTMLImageElement> & {
height: number;
width: number;
};
export declare type ImageProps = Omit, HTMLImageElement>, 'height' | 'width' | 'onLoad'> & {
height?: string | number;
width?: string | number;
onLoad?: (e: Event) => void;
};
export interface LensProps extends HTMLProps {
cursorOffset: Point;
fadeDurationInMs?: number;
isActive?: boolean;
isPositionOutside?: boolean;
position: Point;
}
export interface HintProps {
isMouseDetected?: boolean;
isTouchDetected?: boolean;
hintTextMouse: string;
hintTextTouch: string;
style?: CSSProperties | null;
}
export declare type PortalProps = Omit, 'modifiers' | 'placement'> & {
className?: string;
id?: string;
style?: CSSProperties;
placement?: MagnifiedImagePosition;
dataTestId?: string;
modifiers?: Modifier[];
horizontalOffset?: number;
verticalOffset?: number;
};
export interface MagnifyContainerProps extends Omit, 'height' | 'width'> {
scale?: number;
height?: number;
width?: number;
}
export declare type ChildProps = {
isActive: boolean;
isPositionOutside: boolean;
elementDimensions: ContainerDimensions;
position: Point;
};
export interface CursorPositionProps extends HTMLProps {
activationInteractionMouse: Interactions['click'] | Interactions['hover'];
activationInteractionTouch: Interactions['press'] | Interactions['tap'] | Interactions['touch'];
children: (props: ChildProps) => JSX.Element;
hoverDelayInMs?: number;
hoverOffDelayInMs?: number;
isEnabled?: boolean;
onActivationChanged?: (event: ActivationChangeEvent) => void;
onDetectedEnvironmentChanged?: (detectedInputType: DetectedInputType) => void;
onPositionChanged?: (event: PositionChangeEvent) => void;
pressDurationInMs?: number;
pressMoveThreshold?: number;
shouldStopTouchMovePropagation?: boolean;
tabIndex?: number;
tapDurationInMs?: number;
tapMoveThreshold?: number;
}
export interface ReactImageMagnifyProps extends Omit {
activationInteractionHint?: Interactions['click'] | Interactions['hover'];
activationInteractionMouse?: Interactions['click'] | Interactions['hover'];
activationInteractionTouch?: Interactions['press'] | Interactions['tap'] | Interactions['touch'];
fadeDurationInMs?: number;
hintComponent?: ComponentType;
hintProps?: HintProps & any;
hoverDelayInMs?: number;
hoverOffDelayInMs?: number;
imageComponent?: ComponentType>;
imageProps: ImageProps;
lensComponent?: ForwardRefExoticComponent;
lensProps?: LensProps;
magnifyContainerProps?: MagnifyContainerProps;
magnifiedImageComponent?: ComponentType>;
magnifiedImageProps: MagnifiedImageProps;
pressDuration?: number;
pressMoveThreshold?: number;
portalProps?: PortalProps;
shouldHideHintAfterFirstActivation?: boolean;
shouldUsePositiveSpaceLens?: boolean;
}
//# sourceMappingURL=types.d.ts.map