7960.js.map (10849B)
1 {"version":3,"file":"bundles/12c8185ea2689492c07b/7960.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*/\n\nimport type ICanvasEffect from \"../ICanvasEffect\";\n\ntype 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: Partial<ConfettiOptions>) {\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","this","window","requestAnimationFrame","Date","now","async","canvas","timeout","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":""}