oho-spin
Version:
A customizable spinning wheel module with interactive features
61 lines (59 loc) • 1.61 kB
TypeScript
interface Quadrant {
image?: string;
text: string;
color?: string;
backgroundImage?: string;
textColor?: string;
fontSize?: number;
fontStyle?: string;
weight?: number;
value?: string | number;
}
interface SpinConfig {
container: string | HTMLElement;
quadrants: Quadrant[];
spinDuration?: number;
soundEnabled?: boolean;
soundFile?: string;
pointerAngle?: number;
isInteractive?: boolean;
easing?: "linear" | "easeOut" | "cubicOut";
overlayImage?: string;
resultPosition?: "left" | "right" | "top" | "bottom";
is3D?: boolean;
onSpinComplete?: (result: Quadrant) => void;
}
declare class SpinTheWheel {
private canvas;
private ctx;
private config;
private angle;
private isSpinning;
private lastMouseX;
private lastMouseY;
private images;
private overlayImg;
private rotationSpeed;
private targetQuadrant;
private winningResult;
constructor(config: SpinConfig);
private preloadImages;
private drawWheel;
spinToIndex(index: number, speed: number): void;
spin(): void;
setWinningQuadrant(quadrantText: string): void;
setRotationSpeed(speed: number): void;
reset(): void;
getCurrentQuadrant(): Quadrant;
stopSpin(): void;
toggleInteractivity(enable: boolean): void;
private getWinningQuadrant;
private setupInteraction;
private removeInteraction;
private handleMouseDown;
private handleMouseMove;
private handleMouseUp;
private handleTouchStart;
private handleTouchMove;
}
export { SpinTheWheel as default };