react-native-lucky-wheel
Version:
Lucky Wheel for React Native.
91 lines (90 loc) • 2.88 kB
TypeScript
/// <reference types="react" />
import type { ImageSourcePropType } from 'react-native';
import type { TextProps } from 'react-native-svg';
import { LuckyWheel } from './components';
declare type RGB = `rgb(${number}, ${number}, ${number})`;
declare type RGBA = `rgba(${number}, ${number}, ${number}, ${number})`;
declare type HEX = `#${string}`;
export declare type Color = RGB | RGBA | HEX | string;
export declare enum GestureTypes {
CLOCKWISE = "clockwise",
ANTI_CLOCKWISE = "anti-clockwise",
MULTIDIRECTIONAL = "multidirectional"
}
export declare type GestureType = GestureTypes | GestureTypes.CLOCKWISE | GestureTypes.ANTI_CLOCKWISE | GestureTypes.MULTIDIRECTIONAL;
export declare enum EasingTypes {
OUT = "out",
IN_OUT = "in_out"
}
export declare type EasingType = EasingTypes | EasingTypes.IN_OUT | EasingTypes.OUT;
export declare enum TextAngles {
VERTICAL = "vertical",
HORIZONTAL = "horizontal"
}
export declare type TextAngleType = TextAngles | TextAngles.HORIZONTAL | TextAngles.VERTICAL;
interface ITextStyle extends TextProps {
color?: Color;
}
interface RandomColorOptionsSingle {
hue?: number | string | undefined;
luminosity?: 'bright' | 'light' | 'dark' | 'random' | undefined;
seed?: number | string | undefined;
format?: 'hsvArray' | 'hslArray' | 'hsl' | 'hsla' | 'rgbArray' | 'rgb' | 'rgba' | 'hex' | undefined;
alpha?: number | undefined;
}
declare type ISlice = {
text: string;
color?: Color;
textStyle?: ITextStyle;
};
export interface IWheelText {
x: number;
y: number;
payload: ISlice;
i: number;
}
interface ICustomKnob {
color: Color;
size: number;
}
interface ILuckyWheelRequiredProps {
slices: ISlice[];
}
export interface ILuckyWheelOptionalProps {
padAngle: number;
outerRadius: number;
innerRadius: number;
duration: number;
enableGesture: boolean;
enablePhysics: boolean;
enableOuterDots: boolean;
gestureType: GestureType;
size: number;
winnerIndex?: number;
minimumSpinVelocity: number;
textStyle: ITextStyle;
textAngle: TextAngleType;
backgroundColorOptions: RandomColorOptionsSingle;
offset: number;
backgroundColor: Color;
knobSize: number;
knobColor: Color;
easing: EasingType;
dotColor: Color;
onKnobTick?: () => void;
onSpinningStart?: () => void;
onSpinningEnd?: (winner: ISlice) => void;
source?: ImageSourcePropType;
customKnob?: (params: ICustomKnob) => React.ReactChild;
customText?: (params: IWheelText) => React.ReactChild;
waitWinner: boolean;
enableInnerShadow: boolean;
}
export interface ILuckyWheel extends ILuckyWheelRequiredProps, ILuckyWheelOptionalProps {
}
export declare type LuckyWheelHandle = {
start: (cb?: () => void) => void;
stop: () => void;
reset: () => void;
};
export default LuckyWheel;