kui-basic 1.1.185 → 1.1.187

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";require("react");var g=require("@emotion/styled/base"),I=require("@emotion/react"),C=require("@emotion/react/jsx-runtime");function c(g){return g&&"object"==typeof g&&"default"in g?g:{default:g}}var A=c(g);function b(g,I){var C=Object.keys(g);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(g);I&&(c=c.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),C.push.apply(C,c)}return C}function e(g){for(var I=1;I<arguments.length;I++){var C=null!=arguments[I]?arguments[I]:{};I%2?b(Object(C),!0).forEach((function(I){G(g,I,C[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(C)):b(Object(C)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(C,I))}))}return g}function i(g){var I=function(g,I){if("object"!=typeof g||!g)return g;var C=g[Symbol.toPrimitive];if(void 0!==C){var c=C.call(g,I||"default");if("object"!=typeof c)return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===I?String:Number)(g)}(g,"string");return"symbol"==typeof I?I:I+""}function G(g,I,C){return(I=i(I))in g?Object.defineProperty(g,I,{value:C,enumerable:!0,configurable:!0,writable:!0}):g[I]=C,g}function t(g,I){if(null==g)return{};var C,c,A=function(g,I){if(null==g)return{};var C={};for(var c in g)if(Object.prototype.hasOwnProperty.call(g,c)){if(I.indexOf(c)>=0)continue;C[c]=g[c]}return C}(g,I);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(g);for(c=0;c<b.length;c++)C=b[c],I.indexOf(C)>=0||Object.prototype.propertyIsEnumerable.call(g,C)&&(A[C]=g[C])}return A}function l(g,I){return I||(I=g.slice(0)),Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(I)}}))}var u,n,a=function(g,I,C,c,A){return(g-I)*(A-c)/(C-I)+c},X=function(g,I){var C=g+I;return C>360?C-360:C},Z=function(g,I){var C=Math.pow(10,I);return Math.round(g*C)/C},o=["particles"],d=function(g){var C=g.particle,c=g.degrees,A=g.bezierMedian,b=g.duration,i=g.force,t=g.size,o=g.delay,d=g.index,m=g.width,r=g.height,x=b-Math.round(1e3*Math.random()),B=Z(Math.abs(a(Math.abs(X(C.degree,90)-180),0,180,-1,1)),4),p=Z(Math.random()*A,4),y=Z(Math.random()*i*(Math.random()>.5?1:-1),4),s=A,W=Z(Math.max(a(Math.abs(C.degree-180),0,180,i,-i),0),4),h=function(g,C,c){var A=g.reduce((function(g,c,A){var b=a(Math.abs(X(c,90)-180),0,180,-C/2,C/2);return e(e({},g),{},G({},"x-axis-".concat(A),I.keyframes(u||(u=l(["\n 100% {\n transform: translateX(","px);\n }\n "])),b)))}),{});return e({"y-axis":I.keyframes(n||(n=l(["\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(",");\n }\n "])),c)},A)}(c,m,r),Y=Math.round(4*Math.random())+t;return G({},"&#confetti-particle-".concat(d),I.css({animation:"".concat(h["x-axis-".concat(d)]," ").concat(x,"ms forwards cubic-bezier(").concat(0,", ").concat(0,", ").concat(0,", ").concat(B,") ").concat(o||""),"& > svg":{opacity:0,width:Y,height:Y,animation:"".concat(h["y-axis"]," ").concat(x,"ms forwards cubic-bezier(").concat(p,", ").concat(y,", ").concat(s,", ").concat(W,") ").concat(o||""),"& > path":{fill:C.color}}},"production"===process.env.NODE_ENV?"":";label:confettoStyle;","production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxRnNDIiwiZmlsZSI6InN0eWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiXG5pbXBvcnQgeyBjb2luRmxpcCwgbWFwUmFuZ2UsIHJvdGF0ZSwgcm91bmQgfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQgeyBJUGFydGljbGUsIElQYXJ0aWNsZXNQcm9wcyB9IGZyb20gXCIuL2luZGV4XCJcblxuY29uc3QgY29uZmV0dGlLZXlmcmFtZXMgPSAoZGVncmVlcywgd2lkdGgsIGhlaWdodCkgPT4ge1xuICBjb25zdCB4TGFuZGluZ1BvaW50cyA9IGRlZ3JlZXMucmVkdWNlKChhY2MsIGRlZ3JlZSwgaSkgPT4ge1xuICAgIGNvbnN0IGxhbmRpbmdQb2ludCA9IG1hcFJhbmdlKFxuICAgICAgTWF0aC5hYnMocm90YXRlKGRlZ3JlZSwgOTApIC0gMTgwKSxcbiAgICAgIDAsXG4gICAgICAxODAsXG4gICAgICAtd2lkdGggLyAyLFxuICAgICAgd2lkdGggLyAyXG4gICAgKVxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBbYHgtYXhpcy0ke2l9YF06IGtleWZyYW1lc2BcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCR7bGFuZGluZ1BvaW50fXB4KTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICB9XG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgXCJ5LWF4aXNcIjoga2V5ZnJhbWVzYFxuICAgICAgMSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgOTAlIHtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgfVxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgke2hlaWdodH0pO1xuICAgICAgfVxuICAgIGAsXG4gICAgLi4ueExhbmRpbmdQb2ludHMsXG4gIH1cbn1cblxuY29uc3QgY29uZmV0dG9TdHlsZSA9ICh7XG4gIHBhcnRpY2xlLFxuICBkZWdyZWVzLFxuICBiZXppZXJNZWRpYW4sXG4gIGR1cmF0aW9uLFxuICBmb3JjZSxcbiAgc2l6ZSxcbiAgZGVsYXksXG4gIGluZGV4LFxuICB3aWR0aCxcbiAgaGVpZ2h0LFxufSkgPT4ge1xuICBjb25zdCBkdXJhdGlvbkNoYW9zID0gZHVyYXRpb24gLSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuXG4gIGNvbnN0IHgxID0gMFxuICBjb25zdCB4MiA9IDBcbiAgY29uc3QgeDMgPSAwXG4gIC8vIHgtYXhpcyBhcmMgb2YgZXhwbG9zaW9uLCBzbyA5MGRlZyBhbmQgMjcwZGVnIHBhcnRpY2xlcyBoYXZlIGN1cnZlIG9mIDEsIDBkZWcgYW5kIDE4MGRlZyBoYXZlIDBcbiAgY29uc3QgeDQgPSByb3VuZChcbiAgICBNYXRoLmFicyhcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHJvdGF0ZShwYXJ0aWNsZS5kZWdyZWUsIDkwKSAtIDE4MCksIDAsIDE4MCwgLTEsIDEpXG4gICAgKSxcbiAgICA0XG4gIClcblxuICAvLyByb3VnaGx5IGhvdyBmYXN0IHBhcnRpY2xlIHJlYWNoZXMgZW5kIG9mIGl0cyBleHBsb3Npb24gY3VydmVcbiAgY29uc3QgeTEgPSByb3VuZChNYXRoLnJhbmRvbSgpICogYmV6aWVyTWVkaWFuLCA0KVxuICAvLyByb3VnaGx5IG1hcHMgdG8gdGhlIGRpc3RhbmNlIHBhcnRpY2xlIGdvZXMgYmVmb3JlIHJlYWNoaW5nIGZyZWUtZmFsbFxuICBjb25zdCB5MiA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBmb3JjZSAqIChjb2luRmxpcCgpID8gMSA6IC0xKSwgNClcbiAgLy8gcm91Z2hseSBob3cgc29vbiB0aGUgcGFydGljbGUgdHJhbnNpdGlvbnMgZnJvbSBleHBsb3Npb24gdG8gZnJlZS1mYWxsXG4gIGNvbnN0IHkzID0gYmV6aWVyTWVkaWFuXG4gIC8vIHJvdWdobHkgdGhlIGVhc2Ugb2YgZnJlZS1mYWxsXG4gIGNvbnN0IHk0ID0gcm91bmQoXG4gICAgTWF0aC5tYXgoXG4gICAgICBtYXBSYW5nZShNYXRoLmFicyhwYXJ0aWNsZS5kZWdyZWUgLSAxODApLCAwLCAxODAsIGZvcmNlLCAtZm9yY2UpLFxuICAgICAgMFxuICAgICksXG4gICAgNFxuICApXG5cbiAgY29uc3QgY29uZmV0dGlLZXlmcmFtZSA9IGNvbmZldHRpS2V5ZnJhbWVzKGRlZ3JlZXMsIHdpZHRoLCBoZWlnaHQpXG4gIGNvbnN0IHBhcnRTaXplID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogNCkgKyBzaXplXG5cbiAgcmV0dXJuIHtcbiAgICBbYCYjY29uZmV0dGktcGFydGljbGUtJHtpbmRleH1gXTogY3NzKHtcbiAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbYHgtYXhpcy0ke2luZGV4fWBdXG4gICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt4MX0sICR7eDJ9LCAke3gzfSwgJHt4NH0pICR7XG4gICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgIH1gLFxuICAgICAgXCImID4gc3ZnXCI6IHtcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgd2lkdGg6IHBhcnRTaXplLFxuICAgICAgICBoZWlnaHQ6IHBhcnRTaXplLFxuICAgICAgICBhbmltYXRpb246IGAke1xuICAgICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbXCJ5LWF4aXNcIl1cbiAgICAgICAgfSAke2R1cmF0aW9uQ2hhb3N9bXMgZm9yd2FyZHMgY3ViaWMtYmV6aWVyKCR7eTF9LCAke3kyfSwgJHt5M30sICR7eTR9KSAke1xuICAgICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgICAgfWAsXG4gICAgICAgIFwiJiA+IHBhdGhcIjoge1xuICAgICAgICAgIGZpbGw6IHBhcnRpY2xlLmNvbG9yLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSxcbiAgfVxufVxuXG5jb25zdCB1c2VTdHlsZXMgPSAoeyBwYXJ0aWNsZXMsIC4uLm90aGVyIH0pID0+IHtcbiAgY29uc3QgY29uZmV0dGlTdHlsZXMgPSBwYXJ0aWNsZXMucmVkdWNlKFxuICAgIChhY2MsIHBhcnRpY2xlLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIC4uLmNvbmZldHRvU3R5bGUoe1xuICAgICAgICBwYXJ0aWNsZSxcbiAgICAgICAgZGVncmVlczogcGFydGljbGVzLm1hcCgocGFydCkgPT4gcGFydC5kZWdyZWUpLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgLi4ub3RoZXIsXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICB7fVxuICApXG4gIHJldHVybiBzdHlsZWQuZGl2KHtcbiAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiBcIjUwJVwiLFxuICAgIHpJbmRleDogMixcbiAgICBcIi5wYXJ0aWNsZVwiOiB7XG4gICAgICAuLi5jb25mZXR0aVN0eWxlcyxcbiAgICAgIFwiJiA+IHN2Z1wiOiB7XG4gICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgXCImOmFmdGVyXCI6IHtcbiAgICAgICAgICBjb250ZW50OiBgJydgLFxuICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlU3R5bGVzXG4iXX0= */"))},m=["particleElement","count","colors"];function r(g){var I=g.particleElement,c=g.count,b=g.colors,i=t(g,m),G=function(g,I){var C=360/I;return Array.from({length:I},(function(g,I){return I})).map((function(I){return{color:g[I%g.length],degree:C*I}}))}(b,c),l=function(g){var I=g.particles,C=t(g,o),c=I.reduce((function(g,c,A){return e(e({},g),d(e({particle:c,degrees:I.map((function(g){return g.degree})),index:A},C)))}),{});return A.default("div","production"===process.env.NODE_ENV?{target:"e19tyv1t0"}:{target:"e19tyv1t0",label:"useStyles"})({position:"absolute",top:0,left:"50%",zIndex:2,".particle":e(e({},c),{},{"& > svg":{position:"absolute",left:0,top:0,"&:after":{content:"''",display:"block",width:"100%",height:"100%"}}})},"production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5SFMiLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIlxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCJcbmltcG9ydCB7IGNvaW5GbGlwLCBtYXBSYW5nZSwgcm90YXRlLCByb3VuZCB9IGZyb20gXCIuL3V0aWxzXCJcbmltcG9ydCB7IElQYXJ0aWNsZSwgSVBhcnRpY2xlc1Byb3BzIH0gZnJvbSBcIi4vaW5kZXhcIlxuXG5jb25zdCBjb25mZXR0aUtleWZyYW1lcyA9IChkZWdyZWVzLCB3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gIGNvbnN0IHhMYW5kaW5nUG9pbnRzID0gZGVncmVlcy5yZWR1Y2UoKGFjYywgZGVncmVlLCBpKSA9PiB7XG4gICAgY29uc3QgbGFuZGluZ1BvaW50ID0gbWFwUmFuZ2UoXG4gICAgICBNYXRoLmFicyhyb3RhdGUoZGVncmVlLCA5MCkgLSAxODApLFxuICAgICAgMCxcbiAgICAgIDE4MCxcbiAgICAgIC13aWR0aCAvIDIsXG4gICAgICB3aWR0aCAvIDJcbiAgICApXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtgeC1heGlzLSR7aX1gXToga2V5ZnJhbWVzYFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHtsYW5kaW5nUG9pbnR9cHgpO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIH1cbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBcInktYXhpc1wiOiBrZXlmcmFtZXNgXG4gICAgICAxJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICA5MCUge1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICB9XG4gICAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCR7aGVpZ2h0fSk7XG4gICAgICB9XG4gICAgYCxcbiAgICAuLi54TGFuZGluZ1BvaW50cyxcbiAgfVxufVxuXG5jb25zdCBjb25mZXR0b1N0eWxlID0gKHtcbiAgcGFydGljbGUsXG4gIGRlZ3JlZXMsXG4gIGJlemllck1lZGlhbixcbiAgZHVyYXRpb24sXG4gIGZvcmNlLFxuICBzaXplLFxuICBkZWxheSxcbiAgaW5kZXgsXG4gIHdpZHRoLFxuICBoZWlnaHQsXG59KSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uQ2hhb3MgPSBkdXJhdGlvbiAtIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApXG5cbiAgY29uc3QgeDEgPSAwXG4gIGNvbnN0IHgyID0gMFxuICBjb25zdCB4MyA9IDBcbiAgLy8geC1heGlzIGFyYyBvZiBleHBsb3Npb24sIHNvIDkwZGVnIGFuZCAyNzBkZWcgcGFydGljbGVzIGhhdmUgY3VydmUgb2YgMSwgMGRlZyBhbmQgMTgwZGVnIGhhdmUgMFxuICBjb25zdCB4NCA9IHJvdW5kKFxuICAgIE1hdGguYWJzKFxuICAgICAgbWFwUmFuZ2UoTWF0aC5hYnMocm90YXRlKHBhcnRpY2xlLmRlZ3JlZSwgOTApIC0gMTgwKSwgMCwgMTgwLCAtMSwgMSlcbiAgICApLFxuICAgIDRcbiAgKVxuXG4gIC8vIHJvdWdobHkgaG93IGZhc3QgcGFydGljbGUgcmVhY2hlcyBlbmQgb2YgaXRzIGV4cGxvc2lvbiBjdXJ2ZVxuICBjb25zdCB5MSA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBiZXppZXJNZWRpYW4sIDQpXG4gIC8vIHJvdWdobHkgbWFwcyB0byB0aGUgZGlzdGFuY2UgcGFydGljbGUgZ29lcyBiZWZvcmUgcmVhY2hpbmcgZnJlZS1mYWxsXG4gIGNvbnN0IHkyID0gcm91bmQoTWF0aC5yYW5kb20oKSAqIGZvcmNlICogKGNvaW5GbGlwKCkgPyAxIDogLTEpLCA0KVxuICAvLyByb3VnaGx5IGhvdyBzb29uIHRoZSBwYXJ0aWNsZSB0cmFuc2l0aW9ucyBmcm9tIGV4cGxvc2lvbiB0byBmcmVlLWZhbGxcbiAgY29uc3QgeTMgPSBiZXppZXJNZWRpYW5cbiAgLy8gcm91Z2hseSB0aGUgZWFzZSBvZiBmcmVlLWZhbGxcbiAgY29uc3QgeTQgPSByb3VuZChcbiAgICBNYXRoLm1heChcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHBhcnRpY2xlLmRlZ3JlZSAtIDE4MCksIDAsIDE4MCwgZm9yY2UsIC1mb3JjZSksXG4gICAgICAwXG4gICAgKSxcbiAgICA0XG4gIClcblxuICBjb25zdCBjb25mZXR0aUtleWZyYW1lID0gY29uZmV0dGlLZXlmcmFtZXMoZGVncmVlcywgd2lkdGgsIGhlaWdodClcbiAgY29uc3QgcGFydFNpemUgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA0KSArIHNpemVcblxuICByZXR1cm4ge1xuICAgIFtgJiNjb25mZXR0aS1wYXJ0aWNsZS0ke2luZGV4fWBdOiBjc3Moe1xuICAgICAgYW5pbWF0aW9uOiBgJHtcbiAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtgeC1heGlzLSR7aW5kZXh9YF1cbiAgICAgIH0gJHtkdXJhdGlvbkNoYW9zfW1zIGZvcndhcmRzIGN1YmljLWJlemllcigke3gxfSwgJHt4Mn0sICR7eDN9LCAke3g0fSkgJHtcbiAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgfWAsXG4gICAgICBcIiYgPiBzdmdcIjoge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB3aWR0aDogcGFydFNpemUsXG4gICAgICAgIGhlaWdodDogcGFydFNpemUsXG4gICAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtcInktYXhpc1wiXVxuICAgICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt5MX0sICR7eTJ9LCAke3kzfSwgJHt5NH0pICR7XG4gICAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgXCImID4gcGF0aFwiOiB7XG4gICAgICAgICAgZmlsbDogcGFydGljbGUuY29sb3IsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pLFxuICB9XG59XG5cbmNvbnN0IHVzZVN0eWxlcyA9ICh7IHBhcnRpY2xlcywgLi4ub3RoZXIgfSkgPT4ge1xuICBjb25zdCBjb25mZXR0aVN0eWxlcyA9IHBhcnRpY2xlcy5yZWR1Y2UoXG4gICAgKGFjYywgcGFydGljbGUsIGluZGV4KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uY29uZmV0dG9TdHlsZSh7XG4gICAgICAgIHBhcnRpY2xlLFxuICAgICAgICBkZWdyZWVzOiBwYXJ0aWNsZXMubWFwKChwYXJ0KSA9PiBwYXJ0LmRlZ3JlZSksXG4gICAgICAgIGluZGV4LFxuICAgICAgICAuLi5vdGhlcixcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIHt9XG4gIClcbiAgcmV0dXJuIHN0eWxlZC5kaXYoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgdG9wOiAwLFxuICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgekluZGV4OiAyLFxuICAgIFwiLnBhcnRpY2xlXCI6IHtcbiAgICAgIC4uLmNvbmZldHRpU3R5bGVzLFxuICAgICAgXCImID4gc3ZnXCI6IHtcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBcIiY6YWZ0ZXJcIjoge1xuICAgICAgICAgIGNvbnRlbnQ6IGAnJ2AsXG4gICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTdHlsZXNcbiJdfQ== */")}({particles:G});return C.jsx(l,e(e({},i),{},{children:G.map((function(g,c){return C.jsx("div",{id:"confetti-particle-".concat(c),className:"particle",children:I||C.jsx("div",{})},g.degree)}))}))}r.defaultProps={count:100,bezierMedian:.7,duration:4e3,force:.7,size:8,width:400,height:"700px"},module.exports=r;
1
+ "use strict";require("react");var g=require("@emotion/styled/base"),I=require("@emotion/react"),C=require("@emotion/react/jsx-runtime");function A(g){return g&&"object"==typeof g&&"default"in g?g:{default:g}}var c=A(g);function b(g,I){var C=Object.keys(g);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(g);I&&(A=A.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),C.push.apply(C,A)}return C}function G(g){for(var I=1;I<arguments.length;I++){var C=null!=arguments[I]?arguments[I]:{};I%2?b(Object(C),!0).forEach((function(I){t(g,I,C[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(C)):b(Object(C)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(C,I))}))}return g}function i(g){var I=function(g,I){if("object"!=typeof g||!g)return g;var C=g[Symbol.toPrimitive];if(void 0!==C){var A=C.call(g,I||"default");if("object"!=typeof A)return A;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===I?String:Number)(g)}(g,"string");return"symbol"==typeof I?I:I+""}function t(g,I,C){return(I=i(I))in g?Object.defineProperty(g,I,{value:C,enumerable:!0,configurable:!0,writable:!0}):g[I]=C,g}function e(g,I){if(null==g)return{};var C,A,c=function(g,I){if(null==g)return{};var C={};for(var A in g)if(Object.prototype.hasOwnProperty.call(g,A)){if(I.indexOf(A)>=0)continue;C[A]=g[A]}return C}(g,I);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(g);for(A=0;A<b.length;A++)C=b[A],I.indexOf(C)>=0||Object.prototype.propertyIsEnumerable.call(g,C)&&(c[C]=g[C])}return c}function l(g,I){return I||(I=g.slice(0)),Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(I)}}))}var u,n,a=function(g,I,C,A,c){return(g-I)*(c-A)/(C-I)+A},X=function(g,I){var C=g+I;return C>360?C-360:C},o=function(g,I){var C=Math.pow(10,I);return Math.round(g*C)/C},Z=["particles","htmlTag"],m=function(g){var C=g.particle,A=g.degrees,c=g.bezierMedian,b=g.duration,i=g.force,e=g.size,Z=g.delay,m=g.index,d=g.width,r=g.height,x=g.htmlTag,B=b-Math.round(1e3*Math.random()),s=o(Math.abs(a(Math.abs(X(C.degree,90)-180),0,180,-1,1)),4),p=o(Math.random()*c,4),W=o(Math.random()*i*(Math.random()>.5?1:-1),4),y=c,h=o(Math.max(a(Math.abs(C.degree-180),0,180,i,-i),0),4),Y=function(g,C,A){var c=g.reduce((function(g,A,c){var b=a(Math.abs(X(A,90)-180),0,180,-C/2,C/2);return G(G({},g),{},t({},"x-axis-".concat(c),I.keyframes(u||(u=l(["\n 100% {\n transform: translateX(","px);\n }\n "])),b)))}),{});return G({"y-axis":I.keyframes(n||(n=l(["\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(",");\n }\n "])),A)},c)}(A,d,r),F=Math.round(4*Math.random())+e;return t({},"&#confetti-particle-".concat(m),I.css(t({animation:"".concat(Y["x-axis-".concat(m)]," ").concat(B,"ms forwards cubic-bezier(").concat(0,", ").concat(0,", ").concat(0,", ").concat(s,") ").concat(Z||"")},"& > ".concat(x||"div"),G({opacity:0,width:F,height:F,animation:"".concat(Y["y-axis"]," ").concat(B,"ms forwards cubic-bezier(").concat(p,", ").concat(W,", ").concat(y,", ").concat(h,") ").concat(Z||"")},"svg"===x?{"& > path":{fill:C.color}}:{background:C.color})),"production"===process.env.NODE_ENV?"":";label:confettoStyle;","production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzRnNDIiwiZmlsZSI6InN0eWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiXG5pbXBvcnQgeyBjb2luRmxpcCwgbWFwUmFuZ2UsIHJvdGF0ZSwgcm91bmQgfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQgeyBJUGFydGljbGUsIElQYXJ0aWNsZXNQcm9wcyB9IGZyb20gXCIuL2luZGV4XCJcblxuY29uc3QgY29uZmV0dGlLZXlmcmFtZXMgPSAoZGVncmVlcywgd2lkdGgsIGhlaWdodCkgPT4ge1xuICBjb25zdCB4TGFuZGluZ1BvaW50cyA9IGRlZ3JlZXMucmVkdWNlKChhY2MsIGRlZ3JlZSwgaSkgPT4ge1xuICAgIGNvbnN0IGxhbmRpbmdQb2ludCA9IG1hcFJhbmdlKFxuICAgICAgTWF0aC5hYnMocm90YXRlKGRlZ3JlZSwgOTApIC0gMTgwKSxcbiAgICAgIDAsXG4gICAgICAxODAsXG4gICAgICAtd2lkdGggLyAyLFxuICAgICAgd2lkdGggLyAyXG4gICAgKVxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBbYHgtYXhpcy0ke2l9YF06IGtleWZyYW1lc2BcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCR7bGFuZGluZ1BvaW50fXB4KTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICB9XG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgXCJ5LWF4aXNcIjoga2V5ZnJhbWVzYFxuICAgICAgMSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgOTAlIHtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgfVxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgke2hlaWdodH0pO1xuICAgICAgfVxuICAgIGAsXG4gICAgLi4ueExhbmRpbmdQb2ludHMsXG4gIH1cbn1cblxuY29uc3QgY29uZmV0dG9TdHlsZSA9ICh7XG4gIHBhcnRpY2xlLFxuICBkZWdyZWVzLFxuICBiZXppZXJNZWRpYW4sXG4gIGR1cmF0aW9uLFxuICBmb3JjZSxcbiAgc2l6ZSxcbiAgZGVsYXksXG4gIGluZGV4LFxuICB3aWR0aCxcbiAgaGVpZ2h0LFxuICBodG1sVGFnLFxufSkgPT4ge1xuICBjb25zdCBkdXJhdGlvbkNoYW9zID0gZHVyYXRpb24gLSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuXG4gIGNvbnN0IHgxID0gMFxuICBjb25zdCB4MiA9IDBcbiAgY29uc3QgeDMgPSAwXG4gIC8vIHgtYXhpcyBhcmMgb2YgZXhwbG9zaW9uLCBzbyA5MGRlZyBhbmQgMjcwZGVnIHBhcnRpY2xlcyBoYXZlIGN1cnZlIG9mIDEsIDBkZWcgYW5kIDE4MGRlZyBoYXZlIDBcbiAgY29uc3QgeDQgPSByb3VuZChcbiAgICBNYXRoLmFicyhcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHJvdGF0ZShwYXJ0aWNsZS5kZWdyZWUsIDkwKSAtIDE4MCksIDAsIDE4MCwgLTEsIDEpXG4gICAgKSxcbiAgICA0XG4gIClcblxuICAvLyByb3VnaGx5IGhvdyBmYXN0IHBhcnRpY2xlIHJlYWNoZXMgZW5kIG9mIGl0cyBleHBsb3Npb24gY3VydmVcbiAgY29uc3QgeTEgPSByb3VuZChNYXRoLnJhbmRvbSgpICogYmV6aWVyTWVkaWFuLCA0KVxuICAvLyByb3VnaGx5IG1hcHMgdG8gdGhlIGRpc3RhbmNlIHBhcnRpY2xlIGdvZXMgYmVmb3JlIHJlYWNoaW5nIGZyZWUtZmFsbFxuICBjb25zdCB5MiA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBmb3JjZSAqIChjb2luRmxpcCgpID8gMSA6IC0xKSwgNClcbiAgLy8gcm91Z2hseSBob3cgc29vbiB0aGUgcGFydGljbGUgdHJhbnNpdGlvbnMgZnJvbSBleHBsb3Npb24gdG8gZnJlZS1mYWxsXG4gIGNvbnN0IHkzID0gYmV6aWVyTWVkaWFuXG4gIC8vIHJvdWdobHkgdGhlIGVhc2Ugb2YgZnJlZS1mYWxsXG4gIGNvbnN0IHk0ID0gcm91bmQoXG4gICAgTWF0aC5tYXgoXG4gICAgICBtYXBSYW5nZShNYXRoLmFicyhwYXJ0aWNsZS5kZWdyZWUgLSAxODApLCAwLCAxODAsIGZvcmNlLCAtZm9yY2UpLFxuICAgICAgMFxuICAgICksXG4gICAgNFxuICApXG5cbiAgY29uc3QgY29uZmV0dGlLZXlmcmFtZSA9IGNvbmZldHRpS2V5ZnJhbWVzKGRlZ3JlZXMsIHdpZHRoLCBoZWlnaHQpXG4gIGNvbnN0IHBhcnRTaXplID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogNCkgKyBzaXplXG5cbiAgcmV0dXJuIHtcbiAgICBbYCYjY29uZmV0dGktcGFydGljbGUtJHtpbmRleH1gXTogY3NzKHtcbiAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbYHgtYXhpcy0ke2luZGV4fWBdXG4gICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt4MX0sICR7eDJ9LCAke3gzfSwgJHt4NH0pICR7XG4gICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgIH1gLFxuICAgICAgW2AmID4gJHtodG1sVGFnIHx8IFwiZGl2XCJ9YF06IHtcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgd2lkdGg6IHBhcnRTaXplLFxuICAgICAgICBoZWlnaHQ6IHBhcnRTaXplLFxuICAgICAgICBhbmltYXRpb246IGAke1xuICAgICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbXCJ5LWF4aXNcIl1cbiAgICAgICAgfSAke2R1cmF0aW9uQ2hhb3N9bXMgZm9yd2FyZHMgY3ViaWMtYmV6aWVyKCR7eTF9LCAke3kyfSwgJHt5M30sICR7eTR9KSAke1xuICAgICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgICAgfWAsXG4gICAgICAgIC4uLihodG1sVGFnID09PSBcInN2Z1wiXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIFwiJiA+IHBhdGhcIjoge1xuICAgICAgICAgICAgICAgIGZpbGw6IHBhcnRpY2xlLmNvbG9yLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBwYXJ0aWNsZS5jb2xvcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KSxcbiAgfVxufVxuXG5jb25zdCB1c2VTdHlsZXMgPSAoeyBwYXJ0aWNsZXMsIGh0bWxUYWcsIC4uLm90aGVyIH0pID0+IHtcbiAgY29uc3QgY29uZmV0dGlTdHlsZXMgPSBwYXJ0aWNsZXMucmVkdWNlKFxuICAgIChhY2MsIHBhcnRpY2xlLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIC4uLmNvbmZldHRvU3R5bGUoe1xuICAgICAgICBwYXJ0aWNsZSxcbiAgICAgICAgZGVncmVlczogcGFydGljbGVzLm1hcCgocGFydCkgPT4gcGFydC5kZWdyZWUpLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgaHRtbFRhZyxcbiAgICAgICAgLi4ub3RoZXIsXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICB7fVxuICApXG4gIHJldHVybiBzdHlsZWQuZGl2KHtcbiAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiBcIjUwJVwiLFxuICAgIHpJbmRleDogMixcbiAgICBcIi5wYXJ0aWNsZVwiOiB7XG4gICAgICAuLi5jb25mZXR0aVN0eWxlcyxcbiAgICAgIFtgJiA+ICR7aHRtbFRhZyB8fCBcImRpdlwifWBdOiB7XG4gICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgXCImOmFmdGVyXCI6IHtcbiAgICAgICAgICBjb250ZW50OiBgJydgLFxuICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlU3R5bGVzXG4iXX0= */"))},d=["particleElement","count","colors","className"];function r(g){var I=g.particleElement,A=g.count,b=g.colors,i=g.className,l=e(g,d),u=function(g,I){var C=360/I;return Array.from({length:I},(function(g,I){return I})).map((function(I){return{color:g[I%g.length],degree:C*I}}))}(b,A),n=function(g){var I=g.particles,C=g.htmlTag,A=e(g,Z),b=I.reduce((function(g,c,b){return G(G({},g),m(G({particle:c,degrees:I.map((function(g){return g.degree})),index:b,htmlTag:C},A)))}),{});return c.default("div","production"===process.env.NODE_ENV?{target:"e19tyv1t0"}:{target:"e19tyv1t0",label:"useStyles"})({position:"absolute",top:0,left:"50%",zIndex:2,".particle":G(G({},b),{},t({},"& > ".concat(C||"div"),{position:"absolute",left:0,top:0,"&:after":{content:"''",display:"block",width:"100%",height:"100%"}}))},"production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpSVMiLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIlxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCJcbmltcG9ydCB7IGNvaW5GbGlwLCBtYXBSYW5nZSwgcm90YXRlLCByb3VuZCB9IGZyb20gXCIuL3V0aWxzXCJcbmltcG9ydCB7IElQYXJ0aWNsZSwgSVBhcnRpY2xlc1Byb3BzIH0gZnJvbSBcIi4vaW5kZXhcIlxuXG5jb25zdCBjb25mZXR0aUtleWZyYW1lcyA9IChkZWdyZWVzLCB3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gIGNvbnN0IHhMYW5kaW5nUG9pbnRzID0gZGVncmVlcy5yZWR1Y2UoKGFjYywgZGVncmVlLCBpKSA9PiB7XG4gICAgY29uc3QgbGFuZGluZ1BvaW50ID0gbWFwUmFuZ2UoXG4gICAgICBNYXRoLmFicyhyb3RhdGUoZGVncmVlLCA5MCkgLSAxODApLFxuICAgICAgMCxcbiAgICAgIDE4MCxcbiAgICAgIC13aWR0aCAvIDIsXG4gICAgICB3aWR0aCAvIDJcbiAgICApXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtgeC1heGlzLSR7aX1gXToga2V5ZnJhbWVzYFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHtsYW5kaW5nUG9pbnR9cHgpO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIH1cbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBcInktYXhpc1wiOiBrZXlmcmFtZXNgXG4gICAgICAxJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICA5MCUge1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICB9XG4gICAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCR7aGVpZ2h0fSk7XG4gICAgICB9XG4gICAgYCxcbiAgICAuLi54TGFuZGluZ1BvaW50cyxcbiAgfVxufVxuXG5jb25zdCBjb25mZXR0b1N0eWxlID0gKHtcbiAgcGFydGljbGUsXG4gIGRlZ3JlZXMsXG4gIGJlemllck1lZGlhbixcbiAgZHVyYXRpb24sXG4gIGZvcmNlLFxuICBzaXplLFxuICBkZWxheSxcbiAgaW5kZXgsXG4gIHdpZHRoLFxuICBoZWlnaHQsXG4gIGh0bWxUYWcsXG59KSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uQ2hhb3MgPSBkdXJhdGlvbiAtIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApXG5cbiAgY29uc3QgeDEgPSAwXG4gIGNvbnN0IHgyID0gMFxuICBjb25zdCB4MyA9IDBcbiAgLy8geC1heGlzIGFyYyBvZiBleHBsb3Npb24sIHNvIDkwZGVnIGFuZCAyNzBkZWcgcGFydGljbGVzIGhhdmUgY3VydmUgb2YgMSwgMGRlZyBhbmQgMTgwZGVnIGhhdmUgMFxuICBjb25zdCB4NCA9IHJvdW5kKFxuICAgIE1hdGguYWJzKFxuICAgICAgbWFwUmFuZ2UoTWF0aC5hYnMocm90YXRlKHBhcnRpY2xlLmRlZ3JlZSwgOTApIC0gMTgwKSwgMCwgMTgwLCAtMSwgMSlcbiAgICApLFxuICAgIDRcbiAgKVxuXG4gIC8vIHJvdWdobHkgaG93IGZhc3QgcGFydGljbGUgcmVhY2hlcyBlbmQgb2YgaXRzIGV4cGxvc2lvbiBjdXJ2ZVxuICBjb25zdCB5MSA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBiZXppZXJNZWRpYW4sIDQpXG4gIC8vIHJvdWdobHkgbWFwcyB0byB0aGUgZGlzdGFuY2UgcGFydGljbGUgZ29lcyBiZWZvcmUgcmVhY2hpbmcgZnJlZS1mYWxsXG4gIGNvbnN0IHkyID0gcm91bmQoTWF0aC5yYW5kb20oKSAqIGZvcmNlICogKGNvaW5GbGlwKCkgPyAxIDogLTEpLCA0KVxuICAvLyByb3VnaGx5IGhvdyBzb29uIHRoZSBwYXJ0aWNsZSB0cmFuc2l0aW9ucyBmcm9tIGV4cGxvc2lvbiB0byBmcmVlLWZhbGxcbiAgY29uc3QgeTMgPSBiZXppZXJNZWRpYW5cbiAgLy8gcm91Z2hseSB0aGUgZWFzZSBvZiBmcmVlLWZhbGxcbiAgY29uc3QgeTQgPSByb3VuZChcbiAgICBNYXRoLm1heChcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHBhcnRpY2xlLmRlZ3JlZSAtIDE4MCksIDAsIDE4MCwgZm9yY2UsIC1mb3JjZSksXG4gICAgICAwXG4gICAgKSxcbiAgICA0XG4gIClcblxuICBjb25zdCBjb25mZXR0aUtleWZyYW1lID0gY29uZmV0dGlLZXlmcmFtZXMoZGVncmVlcywgd2lkdGgsIGhlaWdodClcbiAgY29uc3QgcGFydFNpemUgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA0KSArIHNpemVcblxuICByZXR1cm4ge1xuICAgIFtgJiNjb25mZXR0aS1wYXJ0aWNsZS0ke2luZGV4fWBdOiBjc3Moe1xuICAgICAgYW5pbWF0aW9uOiBgJHtcbiAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtgeC1heGlzLSR7aW5kZXh9YF1cbiAgICAgIH0gJHtkdXJhdGlvbkNoYW9zfW1zIGZvcndhcmRzIGN1YmljLWJlemllcigke3gxfSwgJHt4Mn0sICR7eDN9LCAke3g0fSkgJHtcbiAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgfWAsXG4gICAgICBbYCYgPiAke2h0bWxUYWcgfHwgXCJkaXZcIn1gXToge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB3aWR0aDogcGFydFNpemUsXG4gICAgICAgIGhlaWdodDogcGFydFNpemUsXG4gICAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtcInktYXhpc1wiXVxuICAgICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt5MX0sICR7eTJ9LCAke3kzfSwgJHt5NH0pICR7XG4gICAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgLi4uKGh0bWxUYWcgPT09IFwic3ZnXCJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgXCImID4gcGF0aFwiOiB7XG4gICAgICAgICAgICAgICAgZmlsbDogcGFydGljbGUuY29sb3IsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHBhcnRpY2xlLmNvbG9yLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pLFxuICB9XG59XG5cbmNvbnN0IHVzZVN0eWxlcyA9ICh7IHBhcnRpY2xlcywgaHRtbFRhZywgLi4ub3RoZXIgfSkgPT4ge1xuICBjb25zdCBjb25mZXR0aVN0eWxlcyA9IHBhcnRpY2xlcy5yZWR1Y2UoXG4gICAgKGFjYywgcGFydGljbGUsIGluZGV4KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uY29uZmV0dG9TdHlsZSh7XG4gICAgICAgIHBhcnRpY2xlLFxuICAgICAgICBkZWdyZWVzOiBwYXJ0aWNsZXMubWFwKChwYXJ0KSA9PiBwYXJ0LmRlZ3JlZSksXG4gICAgICAgIGluZGV4LFxuICAgICAgICBodG1sVGFnLFxuICAgICAgICAuLi5vdGhlcixcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIHt9XG4gIClcbiAgcmV0dXJuIHN0eWxlZC5kaXYoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgdG9wOiAwLFxuICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgekluZGV4OiAyLFxuICAgIFwiLnBhcnRpY2xlXCI6IHtcbiAgICAgIC4uLmNvbmZldHRpU3R5bGVzLFxuICAgICAgW2AmID4gJHtodG1sVGFnIHx8IFwiZGl2XCJ9YF06IHtcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBcIiY6YWZ0ZXJcIjoge1xuICAgICAgICAgIGNvbnRlbnQ6IGAnJ2AsXG4gICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTdHlsZXNcbiJdfQ== */")}(G({particles:u},l));return C.jsx(n,{className:i,children:u.map((function(g,A){return C.jsx("div",{id:"confetti-particle-".concat(A),className:"particle",children:I||C.jsx("div",{})},g.degree)}))})}r.defaultProps={count:100,bezierMedian:.7,duration:4e3,force:.7,size:8,width:400,height:"700px"},module.exports=r;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/ParticlesExplosion/utils.js","../../../src/components/ParticlesExplosion/styles.js","../../../src/components/ParticlesExplosion/index.js"],"sourcesContent":["export const mapRange = (value, x1, y1, x2, y2) =>\n ((value - x1) * (y2 - x2)) / (y1 - x1) + x2\n\nexport const rotate = (degree, amount) => {\n const result = degree + amount\n return result > 360 ? result - 360 : result\n}\n\nexport const coinFlip = () => Math.random() > 0.5\n\nexport const round = (number, decimalPlaces) => {\n const factor = 10 ** decimalPlaces\n return Math.round(number * factor) / factor\n}\n","import { css, keyframes } from \"@emotion/react\"\nimport styled from \"@emotion/styled\"\nimport { coinFlip, mapRange, rotate, round } from \"./utils\"\nimport { IParticle, IParticlesProps } from \"./index\"\n\nconst confettiKeyframes = (degrees, width, height) => {\n const xLandingPoints = degrees.reduce((acc, degree, i) => {\n const landingPoint = mapRange(\n Math.abs(rotate(degree, 90) - 180),\n 0,\n 180,\n -width / 2,\n width / 2\n )\n return {\n ...acc,\n [`x-axis-${i}`]: keyframes`\n 100% {\n transform: translateX(${landingPoint}px);\n }\n `,\n }\n }, {})\n\n return {\n \"y-axis\": keyframes`\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(${height});\n }\n `,\n ...xLandingPoints,\n }\n}\n\nconst confettoStyle = ({\n particle,\n degrees,\n bezierMedian,\n duration,\n force,\n size,\n delay,\n index,\n width,\n height,\n}) => {\n const durationChaos = duration - Math.round(Math.random() * 1000)\n\n const x1 = 0\n const x2 = 0\n const x3 = 0\n // x-axis arc of explosion, so 90deg and 270deg particles have curve of 1, 0deg and 180deg have 0\n const x4 = round(\n Math.abs(\n mapRange(Math.abs(rotate(particle.degree, 90) - 180), 0, 180, -1, 1)\n ),\n 4\n )\n\n // roughly how fast particle reaches end of its explosion curve\n const y1 = round(Math.random() * bezierMedian, 4)\n // roughly maps to the distance particle goes before reaching free-fall\n const y2 = round(Math.random() * force * (coinFlip() ? 1 : -1), 4)\n // roughly how soon the particle transitions from explosion to free-fall\n const y3 = bezierMedian\n // roughly the ease of free-fall\n const y4 = round(\n Math.max(\n mapRange(Math.abs(particle.degree - 180), 0, 180, force, -force),\n 0\n ),\n 4\n )\n\n const confettiKeyframe = confettiKeyframes(degrees, width, height)\n const partSize = Math.round(Math.random() * 4) + size\n\n return {\n [`&#confetti-particle-${index}`]: css({\n animation: `${\n confettiKeyframe[`x-axis-${index}`]\n } ${durationChaos}ms forwards cubic-bezier(${x1}, ${x2}, ${x3}, ${x4}) ${\n delay || \"\"\n }`,\n \"& > svg\": {\n opacity: 0,\n width: partSize,\n height: partSize,\n animation: `${\n confettiKeyframe[\"y-axis\"]\n } ${durationChaos}ms forwards cubic-bezier(${y1}, ${y2}, ${y3}, ${y4}) ${\n delay || \"\"\n }`,\n \"& > path\": {\n fill: particle.color,\n },\n },\n }),\n }\n}\n\nconst useStyles = ({ particles, ...other }) => {\n const confettiStyles = particles.reduce(\n (acc, particle, index) => ({\n ...acc,\n ...confettoStyle({\n particle,\n degrees: particles.map((part) => part.degree),\n index,\n ...other,\n }),\n }),\n {}\n )\n return styled.div({\n position: \"absolute\",\n top: 0,\n left: \"50%\",\n zIndex: 2,\n \".particle\": {\n ...confettiStyles,\n \"& > svg\": {\n position: \"absolute\",\n left: 0,\n top: 0,\n \"&:after\": {\n content: `''`,\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n },\n })\n}\n\nexport default useStyles\n","import * as React from \"react\"\nimport useStyles from \"./styles\"\n\nconst createParticles = (colors, count) => {\n const increment = 360 / count\n return Array.from({ length: count }, (value, index) => index).map(\n (index) => ({\n color: colors[index % colors.length],\n degree: increment * index,\n })\n )\n}\n\nfunction ParticlesExplosion(props) {\n const { particleElement, count, colors, ...other } = props\n const particles = createParticles(colors, count)\n const ParticlesWrapper = useStyles({\n particles,\n })\n\n return (\n <ParticlesWrapper {...other}>\n {particles.map((particle, i) => (\n <div\n id={`confetti-particle-${i}`}\n className=\"particle\"\n key={particle.degree}\n >\n {particleElement || <div />}\n </div>\n ))}\n </ParticlesWrapper>\n )\n}\n\nParticlesExplosion.defaultProps = {\n count: 100,\n bezierMedian: 0.7,\n duration: 4000,\n force: 0.7,\n size: 8,\n width: 400,\n height: \"700px\",\n}\n\nexport default ParticlesExplosion\n"],"names":["mapRange","value","x1","y1","x2","y2","rotate","degree","amount","result","round","number","decimalPlaces","factor","Math","pow","confettoStyle","_ref","particle","degrees","bezierMedian","duration","force","size","delay","index","width","height","durationChaos","random","x4","abs","y3","y4","max","confettiKeyframe","xLandingPoints","reduce","acc","i","landingPoint","_objectSpread","_defineProperty","concat","keyframes","_templateObject","_taggedTemplateLiteral","_templateObject2","confettiKeyframes","partSize","css","animation","opacity","fill","color","process","env","NODE_ENV","ParticlesExplosion","props","particleElement","count","colors","other","_objectWithoutProperties","_excluded","particles","increment","Array","from","length","map","createParticles","ParticlesWrapper","_ref3","confettiStyles","part","_styled","target","label","position","top","left","zIndex","content","display","useStyles","_jsx","children","id","className","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ParticlesExplosion/utils.js","../../../src/components/ParticlesExplosion/styles.js","../../../src/components/ParticlesExplosion/index.js"],"sourcesContent":["export const mapRange = (value, x1, y1, x2, y2) =>\n ((value - x1) * (y2 - x2)) / (y1 - x1) + x2\n\nexport const rotate = (degree, amount) => {\n const result = degree + amount\n return result > 360 ? result - 360 : result\n}\n\nexport const coinFlip = () => Math.random() > 0.5\n\nexport const round = (number, decimalPlaces) => {\n const factor = 10 ** decimalPlaces\n return Math.round(number * factor) / factor\n}\n","import { css, keyframes } from \"@emotion/react\"\nimport styled from \"@emotion/styled\"\nimport { coinFlip, mapRange, rotate, round } from \"./utils\"\nimport { IParticle, IParticlesProps } from \"./index\"\n\nconst confettiKeyframes = (degrees, width, height) => {\n const xLandingPoints = degrees.reduce((acc, degree, i) => {\n const landingPoint = mapRange(\n Math.abs(rotate(degree, 90) - 180),\n 0,\n 180,\n -width / 2,\n width / 2\n )\n return {\n ...acc,\n [`x-axis-${i}`]: keyframes`\n 100% {\n transform: translateX(${landingPoint}px);\n }\n `,\n }\n }, {})\n\n return {\n \"y-axis\": keyframes`\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(${height});\n }\n `,\n ...xLandingPoints,\n }\n}\n\nconst confettoStyle = ({\n particle,\n degrees,\n bezierMedian,\n duration,\n force,\n size,\n delay,\n index,\n width,\n height,\n htmlTag,\n}) => {\n const durationChaos = duration - Math.round(Math.random() * 1000)\n\n const x1 = 0\n const x2 = 0\n const x3 = 0\n // x-axis arc of explosion, so 90deg and 270deg particles have curve of 1, 0deg and 180deg have 0\n const x4 = round(\n Math.abs(\n mapRange(Math.abs(rotate(particle.degree, 90) - 180), 0, 180, -1, 1)\n ),\n 4\n )\n\n // roughly how fast particle reaches end of its explosion curve\n const y1 = round(Math.random() * bezierMedian, 4)\n // roughly maps to the distance particle goes before reaching free-fall\n const y2 = round(Math.random() * force * (coinFlip() ? 1 : -1), 4)\n // roughly how soon the particle transitions from explosion to free-fall\n const y3 = bezierMedian\n // roughly the ease of free-fall\n const y4 = round(\n Math.max(\n mapRange(Math.abs(particle.degree - 180), 0, 180, force, -force),\n 0\n ),\n 4\n )\n\n const confettiKeyframe = confettiKeyframes(degrees, width, height)\n const partSize = Math.round(Math.random() * 4) + size\n\n return {\n [`&#confetti-particle-${index}`]: css({\n animation: `${\n confettiKeyframe[`x-axis-${index}`]\n } ${durationChaos}ms forwards cubic-bezier(${x1}, ${x2}, ${x3}, ${x4}) ${\n delay || \"\"\n }`,\n [`& > ${htmlTag || \"div\"}`]: {\n opacity: 0,\n width: partSize,\n height: partSize,\n animation: `${\n confettiKeyframe[\"y-axis\"]\n } ${durationChaos}ms forwards cubic-bezier(${y1}, ${y2}, ${y3}, ${y4}) ${\n delay || \"\"\n }`,\n ...(htmlTag === \"svg\"\n ? {\n \"& > path\": {\n fill: particle.color,\n },\n }\n : {\n background: particle.color,\n }),\n },\n }),\n }\n}\n\nconst useStyles = ({ particles, htmlTag, ...other }) => {\n const confettiStyles = particles.reduce(\n (acc, particle, index) => ({\n ...acc,\n ...confettoStyle({\n particle,\n degrees: particles.map((part) => part.degree),\n index,\n htmlTag,\n ...other,\n }),\n }),\n {}\n )\n return styled.div({\n position: \"absolute\",\n top: 0,\n left: \"50%\",\n zIndex: 2,\n \".particle\": {\n ...confettiStyles,\n [`& > ${htmlTag || \"div\"}`]: {\n position: \"absolute\",\n left: 0,\n top: 0,\n \"&:after\": {\n content: `''`,\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n },\n })\n}\n\nexport default useStyles\n","import * as React from \"react\"\nimport useStyles from \"./styles\"\n\nconst createParticles = (colors, count) => {\n const increment = 360 / count\n return Array.from({ length: count }, (value, index) => index).map(\n (index) => ({\n color: colors[index % colors.length],\n degree: increment * index,\n })\n )\n}\n\nfunction ParticlesExplosion(props) {\n const { particleElement, count, colors, className, ...other } = props\n const particles = createParticles(colors, count)\n const ParticlesWrapper = useStyles({\n particles,\n ...other,\n })\n\n return (\n <ParticlesWrapper className={className}>\n {particles.map((particle, i) => (\n <div\n id={`confetti-particle-${i}`}\n className=\"particle\"\n key={particle.degree}\n >\n {particleElement || <div />}\n </div>\n ))}\n </ParticlesWrapper>\n )\n}\n\nParticlesExplosion.defaultProps = {\n count: 100,\n bezierMedian: 0.7,\n duration: 4000,\n force: 0.7,\n size: 8,\n width: 400,\n height: \"700px\",\n}\n\nexport default ParticlesExplosion\n"],"names":["mapRange","value","x1","y1","x2","y2","rotate","degree","amount","result","round","number","decimalPlaces","factor","Math","pow","confettoStyle","_ref","particle","degrees","bezierMedian","duration","force","size","delay","index","width","height","htmlTag","durationChaos","random","x4","abs","y3","y4","max","confettiKeyframe","xLandingPoints","reduce","acc","i","landingPoint","_objectSpread","_defineProperty","concat","keyframes","_templateObject","_taggedTemplateLiteral","_templateObject2","confettiKeyframes","partSize","css","animation","opacity","fill","color","background","process","env","NODE_ENV","ParticlesExplosion","props","particleElement","count","colors","className","other","_objectWithoutProperties","_excluded","particles","increment","Array","from","length","map","createParticles","ParticlesWrapper","_ref3","confettiStyles","part","_styled","target","label","position","top","left","zIndex","content","display","useStyles","_jsx","children","id","defaultProps"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
- interface ParticlesExplosionType
4
+ interface ParticlesExplosionProps
5
5
  extends React.DetailedHTMLProps<
6
6
  React.HTMLAttributes<HTMLDivElement>,
7
7
  HTMLDivElement
@@ -17,8 +17,13 @@ interface ParticlesExplosionType
17
17
  delay?: string
18
18
  width?: number
19
19
  height?: number | string
20
+ htmlTag?: string
20
21
  }
