party-js
Version:
A JavaScript library to brighten up your user's site experience with visual effects!
63 lines (62 loc) • 2.33 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.confetti = void 0;
var __1 = require("../");
var components_1 = require("../components");
var modules_1 = require("../systems/modules");
var random = require("../systems/random");
var sources = require("../systems/sources");
var variation = require("../systems/variation");
var util = require("../util");
/**
* The standard confetti template.
*
* @param source The source to emit the confetti from.
* @param options The (optional) configuration overrides.
*/
function confetti(source, options) {
var populated = util.overrideDefaults({
count: variation.range(20, 40),
spread: variation.range(35, 45),
speed: variation.range(300, 600),
size: variation.skew(1, 0.2),
rotation: function () { return random.randomUnitVector().scale(180); },
color: function () { return components_1.Color.fromHsl(random.randomRange(0, 360), 100, 70); },
modules: [
new modules_1.ModuleBuilder()
.drive("size")
.by(function (t) { return Math.min(1, t * 3); })
.relative()
.build(),
new modules_1.ModuleBuilder()
.drive("rotation")
.by(function (t) { return new components_1.Vector(140, 200, 260).scale(t); })
.relative()
.build(),
],
shapes: ["square", "circle"],
}, options);
var emitter = __1.scene.current.createEmitter({
emitterOptions: {
loops: 1,
duration: 8,
modules: populated.modules,
},
emissionOptions: {
rate: 0,
bursts: [{ time: 0, count: populated.count }],
sourceSampler: sources.dynamicSource(source),
angle: variation.skew(-90, variation.evaluateVariation(populated.spread)),
initialLifetime: 8,
initialSpeed: populated.speed,
initialSize: populated.size,
initialRotation: populated.rotation,
initialColor: populated.color,
},
rendererOptions: {
shapeFactory: populated.shapes,
},
});
return emitter;
}
exports.confetti = confetti;