53 lines
758 B
TypeScript
53 lines
758 B
TypeScript
|
import { confetti } from 'https://esm.sh/@tsparticles/confetti@3.0.3'
|
||
|
|
||
|
const fireworks = new Audio('/fireworks.mp3')
|
||
|
|
||
|
function fire(particleRatio: number, opts: {
|
||
|
spread?: number
|
||
|
startVelocity?: number
|
||
|
decay?: number
|
||
|
scalar?: number
|
||
|
}) {
|
||
|
const count = 200,
|
||
|
defaults = {
|
||
|
origin: { y: 0.7 },
|
||
|
}
|
||
|
|
||
|
confetti(
|
||
|
Object.assign({}, defaults, opts, {
|
||
|
particleCount: Math.floor(count * particleRatio),
|
||
|
}),
|
||
|
)
|
||
|
}
|
||
|
|
||
|
export function excitement() {
|
||
|
fireworks.play()
|
||
|
|
||
|
fire(0.25, {
|
||
|
spread: 26,
|
||
|
startVelocity: 55,
|
||
|
})
|
||
|
|
||
|
fire(0.2, {
|
||
|
spread: 60,
|
||
|
})
|
||
|
|
||
|
fire(0.35, {
|
||
|
spread: 100,
|
||
|
decay: 0.91,
|
||
|
scalar: 0.8,
|
||
|
})
|
||
|
|
||
|
fire(0.1, {
|
||
|
spread: 120,
|
||
|
startVelocity: 25,
|
||
|
decay: 0.92,
|
||
|
scalar: 1.2,
|
||
|
})
|
||
|
|
||
|
fire(0.1, {
|
||
|
spread: 120,
|
||
|
startVelocity: 45,
|
||
|
})
|
||
|
}
|