21
22
 
23
+ type ParticlesExplosionType = (
24
+ props: ParticlesExplosionProps
25
+ ) => React.ReactElement
26
+
22
27
  declare const ParticlesExplosion: ParticlesExplosionType
23
28
 
24
- export { ParticlesExplosionType, ParticlesExplosion as default };
29
+ export { ParticlesExplosionProps, ParticlesExplosionType, ParticlesExplosion as default };
@@ -1,2 +1,2 @@
1
- import"react";import g from"@emotion/styled/base";import{css as I,keyframes as C}from"@emotion/react";import{jsx as c}from"@emotion/react/jsx-runtime";function A(g,I){var C=Object.keys(g);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(g);I&&(c=c.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),C.push.apply(C,c)}return C}function b(g){for(var I=1;I<arguments.length;I++){var C=null!=arguments[I]?arguments[I]:{};I%2?A(Object(C),!0).forEach((function(I){i(g,I,C[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(C)):A(Object(C)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(C,I))}))}return g}function G(g){var I=function(g,I){if("object"!=typeof g||!g)return g;var C=g[Symbol.toPrimitive];if(void 0!==C){var c=C.call(g,I||"default");if("object"!=typeof c)return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===I?String:Number)(g)}(g,"string");return"symbol"==typeof I?I:I+""}function i(g,I,C){return(I=G(I))in g?Object.defineProperty(g,I,{value:C,enumerable:!0,configurable:!0,writable:!0}):g[I]=C,g}function t(g,I){if(null==g)return{};var C,c,A=function(g,I){if(null==g)return{};var C={};for(var c in g)if(Object.prototype.hasOwnProperty.call(g,c)){if(I.indexOf(c)>=0)continue;C[c]=g[c]}return C}(g,I);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(g);for(c=0;c<b.length;c++)C=b[c],I.indexOf(C)>=0||Object.prototype.propertyIsEnumerable.call(g,C)&&(A[C]=g[C])}return A}function e(g,I){return I||(I=g.slice(0)),Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(I)}}))}var l,u,n=function(g,I,C,c,A){return(g-I)*(A-c)/(C-I)+c},a=function(g,I){var C=g+I;return C>360?C-360:C},o=function(g,I){var C=Math.pow(10,I);return Math.round(g*C)/C},X=["particles"],Z=function(g){var c=g.particle,A=g.degrees,G=g.bezierMedian,t=g.duration,X=g.force,Z=g.size,m=g.delay,d=g.index,r=g.width,B=g.height,x=t-Math.round(1e3*Math.random()),p=o(Math.abs(n(Math.abs(a(c.degree,90)-180),0,180,-1,1)),4),y=o(Math.random()*G,4),W=o(Math.random()*X*(Math.random()>.5?1:-1),4),h=G,s=o(Math.max(n(Math.abs(c.degree-180),0,180,X,-X),0),4),Y=function(g,I,c){var A=g.reduce((function(g,c,A){var G=n(Math.abs(a(c,90)-180),0,180,-I/2,I/2);return b(b({},g),{},i({},"x-axis-".concat(A),C(l||(l=e(["\n 100% {\n transform: translateX(","px);\n }\n "])),G)))}),{});return b({"y-axis":C(u||(u=e(["\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(",");\n }\n "])),c)},A)}(A,r,B),F=Math.round(4*Math.random())+Z;return i({},"&#confetti-particle-".concat(d),I({animation:"".concat(Y["x-axis-".concat(d)]," ").concat(x,"ms forwards cubic-bezier(").concat(0,", ").concat(0,", ").concat(0,", ").concat(p,") ").concat(m||""),"& > svg":{opacity:0,width:F,height:F,animation:"".concat(Y["y-axis"]," ").concat(x,"ms forwards cubic-bezier(").concat(y,", ").concat(W,", ").concat(h,", ").concat(s,") ").concat(m||""),"& > path":{fill:c.color}}},"production"===process.env.NODE_ENV?"":";label:confettoStyle;","production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxRnNDIiwiZmlsZSI6InN0eWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiXG5pbXBvcnQgeyBjb2luRmxpcCwgbWFwUmFuZ2UsIHJvdGF0ZSwgcm91bmQgfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQgeyBJUGFydGljbGUsIElQYXJ0aWNsZXNQcm9wcyB9IGZyb20gXCIuL2luZGV4XCJcblxuY29uc3QgY29uZmV0dGlLZXlmcmFtZXMgPSAoZGVncmVlcywgd2lkdGgsIGhlaWdodCkgPT4ge1xuICBjb25zdCB4TGFuZGluZ1BvaW50cyA9IGRlZ3JlZXMucmVkdWNlKChhY2MsIGRlZ3JlZSwgaSkgPT4ge1xuICAgIGNvbnN0IGxhbmRpbmdQb2ludCA9IG1hcFJhbmdlKFxuICAgICAgTWF0aC5hYnMocm90YXRlKGRlZ3JlZSwgOTApIC0gMTgwKSxcbiAgICAgIDAsXG4gICAgICAxODAsXG4gICAgICAtd2lkdGggLyAyLFxuICAgICAgd2lkdGggLyAyXG4gICAgKVxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBbYHgtYXhpcy0ke2l9YF06IGtleWZyYW1lc2BcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCR7bGFuZGluZ1BvaW50fXB4KTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICB9XG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgXCJ5LWF4aXNcIjoga2V5ZnJhbWVzYFxuICAgICAgMSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgOTAlIHtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgfVxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgke2hlaWdodH0pO1xuICAgICAgfVxuICAgIGAsXG4gICAgLi4ueExhbmRpbmdQb2ludHMsXG4gIH1cbn1cblxuY29uc3QgY29uZmV0dG9TdHlsZSA9ICh7XG4gIHBhcnRpY2xlLFxuICBkZWdyZWVzLFxuICBiZXppZXJNZWRpYW4sXG4gIGR1cmF0aW9uLFxuICBmb3JjZSxcbiAgc2l6ZSxcbiAgZGVsYXksXG4gIGluZGV4LFxuICB3aWR0aCxcbiAgaGVpZ2h0LFxufSkgPT4ge1xuICBjb25zdCBkdXJhdGlvbkNoYW9zID0gZHVyYXRpb24gLSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuXG4gIGNvbnN0IHgxID0gMFxuICBjb25zdCB4MiA9IDBcbiAgY29uc3QgeDMgPSAwXG4gIC8vIHgtYXhpcyBhcmMgb2YgZXhwbG9zaW9uLCBzbyA5MGRlZyBhbmQgMjcwZGVnIHBhcnRpY2xlcyBoYXZlIGN1cnZlIG9mIDEsIDBkZWcgYW5kIDE4MGRlZyBoYXZlIDBcbiAgY29uc3QgeDQgPSByb3VuZChcbiAgICBNYXRoLmFicyhcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHJvdGF0ZShwYXJ0aWNsZS5kZWdyZWUsIDkwKSAtIDE4MCksIDAsIDE4MCwgLTEsIDEpXG4gICAgKSxcbiAgICA0XG4gIClcblxuICAvLyByb3VnaGx5IGhvdyBmYXN0IHBhcnRpY2xlIHJlYWNoZXMgZW5kIG9mIGl0cyBleHBsb3Npb24gY3VydmVcbiAgY29uc3QgeTEgPSByb3VuZChNYXRoLnJhbmRvbSgpICogYmV6aWVyTWVkaWFuLCA0KVxuICAvLyByb3VnaGx5IG1hcHMgdG8gdGhlIGRpc3RhbmNlIHBhcnRpY2xlIGdvZXMgYmVmb3JlIHJlYWNoaW5nIGZyZWUtZmFsbFxuICBjb25zdCB5MiA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBmb3JjZSAqIChjb2luRmxpcCgpID8gMSA6IC0xKSwgNClcbiAgLy8gcm91Z2hseSBob3cgc29vbiB0aGUgcGFydGljbGUgdHJhbnNpdGlvbnMgZnJvbSBleHBsb3Npb24gdG8gZnJlZS1mYWxsXG4gIGNvbnN0IHkzID0gYmV6aWVyTWVkaWFuXG4gIC8vIHJvdWdobHkgdGhlIGVhc2Ugb2YgZnJlZS1mYWxsXG4gIGNvbnN0IHk0ID0gcm91bmQoXG4gICAgTWF0aC5tYXgoXG4gICAgICBtYXBSYW5nZShNYXRoLmFicyhwYXJ0aWNsZS5kZWdyZWUgLSAxODApLCAwLCAxODAsIGZvcmNlLCAtZm9yY2UpLFxuICAgICAgMFxuICAgICksXG4gICAgNFxuICApXG5cbiAgY29uc3QgY29uZmV0dGlLZXlmcmFtZSA9IGNvbmZldHRpS2V5ZnJhbWVzKGRlZ3JlZXMsIHdpZHRoLCBoZWlnaHQpXG4gIGNvbnN0IHBhcnRTaXplID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogNCkgKyBzaXplXG5cbiAgcmV0dXJuIHtcbiAgICBbYCYjY29uZmV0dGktcGFydGljbGUtJHtpbmRleH1gXTogY3NzKHtcbiAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbYHgtYXhpcy0ke2luZGV4fWBdXG4gICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt4MX0sICR7eDJ9LCAke3gzfSwgJHt4NH0pICR7XG4gICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgIH1gLFxuICAgICAgXCImID4gc3ZnXCI6IHtcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgd2lkdGg6IHBhcnRTaXplLFxuICAgICAgICBoZWlnaHQ6IHBhcnRTaXplLFxuICAgICAgICBhbmltYXRpb246IGAke1xuICAgICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbXCJ5LWF4aXNcIl1cbiAgICAgICAgfSAke2R1cmF0aW9uQ2hhb3N9bXMgZm9yd2FyZHMgY3ViaWMtYmV6aWVyKCR7eTF9LCAke3kyfSwgJHt5M30sICR7eTR9KSAke1xuICAgICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgICAgfWAsXG4gICAgICAgIFwiJiA+IHBhdGhcIjoge1xuICAgICAgICAgIGZpbGw6IHBhcnRpY2xlLmNvbG9yLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSxcbiAgfVxufVxuXG5jb25zdCB1c2VTdHlsZXMgPSAoeyBwYXJ0aWNsZXMsIC4uLm90aGVyIH0pID0+IHtcbiAgY29uc3QgY29uZmV0dGlTdHlsZXMgPSBwYXJ0aWNsZXMucmVkdWNlKFxuICAgIChhY2MsIHBhcnRpY2xlLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIC4uLmNvbmZldHRvU3R5bGUoe1xuICAgICAgICBwYXJ0aWNsZSxcbiAgICAgICAgZGVncmVlczogcGFydGljbGVzLm1hcCgocGFydCkgPT4gcGFydC5kZWdyZWUpLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgLi4ub3RoZXIsXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICB7fVxuICApXG4gIHJldHVybiBzdHlsZWQuZGl2KHtcbiAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiBcIjUwJVwiLFxuICAgIHpJbmRleDogMixcbiAgICBcIi5wYXJ0aWNsZVwiOiB7XG4gICAgICAuLi5jb25mZXR0aVN0eWxlcyxcbiAgICAgIFwiJiA+IHN2Z1wiOiB7XG4gICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgXCImOmFmdGVyXCI6IHtcbiAgICAgICAgICBjb250ZW50OiBgJydgLFxuICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlU3R5bGVzXG4iXX0= */"))},m=["particleElement","count","colors"];function d(I){var C=I.particleElement,A=I.count,G=I.colors,i=t(I,m),e=function(g,I){var C=360/I;return Array.from({length:I},(function(g,I){return I})).map((function(I){return{color:g[I%g.length],degree:C*I}}))}(G,A),l=function(I){var C=I.particles,c=t(I,X),A=C.reduce((function(g,I,A){return b(b({},g),Z(b({particle:I,degrees:C.map((function(g){return g.degree})),index:A},c)))}),{});return g("div","production"===process.env.NODE_ENV?{target:"e19tyv1t0"}:{target:"e19tyv1t0",label:"useStyles"})({position:"absolute",top:0,left:"50%",zIndex:2,".particle":b(b({},A),{},{"& > svg":{position:"absolute",left:0,top:0,"&:after":{content:"''",display:"block",width:"100%",height:"100%"}}})},"production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5SFMiLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIlxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCJcbmltcG9ydCB7IGNvaW5GbGlwLCBtYXBSYW5nZSwgcm90YXRlLCByb3VuZCB9IGZyb20gXCIuL3V0aWxzXCJcbmltcG9ydCB7IElQYXJ0aWNsZSwgSVBhcnRpY2xlc1Byb3BzIH0gZnJvbSBcIi4vaW5kZXhcIlxuXG5jb25zdCBjb25mZXR0aUtleWZyYW1lcyA9IChkZWdyZWVzLCB3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gIGNvbnN0IHhMYW5kaW5nUG9pbnRzID0gZGVncmVlcy5yZWR1Y2UoKGFjYywgZGVncmVlLCBpKSA9PiB7XG4gICAgY29uc3QgbGFuZGluZ1BvaW50ID0gbWFwUmFuZ2UoXG4gICAgICBNYXRoLmFicyhyb3RhdGUoZGVncmVlLCA5MCkgLSAxODApLFxuICAgICAgMCxcbiAgICAgIDE4MCxcbiAgICAgIC13aWR0aCAvIDIsXG4gICAgICB3aWR0aCAvIDJcbiAgICApXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtgeC1heGlzLSR7aX1gXToga2V5ZnJhbWVzYFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHtsYW5kaW5nUG9pbnR9cHgpO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIH1cbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBcInktYXhpc1wiOiBrZXlmcmFtZXNgXG4gICAgICAxJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICA5MCUge1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICB9XG4gICAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCR7aGVpZ2h0fSk7XG4gICAgICB9XG4gICAgYCxcbiAgICAuLi54TGFuZGluZ1BvaW50cyxcbiAgfVxufVxuXG5jb25zdCBjb25mZXR0b1N0eWxlID0gKHtcbiAgcGFydGljbGUsXG4gIGRlZ3JlZXMsXG4gIGJlemllck1lZGlhbixcbiAgZHVyYXRpb24sXG4gIGZvcmNlLFxuICBzaXplLFxuICBkZWxheSxcbiAgaW5kZXgsXG4gIHdpZHRoLFxuICBoZWlnaHQsXG59KSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uQ2hhb3MgPSBkdXJhdGlvbiAtIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApXG5cbiAgY29uc3QgeDEgPSAwXG4gIGNvbnN0IHgyID0gMFxuICBjb25zdCB4MyA9IDBcbiAgLy8geC1heGlzIGFyYyBvZiBleHBsb3Npb24sIHNvIDkwZGVnIGFuZCAyNzBkZWcgcGFydGljbGVzIGhhdmUgY3VydmUgb2YgMSwgMGRlZyBhbmQgMTgwZGVnIGhhdmUgMFxuICBjb25zdCB4NCA9IHJvdW5kKFxuICAgIE1hdGguYWJzKFxuICAgICAgbWFwUmFuZ2UoTWF0aC5hYnMocm90YXRlKHBhcnRpY2xlLmRlZ3JlZSwgOTApIC0gMTgwKSwgMCwgMTgwLCAtMSwgMSlcbiAgICApLFxuICAgIDRcbiAgKVxuXG4gIC8vIHJvdWdobHkgaG93IGZhc3QgcGFydGljbGUgcmVhY2hlcyBlbmQgb2YgaXRzIGV4cGxvc2lvbiBjdXJ2ZVxuICBjb25zdCB5MSA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBiZXppZXJNZWRpYW4sIDQpXG4gIC8vIHJvdWdobHkgbWFwcyB0byB0aGUgZGlzdGFuY2UgcGFydGljbGUgZ29lcyBiZWZvcmUgcmVhY2hpbmcgZnJlZS1mYWxsXG4gIGNvbnN0IHkyID0gcm91bmQoTWF0aC5yYW5kb20oKSAqIGZvcmNlICogKGNvaW5GbGlwKCkgPyAxIDogLTEpLCA0KVxuICAvLyByb3VnaGx5IGhvdyBzb29uIHRoZSBwYXJ0aWNsZSB0cmFuc2l0aW9ucyBmcm9tIGV4cGxvc2lvbiB0byBmcmVlLWZhbGxcbiAgY29uc3QgeTMgPSBiZXppZXJNZWRpYW5cbiAgLy8gcm91Z2hseSB0aGUgZWFzZSBvZiBmcmVlLWZhbGxcbiAgY29uc3QgeTQgPSByb3VuZChcbiAgICBNYXRoLm1heChcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHBhcnRpY2xlLmRlZ3JlZSAtIDE4MCksIDAsIDE4MCwgZm9yY2UsIC1mb3JjZSksXG4gICAgICAwXG4gICAgKSxcbiAgICA0XG4gIClcblxuICBjb25zdCBjb25mZXR0aUtleWZyYW1lID0gY29uZmV0dGlLZXlmcmFtZXMoZGVncmVlcywgd2lkdGgsIGhlaWdodClcbiAgY29uc3QgcGFydFNpemUgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA0KSArIHNpemVcblxuICByZXR1cm4ge1xuICAgIFtgJiNjb25mZXR0aS1wYXJ0aWNsZS0ke2luZGV4fWBdOiBjc3Moe1xuICAgICAgYW5pbWF0aW9uOiBgJHtcbiAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtgeC1heGlzLSR7aW5kZXh9YF1cbiAgICAgIH0gJHtkdXJhdGlvbkNoYW9zfW1zIGZvcndhcmRzIGN1YmljLWJlemllcigke3gxfSwgJHt4Mn0sICR7eDN9LCAke3g0fSkgJHtcbiAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgfWAsXG4gICAgICBcIiYgPiBzdmdcIjoge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB3aWR0aDogcGFydFNpemUsXG4gICAgICAgIGhlaWdodDogcGFydFNpemUsXG4gICAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtcInktYXhpc1wiXVxuICAgICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt5MX0sICR7eTJ9LCAke3kzfSwgJHt5NH0pICR7XG4gICAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgXCImID4gcGF0aFwiOiB7XG4gICAgICAgICAgZmlsbDogcGFydGljbGUuY29sb3IsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pLFxuICB9XG59XG5cbmNvbnN0IHVzZVN0eWxlcyA9ICh7IHBhcnRpY2xlcywgLi4ub3RoZXIgfSkgPT4ge1xuICBjb25zdCBjb25mZXR0aVN0eWxlcyA9IHBhcnRpY2xlcy5yZWR1Y2UoXG4gICAgKGFjYywgcGFydGljbGUsIGluZGV4KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uY29uZmV0dG9TdHlsZSh7XG4gICAgICAgIHBhcnRpY2xlLFxuICAgICAgICBkZWdyZWVzOiBwYXJ0aWNsZXMubWFwKChwYXJ0KSA9PiBwYXJ0LmRlZ3JlZSksXG4gICAgICAgIGluZGV4LFxuICAgICAgICAuLi5vdGhlcixcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIHt9XG4gIClcbiAgcmV0dXJuIHN0eWxlZC5kaXYoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgdG9wOiAwLFxuICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgekluZGV4OiAyLFxuICAgIFwiLnBhcnRpY2xlXCI6IHtcbiAgICAgIC4uLmNvbmZldHRpU3R5bGVzLFxuICAgICAgXCImID4gc3ZnXCI6IHtcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBcIiY6YWZ0ZXJcIjoge1xuICAgICAgICAgIGNvbnRlbnQ6IGAnJ2AsXG4gICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTdHlsZXNcbiJdfQ== */")}({particles:e});return c(l,b(b({},i),{},{children:e.map((function(g,I){return c("div",{id:"confetti-particle-".concat(I),className:"particle",children:C||c("div",{})},g.degree)}))}))}d.defaultProps={count:100,bezierMedian:.7,duration:4e3,force:.7,size:8,width:400,height:"700px"};export{d as default};
1
+ import"react";import g from"@emotion/styled/base";import{css as I,keyframes as C}from"@emotion/react";import{jsx as A}from"@emotion/react/jsx-runtime";function c(g,I){var C=Object.keys(g);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(g);I&&(A=A.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),C.push.apply(C,A)}return C}function b(g){for(var I=1;I<arguments.length;I++){var C=null!=arguments[I]?arguments[I]:{};I%2?c(Object(C),!0).forEach((function(I){i(g,I,C[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(C)):c(Object(C)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(C,I))}))}return g}function G(g){var I=function(g,I){if("object"!=typeof g||!g)return g;var C=g[Symbol.toPrimitive];if(void 0!==C){var A=C.call(g,I||"default");if("object"!=typeof A)return A;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===I?String:Number)(g)}(g,"string");return"symbol"==typeof I?I:I+""}function i(g,I,C){return(I=G(I))in g?Object.defineProperty(g,I,{value:C,enumerable:!0,configurable:!0,writable:!0}):g[I]=C,g}function t(g,I){if(null==g)return{};var C,A,c=function(g,I){if(null==g)return{};var C={};for(var A in g)if(Object.prototype.hasOwnProperty.call(g,A)){if(I.indexOf(A)>=0)continue;C[A]=g[A]}return C}(g,I);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(g);for(A=0;A<b.length;A++)C=b[A],I.indexOf(C)>=0||Object.prototype.propertyIsEnumerable.call(g,C)&&(c[C]=g[C])}return c}function l(g,I){return I||(I=g.slice(0)),Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(I)}}))}var e,u,n=function(g,I,C,A,c){return(g-I)*(c-A)/(C-I)+A},a=function(g,I){var C=g+I;return C>360?C-360:C},o=function(g,I){var C=Math.pow(10,I);return Math.round(g*C)/C},X=["particles","htmlTag"],Z=function(g){var A=g.particle,c=g.degrees,G=g.bezierMedian,t=g.duration,X=g.force,Z=g.size,m=g.delay,d=g.index,x=g.width,B=g.height,r=g.htmlTag,p=t-Math.round(1e3*Math.random()),W=o(Math.abs(n(Math.abs(a(A.degree,90)-180),0,180,-1,1)),4),h=o(Math.random()*G,4),s=o(Math.random()*X*(Math.random()>.5?1:-1),4),y=G,Y=o(Math.max(n(Math.abs(A.degree-180),0,180,X,-X),0),4),F=function(g,I,A){var c=g.reduce((function(g,A,c){var G=n(Math.abs(a(A,90)-180),0,180,-I/2,I/2);return b(b({},g),{},i({},"x-axis-".concat(c),C(e||(e=l(["\n 100% {\n transform: translateX(","px);\n }\n "])),G)))}),{});return b({"y-axis":C(u||(u=l(["\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(",");\n }\n "])),A)},c)}(c,x,B),V=Math.round(4*Math.random())+Z;return i({},"&#confetti-particle-".concat(d),I(i({animation:"".concat(F["x-axis-".concat(d)]," ").concat(p,"ms forwards cubic-bezier(").concat(0,", ").concat(0,", ").concat(0,", ").concat(W,") ").concat(m||"")},"& > ".concat(r||"div"),b({opacity:0,width:V,height:V,animation:"".concat(F["y-axis"]," ").concat(p,"ms forwards cubic-bezier(").concat(h,", ").concat(s,", ").concat(y,", ").concat(Y,") ").concat(m||"")},"svg"===r?{"& > path":{fill:A.color}}:{background:A.color})),"production"===process.env.NODE_ENV?"":";label:confettoStyle;","production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzRnNDIiwiZmlsZSI6InN0eWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiXG5pbXBvcnQgeyBjb2luRmxpcCwgbWFwUmFuZ2UsIHJvdGF0ZSwgcm91bmQgfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQgeyBJUGFydGljbGUsIElQYXJ0aWNsZXNQcm9wcyB9IGZyb20gXCIuL2luZGV4XCJcblxuY29uc3QgY29uZmV0dGlLZXlmcmFtZXMgPSAoZGVncmVlcywgd2lkdGgsIGhlaWdodCkgPT4ge1xuICBjb25zdCB4TGFuZGluZ1BvaW50cyA9IGRlZ3JlZXMucmVkdWNlKChhY2MsIGRlZ3JlZSwgaSkgPT4ge1xuICAgIGNvbnN0IGxhbmRpbmdQb2ludCA9IG1hcFJhbmdlKFxuICAgICAgTWF0aC5hYnMocm90YXRlKGRlZ3JlZSwgOTApIC0gMTgwKSxcbiAgICAgIDAsXG4gICAgICAxODAsXG4gICAgICAtd2lkdGggLyAyLFxuICAgICAgd2lkdGggLyAyXG4gICAgKVxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBbYHgtYXhpcy0ke2l9YF06IGtleWZyYW1lc2BcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCR7bGFuZGluZ1BvaW50fXB4KTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICB9XG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgXCJ5LWF4aXNcIjoga2V5ZnJhbWVzYFxuICAgICAgMSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgOTAlIHtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgfVxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgke2hlaWdodH0pO1xuICAgICAgfVxuICAgIGAsXG4gICAgLi4ueExhbmRpbmdQb2ludHMsXG4gIH1cbn1cblxuY29uc3QgY29uZmV0dG9TdHlsZSA9ICh7XG4gIHBhcnRpY2xlLFxuICBkZWdyZWVzLFxuICBiZXppZXJNZWRpYW4sXG4gIGR1cmF0aW9uLFxuICBmb3JjZSxcbiAgc2l6ZSxcbiAgZGVsYXksXG4gIGluZGV4LFxuICB3aWR0aCxcbiAgaGVpZ2h0LFxuICBodG1sVGFnLFxufSkgPT4ge1xuICBjb25zdCBkdXJhdGlvbkNoYW9zID0gZHVyYXRpb24gLSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuXG4gIGNvbnN0IHgxID0gMFxuICBjb25zdCB4MiA9IDBcbiAgY29uc3QgeDMgPSAwXG4gIC8vIHgtYXhpcyBhcmMgb2YgZXhwbG9zaW9uLCBzbyA5MGRlZyBhbmQgMjcwZGVnIHBhcnRpY2xlcyBoYXZlIGN1cnZlIG9mIDEsIDBkZWcgYW5kIDE4MGRlZyBoYXZlIDBcbiAgY29uc3QgeDQgPSByb3VuZChcbiAgICBNYXRoLmFicyhcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHJvdGF0ZShwYXJ0aWNsZS5kZWdyZWUsIDkwKSAtIDE4MCksIDAsIDE4MCwgLTEsIDEpXG4gICAgKSxcbiAgICA0XG4gIClcblxuICAvLyByb3VnaGx5IGhvdyBmYXN0IHBhcnRpY2xlIHJlYWNoZXMgZW5kIG9mIGl0cyBleHBsb3Npb24gY3VydmVcbiAgY29uc3QgeTEgPSByb3VuZChNYXRoLnJhbmRvbSgpICogYmV6aWVyTWVkaWFuLCA0KVxuICAvLyByb3VnaGx5IG1hcHMgdG8gdGhlIGRpc3RhbmNlIHBhcnRpY2xlIGdvZXMgYmVmb3JlIHJlYWNoaW5nIGZyZWUtZmFsbFxuICBjb25zdCB5MiA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBmb3JjZSAqIChjb2luRmxpcCgpID8gMSA6IC0xKSwgNClcbiAgLy8gcm91Z2hseSBob3cgc29vbiB0aGUgcGFydGljbGUgdHJhbnNpdGlvbnMgZnJvbSBleHBsb3Npb24gdG8gZnJlZS1mYWxsXG4gIGNvbnN0IHkzID0gYmV6aWVyTWVkaWFuXG4gIC8vIHJvdWdobHkgdGhlIGVhc2Ugb2YgZnJlZS1mYWxsXG4gIGNvbnN0IHk0ID0gcm91bmQoXG4gICAgTWF0aC5tYXgoXG4gICAgICBtYXBSYW5nZShNYXRoLmFicyhwYXJ0aWNsZS5kZWdyZWUgLSAxODApLCAwLCAxODAsIGZvcmNlLCAtZm9yY2UpLFxuICAgICAgMFxuICAgICksXG4gICAgNFxuICApXG5cbiAgY29uc3QgY29uZmV0dGlLZXlmcmFtZSA9IGNvbmZldHRpS2V5ZnJhbWVzKGRlZ3JlZXMsIHdpZHRoLCBoZWlnaHQpXG4gIGNvbnN0IHBhcnRTaXplID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogNCkgKyBzaXplXG5cbiAgcmV0dXJuIHtcbiAgICBbYCYjY29uZmV0dGktcGFydGljbGUtJHtpbmRleH1gXTogY3NzKHtcbiAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbYHgtYXhpcy0ke2luZGV4fWBdXG4gICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt4MX0sICR7eDJ9LCAke3gzfSwgJHt4NH0pICR7XG4gICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgIH1gLFxuICAgICAgW2AmID4gJHtodG1sVGFnIHx8IFwiZGl2XCJ9YF06IHtcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgd2lkdGg6IHBhcnRTaXplLFxuICAgICAgICBoZWlnaHQ6IHBhcnRTaXplLFxuICAgICAgICBhbmltYXRpb246IGAke1xuICAgICAgICAgIGNvbmZldHRpS2V5ZnJhbWVbXCJ5LWF4aXNcIl1cbiAgICAgICAgfSAke2R1cmF0aW9uQ2hhb3N9bXMgZm9yd2FyZHMgY3ViaWMtYmV6aWVyKCR7eTF9LCAke3kyfSwgJHt5M30sICR7eTR9KSAke1xuICAgICAgICAgIGRlbGF5IHx8IFwiXCJcbiAgICAgICAgfWAsXG4gICAgICAgIC4uLihodG1sVGFnID09PSBcInN2Z1wiXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIFwiJiA+IHBhdGhcIjoge1xuICAgICAgICAgICAgICAgIGZpbGw6IHBhcnRpY2xlLmNvbG9yLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBwYXJ0aWNsZS5jb2xvcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KSxcbiAgfVxufVxuXG5jb25zdCB1c2VTdHlsZXMgPSAoeyBwYXJ0aWNsZXMsIGh0bWxUYWcsIC4uLm90aGVyIH0pID0+IHtcbiAgY29uc3QgY29uZmV0dGlTdHlsZXMgPSBwYXJ0aWNsZXMucmVkdWNlKFxuICAgIChhY2MsIHBhcnRpY2xlLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIC4uLmNvbmZldHRvU3R5bGUoe1xuICAgICAgICBwYXJ0aWNsZSxcbiAgICAgICAgZGVncmVlczogcGFydGljbGVzLm1hcCgocGFydCkgPT4gcGFydC5kZWdyZWUpLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgaHRtbFRhZyxcbiAgICAgICAgLi4ub3RoZXIsXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICB7fVxuICApXG4gIHJldHVybiBzdHlsZWQuZGl2KHtcbiAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiBcIjUwJVwiLFxuICAgIHpJbmRleDogMixcbiAgICBcIi5wYXJ0aWNsZVwiOiB7XG4gICAgICAuLi5jb25mZXR0aVN0eWxlcyxcbiAgICAgIFtgJiA+ICR7aHRtbFRhZyB8fCBcImRpdlwifWBdOiB7XG4gICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgXCImOmFmdGVyXCI6IHtcbiAgICAgICAgICBjb250ZW50OiBgJydgLFxuICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIixcbiAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlU3R5bGVzXG4iXX0= */"))},m=["particleElement","count","colors","className"];function d(I){var C=I.particleElement,c=I.count,G=I.colors,l=I.className,e=t(I,m),u=function(g,I){var C=360/I;return Array.from({length:I},(function(g,I){return I})).map((function(I){return{color:g[I%g.length],degree:C*I}}))}(G,c),n=function(I){var C=I.particles,A=I.htmlTag,c=t(I,X),G=C.reduce((function(g,I,G){return b(b({},g),Z(b({particle:I,degrees:C.map((function(g){return g.degree})),index:G,htmlTag:A},c)))}),{});return g("div","production"===process.env.NODE_ENV?{target:"e19tyv1t0"}:{target:"e19tyv1t0",label:"useStyles"})({position:"absolute",top:0,left:"50%",zIndex:2,".particle":b(b({},G),{},i({},"& > ".concat(A||"div"),{position:"absolute",left:0,top:0,"&:after":{content:"''",display:"block",width:"100%",height:"100%"}}))},"production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpSVMiLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIlxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCJcbmltcG9ydCB7IGNvaW5GbGlwLCBtYXBSYW5nZSwgcm90YXRlLCByb3VuZCB9IGZyb20gXCIuL3V0aWxzXCJcbmltcG9ydCB7IElQYXJ0aWNsZSwgSVBhcnRpY2xlc1Byb3BzIH0gZnJvbSBcIi4vaW5kZXhcIlxuXG5jb25zdCBjb25mZXR0aUtleWZyYW1lcyA9IChkZWdyZWVzLCB3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gIGNvbnN0IHhMYW5kaW5nUG9pbnRzID0gZGVncmVlcy5yZWR1Y2UoKGFjYywgZGVncmVlLCBpKSA9PiB7XG4gICAgY29uc3QgbGFuZGluZ1BvaW50ID0gbWFwUmFuZ2UoXG4gICAgICBNYXRoLmFicyhyb3RhdGUoZGVncmVlLCA5MCkgLSAxODApLFxuICAgICAgMCxcbiAgICAgIDE4MCxcbiAgICAgIC13aWR0aCAvIDIsXG4gICAgICB3aWR0aCAvIDJcbiAgICApXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtgeC1heGlzLSR7aX1gXToga2V5ZnJhbWVzYFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHtsYW5kaW5nUG9pbnR9cHgpO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIH1cbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBcInktYXhpc1wiOiBrZXlmcmFtZXNgXG4gICAgICAxJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICA5MCUge1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICB9XG4gICAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCR7aGVpZ2h0fSk7XG4gICAgICB9XG4gICAgYCxcbiAgICAuLi54TGFuZGluZ1BvaW50cyxcbiAgfVxufVxuXG5jb25zdCBjb25mZXR0b1N0eWxlID0gKHtcbiAgcGFydGljbGUsXG4gIGRlZ3JlZXMsXG4gIGJlemllck1lZGlhbixcbiAgZHVyYXRpb24sXG4gIGZvcmNlLFxuICBzaXplLFxuICBkZWxheSxcbiAgaW5kZXgsXG4gIHdpZHRoLFxuICBoZWlnaHQsXG4gIGh0bWxUYWcsXG59KSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uQ2hhb3MgPSBkdXJhdGlvbiAtIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApXG5cbiAgY29uc3QgeDEgPSAwXG4gIGNvbnN0IHgyID0gMFxuICBjb25zdCB4MyA9IDBcbiAgLy8geC1heGlzIGFyYyBvZiBleHBsb3Npb24sIHNvIDkwZGVnIGFuZCAyNzBkZWcgcGFydGljbGVzIGhhdmUgY3VydmUgb2YgMSwgMGRlZyBhbmQgMTgwZGVnIGhhdmUgMFxuICBjb25zdCB4NCA9IHJvdW5kKFxuICAgIE1hdGguYWJzKFxuICAgICAgbWFwUmFuZ2UoTWF0aC5hYnMocm90YXRlKHBhcnRpY2xlLmRlZ3JlZSwgOTApIC0gMTgwKSwgMCwgMTgwLCAtMSwgMSlcbiAgICApLFxuICAgIDRcbiAgKVxuXG4gIC8vIHJvdWdobHkgaG93IGZhc3QgcGFydGljbGUgcmVhY2hlcyBlbmQgb2YgaXRzIGV4cGxvc2lvbiBjdXJ2ZVxuICBjb25zdCB5MSA9IHJvdW5kKE1hdGgucmFuZG9tKCkgKiBiZXppZXJNZWRpYW4sIDQpXG4gIC8vIHJvdWdobHkgbWFwcyB0byB0aGUgZGlzdGFuY2UgcGFydGljbGUgZ29lcyBiZWZvcmUgcmVhY2hpbmcgZnJlZS1mYWxsXG4gIGNvbnN0IHkyID0gcm91bmQoTWF0aC5yYW5kb20oKSAqIGZvcmNlICogKGNvaW5GbGlwKCkgPyAxIDogLTEpLCA0KVxuICAvLyByb3VnaGx5IGhvdyBzb29uIHRoZSBwYXJ0aWNsZSB0cmFuc2l0aW9ucyBmcm9tIGV4cGxvc2lvbiB0byBmcmVlLWZhbGxcbiAgY29uc3QgeTMgPSBiZXppZXJNZWRpYW5cbiAgLy8gcm91Z2hseSB0aGUgZWFzZSBvZiBmcmVlLWZhbGxcbiAgY29uc3QgeTQgPSByb3VuZChcbiAgICBNYXRoLm1heChcbiAgICAgIG1hcFJhbmdlKE1hdGguYWJzKHBhcnRpY2xlLmRlZ3JlZSAtIDE4MCksIDAsIDE4MCwgZm9yY2UsIC1mb3JjZSksXG4gICAgICAwXG4gICAgKSxcbiAgICA0XG4gIClcblxuICBjb25zdCBjb25mZXR0aUtleWZyYW1lID0gY29uZmV0dGlLZXlmcmFtZXMoZGVncmVlcywgd2lkdGgsIGhlaWdodClcbiAgY29uc3QgcGFydFNpemUgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA0KSArIHNpemVcblxuICByZXR1cm4ge1xuICAgIFtgJiNjb25mZXR0aS1wYXJ0aWNsZS0ke2luZGV4fWBdOiBjc3Moe1xuICAgICAgYW5pbWF0aW9uOiBgJHtcbiAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtgeC1heGlzLSR7aW5kZXh9YF1cbiAgICAgIH0gJHtkdXJhdGlvbkNoYW9zfW1zIGZvcndhcmRzIGN1YmljLWJlemllcigke3gxfSwgJHt4Mn0sICR7eDN9LCAke3g0fSkgJHtcbiAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgfWAsXG4gICAgICBbYCYgPiAke2h0bWxUYWcgfHwgXCJkaXZcIn1gXToge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB3aWR0aDogcGFydFNpemUsXG4gICAgICAgIGhlaWdodDogcGFydFNpemUsXG4gICAgICAgIGFuaW1hdGlvbjogYCR7XG4gICAgICAgICAgY29uZmV0dGlLZXlmcmFtZVtcInktYXhpc1wiXVxuICAgICAgICB9ICR7ZHVyYXRpb25DaGFvc31tcyBmb3J3YXJkcyBjdWJpYy1iZXppZXIoJHt5MX0sICR7eTJ9LCAke3kzfSwgJHt5NH0pICR7XG4gICAgICAgICAgZGVsYXkgfHwgXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgLi4uKGh0bWxUYWcgPT09IFwic3ZnXCJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgXCImID4gcGF0aFwiOiB7XG4gICAgICAgICAgICAgICAgZmlsbDogcGFydGljbGUuY29sb3IsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHBhcnRpY2xlLmNvbG9yLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pLFxuICB9XG59XG5cbmNvbnN0IHVzZVN0eWxlcyA9ICh7IHBhcnRpY2xlcywgaHRtbFRhZywgLi4ub3RoZXIgfSkgPT4ge1xuICBjb25zdCBjb25mZXR0aVN0eWxlcyA9IHBhcnRpY2xlcy5yZWR1Y2UoXG4gICAgKGFjYywgcGFydGljbGUsIGluZGV4KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uY29uZmV0dG9TdHlsZSh7XG4gICAgICAgIHBhcnRpY2xlLFxuICAgICAgICBkZWdyZWVzOiBwYXJ0aWNsZXMubWFwKChwYXJ0KSA9PiBwYXJ0LmRlZ3JlZSksXG4gICAgICAgIGluZGV4LFxuICAgICAgICBodG1sVGFnLFxuICAgICAgICAuLi5vdGhlcixcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIHt9XG4gIClcbiAgcmV0dXJuIHN0eWxlZC5kaXYoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgdG9wOiAwLFxuICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgekluZGV4OiAyLFxuICAgIFwiLnBhcnRpY2xlXCI6IHtcbiAgICAgIC4uLmNvbmZldHRpU3R5bGVzLFxuICAgICAgW2AmID4gJHtodG1sVGFnIHx8IFwiZGl2XCJ9YF06IHtcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBcIiY6YWZ0ZXJcIjoge1xuICAgICAgICAgIGNvbnRlbnQ6IGAnJ2AsXG4gICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTdHlsZXNcbiJdfQ== */")}(b({particles:u},e));return A(n,{className:l,children:u.map((function(g,I){return A("div",{id:"confetti-particle-".concat(I),className:"particle",children:C||A("div",{})},g.degree)}))})}d.defaultProps={count:100,bezierMedian:.7,duration:4e3,force:.7,size:8,width:400,height:"700px"};export{d as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/components/ParticlesExplosion/utils.js","../../src/components/ParticlesExplosion/styles.js","../../src/components/ParticlesExplosion/index.js"],"sourcesContent":["export const mapRange = (value, x1, y1, x2, y2) =>\n ((value - x1) * (y2 - x2)) / (y1 - x1) + x2\n\nexport const rotate = (degree, amount) => {\n const result = degree + amount\n return result > 360 ? result - 360 : result\n}\n\nexport const coinFlip = () => Math.random() > 0.5\n\nexport const round = (number, decimalPlaces) => {\n const factor = 10 ** decimalPlaces\n return Math.round(number * factor) / factor\n}\n","import { css, keyframes } from \"@emotion/react\"\nimport styled from \"@emotion/styled\"\nimport { coinFlip, mapRange, rotate, round } from \"./utils\"\nimport { IParticle, IParticlesProps } from \"./index\"\n\nconst confettiKeyframes = (degrees, width, height) => {\n const xLandingPoints = degrees.reduce((acc, degree, i) => {\n const landingPoint = mapRange(\n Math.abs(rotate(degree, 90) - 180),\n 0,\n 180,\n -width / 2,\n width / 2\n )\n return {\n ...acc,\n [`x-axis-${i}`]: keyframes`\n 100% {\n transform: translateX(${landingPoint}px);\n }\n `,\n }\n }, {})\n\n return {\n \"y-axis\": keyframes`\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(${height});\n }\n `,\n ...xLandingPoints,\n }\n}\n\nconst confettoStyle = ({\n particle,\n degrees,\n bezierMedian,\n duration,\n force,\n size,\n delay,\n index,\n width,\n height,\n}) => {\n const durationChaos = duration - Math.round(Math.random() * 1000)\n\n const x1 = 0\n const x2 = 0\n const x3 = 0\n // x-axis arc of explosion, so 90deg and 270deg particles have curve of 1, 0deg and 180deg have 0\n const x4 = round(\n Math.abs(\n mapRange(Math.abs(rotate(particle.degree, 90) - 180), 0, 180, -1, 1)\n ),\n 4\n )\n\n // roughly how fast particle reaches end of its explosion curve\n const y1 = round(Math.random() * bezierMedian, 4)\n // roughly maps to the distance particle goes before reaching free-fall\n const y2 = round(Math.random() * force * (coinFlip() ? 1 : -1), 4)\n // roughly how soon the particle transitions from explosion to free-fall\n const y3 = bezierMedian\n // roughly the ease of free-fall\n const y4 = round(\n Math.max(\n mapRange(Math.abs(particle.degree - 180), 0, 180, force, -force),\n 0\n ),\n 4\n )\n\n const confettiKeyframe = confettiKeyframes(degrees, width, height)\n const partSize = Math.round(Math.random() * 4) + size\n\n return {\n [`&#confetti-particle-${index}`]: css({\n animation: `${\n confettiKeyframe[`x-axis-${index}`]\n } ${durationChaos}ms forwards cubic-bezier(${x1}, ${x2}, ${x3}, ${x4}) ${\n delay || \"\"\n }`,\n \"& > svg\": {\n opacity: 0,\n width: partSize,\n height: partSize,\n animation: `${\n confettiKeyframe[\"y-axis\"]\n } ${durationChaos}ms forwards cubic-bezier(${y1}, ${y2}, ${y3}, ${y4}) ${\n delay || \"\"\n }`,\n \"& > path\": {\n fill: particle.color,\n },\n },\n }),\n }\n}\n\nconst useStyles = ({ particles, ...other }) => {\n const confettiStyles = particles.reduce(\n (acc, particle, index) => ({\n ...acc,\n ...confettoStyle({\n particle,\n degrees: particles.map((part) => part.degree),\n index,\n ...other,\n }),\n }),\n {}\n )\n return styled.div({\n position: \"absolute\",\n top: 0,\n left: \"50%\",\n zIndex: 2,\n \".particle\": {\n ...confettiStyles,\n \"& > svg\": {\n position: \"absolute\",\n left: 0,\n top: 0,\n \"&:after\": {\n content: `''`,\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n },\n })\n}\n\nexport default useStyles\n","import * as React from \"react\"\nimport useStyles from \"./styles\"\n\nconst createParticles = (colors, count) => {\n const increment = 360 / count\n return Array.from({ length: count }, (value, index) => index).map(\n (index) => ({\n color: colors[index % colors.length],\n degree: increment * index,\n })\n )\n}\n\nfunction ParticlesExplosion(props) {\n const { particleElement, count, colors, ...other } = props\n const particles = createParticles(colors, count)\n const ParticlesWrapper = useStyles({\n particles,\n })\n\n return (\n <ParticlesWrapper {...other}>\n {particles.map((particle, i) => (\n <div\n id={`confetti-particle-${i}`}\n className=\"particle\"\n key={particle.degree}\n >\n {particleElement || <div />}\n </div>\n ))}\n </ParticlesWrapper>\n )\n}\n\nParticlesExplosion.defaultProps = {\n count: 100,\n bezierMedian: 0.7,\n duration: 4000,\n force: 0.7,\n size: 8,\n width: 400,\n height: \"700px\",\n}\n\nexport default ParticlesExplosion\n"],"names":["mapRange","value","x1","y1","x2","y2","rotate","degree","amount","result","round","number","decimalPlaces","factor","Math","pow","confettoStyle","_ref","particle","degrees","bezierMedian","duration","force","size","delay","index","width","height","durationChaos","random","x4","abs","y3","y4","max","confettiKeyframe","xLandingPoints","reduce","acc","i","landingPoint","_objectSpread","_defineProperty","concat","keyframes","_templateObject","_taggedTemplateLiteral","_templateObject2","confettiKeyframes","partSize","css","animation","opacity","fill","color","process","env","NODE_ENV","ParticlesExplosion","props","particleElement","count","colors","other","_objectWithoutProperties","_excluded","particles","increment","Array","from","length","map","createParticles","ParticlesWrapper","_ref3","confettiStyles","part","_styled","target","label","position","top","left","zIndex","content","display","useStyles","_jsx","children","id","className","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/components/ParticlesExplosion/utils.js","../../src/components/ParticlesExplosion/styles.js","../../src/components/ParticlesExplosion/index.js"],"sourcesContent":["export const mapRange = (value, x1, y1, x2, y2) =>\n ((value - x1) * (y2 - x2)) / (y1 - x1) + x2\n\nexport const rotate = (degree, amount) => {\n const result = degree + amount\n return result > 360 ? result - 360 : result\n}\n\nexport const coinFlip = () => Math.random() > 0.5\n\nexport const round = (number, decimalPlaces) => {\n const factor = 10 ** decimalPlaces\n return Math.round(number * factor) / factor\n}\n","import { css, keyframes } from \"@emotion/react\"\nimport styled from \"@emotion/styled\"\nimport { coinFlip, mapRange, rotate, round } from \"./utils\"\nimport { IParticle, IParticlesProps } from \"./index\"\n\nconst confettiKeyframes = (degrees, width, height) => {\n const xLandingPoints = degrees.reduce((acc, degree, i) => {\n const landingPoint = mapRange(\n Math.abs(rotate(degree, 90) - 180),\n 0,\n 180,\n -width / 2,\n width / 2\n )\n return {\n ...acc,\n [`x-axis-${i}`]: keyframes`\n 100% {\n transform: translateX(${landingPoint}px);\n }\n `,\n }\n }, {})\n\n return {\n \"y-axis\": keyframes`\n 1% {\n opacity: 1;\n }\n 90% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: translateY(${height});\n }\n `,\n ...xLandingPoints,\n }\n}\n\nconst confettoStyle = ({\n particle,\n degrees,\n bezierMedian,\n duration,\n force,\n size,\n delay,\n index,\n width,\n height,\n htmlTag,\n}) => {\n const durationChaos = duration - Math.round(Math.random() * 1000)\n\n const x1 = 0\n const x2 = 0\n const x3 = 0\n // x-axis arc of explosion, so 90deg and 270deg particles have curve of 1, 0deg and 180deg have 0\n const x4 = round(\n Math.abs(\n mapRange(Math.abs(rotate(particle.degree, 90) - 180), 0, 180, -1, 1)\n ),\n 4\n )\n\n // roughly how fast particle reaches end of its explosion curve\n const y1 = round(Math.random() * bezierMedian, 4)\n // roughly maps to the distance particle goes before reaching free-fall\n const y2 = round(Math.random() * force * (coinFlip() ? 1 : -1), 4)\n // roughly how soon the particle transitions from explosion to free-fall\n const y3 = bezierMedian\n // roughly the ease of free-fall\n const y4 = round(\n Math.max(\n mapRange(Math.abs(particle.degree - 180), 0, 180, force, -force),\n 0\n ),\n 4\n )\n\n const confettiKeyframe = confettiKeyframes(degrees, width, height)\n const partSize = Math.round(Math.random() * 4) + size\n\n return {\n [`&#confetti-particle-${index}`]: css({\n animation: `${\n confettiKeyframe[`x-axis-${index}`]\n } ${durationChaos}ms forwards cubic-bezier(${x1}, ${x2}, ${x3}, ${x4}) ${\n delay || \"\"\n }`,\n [`& > ${htmlTag || \"div\"}`]: {\n opacity: 0,\n width: partSize,\n height: partSize,\n animation: `${\n confettiKeyframe[\"y-axis\"]\n } ${durationChaos}ms forwards cubic-bezier(${y1}, ${y2}, ${y3}, ${y4}) ${\n delay || \"\"\n }`,\n ...(htmlTag === \"svg\"\n ? {\n \"& > path\": {\n fill: particle.color,\n },\n }\n : {\n background: particle.color,\n }),\n },\n }),\n }\n}\n\nconst useStyles = ({ particles, htmlTag, ...other }) => {\n const confettiStyles = particles.reduce(\n (acc, particle, index) => ({\n ...acc,\n ...confettoStyle({\n particle,\n degrees: particles.map((part) => part.degree),\n index,\n htmlTag,\n ...other,\n }),\n }),\n {}\n )\n return styled.div({\n position: \"absolute\",\n top: 0,\n left: \"50%\",\n zIndex: 2,\n \".particle\": {\n ...confettiStyles,\n [`& > ${htmlTag || \"div\"}`]: {\n position: \"absolute\",\n left: 0,\n top: 0,\n \"&:after\": {\n content: `''`,\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n },\n })\n}\n\nexport default useStyles\n","import * as React from \"react\"\nimport useStyles from \"./styles\"\n\nconst createParticles = (colors, count) => {\n const increment = 360 / count\n return Array.from({ length: count }, (value, index) => index).map(\n (index) => ({\n color: colors[index % colors.length],\n degree: increment * index,\n })\n )\n}\n\nfunction ParticlesExplosion(props) {\n const { particleElement, count, colors, className, ...other } = props\n const particles = createParticles(colors, count)\n const ParticlesWrapper = useStyles({\n particles,\n ...other,\n })\n\n return (\n <ParticlesWrapper className={className}>\n {particles.map((particle, i) => (\n <div\n id={`confetti-particle-${i}`}\n className=\"particle\"\n key={particle.degree}\n >\n {particleElement || <div />}\n </div>\n ))}\n </ParticlesWrapper>\n )\n}\n\nParticlesExplosion.defaultProps = {\n count: 100,\n bezierMedian: 0.7,\n duration: 4000,\n force: 0.7,\n size: 8,\n width: 400,\n height: \"700px\",\n}\n\nexport default ParticlesExplosion\n"],"names":["mapRange","value","x1","y1","x2","y2","rotate","degree","amount","result","round","number","decimalPlaces","factor","Math","pow","confettoStyle","_ref","particle","degrees","bezierMedian","duration","force","size","delay","index","width","height","htmlTag","durationChaos","random","x4","abs","y3","y4","max","confettiKeyframe","xLandingPoints","reduce","acc","i","landingPoint","_objectSpread","_defineProperty","concat","keyframes","_templateObject","_taggedTemplateLiteral","_templateObject2","confettiKeyframes","partSize","css","animation","opacity","fill","color","background","process","env","NODE_ENV","ParticlesExplosion","props","particleElement","count","colors","className","other","_objectWithoutProperties","_excluded","particles","increment","Array","from","length","map","createParticles","ParticlesWrapper","_ref3","confettiStyles","part","_styled","target","label","position","top","left","zIndex","content","display","useStyles","_jsx","children","id","defaultProps"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("@emotion/styled/base"),t=require("react"),n=require("@emotion/react"),i=require("@emotion/react/jsx-runtime");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=r(e),o=r(t);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){f(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function f(e,t,n){return(t=u(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g="undefined"!=typeof Element,l="function"==typeof Map,d="function"==typeof Set,h="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function p(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;var n,i,r,s;if(Array.isArray(e)){if((n=e.length)!=t.length)return!1;for(i=n;0!=i--;)if(!p(e[i],t[i]))return!1;return!0}if(l&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(s=e.entries();!(i=s.next()).done;)if(!t.has(i.value[0]))return!1;for(s=e.entries();!(i=s.next()).done;)if(!p(i.value[1],t.get(i.value[0])))return!1;return!0}if(d&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(s=e.entries();!(i=s.next()).done;)if(!t.has(i.value[0]))return!1;return!0}if(h&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if((n=e.length)!=t.length)return!1;for(i=n;0!=i--;)if(e[i]!==t[i])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof t.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof t.toString)return e.toString()===t.toString();if((n=(r=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(i=n;0!=i--;)if(!Object.prototype.hasOwnProperty.call(t,r[i]))return!1;if(g&&e instanceof Element)return!1;for(i=n;0!=i--;)if(("_owner"!==r[i]&&"__v"!==r[i]&&"__o"!==r[i]||!e.$$typeof)&&!p(e[r[i]],t[r[i]]))return!1;return!0}return e!=e&&t!=t}var m=function(e,t){try{return p(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}};function b(e,t){const n=Math.random()*(t-e+1)+e;return Number.isInteger(e)&&Number.isInteger(t)?Math.floor(n):n}function I(e,t,n){return(1-n)*e+n*t}function y(e){return e?{height:e.offsetHeight,width:e.offsetWidth}:{height:0,width:0}}const w=2*Math.PI,C={color:"#dee4fd",radius:[.5,3],speed:[1,3],wind:[-.5,2],changeFrequency:200,rotationSpeed:[-1,1]};class v{static createSnowflakes(e,t,n){if(!e)return[];const i=[];for(let r=0;r<t;r++)i.push(new v(e,n));return i}constructor(e,t={}){this.updateConfig(t);const{radius:n,wind:i,speed:r,rotationSpeed:s}=this.config;this.params={x:b(0,e.offsetWidth),y:b(-e.offsetHeight,0),rotation:b(0,360),radius:b(...n),speed:b(...r),wind:b(...i),rotationSpeed:b(...s),nextSpeed:b(...i),nextWind:b(...r),nextRotationSpeed:b(...s)},this.framesSinceLastUpdate=0}selectImage(){var e;this.config.images&&this.config.images.length>0?this.image=(e=this.config.images)[Math.floor(Math.random()*e.length)]:this.image=void 0}updateConfig(e){const t=this.config;this.config={...C,...e},this.config.changeFrequency=b(this.config.changeFrequency,1.5*this.config.changeFrequency),this.params&&!m(this.config.radius,null==t?void 0:t.radius)&&(this.params.radius=b(...this.config.radius)),m(this.config.images,null==t?void 0:t.images)||this.selectImage()}updateTargetParams(){this.params.nextSpeed=b(...this.config.speed),this.params.nextWind=b(...this.config.wind),this.image&&(this.params.nextRotationSpeed=b(...this.config.rotationSpeed))}update(e,t,n=1){const{x:i,y:r,rotation:s,rotationSpeed:o,nextRotationSpeed:a,wind:c,speed:u,nextWind:f,nextSpeed:g,radius:l}=this.params;this.params.x=(i+c*n)%(e+2*l),this.params.x>e+l&&(this.params.x=-l),this.params.y=(r+u*n)%(t+2*l),this.params.y>t+l&&(this.params.y=-l),this.image&&(this.params.rotation=(s+o)%360),this.params.speed=I(u,g,.01),this.params.wind=I(c,f,.01),this.params.rotationSpeed=I(o,a,.01),this.framesSinceLastUpdate++>this.config.changeFrequency&&(this.updateTargetParams(),this.framesSinceLastUpdate=0)}getImageOffscreenCanvas(e,t){var n,i;if(e instanceof HTMLImageElement&&e.loading)return e;let r=v.offscreenCanvases.get(e);if(r||(r={},v.offscreenCanvases.set(e,r)),!(t in r)){const i=document.createElement("canvas");i.width=t,i.height=t,null===(n=i.getContext("2d"))||void 0===n||n.drawImage(e,0,0,t,t),r[t]=i}return null!==(i=r[t])&&void 0!==i?i:e}drawCircle(e){e.moveTo(this.params.x,this.params.y),e.arc(this.params.x,this.params.y,this.params.radius,0,w)}drawImage(e){const{x:t,y:n,rotation:i,radius:r}=this.params,s=i*Math.PI/180,o=Math.cos(s),a=Math.sin(s);e.setTransform(o,a,-a,o,t,n);const c=this.getImageOffscreenCanvas(this.image,r);e.drawImage(c,-r/2,-r/2,r,r)}}v.offscreenCanvases=new WeakMap;const x={pointerEvents:"none",backgroundColor:"transparent",position:"absolute",top:0,left:0,width:"100%",height:"100%"},A=1e3/60;var X,G,Z=function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)},H=function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n};class J{get ctx(){return Z(this,X,"f")}get canvas(){return Z(this,G,"f")}set canvas(e){H(this,G,e,"f"),H(this,X,e.getContext("2d"),"f")}constructor(e,t){this.lastUpdate=Date.now(),this.snowflakes=[],X.set(this,void 0),G.set(this,void 0),H(this,G,e,"f"),H(this,X,e.getContext("2d"),"f"),this.config={snowflakeCount:150,...C,...t},this.snowflakes=[],this.snowflakes=v.createSnowflakes(e,t.snowflakeCount||150,t),this.play()}updateConfig(e){this.config={...this.config,...e};const t=this.config.snowflakeCount-this.snowflakes.length;t>0&&(this.snowflakes=[...this.snowflakes,...v.createSnowflakes(this.canvas,t,e)]),t<0&&(this.snowflakes=this.snowflakes.slice(0,this.config.snowflakeCount));for(const e of this.snowflakes)e.updateConfig(this.config)}render(e=1){const{ctx:t,canvas:n,snowflakes:i}=this;if(!t||!n)return;const{offsetWidth:r,offsetHeight:s}=n;for(const t of i)t.update(r,s,e);if(t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,r,s),this.config.images&&this.config.images.length>0)for(const e of i)e.drawImage(t);else{t.beginPath();for(const e of i)e.drawCircle(t);t.fillStyle=this.config.color,t.fill()}}loop(){const e=Date.now(),t=Date.now()-this.lastUpdate;this.lastUpdate=e;const n=t/A;this.render(n),this.animationFrame=requestAnimationFrame((()=>this.loop()))}play(){this.loop()}pause(){this.animationFrame&&(cancelAnimationFrame(this.animationFrame),this.animationFrame=void 0)}}X=new WeakMap,G=new WeakMap;function V(e){const[n,i]=t.useState(e);return function(e,n){const i=t.useRef(n);m(n,i.current)||(i.current=n),t.useEffect(e,i.current)}((()=>i(e)),[e]),n}var O=({color:e=C.color,changeFrequency:n=C.changeFrequency,radius:i=C.radius,speed:r=C.speed,wind:s=C.wind,rotationSpeed:a=C.rotationSpeed,snowflakeCount:c=150,images:u,style:f}={})=>{const g=(l=f,t.useMemo((()=>({...x,...l||{}})),[l]));var l;const d=t.useRef(null),h=(e=>{const[n,i]=t.useState(y(e.current)),r=t.useCallback((()=>{e.current&&i(y(e.current))}),[e]);return t.useEffect((()=>{const{ResizeObserver:t}=window;if(e.current){if(r(),"function"==typeof t){const n=new t(r);return n.observe(e.current),()=>n.disconnect()}return window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)}}),[e,r]),n})(d),p=V({color:e,changeFrequency:n,radius:i,speed:r,wind:s,rotationSpeed:a,images:u,snowflakeCount:c}),m=t.useRef(p),b=t.useRef();return t.useEffect((()=>(!b.current&&d.current&&(b.current=new J(d.current,m.current)),()=>{var e;null===(e=b.current)||void 0===e||e.pause(),b.current=void 0})),[]),t.useEffect((()=>{b.current&&b.current.updateConfig(p)}),[p]),o.default.createElement("canvas",{ref:d,height:h.height,width:h.width,style:g,"data-testid":"SnowfallCanvas"})};function W(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}var j="production"===process.env.NODE_ENV?{name:"x2d7sm",styles:"body{position:relative;}"}:{name:"lruo4x-Snowfall",styles:"body{position:relative;};label:Snowfall;",map:"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNtQiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIlxyXG5pbXBvcnQgeyBjc3MsIEdsb2JhbCB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiXHJcbmltcG9ydCBSZWFjdFNub3dmYWxsIGZyb20gXCJyZWFjdC1zbm93ZmFsbFwiXHJcblxyXG5jb25zdCBTbm93ZmFsbCA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8U3R5bGVkV3JhcHBlciBjbGFzc05hbWU9XCJzbm93ZmFsbFwiIHsuLi5wcm9wc30+XHJcbiAgICAgIDxHbG9iYWxcclxuICAgICAgICBzdHlsZXM9e2Nzc2BcclxuICAgICAgICAgIGJvZHkge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgYH1cclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxSZWFjdFNub3dmYWxsXHJcbiAgICAgICAgY29sb3I9XCIjZmZmXCJcclxuICAgICAgICBzbm93Zmxha2VDb3VudD17NTB9XHJcbiAgICAgICAgcmFkaXVzPXtbMSwgNV19XHJcbiAgICAgICAgd2luZD17Wy0wLjUsIDAuNV19XHJcbiAgICAgIC8+XHJcbiAgICA8L1N0eWxlZFdyYXBwZXI+XHJcbiAgKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTbm93ZmFsbFxyXG5cclxuY29uc3QgU3R5bGVkV3JhcHBlciA9IHN0eWxlZC5kaXZgXHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbmBcclxuIl19 */",toString:W},S=s.default("div","production"===process.env.NODE_ENV?{target:"e5mbc8b0"}:{target:"e5mbc8b0",label:"StyledWrapper"})("production"===process.env.NODE_ENV?{name:"16gvqzl",styles:"position:fixed;top:0;left:0;overflow:hidden;width:100%;height:100%;z-index:1000;pointer-events:none"}:{name:"16gvqzl",styles:"position:fixed;top:0;left:0;overflow:hidden;width:100%;height:100%;z-index:1000;pointer-events:none",map:"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCZ0MiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCJcclxuaW1wb3J0IHsgY3NzLCBHbG9iYWwgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIlxyXG5pbXBvcnQgUmVhY3RTbm93ZmFsbCBmcm9tIFwicmVhY3Qtc25vd2ZhbGxcIlxyXG5cclxuY29uc3QgU25vd2ZhbGwgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPFN0eWxlZFdyYXBwZXIgY2xhc3NOYW1lPVwic25vd2ZhbGxcIiB7Li4ucHJvcHN9PlxyXG4gICAgICA8R2xvYmFsXHJcbiAgICAgICAgc3R5bGVzPXtjc3NgXHJcbiAgICAgICAgICBib2R5IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGB9XHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8UmVhY3RTbm93ZmFsbFxyXG4gICAgICAgIGNvbG9yPVwiI2ZmZlwiXHJcbiAgICAgICAgc25vd2ZsYWtlQ291bnQ9ezUwfVxyXG4gICAgICAgIHJhZGl1cz17WzEsIDVdfVxyXG4gICAgICAgIHdpbmQ9e1stMC41LCAwLjVdfVxyXG4gICAgICAvPlxyXG4gICAgPC9TdHlsZWRXcmFwcGVyPlxyXG4gIClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU25vd2ZhbGxcclxuXHJcbmNvbnN0IFN0eWxlZFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB6LWluZGV4OiAxMDAwO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5gXHJcbiJdfQ== */",toString:W});module.exports=function(e){return i.jsxs(S,c(c({className:"snowfall"},e),{},{children:[i.jsx(n.Global,{styles:j}),i.jsx(O,{color:"#fff",snowflakeCount:50,radius:[1,5],wind:[-.5,.5]})]}))};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/react-fast-compare/index.js","../../../../../node_modules/react-snowfall/lib/utils.js","../../../../../node_modules/react-snowfall/lib/Snowflake.js","../../../../../node_modules/react-snowfall/lib/config.js","../../../../../node_modules/react-snowfall/lib/SnowfallCanvas.js","../../../../../node_modules/react-snowfall/lib/hooks.js","../../../../../node_modules/react-snowfall/lib/Snowfall.js","../../../src/components/Snowfall/index.js"],"sourcesContent":["/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * Enhanced random function, selects a random value between a minimum and maximum. If the values provided are both\n * integers then the number returned will be an integer, otherwise the return number will be a decimal.\n * @param min The minimum value\n * @param max The maximum value\n */\nexport function random(min, max) {\n const randomNumber = Math.random() * (max - min + 1) + min;\n if (!Number.isInteger(min) || !Number.isInteger(max)) {\n return randomNumber;\n }\n else {\n return Math.floor(randomNumber);\n }\n}\n/**\n * Linear interpolation function to gradually step towards a target value\n * @param start The current value\n * @param end The target value\n * @param normal The rate of change between 0 and 1 (0 = no change, 1 = instant)\n */\nexport function lerp(start, end, normal) {\n return (1 - normal) * start + normal * end;\n}\n/**\n * Selects a random item from an array of inputs.\n *\n * @param items The array of items to choose from\n * @returns A random item selected from the array\n */\nexport function randomElement(items) {\n const index = Math.floor(Math.random() * items.length);\n return items[index];\n}\n/**\n * Gets the height and width of the provided HTML element\n * @param element The html element to measure\n */\nexport function getSize(element) {\n if (!element)\n return { height: 0, width: 0 };\n return {\n height: element.offsetHeight,\n width: element.offsetWidth,\n };\n}\n/**\n * Store the value of PI * 2.\n *\n * This is so we can avoid calculating this value every time we draw a circle.\n */\nexport const twoPi = Math.PI * 2;\n//# sourceMappingURL=utils.js.map","import isEqual from 'react-fast-compare';\nimport { lerp, random, randomElement, twoPi } from './utils.js';\nexport const defaultConfig = {\n color: '#dee4fd',\n radius: [0.5, 3.0],\n speed: [1.0, 3.0],\n wind: [-0.5, 2.0],\n changeFrequency: 200,\n rotationSpeed: [-1.0, 1.0],\n};\n/**\n * An individual snowflake that will update it's location every call to `update`\n * and draw itself to the canvas every call to `draw`.\n */\nclass Snowflake {\n /**\n * A utility function to create a collection of snowflakes\n * @param canvas The canvas element\n * @param amount The number of snowflakes\n * @param config The configuration for each snowflake\n */\n static createSnowflakes(canvas, amount, config) {\n if (!canvas)\n return [];\n const snowflakes = [];\n for (let i = 0; i < amount; i++) {\n snowflakes.push(new Snowflake(canvas, config));\n }\n return snowflakes;\n }\n constructor(canvas, config = {}) {\n // Set custom config\n this.updateConfig(config);\n // Setting initial parameters\n const { radius, wind, speed, rotationSpeed } = this.config;\n this.params = {\n x: random(0, canvas.offsetWidth),\n y: random(-canvas.offsetHeight, 0),\n rotation: random(0, 360),\n radius: random(...radius),\n speed: random(...speed),\n wind: random(...wind),\n rotationSpeed: random(...rotationSpeed),\n nextSpeed: random(...wind),\n nextWind: random(...speed),\n nextRotationSpeed: random(...rotationSpeed),\n };\n this.framesSinceLastUpdate = 0;\n }\n selectImage() {\n if (this.config.images && this.config.images.length > 0) {\n this.image = randomElement(this.config.images);\n }\n else {\n this.image = undefined;\n }\n }\n updateConfig(config) {\n const previousConfig = this.config;\n this.config = { ...defaultConfig, ...config };\n this.config.changeFrequency = random(this.config.changeFrequency, this.config.changeFrequency * 1.5);\n // Update the radius if the config has changed, it won't gradually update on it's own\n if (this.params && !isEqual(this.config.radius, previousConfig === null || previousConfig === void 0 ? void 0 : previousConfig.radius)) {\n this.params.radius = random(...this.config.radius);\n }\n if (!isEqual(this.config.images, previousConfig === null || previousConfig === void 0 ? void 0 : previousConfig.images)) {\n this.selectImage();\n }\n }\n updateTargetParams() {\n this.params.nextSpeed = random(...this.config.speed);\n this.params.nextWind = random(...this.config.wind);\n if (this.image) {\n this.params.nextRotationSpeed = random(...this.config.rotationSpeed);\n }\n }\n update(offsetWidth, offsetHeight, framesPassed = 1) {\n const { x, y, rotation, rotationSpeed, nextRotationSpeed, wind, speed, nextWind, nextSpeed, radius } = this.params;\n // Update current location, wrapping around if going off the canvas\n this.params.x = (x + wind * framesPassed) % (offsetWidth + radius * 2);\n if (this.params.x > offsetWidth + radius)\n this.params.x = -radius;\n this.params.y = (y + speed * framesPassed) % (offsetHeight + radius * 2);\n if (this.params.y > offsetHeight + radius)\n this.params.y = -radius;\n // Apply rotation\n if (this.image) {\n this.params.rotation = (rotation + rotationSpeed) % 360;\n }\n // Update the wind, speed and rotation towards the desired values\n this.params.speed = lerp(speed, nextSpeed, 0.01);\n this.params.wind = lerp(wind, nextWind, 0.01);\n this.params.rotationSpeed = lerp(rotationSpeed, nextRotationSpeed, 0.01);\n if (this.framesSinceLastUpdate++ > this.config.changeFrequency) {\n this.updateTargetParams();\n this.framesSinceLastUpdate = 0;\n }\n }\n getImageOffscreenCanvas(image, size) {\n var _a, _b;\n if (image instanceof HTMLImageElement && image.loading)\n return image;\n let sizes = Snowflake.offscreenCanvases.get(image);\n if (!sizes) {\n sizes = {};\n Snowflake.offscreenCanvases.set(image, sizes);\n }\n if (!(size in sizes)) {\n const canvas = document.createElement('canvas');\n canvas.width = size;\n canvas.height = size;\n (_a = canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.drawImage(image, 0, 0, size, size);\n sizes[size] = canvas;\n }\n return (_b = sizes[size]) !== null && _b !== void 0 ? _b : image;\n }\n /**\n * Draws a circular snowflake to the canvas.\n *\n * This method should only be called if our config does not have images.\n *\n * This method assumes that a path has already been started on the canvas.\n * `ctx.beginPath()` should be called before calling this method.\n *\n * After calling this method, the fillStyle should be set to the snowflake's\n * color and `ctx.fill()` should be called to fill the snowflake.\n *\n * Calling `ctx.fill()` after multiple snowflakes have had `drawCircle` called\n * will render all of the snowflakes since the last call to `ctx.beginPath()`.\n *\n * @param ctx The canvas context to draw to\n */\n drawCircle(ctx) {\n ctx.moveTo(this.params.x, this.params.y);\n ctx.arc(this.params.x, this.params.y, this.params.radius, 0, twoPi);\n }\n /**\n * Draws an image-based snowflake to the canvas.\n *\n * This method should only be called if our config has images.\n *\n * @param ctx The canvas context to draw to\n */\n drawImage(ctx) {\n const { x, y, rotation, radius } = this.params;\n const radian = (rotation * Math.PI) / 180;\n const cos = Math.cos(radian);\n const sin = Math.sin(radian);\n // Translate to the location that we will be drawing the snowflake, including any rotation that needs to be applied\n // The arguments for setTransform are: a, b, c, d, e, f\n // a (scaleX), b (skewY), c (skewX), d (scaleY), e (translateX), f (translateY)\n ctx.setTransform(cos, sin, -sin, cos, x, y);\n // Draw the image with the center of the image at the center of the current location\n const image = this.getImageOffscreenCanvas(this.image, radius);\n ctx.drawImage(image, -(radius / 2), -(radius / 2), radius, radius);\n }\n}\nSnowflake.offscreenCanvases = new WeakMap();\nexport default Snowflake;\n//# sourceMappingURL=Snowflake.js.map","export const snowfallBaseStyle = {\n pointerEvents: 'none',\n backgroundColor: 'transparent',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n};\n// Target of 60 frames per second\nexport const targetFrameTime = 1000 / 60;\n//# sourceMappingURL=config.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _SnowfallCanvas_ctx, _SnowfallCanvas_canvas;\nimport Snowflake, { defaultConfig } from './Snowflake.js';\nimport { targetFrameTime } from './config.js';\nexport class SnowfallCanvas {\n get ctx() {\n return __classPrivateFieldGet(this, _SnowfallCanvas_ctx, \"f\");\n }\n get canvas() {\n return __classPrivateFieldGet(this, _SnowfallCanvas_canvas, \"f\");\n }\n set canvas(canvas) {\n __classPrivateFieldSet(this, _SnowfallCanvas_canvas, canvas, \"f\");\n __classPrivateFieldSet(this, _SnowfallCanvas_ctx, canvas.getContext('2d'), \"f\");\n }\n constructor(canvas, config) {\n this.lastUpdate = Date.now();\n this.snowflakes = [];\n _SnowfallCanvas_ctx.set(this, void 0);\n _SnowfallCanvas_canvas.set(this, void 0);\n __classPrivateFieldSet(this, _SnowfallCanvas_canvas, canvas, \"f\");\n __classPrivateFieldSet(this, _SnowfallCanvas_ctx, canvas.getContext('2d'), \"f\");\n this.config = { snowflakeCount: 150, ...defaultConfig, ...config };\n this.snowflakes = [];\n this.snowflakes = Snowflake.createSnowflakes(canvas, config.snowflakeCount || 150, config);\n this.play();\n }\n /**\n * Updates the config used for the snowfall animation, if the number of snowflakes\n * has changed then this will create new or remove existing snowflakes gracefully\n * to retain the position of as many existing snowflakes as possible.\n */\n updateConfig(config) {\n this.config = { ...this.config, ...config };\n const sizeDifference = this.config.snowflakeCount - this.snowflakes.length;\n if (sizeDifference > 0) {\n this.snowflakes = [...this.snowflakes, ...Snowflake.createSnowflakes(this.canvas, sizeDifference, config)];\n }\n if (sizeDifference < 0) {\n this.snowflakes = this.snowflakes.slice(0, this.config.snowflakeCount);\n }\n for (const snowflake of this.snowflakes) {\n snowflake.updateConfig(this.config);\n }\n }\n /**\n * Updates the location of each snowflake based on the number of frames passed then\n * clears the canvas and draws each snowflake.\n */\n render(framesPassed = 1) {\n const { ctx, canvas, snowflakes } = this;\n if (!ctx || !canvas)\n return;\n const { offsetWidth, offsetHeight } = canvas;\n // Update the position of each snowflake\n for (const snowflake of snowflakes) {\n snowflake.update(offsetWidth, offsetHeight, framesPassed);\n }\n // Render the snowflakes\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, offsetWidth, offsetHeight);\n // If using images, draw each image individually\n if (this.config.images && this.config.images.length > 0) {\n for (const snowflake of snowflakes) {\n snowflake.drawImage(ctx);\n }\n return;\n }\n // Not using images, draw circles in a single path\n ctx.beginPath();\n for (const snowflake of snowflakes) {\n snowflake.drawCircle(ctx);\n }\n ctx.fillStyle = this.config.color;\n ctx.fill();\n }\n /**\n * The animation loop, will calculate the time since the last render and update\n * the position of the snowflakes appropriately before queueing another frame.\n */\n loop() {\n // Update based on time passed so that a slow frame rate won't slow down the snowflake\n const now = Date.now();\n const msPassed = Date.now() - this.lastUpdate;\n this.lastUpdate = now;\n // Frames that would have passed if running at 60 fps\n const framesPassed = msPassed / targetFrameTime;\n this.render(framesPassed);\n this.animationFrame = requestAnimationFrame(() => this.loop());\n }\n /** Start the animation playing. */\n play() {\n this.loop();\n }\n /** Pause the animation. */\n pause() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = undefined;\n }\n }\n}\n_SnowfallCanvas_ctx = new WeakMap(), _SnowfallCanvas_canvas = new WeakMap();\nexport default SnowfallCanvas;\n//# sourceMappingURL=SnowfallCanvas.js.map","import { useCallback, useEffect, useRef, useState, useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { snowfallBaseStyle } from './config.js';\nimport { getSize } from './utils.js';\n/**\n * Returns the height and width of a HTML element, uses the `ResizeObserver` api if available to detect changes to the\n * size. Falls back to listening for resize events on the window.\n * @param ref A ref to the HTML element to be measured\n */\nexport const useComponentSize = (ref) => {\n const [size, setSize] = useState(getSize(ref.current));\n const resizeHandler = useCallback(() => {\n if (ref.current) {\n setSize(getSize(ref.current));\n }\n }, [ref]);\n useEffect(() => {\n const { ResizeObserver } = window;\n if (!ref.current)\n return;\n resizeHandler();\n if (typeof ResizeObserver === 'function') {\n const resizeObserver = new ResizeObserver(resizeHandler);\n resizeObserver.observe(ref.current);\n return () => resizeObserver.disconnect();\n }\n else {\n window.addEventListener('resize', resizeHandler);\n return () => window.removeEventListener('resize', resizeHandler);\n }\n }, [ref, resizeHandler]);\n return size;\n};\n/**\n * Utility hook that merges any provided styles with the default styles\n * @param overrides The style prop passed into the component\n */\nexport const useSnowfallStyle = (overrides) => {\n const styles = useMemo(() => ({\n ...snowfallBaseStyle,\n ...(overrides || {}),\n }), [overrides]);\n return styles;\n};\n/**\n * Same as `React.useEffect` but uses a deep comparison on the dependency array. This should only\n * be used when working with non-primitive dependencies.\n *\n * @param effect Effect callback to run\n * @param deps Effect dependencies\n */\nexport function useDeepCompareEffect(effect, deps) {\n const ref = useRef(deps);\n // Only update the current dependencies if they are not deep equal\n if (!isEqual(deps, ref.current)) {\n ref.current = deps;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useEffect(effect, ref.current);\n}\n/**\n * Utility hook to stabilize a reference to a value, the returned value will always match the input value\n * but (unlike an inline object) will maintain [SameValueZero](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * equality until a change is made.\n *\n * @example\n *\n * const obj = useDeepMemo({ foo: 'bar', bar: 'baz' }) // <- inline object creation\n * const prevValue = usePrevious(obj) // <- value from the previous render\n * console.log(obj === prevValue) // <- always logs true until value changes\n */\nexport function useDeepMemo(value) {\n const [state, setState] = useState(value);\n useDeepCompareEffect(() => setState(value), [value]);\n return state;\n}\n//# sourceMappingURL=hooks.js.map","import React, { useEffect, useRef } from 'react';\nimport { SnowfallCanvas } from './SnowfallCanvas.js';\nimport { defaultConfig } from './Snowflake.js';\nimport { useComponentSize, useDeepMemo, useSnowfallStyle } from './hooks.js';\nexport const Snowfall = ({ color = defaultConfig.color, changeFrequency = defaultConfig.changeFrequency, radius = defaultConfig.radius, speed = defaultConfig.speed, wind = defaultConfig.wind, rotationSpeed = defaultConfig.rotationSpeed, snowflakeCount = 150, images, style, } = {}) => {\n const mergedStyle = useSnowfallStyle(style);\n const canvasRef = useRef(null);\n const canvasSize = useComponentSize(canvasRef);\n const config = useDeepMemo({\n color,\n changeFrequency,\n radius,\n speed,\n wind,\n rotationSpeed,\n images,\n snowflakeCount,\n });\n // A reference to the config used for creating the initial instance\n const configRef = useRef(config);\n const snowfallCanvasRef = useRef();\n useEffect(() => {\n if (!snowfallCanvasRef.current && canvasRef.current) {\n snowfallCanvasRef.current = new SnowfallCanvas(canvasRef.current, configRef.current);\n }\n return () => {\n var _a;\n (_a = snowfallCanvasRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n snowfallCanvasRef.current = undefined;\n };\n }, []);\n useEffect(() => {\n if (snowfallCanvasRef.current) {\n snowfallCanvasRef.current.updateConfig(config);\n }\n }, [config]);\n return (React.createElement(\"canvas\", { ref: canvasRef, height: canvasSize.height, width: canvasSize.width, style: mergedStyle, \"data-testid\": \"SnowfallCanvas\" }));\n};\nexport default Snowfall;\n//# sourceMappingURL=Snowfall.js.map","import React from \"react\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css, Global } from \"@emotion/react\"\r\nimport ReactSnowfall from \"react-snowfall\"\r\n\r\nconst Snowfall = (props) => {\r\n return (\r\n <StyledWrapper className=\"snowfall\" {...props}>\r\n <Global\r\n styles={css`\r\n body {\r\n position: relative;\r\n }\r\n `}\r\n />\r\n\r\n <ReactSnowfall\r\n color=\"#fff\"\r\n snowflakeCount={50}\r\n radius={[1, 5]}\r\n wind={[-0.5, 0.5]}\r\n />\r\n </StyledWrapper>\r\n )\r\n}\r\n\r\nexport default Snowfall\r\n\r\nconst StyledWrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 1000;\r\n pointer-events: none;\r\n`\r\n"],"names":["hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","constructor","length","i","keys","it","Array","isArray","size","entries","next","done","has","value","get","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","$$typeof","reactFastCompare","error","message","match","console","warn","random","min","max","randomNumber","Math","Number","isInteger","floor","lerp","start","end","normal","getSize","element","height","offsetHeight","width","offsetWidth","twoPi","PI","defaultConfig","color","radius","speed","wind","changeFrequency","rotationSpeed","Snowflake","createSnowflakes","canvas","amount","config","snowflakes","push","this","updateConfig","params","x","y","rotation","nextSpeed","nextWind","nextRotationSpeed","framesSinceLastUpdate","selectImage","items","images","image","undefined","previousConfig","isEqual","updateTargetParams","update","framesPassed","getImageOffscreenCanvas","_a","_b","HTMLImageElement","loading","sizes","offscreenCanvases","set","document","createElement","getContext","drawImage","drawCircle","ctx","moveTo","arc","radian","cos","sin","setTransform","WeakMap","snowfallBaseStyle","pointerEvents","backgroundColor","position","top","left","targetFrameTime","_SnowfallCanvas_ctx","_SnowfallCanvas_canvas","__classPrivateFieldGet","receiver","state","kind","f","TypeError","__classPrivateFieldSet","SnowfallCanvas","lastUpdate","Date","now","snowflakeCount","play","sizeDifference","slice","snowflake","render","clearRect","beginPath","fillStyle","fill","loop","msPassed","animationFrame","requestAnimationFrame","pause","cancelAnimationFrame","useDeepMemo","setState","useState","effect","deps","ref","useRef","current","useEffect","useDeepCompareEffect","ReactSnowfall","style","mergedStyle","overrides","useMemo","canvasRef","canvasSize","setSize","resizeHandler","useCallback","ResizeObserver","window","resizeObserver","observe","disconnect","addEventListener","removeEventListener","useComponentSize","configRef","snowfallCanvasRef","React","_ref","process","env","NODE_ENV","name","styles","map","_EMOTION_STRINGIFIED_CSS_ERROR__","StyledWrapper","_styled","target","label","props","_jsxs","_objectSpread","className","children","_jsx","jsx","Global"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./cjs/index.js",
4
+ "module": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,2 @@
1
+ import e from"@emotion/styled/base";import t,{useState as n,useCallback as i,useEffect as r,useMemo as o,useRef as s}from"react";import{Global as a}from"@emotion/react";import{jsxs as c,jsx as f}from"@emotion/react/jsx-runtime";function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function d(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h="undefined"!=typeof Element,p="function"==typeof Map,m="function"==typeof Set,b="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function I(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;var n,i,r,o;if(Array.isArray(e)){if((n=e.length)!=t.length)return!1;for(i=n;0!=i--;)if(!I(e[i],t[i]))return!1;return!0}if(p&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(o=e.entries();!(i=o.next()).done;)if(!t.has(i.value[0]))return!1;for(o=e.entries();!(i=o.next()).done;)if(!I(i.value[1],t.get(i.value[0])))return!1;return!0}if(m&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(o=e.entries();!(i=o.next()).done;)if(!t.has(i.value[0]))return!1;return!0}if(b&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if((n=e.length)!=t.length)return!1;for(i=n;0!=i--;)if(e[i]!==t[i])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof t.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof t.toString)return e.toString()===t.toString();if((n=(r=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(i=n;0!=i--;)if(!Object.prototype.hasOwnProperty.call(t,r[i]))return!1;if(h&&e instanceof Element)return!1;for(i=n;0!=i--;)if(("_owner"!==r[i]&&"__v"!==r[i]&&"__o"!==r[i]||!e.$$typeof)&&!I(e[r[i]],t[r[i]]))return!1;return!0}return e!=e&&t!=t}var y=function(e,t){try{return I(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}};function w(e,t){const n=Math.random()*(t-e+1)+e;return Number.isInteger(e)&&Number.isInteger(t)?Math.floor(n):n}function C(e,t,n){return(1-n)*e+n*t}function v(e){return e?{height:e.offsetHeight,width:e.offsetWidth}:{height:0,width:0}}const x=2*Math.PI,A={color:"#dee4fd",radius:[.5,3],speed:[1,3],wind:[-.5,2],changeFrequency:200,rotationSpeed:[-1,1]};class X{static createSnowflakes(e,t,n){if(!e)return[];const i=[];for(let r=0;r<t;r++)i.push(new X(e,n));return i}constructor(e,t={}){this.updateConfig(t);const{radius:n,wind:i,speed:r,rotationSpeed:o}=this.config;this.params={x:w(0,e.offsetWidth),y:w(-e.offsetHeight,0),rotation:w(0,360),radius:w(...n),speed:w(...r),wind:w(...i),rotationSpeed:w(...o),nextSpeed:w(...i),nextWind:w(...r),nextRotationSpeed:w(...o)},this.framesSinceLastUpdate=0}selectImage(){var e;this.config.images&&this.config.images.length>0?this.image=(e=this.config.images)[Math.floor(Math.random()*e.length)]:this.image=void 0}updateConfig(e){const t=this.config;this.config={...A,...e},this.config.changeFrequency=w(this.config.changeFrequency,1.5*this.config.changeFrequency),this.params&&!y(this.config.radius,null==t?void 0:t.radius)&&(this.params.radius=w(...this.config.radius)),y(this.config.images,null==t?void 0:t.images)||this.selectImage()}updateTargetParams(){this.params.nextSpeed=w(...this.config.speed),this.params.nextWind=w(...this.config.wind),this.image&&(this.params.nextRotationSpeed=w(...this.config.rotationSpeed))}update(e,t,n=1){const{x:i,y:r,rotation:o,rotationSpeed:s,nextRotationSpeed:a,wind:c,speed:f,nextWind:g,nextSpeed:u,radius:l}=this.params;this.params.x=(i+c*n)%(e+2*l),this.params.x>e+l&&(this.params.x=-l),this.params.y=(r+f*n)%(t+2*l),this.params.y>t+l&&(this.params.y=-l),this.image&&(this.params.rotation=(o+s)%360),this.params.speed=C(f,u,.01),this.params.wind=C(c,g,.01),this.params.rotationSpeed=C(s,a,.01),this.framesSinceLastUpdate++>this.config.changeFrequency&&(this.updateTargetParams(),this.framesSinceLastUpdate=0)}getImageOffscreenCanvas(e,t){var n,i;if(e instanceof HTMLImageElement&&e.loading)return e;let r=X.offscreenCanvases.get(e);if(r||(r={},X.offscreenCanvases.set(e,r)),!(t in r)){const i=document.createElement("canvas");i.width=t,i.height=t,null===(n=i.getContext("2d"))||void 0===n||n.drawImage(e,0,0,t,t),r[t]=i}return null!==(i=r[t])&&void 0!==i?i:e}drawCircle(e){e.moveTo(this.params.x,this.params.y),e.arc(this.params.x,this.params.y,this.params.radius,0,x)}drawImage(e){const{x:t,y:n,rotation:i,radius:r}=this.params,o=i*Math.PI/180,s=Math.cos(o),a=Math.sin(o);e.setTransform(s,a,-a,s,t,n);const c=this.getImageOffscreenCanvas(this.image,r);e.drawImage(c,-r/2,-r/2,r,r)}}X.offscreenCanvases=new WeakMap;const G={pointerEvents:"none",backgroundColor:"transparent",position:"absolute",top:0,left:0,width:"100%",height:"100%"},Z=1e3/60;var H,J,V=function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)},O=function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n};class W{get ctx(){return V(this,H,"f")}get canvas(){return V(this,J,"f")}set canvas(e){O(this,J,e,"f"),O(this,H,e.getContext("2d"),"f")}constructor(e,t){this.lastUpdate=Date.now(),this.snowflakes=[],H.set(this,void 0),J.set(this,void 0),O(this,J,e,"f"),O(this,H,e.getContext("2d"),"f"),this.config={snowflakeCount:150,...A,...t},this.snowflakes=[],this.snowflakes=X.createSnowflakes(e,t.snowflakeCount||150,t),this.play()}updateConfig(e){this.config={...this.config,...e};const t=this.config.snowflakeCount-this.snowflakes.length;t>0&&(this.snowflakes=[...this.snowflakes,...X.createSnowflakes(this.canvas,t,e)]),t<0&&(this.snowflakes=this.snowflakes.slice(0,this.config.snowflakeCount));for(const e of this.snowflakes)e.updateConfig(this.config)}render(e=1){const{ctx:t,canvas:n,snowflakes:i}=this;if(!t||!n)return;const{offsetWidth:r,offsetHeight:o}=n;for(const t of i)t.update(r,o,e);if(t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,r,o),this.config.images&&this.config.images.length>0)for(const e of i)e.drawImage(t);else{t.beginPath();for(const e of i)e.drawCircle(t);t.fillStyle=this.config.color,t.fill()}}loop(){const e=Date.now(),t=Date.now()-this.lastUpdate;this.lastUpdate=e;const n=t/Z;this.render(n),this.animationFrame=requestAnimationFrame((()=>this.loop()))}play(){this.loop()}pause(){this.animationFrame&&(cancelAnimationFrame(this.animationFrame),this.animationFrame=void 0)}}H=new WeakMap,J=new WeakMap;function F(e){const[t,i]=n(e);return function(e,t){const n=s(t);y(t,n.current)||(n.current=t),r(e,n.current)}((()=>i(e)),[e]),t}var S=({color:e=A.color,changeFrequency:a=A.changeFrequency,radius:c=A.radius,speed:f=A.speed,wind:g=A.wind,rotationSpeed:u=A.rotationSpeed,snowflakeCount:l=150,images:d,style:h}={})=>{const p=o((()=>({...G,...m||{}})),[m=h]);var m;const b=s(null),I=(e=>{const[t,o]=n(v(e.current)),s=i((()=>{e.current&&o(v(e.current))}),[e]);return r((()=>{const{ResizeObserver:t}=window;if(e.current){if(s(),"function"==typeof t){const n=new t(s);return n.observe(e.current),()=>n.disconnect()}return window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)}}),[e,s]),t})(b),y=F({color:e,changeFrequency:a,radius:c,speed:f,wind:g,rotationSpeed:u,images:d,snowflakeCount:l}),w=s(y),C=s();return r((()=>(!C.current&&b.current&&(C.current=new W(b.current,w.current)),()=>{var e;null===(e=C.current)||void 0===e||e.pause(),C.current=void 0})),[]),r((()=>{C.current&&C.current.updateConfig(y)}),[y]),t.createElement("canvas",{ref:b,height:I.height,width:I.width,style:p,"data-testid":"SnowfallCanvas"})};function B(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}var j="production"===process.env.NODE_ENV?{name:"x2d7sm",styles:"body{position:relative;}"}:{name:"lruo4x-Snowfall",styles:"body{position:relative;};label:Snowfall;",map:"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNtQiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIlxyXG5pbXBvcnQgeyBjc3MsIEdsb2JhbCB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiXHJcbmltcG9ydCBSZWFjdFNub3dmYWxsIGZyb20gXCJyZWFjdC1zbm93ZmFsbFwiXHJcblxyXG5jb25zdCBTbm93ZmFsbCA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8U3R5bGVkV3JhcHBlciBjbGFzc05hbWU9XCJzbm93ZmFsbFwiIHsuLi5wcm9wc30+XHJcbiAgICAgIDxHbG9iYWxcclxuICAgICAgICBzdHlsZXM9e2Nzc2BcclxuICAgICAgICAgIGJvZHkge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgYH1cclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxSZWFjdFNub3dmYWxsXHJcbiAgICAgICAgY29sb3I9XCIjZmZmXCJcclxuICAgICAgICBzbm93Zmxha2VDb3VudD17NTB9XHJcbiAgICAgICAgcmFkaXVzPXtbMSwgNV19XHJcbiAgICAgICAgd2luZD17Wy0wLjUsIDAuNV19XHJcbiAgICAgIC8+XHJcbiAgICA8L1N0eWxlZFdyYXBwZXI+XHJcbiAgKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTbm93ZmFsbFxyXG5cclxuY29uc3QgU3R5bGVkV3JhcHBlciA9IHN0eWxlZC5kaXZgXHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbmBcclxuIl19 */",toString:B},z=function(e){return c(k,u(u({className:"snowfall"},e),{},{children:[f(a,{styles:j}),f(S,{color:"#fff",snowflakeCount:50,radius:[1,5],wind:[-.5,.5]})]}))},k=e("div","production"===process.env.NODE_ENV?{target:"e5mbc8b0"}:{target:"e5mbc8b0",label:"StyledWrapper"})("production"===process.env.NODE_ENV?{name:"16gvqzl",styles:"position:fixed;top:0;left:0;overflow:hidden;width:100%;height:100%;z-index:1000;pointer-events:none"}:{name:"16gvqzl",styles:"position:fixed;top:0;left:0;overflow:hidden;width:100%;height:100%;z-index:1000;pointer-events:none",map:"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCZ0MiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCJcclxuaW1wb3J0IHsgY3NzLCBHbG9iYWwgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIlxyXG5pbXBvcnQgUmVhY3RTbm93ZmFsbCBmcm9tIFwicmVhY3Qtc25vd2ZhbGxcIlxyXG5cclxuY29uc3QgU25vd2ZhbGwgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPFN0eWxlZFdyYXBwZXIgY2xhc3NOYW1lPVwic25vd2ZhbGxcIiB7Li4ucHJvcHN9PlxyXG4gICAgICA8R2xvYmFsXHJcbiAgICAgICAgc3R5bGVzPXtjc3NgXHJcbiAgICAgICAgICBib2R5IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGB9XHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8UmVhY3RTbm93ZmFsbFxyXG4gICAgICAgIGNvbG9yPVwiI2ZmZlwiXHJcbiAgICAgICAgc25vd2ZsYWtlQ291bnQ9ezUwfVxyXG4gICAgICAgIHJhZGl1cz17WzEsIDVdfVxyXG4gICAgICAgIHdpbmQ9e1stMC41LCAwLjVdfVxyXG4gICAgICAvPlxyXG4gICAgPC9TdHlsZWRXcmFwcGVyPlxyXG4gIClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU25vd2ZhbGxcclxuXHJcbmNvbnN0IFN0eWxlZFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB6LWluZGV4OiAxMDAwO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5gXHJcbiJdfQ== */",toString:B});export{z as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../node_modules/react-fast-compare/index.js","../../../../node_modules/react-snowfall/lib/utils.js","../../../../node_modules/react-snowfall/lib/Snowflake.js","../../../../node_modules/react-snowfall/lib/config.js","../../../../node_modules/react-snowfall/lib/SnowfallCanvas.js","../../../../node_modules/react-snowfall/lib/hooks.js","../../../../node_modules/react-snowfall/lib/Snowfall.js","../../src/components/Snowfall/index.js"],"sourcesContent":["/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * Enhanced random function, selects a random value between a minimum and maximum. If the values provided are both\n * integers then the number returned will be an integer, otherwise the return number will be a decimal.\n * @param min The minimum value\n * @param max The maximum value\n */\nexport function random(min, max) {\n const randomNumber = Math.random() * (max - min + 1) + min;\n if (!Number.isInteger(min) || !Number.isInteger(max)) {\n return randomNumber;\n }\n else {\n return Math.floor(randomNumber);\n }\n}\n/**\n * Linear interpolation function to gradually step towards a target value\n * @param start The current value\n * @param end The target value\n * @param normal The rate of change between 0 and 1 (0 = no change, 1 = instant)\n */\nexport function lerp(start, end, normal) {\n return (1 - normal) * start + normal * end;\n}\n/**\n * Selects a random item from an array of inputs.\n *\n * @param items The array of items to choose from\n * @returns A random item selected from the array\n */\nexport function randomElement(items) {\n const index = Math.floor(Math.random() * items.length);\n return items[index];\n}\n/**\n * Gets the height and width of the provided HTML element\n * @param element The html element to measure\n */\nexport function getSize(element) {\n if (!element)\n return { height: 0, width: 0 };\n return {\n height: element.offsetHeight,\n width: element.offsetWidth,\n };\n}\n/**\n * Store the value of PI * 2.\n *\n * This is so we can avoid calculating this value every time we draw a circle.\n */\nexport const twoPi = Math.PI * 2;\n//# sourceMappingURL=utils.js.map","import isEqual from 'react-fast-compare';\nimport { lerp, random, randomElement, twoPi } from './utils.js';\nexport const defaultConfig = {\n color: '#dee4fd',\n radius: [0.5, 3.0],\n speed: [1.0, 3.0],\n wind: [-0.5, 2.0],\n changeFrequency: 200,\n rotationSpeed: [-1.0, 1.0],\n};\n/**\n * An individual snowflake that will update it's location every call to `update`\n * and draw itself to the canvas every call to `draw`.\n */\nclass Snowflake {\n /**\n * A utility function to create a collection of snowflakes\n * @param canvas The canvas element\n * @param amount The number of snowflakes\n * @param config The configuration for each snowflake\n */\n static createSnowflakes(canvas, amount, config) {\n if (!canvas)\n return [];\n const snowflakes = [];\n for (let i = 0; i < amount; i++) {\n snowflakes.push(new Snowflake(canvas, config));\n }\n return snowflakes;\n }\n constructor(canvas, config = {}) {\n // Set custom config\n this.updateConfig(config);\n // Setting initial parameters\n const { radius, wind, speed, rotationSpeed } = this.config;\n this.params = {\n x: random(0, canvas.offsetWidth),\n y: random(-canvas.offsetHeight, 0),\n rotation: random(0, 360),\n radius: random(...radius),\n speed: random(...speed),\n wind: random(...wind),\n rotationSpeed: random(...rotationSpeed),\n nextSpeed: random(...wind),\n nextWind: random(...speed),\n nextRotationSpeed: random(...rotationSpeed),\n };\n this.framesSinceLastUpdate = 0;\n }\n selectImage() {\n if (this.config.images && this.config.images.length > 0) {\n this.image = randomElement(this.config.images);\n }\n else {\n this.image = undefined;\n }\n }\n updateConfig(config) {\n const previousConfig = this.config;\n this.config = { ...defaultConfig, ...config };\n this.config.changeFrequency = random(this.config.changeFrequency, this.config.changeFrequency * 1.5);\n // Update the radius if the config has changed, it won't gradually update on it's own\n if (this.params && !isEqual(this.config.radius, previousConfig === null || previousConfig === void 0 ? void 0 : previousConfig.radius)) {\n this.params.radius = random(...this.config.radius);\n }\n if (!isEqual(this.config.images, previousConfig === null || previousConfig === void 0 ? void 0 : previousConfig.images)) {\n this.selectImage();\n }\n }\n updateTargetParams() {\n this.params.nextSpeed = random(...this.config.speed);\n this.params.nextWind = random(...this.config.wind);\n if (this.image) {\n this.params.nextRotationSpeed = random(...this.config.rotationSpeed);\n }\n }\n update(offsetWidth, offsetHeight, framesPassed = 1) {\n const { x, y, rotation, rotationSpeed, nextRotationSpeed, wind, speed, nextWind, nextSpeed, radius } = this.params;\n // Update current location, wrapping around if going off the canvas\n this.params.x = (x + wind * framesPassed) % (offsetWidth + radius * 2);\n if (this.params.x > offsetWidth + radius)\n this.params.x = -radius;\n this.params.y = (y + speed * framesPassed) % (offsetHeight + radius * 2);\n if (this.params.y > offsetHeight + radius)\n this.params.y = -radius;\n // Apply rotation\n if (this.image) {\n this.params.rotation = (rotation + rotationSpeed) % 360;\n }\n // Update the wind, speed and rotation towards the desired values\n this.params.speed = lerp(speed, nextSpeed, 0.01);\n this.params.wind = lerp(wind, nextWind, 0.01);\n this.params.rotationSpeed = lerp(rotationSpeed, nextRotationSpeed, 0.01);\n if (this.framesSinceLastUpdate++ > this.config.changeFrequency) {\n this.updateTargetParams();\n this.framesSinceLastUpdate = 0;\n }\n }\n getImageOffscreenCanvas(image, size) {\n var _a, _b;\n if (image instanceof HTMLImageElement && image.loading)\n return image;\n let sizes = Snowflake.offscreenCanvases.get(image);\n if (!sizes) {\n sizes = {};\n Snowflake.offscreenCanvases.set(image, sizes);\n }\n if (!(size in sizes)) {\n const canvas = document.createElement('canvas');\n canvas.width = size;\n canvas.height = size;\n (_a = canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.drawImage(image, 0, 0, size, size);\n sizes[size] = canvas;\n }\n return (_b = sizes[size]) !== null && _b !== void 0 ? _b : image;\n }\n /**\n * Draws a circular snowflake to the canvas.\n *\n * This method should only be called if our config does not have images.\n *\n * This method assumes that a path has already been started on the canvas.\n * `ctx.beginPath()` should be called before calling this method.\n *\n * After calling this method, the fillStyle should be set to the snowflake's\n * color and `ctx.fill()` should be called to fill the snowflake.\n *\n * Calling `ctx.fill()` after multiple snowflakes have had `drawCircle` called\n * will render all of the snowflakes since the last call to `ctx.beginPath()`.\n *\n * @param ctx The canvas context to draw to\n */\n drawCircle(ctx) {\n ctx.moveTo(this.params.x, this.params.y);\n ctx.arc(this.params.x, this.params.y, this.params.radius, 0, twoPi);\n }\n /**\n * Draws an image-based snowflake to the canvas.\n *\n * This method should only be called if our config has images.\n *\n * @param ctx The canvas context to draw to\n */\n drawImage(ctx) {\n const { x, y, rotation, radius } = this.params;\n const radian = (rotation * Math.PI) / 180;\n const cos = Math.cos(radian);\n const sin = Math.sin(radian);\n // Translate to the location that we will be drawing the snowflake, including any rotation that needs to be applied\n // The arguments for setTransform are: a, b, c, d, e, f\n // a (scaleX), b (skewY), c (skewX), d (scaleY), e (translateX), f (translateY)\n ctx.setTransform(cos, sin, -sin, cos, x, y);\n // Draw the image with the center of the image at the center of the current location\n const image = this.getImageOffscreenCanvas(this.image, radius);\n ctx.drawImage(image, -(radius / 2), -(radius / 2), radius, radius);\n }\n}\nSnowflake.offscreenCanvases = new WeakMap();\nexport default Snowflake;\n//# sourceMappingURL=Snowflake.js.map","export const snowfallBaseStyle = {\n pointerEvents: 'none',\n backgroundColor: 'transparent',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n};\n// Target of 60 frames per second\nexport const targetFrameTime = 1000 / 60;\n//# sourceMappingURL=config.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _SnowfallCanvas_ctx, _SnowfallCanvas_canvas;\nimport Snowflake, { defaultConfig } from './Snowflake.js';\nimport { targetFrameTime } from './config.js';\nexport class SnowfallCanvas {\n get ctx() {\n return __classPrivateFieldGet(this, _SnowfallCanvas_ctx, \"f\");\n }\n get canvas() {\n return __classPrivateFieldGet(this, _SnowfallCanvas_canvas, \"f\");\n }\n set canvas(canvas) {\n __classPrivateFieldSet(this, _SnowfallCanvas_canvas, canvas, \"f\");\n __classPrivateFieldSet(this, _SnowfallCanvas_ctx, canvas.getContext('2d'), \"f\");\n }\n constructor(canvas, config) {\n this.lastUpdate = Date.now();\n this.snowflakes = [];\n _SnowfallCanvas_ctx.set(this, void 0);\n _SnowfallCanvas_canvas.set(this, void 0);\n __classPrivateFieldSet(this, _SnowfallCanvas_canvas, canvas, \"f\");\n __classPrivateFieldSet(this, _SnowfallCanvas_ctx, canvas.getContext('2d'), \"f\");\n this.config = { snowflakeCount: 150, ...defaultConfig, ...config };\n this.snowflakes = [];\n this.snowflakes = Snowflake.createSnowflakes(canvas, config.snowflakeCount || 150, config);\n this.play();\n }\n /**\n * Updates the config used for the snowfall animation, if the number of snowflakes\n * has changed then this will create new or remove existing snowflakes gracefully\n * to retain the position of as many existing snowflakes as possible.\n */\n updateConfig(config) {\n this.config = { ...this.config, ...config };\n const sizeDifference = this.config.snowflakeCount - this.snowflakes.length;\n if (sizeDifference > 0) {\n this.snowflakes = [...this.snowflakes, ...Snowflake.createSnowflakes(this.canvas, sizeDifference, config)];\n }\n if (sizeDifference < 0) {\n this.snowflakes = this.snowflakes.slice(0, this.config.snowflakeCount);\n }\n for (const snowflake of this.snowflakes) {\n snowflake.updateConfig(this.config);\n }\n }\n /**\n * Updates the location of each snowflake based on the number of frames passed then\n * clears the canvas and draws each snowflake.\n */\n render(framesPassed = 1) {\n const { ctx, canvas, snowflakes } = this;\n if (!ctx || !canvas)\n return;\n const { offsetWidth, offsetHeight } = canvas;\n // Update the position of each snowflake\n for (const snowflake of snowflakes) {\n snowflake.update(offsetWidth, offsetHeight, framesPassed);\n }\n // Render the snowflakes\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, offsetWidth, offsetHeight);\n // If using images, draw each image individually\n if (this.config.images && this.config.images.length > 0) {\n for (const snowflake of snowflakes) {\n snowflake.drawImage(ctx);\n }\n return;\n }\n // Not using images, draw circles in a single path\n ctx.beginPath();\n for (const snowflake of snowflakes) {\n snowflake.drawCircle(ctx);\n }\n ctx.fillStyle = this.config.color;\n ctx.fill();\n }\n /**\n * The animation loop, will calculate the time since the last render and update\n * the position of the snowflakes appropriately before queueing another frame.\n */\n loop() {\n // Update based on time passed so that a slow frame rate won't slow down the snowflake\n const now = Date.now();\n const msPassed = Date.now() - this.lastUpdate;\n this.lastUpdate = now;\n // Frames that would have passed if running at 60 fps\n const framesPassed = msPassed / targetFrameTime;\n this.render(framesPassed);\n this.animationFrame = requestAnimationFrame(() => this.loop());\n }\n /** Start the animation playing. */\n play() {\n this.loop();\n }\n /** Pause the animation. */\n pause() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = undefined;\n }\n }\n}\n_SnowfallCanvas_ctx = new WeakMap(), _SnowfallCanvas_canvas = new WeakMap();\nexport default SnowfallCanvas;\n//# sourceMappingURL=SnowfallCanvas.js.map","import { useCallback, useEffect, useRef, useState, useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { snowfallBaseStyle } from './config.js';\nimport { getSize } from './utils.js';\n/**\n * Returns the height and width of a HTML element, uses the `ResizeObserver` api if available to detect changes to the\n * size. Falls back to listening for resize events on the window.\n * @param ref A ref to the HTML element to be measured\n */\nexport const useComponentSize = (ref) => {\n const [size, setSize] = useState(getSize(ref.current));\n const resizeHandler = useCallback(() => {\n if (ref.current) {\n setSize(getSize(ref.current));\n }\n }, [ref]);\n useEffect(() => {\n const { ResizeObserver } = window;\n if (!ref.current)\n return;\n resizeHandler();\n if (typeof ResizeObserver === 'function') {\n const resizeObserver = new ResizeObserver(resizeHandler);\n resizeObserver.observe(ref.current);\n return () => resizeObserver.disconnect();\n }\n else {\n window.addEventListener('resize', resizeHandler);\n return () => window.removeEventListener('resize', resizeHandler);\n }\n }, [ref, resizeHandler]);\n return size;\n};\n/**\n * Utility hook that merges any provided styles with the default styles\n * @param overrides The style prop passed into the component\n */\nexport const useSnowfallStyle = (overrides) => {\n const styles = useMemo(() => ({\n ...snowfallBaseStyle,\n ...(overrides || {}),\n }), [overrides]);\n return styles;\n};\n/**\n * Same as `React.useEffect` but uses a deep comparison on the dependency array. This should only\n * be used when working with non-primitive dependencies.\n *\n * @param effect Effect callback to run\n * @param deps Effect dependencies\n */\nexport function useDeepCompareEffect(effect, deps) {\n const ref = useRef(deps);\n // Only update the current dependencies if they are not deep equal\n if (!isEqual(deps, ref.current)) {\n ref.current = deps;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useEffect(effect, ref.current);\n}\n/**\n * Utility hook to stabilize a reference to a value, the returned value will always match the input value\n * but (unlike an inline object) will maintain [SameValueZero](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * equality until a change is made.\n *\n * @example\n *\n * const obj = useDeepMemo({ foo: 'bar', bar: 'baz' }) // <- inline object creation\n * const prevValue = usePrevious(obj) // <- value from the previous render\n * console.log(obj === prevValue) // <- always logs true until value changes\n */\nexport function useDeepMemo(value) {\n const [state, setState] = useState(value);\n useDeepCompareEffect(() => setState(value), [value]);\n return state;\n}\n//# sourceMappingURL=hooks.js.map","import React, { useEffect, useRef } from 'react';\nimport { SnowfallCanvas } from './SnowfallCanvas.js';\nimport { defaultConfig } from './Snowflake.js';\nimport { useComponentSize, useDeepMemo, useSnowfallStyle } from './hooks.js';\nexport const Snowfall = ({ color = defaultConfig.color, changeFrequency = defaultConfig.changeFrequency, radius = defaultConfig.radius, speed = defaultConfig.speed, wind = defaultConfig.wind, rotationSpeed = defaultConfig.rotationSpeed, snowflakeCount = 150, images, style, } = {}) => {\n const mergedStyle = useSnowfallStyle(style);\n const canvasRef = useRef(null);\n const canvasSize = useComponentSize(canvasRef);\n const config = useDeepMemo({\n color,\n changeFrequency,\n radius,\n speed,\n wind,\n rotationSpeed,\n images,\n snowflakeCount,\n });\n // A reference to the config used for creating the initial instance\n const configRef = useRef(config);\n const snowfallCanvasRef = useRef();\n useEffect(() => {\n if (!snowfallCanvasRef.current && canvasRef.current) {\n snowfallCanvasRef.current = new SnowfallCanvas(canvasRef.current, configRef.current);\n }\n return () => {\n var _a;\n (_a = snowfallCanvasRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n snowfallCanvasRef.current = undefined;\n };\n }, []);\n useEffect(() => {\n if (snowfallCanvasRef.current) {\n snowfallCanvasRef.current.updateConfig(config);\n }\n }, [config]);\n return (React.createElement(\"canvas\", { ref: canvasRef, height: canvasSize.height, width: canvasSize.width, style: mergedStyle, \"data-testid\": \"SnowfallCanvas\" }));\n};\nexport default Snowfall;\n//# sourceMappingURL=Snowfall.js.map","import React from \"react\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css, Global } from \"@emotion/react\"\r\nimport ReactSnowfall from \"react-snowfall\"\r\n\r\nconst Snowfall = (props) => {\r\n return (\r\n <StyledWrapper className=\"snowfall\" {...props}>\r\n <Global\r\n styles={css`\r\n body {\r\n position: relative;\r\n }\r\n `}\r\n />\r\n\r\n <ReactSnowfall\r\n color=\"#fff\"\r\n snowflakeCount={50}\r\n radius={[1, 5]}\r\n wind={[-0.5, 0.5]}\r\n />\r\n </StyledWrapper>\r\n )\r\n}\r\n\r\nexport default Snowfall\r\n\r\nconst StyledWrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 1000;\r\n pointer-events: none;\r\n`\r\n"],"names":["hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","constructor","length","i","keys","it","Array","isArray","size","entries","next","done","has","value","get","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","$$typeof","reactFastCompare","error","message","match","console","warn","random","min","max","randomNumber","Math","Number","isInteger","floor","lerp","start","end","normal","getSize","element","height","offsetHeight","width","offsetWidth","twoPi","PI","defaultConfig","color","radius","speed","wind","changeFrequency","rotationSpeed","Snowflake","createSnowflakes","canvas","amount","config","snowflakes","push","this","updateConfig","params","x","y","rotation","nextSpeed","nextWind","nextRotationSpeed","framesSinceLastUpdate","selectImage","items","images","image","undefined","previousConfig","isEqual","updateTargetParams","update","framesPassed","getImageOffscreenCanvas","_a","_b","HTMLImageElement","loading","sizes","offscreenCanvases","set","document","createElement","getContext","drawImage","drawCircle","ctx","moveTo","arc","radian","cos","sin","setTransform","WeakMap","snowfallBaseStyle","pointerEvents","backgroundColor","position","top","left","targetFrameTime","_SnowfallCanvas_ctx","_SnowfallCanvas_canvas","__classPrivateFieldGet","receiver","state","kind","f","TypeError","__classPrivateFieldSet","SnowfallCanvas","lastUpdate","Date","now","snowflakeCount","play","sizeDifference","slice","snowflake","render","clearRect","beginPath","fillStyle","fill","loop","msPassed","animationFrame","requestAnimationFrame","pause","cancelAnimationFrame","useDeepMemo","setState","useState","effect","deps","ref","useRef","current","useEffect","useDeepCompareEffect","ReactSnowfall","style","mergedStyle","useMemo","overrides","canvasRef","canvasSize","setSize","resizeHandler","useCallback","ResizeObserver","window","resizeObserver","observe","disconnect","addEventListener","removeEventListener","useComponentSize","configRef","snowfallCanvasRef","React","_ref","process","env","NODE_ENV","name","styles","map","_EMOTION_STRINGIFIED_CSS_ERROR__","Snowfall","props","_jsxs","StyledWrapper","_objectSpread","className","children","_jsx","Global","_styled","target","label"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./cjs/index.js",
4
+ "module": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }