
Security News
Lovable’s OJ Rewrites Vite’s Dev Server in Rust as AI Lowers the Cost of Forking Open Source
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.
@wheelfor/wheel-picker
Advanced tools
Canvas-based spinning wheel picker with themes, smooth animations, and spin events. Zero runtime dependencies.
A lightweight, canvas-based spinning wheel picker with smooth animations, 8 built-in color themes, and a simple event-driven API. Zero runtime dependencies — everything is bundled.
npm install @wheelfor/wheel-picker
<canvas id="wheel" width="500" height="500"></canvas>
import { WheelPicker } from '@wheelfor/wheel-picker';
const canvas = document.getElementById('wheel');
const wheel = new WheelPicker(canvas, {
choices: ['Pizza', 'Sushi', 'Tacos', 'Burgers', 'Salad'],
theme: 'Fresh Air',
});
wheel.addEventListener('spinend', (e) => {
console.log('Winner:', e.detail.result);
});
Click the pointer on the wheel to spin, or call wheel.spin() programmatically.
new WheelPicker(canvas, options)| Option | Type | Default | Description |
|---|---|---|---|
choices | string[] | required | List of items to display on the wheel |
theme | string | required | Color theme name (see Themes) |
interactive | boolean | true | Enable click-to-spin on the pointer |
showResult | boolean | true | Show result label after spin |
spinDuration | number | 4000 | Spin animation duration in ms |
spinJitter | number | 0.02 | Random angle variation added to each spin |
minFontSize | number | 10 | Minimum font size for segment labels |
maxFontSize | number | 100 | Maximum font size for segment labels |
wheelColor | string | '#f5f5f5' | Center hub color |
textColor | string | '#000000' | Segment label color |
fontFamily | string | 'Arial Black, Arial, sans-serif' | Font for segment labels |
| Method | Description |
|---|---|
spin(targetIndex?) | Spin the wheel. Pass an index to land on a specific segment. |
updateChoices(choices) | Replace the current choices and redraw. |
destroy() | Remove event listeners and clean up. |
wheel.addEventListener('spinend', (e) => {
const { result, index, angle } = e.detail;
// result: winning label string
// index: winning segment index
// angle: final wheel rotation in radians
});
8 built-in color palettes:
| Name | Description |
|---|---|
Fresh Air | Soft muted tones |
Popcorn | Warm and vibrant |
Playground | Bold primary colors |
Sprinkles | Pastel variety |
Chalkboard | Deep saturated |
Buddy System | Paired complementary colors |
Garden Party | Light and airy pastels |
Marshmallow | Soft pinks and blues |
You can import the theme palette directly:
import { themes } from '@wheelfor/wheel-picker';
console.log(themes['Fresh Air']); // array of rgb() strings
Full TypeScript support is included. Import option types directly:
import { WheelPicker, WheelPickerOptions, SpinEndEvent } from '@wheelfor/wheel-picker';
const options: Partial<WheelPickerOptions> = {
choices: ['Option A', 'Option B'],
theme: 'Playground',
spinDuration: 3000,
};
MIT
FAQs
Canvas-based spinning wheel picker with themes, smooth animations, and spin events. Zero runtime dependencies.
The npm package @wheelfor/wheel-picker receives a total of 0 weekly downloads. As such, @wheelfor/wheel-picker popularity was classified as not popular.
We found that @wheelfor/wheel-picker demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.