UNPKG

react-native-lucky-wheel

Version:
91 lines (90 loc) 2.88 kB
/// <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;