UNPKG

party-js

Version:

A JavaScript library to brighten up your user's site experience with visual effects!

63 lines (62 loc) 2.33 kB
"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;