2382.js.map (10758B)
1 {"version":3,"file":"bundles/9cacd6575f4c8ee1aedb/2382.js","mappings":"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","sources":["webpack://element-web/./src/effects/confetti/index.ts"],"sourcesContent":["/*\nCopyright 2024 New Vector Ltd.\nCopyright 2023 The Matrix.org Foundation C.I.C.\nCopyright 2020 Nurjin Jafar\nCopyright 2020 Nordeck IT + Consulting GmbH.\n\nSPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n */\nimport type ICanvasEffect from \"../ICanvasEffect\";\n\nexport type ConfettiOptions = {\n /**\n * max confetti count\n */\n maxCount: number;\n /**\n * particle animation speed\n */\n speed: number;\n /**\n * the confetti animation frame interval in milliseconds\n */\n frameInterval: number;\n /**\n * the alpha opacity of the confetti (between 0 and 1, where 1 is opaque and 0 is invisible)\n */\n alpha: number;\n /**\n * use gradient instead of solid particle color\n */\n gradient: boolean;\n};\n\ntype ConfettiParticle = {\n color: string;\n color2: string;\n x: number;\n y: number;\n diameter: number;\n tilt: number;\n tiltAngleIncrement: number;\n tiltAngle: number;\n};\n\nexport const DefaultOptions: ConfettiOptions = {\n maxCount: 150,\n speed: 3,\n frameInterval: 15,\n alpha: 1.0,\n gradient: false,\n};\n\nexport default class Confetti implements ICanvasEffect {\n private readonly options: ConfettiOptions;\n\n public constructor(options: { [key: string]: any }) {\n this.options = { ...DefaultOptions, ...options };\n }\n\n private context: CanvasRenderingContext2D | null = null;\n private supportsAnimationFrame = window.requestAnimationFrame;\n private colors = [\n \"rgba(30,144,255,\",\n \"rgba(107,142,35,\",\n \"rgba(255,215,0,\",\n \"rgba(255,192,203,\",\n \"rgba(106,90,205,\",\n \"rgba(173,216,230,\",\n \"rgba(238,130,238,\",\n \"rgba(152,251,152,\",\n \"rgba(70,130,180,\",\n \"rgba(244,164,96,\",\n \"rgba(210,105,30,\",\n \"rgba(220,20,60,\",\n ];\n\n private lastFrameTime = Date.now();\n private particles: Array<ConfettiParticle> = [];\n private waveAngle = 0;\n\n public isRunning = false;\n\n public start = async (canvas: HTMLCanvasElement, timeout = 3000): Promise<void> => {\n if (!canvas) {\n return;\n }\n this.context = canvas.getContext(\"2d\");\n this.particles = [];\n const count = this.options.maxCount;\n while (this.particles.length < count) {\n this.particles.push(this.resetParticle({} as ConfettiParticle, canvas.width, canvas.height));\n }\n this.isRunning = true;\n this.runAnimation();\n if (timeout) {\n window.setTimeout(this.stop, timeout);\n }\n };\n\n public stop = async (): Promise<void> => {\n this.isRunning = false;\n };\n\n private resetParticle = (particle: ConfettiParticle, width: number, height: number): ConfettiParticle => {\n particle.color = this.colors[(Math.random() * this.colors.length) | 0] + (this.options.alpha + \")\");\n if (this.options.gradient) {\n particle.color2 = this.colors[(Math.random() * this.colors.length) | 0] + (this.options.alpha + \")\");\n } else {\n particle.color2 = particle.color;\n }\n particle.x = Math.random() * width;\n particle.y = Math.random() * -height;\n particle.diameter = Math.random() * 10 + 5;\n particle.tilt = Math.random() * -10;\n particle.tiltAngleIncrement = Math.random() * 0.07 + 0.05;\n particle.tiltAngle = Math.random() * Math.PI;\n return particle;\n };\n\n private runAnimation = (): void => {\n if (!this.context || !this.context.canvas) {\n return;\n }\n if (this.particles.length === 0) {\n this.context.clearRect(0, 0, this.context.canvas.width, this.context.canvas.height);\n } else {\n const now = Date.now();\n const delta = now - this.lastFrameTime;\n if (!this.supportsAnimationFrame || delta > this.options.frameInterval) {\n this.context.clearRect(0, 0, this.context.canvas.width, this.context.canvas.height);\n this.updateParticles();\n this.drawParticles(this.context);\n this.lastFrameTime = now - (delta % this.options.frameInterval);\n }\n requestAnimationFrame(this.runAnimation);\n }\n };\n\n private drawParticles = (context: CanvasRenderingContext2D): void => {\n if (!this.context || !this.context.canvas) {\n return;\n }\n let x;\n let x2;\n let y2;\n for (const particle of this.particles) {\n this.context.beginPath();\n context.lineWidth = particle.diameter;\n x2 = particle.x + particle.tilt;\n x = x2 + particle.diameter / 2;\n y2 = particle.y + particle.tilt + particle.diameter / 2;\n if (this.options.gradient) {\n const gradient = context.createLinearGradient(x, particle.y, x2, y2);\n gradient.addColorStop(0, particle.color);\n gradient.addColorStop(1.0, particle.color2);\n context.strokeStyle = gradient;\n } else {\n context.strokeStyle = particle.color;\n }\n context.moveTo(x, particle.y);\n context.lineTo(x2, y2);\n context.stroke();\n }\n };\n\n private updateParticles = (): void => {\n if (!this.context || !this.context.canvas) {\n return;\n }\n const width = this.context.canvas.width;\n const height = this.context.canvas.height;\n let particle: ConfettiParticle;\n this.waveAngle += 0.01;\n for (let i = 0; i < this.particles.length; i++) {\n particle = this.particles[i];\n if (!this.isRunning && particle.y < -15) {\n particle.y = height + 100;\n } else {\n particle.tiltAngle += particle.tiltAngleIncrement;\n particle.x += Math.sin(this.waveAngle) - 0.5;\n particle.y += (Math.cos(this.waveAngle) + particle.diameter + this.options.speed) * 0.5;\n particle.tilt = Math.sin(particle.tiltAngle) * 15;\n }\n if (particle.x > width + 20 || particle.x < -20 || particle.y > height) {\n if (this.isRunning && this.particles.length <= this.options.maxCount) {\n this.resetParticle(particle, width, height);\n } else {\n this.particles.splice(i, 1);\n i--;\n }\n }\n }\n };\n}\n"],"names":["DefaultOptions","maxCount","speed","frameInterval","alpha","gradient","Confetti","constructor","options","_defineProperty","window","requestAnimationFrame","Date","now","async","canvas","timeout","this","context","getContext","particles","count","length","push","resetParticle","width","height","isRunning","runAnimation","setTimeout","stop","particle","color","colors","Math","random","color2","x","y","diameter","tilt","tiltAngleIncrement","tiltAngle","PI","clearRect","delta","lastFrameTime","supportsAnimationFrame","updateParticles","drawParticles","x2","y2","beginPath","lineWidth","createLinearGradient","addColorStop","strokeStyle","moveTo","lineTo","stroke","waveAngle","i","sin","cos","splice","_objectSpread"],"sourceRoot":""}