{"version":3,"file":"static/js/vendors-39e25ecf.c0921b0e.js","mappings":"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","sources":["../node_modules/canvas-confetti/dist/confetti.module.mjs"],"sourcesContent":["// canvas-confetti v1.9.3 built on 2024-04-30T22:19:17.794Z\nvar module = {};\n\n// source content\n/* globals Map */\n\n(function main(global, module, isWorker, workerSize) {\n var canUseWorker = !!(\n global.Worker &&\n global.Blob &&\n global.Promise &&\n global.OffscreenCanvas &&\n global.OffscreenCanvasRenderingContext2D &&\n global.HTMLCanvasElement &&\n global.HTMLCanvasElement.prototype.transferControlToOffscreen &&\n global.URL &&\n global.URL.createObjectURL);\n\n var canUsePaths = typeof Path2D === 'function' && typeof DOMMatrix === 'function';\n var canDrawBitmap = (function () {\n // this mostly supports ssr\n if (!global.OffscreenCanvas) {\n return false;\n }\n\n var canvas = new OffscreenCanvas(1, 1);\n var ctx = canvas.getContext('2d');\n ctx.fillRect(0, 0, 1, 1);\n var bitmap = canvas.transferToImageBitmap();\n\n try {\n ctx.createPattern(bitmap, 'no-repeat');\n } catch (e) {\n return false;\n }\n\n return true;\n })();\n\n function noop() {}\n\n // create a promise if it exists, otherwise, just\n // call the function directly\n function promise(func) {\n var ModulePromise = module.exports.Promise;\n var Prom = ModulePromise !== void 0 ? ModulePromise : global.Promise;\n\n if (typeof Prom === 'function') {\n return new Prom(func);\n }\n\n func(noop, noop);\n\n return null;\n }\n\n var bitmapMapper = (function (skipTransform, map) {\n // see https://github.com/catdad/canvas-confetti/issues/209\n // creating canvases is actually pretty expensive, so we should create a\n // 1:1 map for bitmap:canvas, so that we can animate the confetti in\n // a performant manner, but also not store them forever so that we don't\n // have a memory leak\n return {\n transform: function(bitmap) {\n if (skipTransform) {\n return bitmap;\n }\n\n if (map.has(bitmap)) {\n return map.get(bitmap);\n }\n\n var canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(bitmap, 0, 0);\n\n map.set(bitmap, canvas);\n\n return canvas;\n },\n clear: function () {\n map.clear();\n }\n };\n })(canDrawBitmap, new Map());\n\n var raf = (function () {\n var TIME = Math.floor(1000 / 60);\n var frame, cancel;\n var frames = {};\n var lastFrameTime = 0;\n\n if (typeof requestAnimationFrame === 'function' && typeof cancelAnimationFrame === 'function') {\n frame = function (cb) {\n var id = Math.random();\n\n frames[id] = requestAnimationFrame(function onFrame(time) {\n if (lastFrameTime === time || lastFrameTime + TIME - 1 < time) {\n lastFrameTime = time;\n delete frames[id];\n\n cb();\n } else {\n frames[id] = requestAnimationFrame(onFrame);\n }\n });\n\n return id;\n };\n cancel = function (id) {\n if (frames[id]) {\n cancelAnimationFrame(frames[id]);\n }\n };\n } else {\n frame = function (cb) {\n return setTimeout(cb, TIME);\n };\n cancel = function (timer) {\n return clearTimeout(timer);\n };\n }\n\n return { frame: frame, cancel: cancel };\n }());\n\n var getWorker = (function () {\n var worker;\n var prom;\n var resolves = {};\n\n function decorate(worker) {\n function execute(options, callback) {\n worker.postMessage({ options: options || {}, callback: callback });\n }\n worker.init = function initWorker(canvas) {\n var offscreen = canvas.transferControlToOffscreen();\n worker.postMessage({ canvas: offscreen }, [offscreen]);\n };\n\n worker.fire = function fireWorker(options, size, done) {\n if (prom) {\n execute(options, null);\n return prom;\n }\n\n var id = Math.random().toString(36).slice(2);\n\n prom = promise(function (resolve) {\n function workerDone(msg) {\n if (msg.data.callback !== id) {\n return;\n }\n\n delete resolves[id];\n worker.removeEventListener('message', workerDone);\n\n prom = null;\n\n bitmapMapper.clear();\n\n done();\n resolve();\n }\n\n worker.addEventListener('message', workerDone);\n execute(options, id);\n\n resolves[id] = workerDone.bind(null, { data: { callback: id }});\n });\n\n return prom;\n };\n\n worker.reset = function resetWorker() {\n worker.postMessage({ reset: true });\n\n for (var id in resolves) {\n resolves[id]();\n delete resolves[id];\n }\n };\n }\n\n return function () {\n if (worker) {\n return worker;\n }\n\n if (!isWorker && canUseWorker) {\n var code = [\n 'var CONFETTI, SIZE = {}, module = {};',\n '(' + main.toString() + ')(this, module, true, SIZE);',\n 'onmessage = function(msg) {',\n ' if (msg.data.options) {',\n ' CONFETTI(msg.data.options).then(function () {',\n ' if (msg.data.callback) {',\n ' postMessage({ callback: msg.data.callback });',\n ' }',\n ' });',\n ' } else if (msg.data.reset) {',\n ' CONFETTI && CONFETTI.reset();',\n ' } else if (msg.data.resize) {',\n ' SIZE.width = msg.data.resize.width;',\n ' SIZE.height = msg.data.resize.height;',\n ' } else if (msg.data.canvas) {',\n ' SIZE.width = msg.data.canvas.width;',\n ' SIZE.height = msg.data.canvas.height;',\n ' CONFETTI = module.exports.create(msg.data.canvas);',\n ' }',\n '}',\n ].join('\\n');\n try {\n worker = new Worker(URL.createObjectURL(new Blob([code])));\n } catch (e) {\n // eslint-disable-next-line no-console\n typeof console !== undefined && typeof console.warn === 'function' ? console.warn('🎊 Could not load worker', e) : null;\n\n return null;\n }\n\n decorate(worker);\n }\n\n return worker;\n };\n })();\n\n var defaults = {\n particleCount: 50,\n angle: 90,\n spread: 45,\n startVelocity: 45,\n decay: 0.9,\n gravity: 1,\n drift: 0,\n ticks: 200,\n x: 0.5,\n y: 0.5,\n shapes: ['square', 'circle'],\n zIndex: 100,\n colors: [\n '#26ccff',\n '#a25afd',\n '#ff5e7e',\n '#88ff5a',\n '#fcff42',\n '#ffa62d',\n '#ff36ff'\n ],\n // probably should be true, but back-compat\n disableForReducedMotion: false,\n scalar: 1\n };\n\n function convert(val, transform) {\n return transform ? transform(val) : val;\n }\n\n function isOk(val) {\n return !(val === null || val === undefined);\n }\n\n function prop(options, name, transform) {\n return convert(\n options && isOk(options[name]) ? options[name] : defaults[name],\n transform\n );\n }\n\n function onlyPositiveInt(number){\n return number < 0 ? 0 : Math.floor(number);\n }\n\n function randomInt(min, max) {\n // [min, max)\n return Math.floor(Math.random() * (max - min)) + min;\n }\n\n function toDecimal(str) {\n return parseInt(str, 16);\n }\n\n function colorsToRgb(colors) {\n return colors.map(hexToRgb);\n }\n\n function hexToRgb(str) {\n var val = String(str).replace(/[^0-9a-f]/gi, '');\n\n if (val.length < 6) {\n val = val[0]+val[0]+val[1]+val[1]+val[2]+val[2];\n }\n\n return {\n r: toDecimal(val.substring(0,2)),\n g: toDecimal(val.substring(2,4)),\n b: toDecimal(val.substring(4,6))\n };\n }\n\n function getOrigin(options) {\n var origin = prop(options, 'origin', Object);\n origin.x = prop(origin, 'x', Number);\n origin.y = prop(origin, 'y', Number);\n\n return origin;\n }\n\n function setCanvasWindowSize(canvas) {\n canvas.width = document.documentElement.clientWidth;\n canvas.height = document.documentElement.clientHeight;\n }\n\n function setCanvasRectSize(canvas) {\n var rect = canvas.getBoundingClientRect();\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n function getCanvas(zIndex) {\n var canvas = document.createElement('canvas');\n\n canvas.style.position = 'fixed';\n canvas.style.top = '0px';\n canvas.style.left = '0px';\n canvas.style.pointerEvents = 'none';\n canvas.style.zIndex = zIndex;\n\n return canvas;\n }\n\n function ellipse(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) {\n context.save();\n context.translate(x, y);\n context.rotate(rotation);\n context.scale(radiusX, radiusY);\n context.arc(0, 0, 1, startAngle, endAngle, antiClockwise);\n context.restore();\n }\n\n function randomPhysics(opts) {\n var radAngle = opts.angle * (Math.PI / 180);\n var radSpread = opts.spread * (Math.PI / 180);\n\n return {\n x: opts.x,\n y: opts.y,\n wobble: Math.random() * 10,\n wobbleSpeed: Math.min(0.11, Math.random() * 0.1 + 0.05),\n velocity: (opts.startVelocity * 0.5) + (Math.random() * opts.startVelocity),\n angle2D: -radAngle + ((0.5 * radSpread) - (Math.random() * radSpread)),\n tiltAngle: (Math.random() * (0.75 - 0.25) + 0.25) * Math.PI,\n color: opts.color,\n shape: opts.shape,\n tick: 0,\n totalTicks: opts.ticks,\n decay: opts.decay,\n drift: opts.drift,\n random: Math.random() + 2,\n tiltSin: 0,\n tiltCos: 0,\n wobbleX: 0,\n wobbleY: 0,\n gravity: opts.gravity * 3,\n ovalScalar: 0.6,\n scalar: opts.scalar,\n flat: opts.flat\n };\n }\n\n function updateFetti(context, fetti) {\n fetti.x += Math.cos(fetti.angle2D) * fetti.velocity + fetti.drift;\n fetti.y += Math.sin(fetti.angle2D) * fetti.velocity + fetti.gravity;\n fetti.velocity *= fetti.decay;\n\n if (fetti.flat) {\n fetti.wobble = 0;\n fetti.wobbleX = fetti.x + (10 * fetti.scalar);\n fetti.wobbleY = fetti.y + (10 * fetti.scalar);\n\n fetti.tiltSin = 0;\n fetti.tiltCos = 0;\n fetti.random = 1;\n } else {\n fetti.wobble += fetti.wobbleSpeed;\n fetti.wobbleX = fetti.x + ((10 * fetti.scalar) * Math.cos(fetti.wobble));\n fetti.wobbleY = fetti.y + ((10 * fetti.scalar) * Math.sin(fetti.wobble));\n\n fetti.tiltAngle += 0.1;\n fetti.tiltSin = Math.sin(fetti.tiltAngle);\n fetti.tiltCos = Math.cos(fetti.tiltAngle);\n fetti.random = Math.random() + 2;\n }\n\n var progress = (fetti.tick++) / fetti.totalTicks;\n\n var x1 = fetti.x + (fetti.random * fetti.tiltCos);\n var y1 = fetti.y + (fetti.random * fetti.tiltSin);\n var x2 = fetti.wobbleX + (fetti.random * fetti.tiltCos);\n var y2 = fetti.wobbleY + (fetti.random * fetti.tiltSin);\n\n context.fillStyle = 'rgba(' + fetti.color.r + ', ' + fetti.color.g + ', ' + fetti.color.b + ', ' + (1 - progress) + ')';\n\n context.beginPath();\n\n if (canUsePaths && fetti.shape.type === 'path' && typeof fetti.shape.path === 'string' && Array.isArray(fetti.shape.matrix)) {\n context.fill(transformPath2D(\n fetti.shape.path,\n fetti.shape.matrix,\n fetti.x,\n fetti.y,\n Math.abs(x2 - x1) * 0.1,\n Math.abs(y2 - y1) * 0.1,\n Math.PI / 10 * fetti.wobble\n ));\n } else if (fetti.shape.type === 'bitmap') {\n var rotation = Math.PI / 10 * fetti.wobble;\n var scaleX = Math.abs(x2 - x1) * 0.1;\n var scaleY = Math.abs(y2 - y1) * 0.1;\n var width = fetti.shape.bitmap.width * fetti.scalar;\n var height = fetti.shape.bitmap.height * fetti.scalar;\n\n var matrix = new DOMMatrix([\n Math.cos(rotation) * scaleX,\n Math.sin(rotation) * scaleX,\n -Math.sin(rotation) * scaleY,\n Math.cos(rotation) * scaleY,\n fetti.x,\n fetti.y\n ]);\n\n // apply the transform matrix from the confetti shape\n matrix.multiplySelf(new DOMMatrix(fetti.shape.matrix));\n\n var pattern = context.createPattern(bitmapMapper.transform(fetti.shape.bitmap), 'no-repeat');\n pattern.setTransform(matrix);\n\n context.globalAlpha = (1 - progress);\n context.fillStyle = pattern;\n context.fillRect(\n fetti.x - (width / 2),\n fetti.y - (height / 2),\n width,\n height\n );\n context.globalAlpha = 1;\n } else if (fetti.shape === 'circle') {\n context.ellipse ?\n context.ellipse(fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI) :\n ellipse(context, fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI);\n } else if (fetti.shape === 'star') {\n var rot = Math.PI / 2 * 3;\n var innerRadius = 4 * fetti.scalar;\n var outerRadius = 8 * fetti.scalar;\n var x = fetti.x;\n var y = fetti.y;\n var spikes = 5;\n var step = Math.PI / spikes;\n\n while (spikes--) {\n x = fetti.x + Math.cos(rot) * outerRadius;\n y = fetti.y + Math.sin(rot) * outerRadius;\n context.lineTo(x, y);\n rot += step;\n\n x = fetti.x + Math.cos(rot) * innerRadius;\n y = fetti.y + Math.sin(rot) * innerRadius;\n context.lineTo(x, y);\n rot += step;\n }\n } else {\n context.moveTo(Math.floor(fetti.x), Math.floor(fetti.y));\n context.lineTo(Math.floor(fetti.wobbleX), Math.floor(y1));\n context.lineTo(Math.floor(x2), Math.floor(y2));\n context.lineTo(Math.floor(x1), Math.floor(fetti.wobbleY));\n }\n\n context.closePath();\n context.fill();\n\n return fetti.tick < fetti.totalTicks;\n }\n\n function animate(canvas, fettis, resizer, size, done) {\n var animatingFettis = fettis.slice();\n var context = canvas.getContext('2d');\n var animationFrame;\n var destroy;\n\n var prom = promise(function (resolve) {\n function onDone() {\n animationFrame = destroy = null;\n\n context.clearRect(0, 0, size.width, size.height);\n bitmapMapper.clear();\n\n done();\n resolve();\n }\n\n function update() {\n if (isWorker && !(size.width === workerSize.width && size.height === workerSize.height)) {\n size.width = canvas.width = workerSize.width;\n size.height = canvas.height = workerSize.height;\n }\n\n if (!size.width && !size.height) {\n resizer(canvas);\n size.width = canvas.width;\n size.height = canvas.height;\n }\n\n context.clearRect(0, 0, size.width, size.height);\n\n animatingFettis = animatingFettis.filter(function (fetti) {\n return updateFetti(context, fetti);\n });\n\n if (animatingFettis.length) {\n animationFrame = raf.frame(update);\n } else {\n onDone();\n }\n }\n\n animationFrame = raf.frame(update);\n destroy = onDone;\n });\n\n return {\n addFettis: function (fettis) {\n animatingFettis = animatingFettis.concat(fettis);\n\n return prom;\n },\n canvas: canvas,\n promise: prom,\n reset: function () {\n if (animationFrame) {\n raf.cancel(animationFrame);\n }\n\n if (destroy) {\n destroy();\n }\n }\n };\n }\n\n function confettiCannon(canvas, globalOpts) {\n var isLibCanvas = !canvas;\n var allowResize = !!prop(globalOpts || {}, 'resize');\n var hasResizeEventRegistered = false;\n var globalDisableForReducedMotion = prop(globalOpts, 'disableForReducedMotion', Boolean);\n var shouldUseWorker = canUseWorker && !!prop(globalOpts || {}, 'useWorker');\n var worker = shouldUseWorker ? getWorker() : null;\n var resizer = isLibCanvas ? setCanvasWindowSize : setCanvasRectSize;\n var initialized = (canvas && worker) ? !!canvas.__confetti_initialized : false;\n var preferLessMotion = typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion)').matches;\n var animationObj;\n\n function fireLocal(options, size, done) {\n var particleCount = prop(options, 'particleCount', onlyPositiveInt);\n var angle = prop(options, 'angle', Number);\n var spread = prop(options, 'spread', Number);\n var startVelocity = prop(options, 'startVelocity', Number);\n var decay = prop(options, 'decay', Number);\n var gravity = prop(options, 'gravity', Number);\n var drift = prop(options, 'drift', Number);\n var colors = prop(options, 'colors', colorsToRgb);\n var ticks = prop(options, 'ticks', Number);\n var shapes = prop(options, 'shapes');\n var scalar = prop(options, 'scalar');\n var flat = !!prop(options, 'flat');\n var origin = getOrigin(options);\n\n var temp = particleCount;\n var fettis = [];\n\n var startX = canvas.width * origin.x;\n var startY = canvas.height * origin.y;\n\n while (temp--) {\n fettis.push(\n randomPhysics({\n x: startX,\n y: startY,\n angle: angle,\n spread: spread,\n startVelocity: startVelocity,\n color: colors[temp % colors.length],\n shape: shapes[randomInt(0, shapes.length)],\n ticks: ticks,\n decay: decay,\n gravity: gravity,\n drift: drift,\n scalar: scalar,\n flat: flat\n })\n );\n }\n\n // if we have a previous canvas already animating,\n // add to it\n if (animationObj) {\n return animationObj.addFettis(fettis);\n }\n\n animationObj = animate(canvas, fettis, resizer, size , done);\n\n return animationObj.promise;\n }\n\n function fire(options) {\n var disableForReducedMotion = globalDisableForReducedMotion || prop(options, 'disableForReducedMotion', Boolean);\n var zIndex = prop(options, 'zIndex', Number);\n\n if (disableForReducedMotion && preferLessMotion) {\n return promise(function (resolve) {\n resolve();\n });\n }\n\n if (isLibCanvas && animationObj) {\n // use existing canvas from in-progress animation\n canvas = animationObj.canvas;\n } else if (isLibCanvas && !canvas) {\n // create and initialize a new canvas\n canvas = getCanvas(zIndex);\n document.body.appendChild(canvas);\n }\n\n if (allowResize && !initialized) {\n // initialize the size of a user-supplied canvas\n resizer(canvas);\n }\n\n var size = {\n width: canvas.width,\n height: canvas.height\n };\n\n if (worker && !initialized) {\n worker.init(canvas);\n }\n\n initialized = true;\n\n if (worker) {\n canvas.__confetti_initialized = true;\n }\n\n function onResize() {\n if (worker) {\n // TODO this really shouldn't be immediate, because it is expensive\n var obj = {\n getBoundingClientRect: function () {\n if (!isLibCanvas) {\n return canvas.getBoundingClientRect();\n }\n }\n };\n\n resizer(obj);\n\n worker.postMessage({\n resize: {\n width: obj.width,\n height: obj.height\n }\n });\n return;\n }\n\n // don't actually query the size here, since this\n // can execute frequently and rapidly\n size.width = size.height = null;\n }\n\n function done() {\n animationObj = null;\n\n if (allowResize) {\n hasResizeEventRegistered = false;\n global.removeEventListener('resize', onResize);\n }\n\n if (isLibCanvas && canvas) {\n if (document.body.contains(canvas)) {\n document.body.removeChild(canvas); \n }\n canvas = null;\n initialized = false;\n }\n }\n\n if (allowResize && !hasResizeEventRegistered) {\n hasResizeEventRegistered = true;\n global.addEventListener('resize', onResize, false);\n }\n\n if (worker) {\n return worker.fire(options, size, done);\n }\n\n return fireLocal(options, size, done);\n }\n\n fire.reset = function () {\n if (worker) {\n worker.reset();\n }\n\n if (animationObj) {\n animationObj.reset();\n }\n };\n\n return fire;\n }\n\n // Make default export lazy to defer worker creation until called.\n var defaultFire;\n function getDefaultFire() {\n if (!defaultFire) {\n defaultFire = confettiCannon(null, { useWorker: true, resize: true });\n }\n return defaultFire;\n }\n\n function transformPath2D(pathString, pathMatrix, x, y, scaleX, scaleY, rotation) {\n var path2d = new Path2D(pathString);\n\n var t1 = new Path2D();\n t1.addPath(path2d, new DOMMatrix(pathMatrix));\n\n var t2 = new Path2D();\n // see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix/DOMMatrix\n t2.addPath(t1, new DOMMatrix([\n Math.cos(rotation) * scaleX,\n Math.sin(rotation) * scaleX,\n -Math.sin(rotation) * scaleY,\n Math.cos(rotation) * scaleY,\n x,\n y\n ]));\n\n return t2;\n }\n\n function shapeFromPath(pathData) {\n if (!canUsePaths) {\n throw new Error('path confetti are not supported in this browser');\n }\n\n var path, matrix;\n\n if (typeof pathData === 'string') {\n path = pathData;\n } else {\n path = pathData.path;\n matrix = pathData.matrix;\n }\n\n var path2d = new Path2D(path);\n var tempCanvas = document.createElement('canvas');\n var tempCtx = tempCanvas.getContext('2d');\n\n if (!matrix) {\n // attempt to figure out the width of the path, up to 1000x1000\n var maxSize = 1000;\n var minX = maxSize;\n var minY = maxSize;\n var maxX = 0;\n var maxY = 0;\n var width, height;\n\n // do some line skipping... this is faster than checking\n // every pixel and will be mostly still correct\n for (var x = 0; x < maxSize; x += 2) {\n for (var y = 0; y < maxSize; y += 2) {\n if (tempCtx.isPointInPath(path2d, x, y, 'nonzero')) {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n }\n\n width = maxX - minX;\n height = maxY - minY;\n\n var maxDesiredSize = 10;\n var scale = Math.min(maxDesiredSize/width, maxDesiredSize/height);\n\n matrix = [\n scale, 0, 0, scale,\n -Math.round((width/2) + minX) * scale,\n -Math.round((height/2) + minY) * scale\n ];\n }\n\n return {\n type: 'path',\n path: path,\n matrix: matrix\n };\n }\n\n function shapeFromText(textData) {\n var text,\n scalar = 1,\n color = '#000000',\n // see https://nolanlawson.com/2022/04/08/the-struggle-of-using-native-emoji-on-the-web/\n fontFamily = '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", \"EmojiOne Color\", \"Android Emoji\", \"Twemoji Mozilla\", \"system emoji\", sans-serif';\n\n if (typeof textData === 'string') {\n text = textData;\n } else {\n text = textData.text;\n scalar = 'scalar' in textData ? textData.scalar : scalar;\n fontFamily = 'fontFamily' in textData ? textData.fontFamily : fontFamily;\n color = 'color' in textData ? textData.color : color;\n }\n\n // all other confetti are 10 pixels,\n // so this pixel size is the de-facto 100% scale confetti\n var fontSize = 10 * scalar;\n var font = '' + fontSize + 'px ' + fontFamily;\n\n var canvas = new OffscreenCanvas(fontSize, fontSize);\n var ctx = canvas.getContext('2d');\n\n ctx.font = font;\n var size = ctx.measureText(text);\n var width = Math.ceil(size.actualBoundingBoxRight + size.actualBoundingBoxLeft);\n var height = Math.ceil(size.actualBoundingBoxAscent + size.actualBoundingBoxDescent);\n\n var padding = 2;\n var x = size.actualBoundingBoxLeft + padding;\n var y = size.actualBoundingBoxAscent + padding;\n width += padding + padding;\n height += padding + padding;\n\n canvas = new OffscreenCanvas(width, height);\n ctx = canvas.getContext('2d');\n ctx.font = font;\n ctx.fillStyle = color;\n\n ctx.fillText(text, x, y);\n\n var scale = 1 / scalar;\n\n return {\n type: 'bitmap',\n // TODO these probably need to be transfered for workers\n bitmap: canvas.transferToImageBitmap(),\n matrix: [scale, 0, 0, scale, -width * scale / 2, -height * scale / 2]\n };\n }\n\n module.exports = function() {\n return getDefaultFire().apply(this, arguments);\n };\n module.exports.reset = function() {\n getDefaultFire().reset();\n };\n module.exports.create = confettiCannon;\n module.exports.shapeFromPath = shapeFromPath;\n module.exports.shapeFromText = shapeFromText;\n}((function () {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n return this || {};\n})(), module, false));\n\n// end source content\n\nexport default module.exports;\nexport var create = module.exports.create;\n"],"names":["module","main","global","isWorker","workerSize","canUseWorker","Worker","Blob","Promise","OffscreenCanvas","OffscreenCanvasRenderingContext2D","HTMLCanvasElement","prototype","transferControlToOffscreen","URL","createObjectURL","canUsePaths","Path2D","DOMMatrix","canDrawBitmap","canvas","ctx","getContext","fillRect","bitmap","transferToImageBitmap","createPattern","e","noop","promise","func","ModulePromise","exports","Prom","skipTransform","map","frame","cancel","TIME","frames","lastFrameTime","worker","prom","resolves","defaultFire","bitmapMapper","Map","transform","has","get","width","height","drawImage","set","clear","raf","Math","floor","requestAnimationFrame","cancelAnimationFrame","cb","id","random","onFrame","time","setTimeout","timer","clearTimeout","getWorker","code","toString","join","undefined","console","warn","execute","options","callback","postMessage","init","offscreen","fire","size","done","slice","resolve","workerDone","msg","data","removeEventListener","addEventListener","bind","reset","decorate","defaults","particleCount","angle","spread","startVelocity","decay","gravity","drift","ticks","x","y","shapes","zIndex","colors","disableForReducedMotion","scalar","prop","name","val","convert","onlyPositiveInt","number","toDecimal","str","parseInt","colorsToRgb","hexToRgb","String","replace","length","r","substring","g","b","setCanvasWindowSize","document","documentElement","clientWidth","clientHeight","setCanvasRectSize","rect","getBoundingClientRect","updateFetti","context","fetti","cos","angle2D","velocity","sin","flat","wobble","wobbleX","wobbleY","tiltSin","tiltCos","wobbleSpeed","tiltAngle","progress","tick","totalTicks","x1","y1","x2","y2","fillStyle","color","beginPath","shape","type","path","Array","isArray","matrix","fill","pathString","pathMatrix","scaleX","scaleY","rotation","path2d","t1","addPath","t2","transformPath2D","abs","PI","multiplySelf","pattern","setTransform","globalAlpha","ellipse","ovalScalar","radiusX","radiusY","startAngle","endAngle","antiClockwise","save","translate","rotate","scale","arc","restore","rot","innerRadius","outerRadius","spikes","step","lineTo","moveTo","closePath","confettiCannon","globalOpts","animationObj","isLibCanvas","allowResize","hasResizeEventRegistered","globalDisableForReducedMotion","Boolean","resizer","initialized","__confetti_initialized","preferLessMotion","matchMedia","matches","fireLocal","opts","radAngle","radSpread","min","max","Number","origin","Object","getOrigin","temp","fettis","startX","startY","push","addFettis","animationFrame","destroy","animatingFettis","onDone","clearRect","update","filter","concat","animate","createElement","style","position","top","left","pointerEvents","getCanvas","body","appendChild","onResize","obj","resize","contains","removeChild","getDefaultFire","useWorker","apply","this","arguments","create","shapeFromPath","pathData","Error","tempCtx","maxSize","minX","minY","maxX","maxY","isPointInPath","round","shapeFromText","textData","text","fontFamily","fontSize","font","measureText","ceil","actualBoundingBoxRight","actualBoundingBoxLeft","actualBoundingBoxAscent","actualBoundingBoxDescent","padding","fillText","window","self"],"sourceRoot":""}