@jacob_cruz_prizecart/threejs-reveal 1.0.21 → 1.0.22

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.
package/dist/index.cjs.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * Subject to the terms at https://gsap.com/standard-license or for
7
7
  * Club GSAP members, the agreement issued with that membership.
8
8
  * @author: Jack Doyle, jack@greensock.com
9
- */var qe=/[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig,Ye=/[\+\-]?\d*\.?\d+e[\+\-]?\d+/ig,He=Math.PI/180,Me=Math.sin,Ce=Math.cos,ye=Math.abs,be=Math.sqrt,Ze=function(s){return typeof s=="number"},ke=1e5,he=function(s){return Math.round(s*ke)/ke||0};function Qe(l,s,i,r,d,m,v){for(var y=l.length,x,u,b,c,w;--y>-1;)for(x=l[y],u=x.length,b=0;b<u;b+=2)c=x[b],w=x[b+1],x[b]=c*s+w*r+m,x[b+1]=c*i+w*d+v;return l._dirty=1,l}function Je(l,s,i,r,d,m,v,y,x){if(!(l===y&&s===x)){i=ye(i),r=ye(r);var u=d%360*He,b=Ce(u),c=Me(u),w=Math.PI,p=w*2,g=(l-y)/2,o=(s-x)/2,C=b*g+c*o,M=-c*g+b*o,h=C*C,t=M*M,S=h/(i*i)+t/(r*r);S>1&&(i=be(S)*i,r=be(S)*r);var F=i*i,G=r*r,_=(F*G-F*t-G*h)/(F*t+G*h);_<0&&(_=0);var H=(m===v?-1:1)*be(_),U=H*(i*M/r),q=H*-(r*C/i),re=(l+y)/2,$=(s+x)/2,ce=re+(b*U-c*q),ge=$+(c*U+b*q),J=(C-U)/i,Z=(M-q)/r,se=(-C-U)/i,me=(-M-q)/r,N=J*J+Z*Z,n=(Z<0?-1:1)*Math.acos(J/be(N)),e=(J*me-Z*se<0?-1:1)*Math.acos((J*se+Z*me)/be(N*(se*se+me*me)));isNaN(e)&&(e=w),!v&&e>0?e-=p:v&&e<0&&(e+=p),n%=p,e%=p;var j=Math.ceil(ye(e)/(p/4)),T=[],L=e/j,R=4/3*Me(L/2)/(1+Ce(L/2)),P=b*i,E=c*i,k=c*-r,O=b*r,A;for(A=0;A<j;A++)d=n+A*L,C=Ce(d),M=Me(d),J=Ce(d+=L),Z=Me(d),T.push(C-R*M,M+R*C,J+R*Z,Z-R*J,J,Z);for(A=0;A<T.length;A+=2)C=T[A],M=T[A+1],T[A]=C*P+M*k+ce,T[A+1]=C*E+M*O+ge;return T[A-2]=y,T[A-1]=x,T}}function Ke(l){var s=(l+"").replace(Ye,function(U){var q=+U;return q<1e-4&&q>-1e-4?0:q}).match(qe)||[],i=[],r=0,d=0,m=2/3,v=s.length,y=0,x="ERROR: malformed path: "+l,u,b,c,w,p,g,o,C,M,h,t,S,F,G,_,H=function(q,re,$,ce){h=($-q)/3,t=(ce-re)/3,o.push(q+h,re+t,$-h,ce-t,$,ce)};if(!l||!isNaN(s[0])||isNaN(s[1]))return console.log(x),i;for(u=0;u<v;u++)if(F=p,isNaN(s[u])?(p=s[u].toUpperCase(),g=p!==s[u]):u--,c=+s[u+1],w=+s[u+2],g&&(c+=r,w+=d),u||(C=c,M=w),p==="M")o&&(o.length<8?i.length-=1:y+=o.length),r=C=c,d=M=w,o=[c,w],i.push(o),u+=2,p="L";else if(p==="C")o||(o=[0,0]),g||(r=d=0),o.push(c,w,r+s[u+3]*1,d+s[u+4]*1,r+=s[u+5]*1,d+=s[u+6]*1),u+=6;else if(p==="S")h=r,t=d,(F==="C"||F==="S")&&(h+=r-o[o.length-4],t+=d-o[o.length-3]),g||(r=d=0),o.push(h,t,c,w,r+=s[u+3]*1,d+=s[u+4]*1),u+=4;else if(p==="Q")h=r+(c-r)*m,t=d+(w-d)*m,g||(r=d=0),r+=s[u+3]*1,d+=s[u+4]*1,o.push(h,t,r+(c-r)*m,d+(w-d)*m,r,d),u+=4;else if(p==="T")h=r-o[o.length-4],t=d-o[o.length-3],o.push(r+h,d+t,c+(r+h*1.5-c)*m,w+(d+t*1.5-w)*m,r=c,d=w),u+=2;else if(p==="H")H(r,d,r=c,d),u+=1;else if(p==="V")H(r,d,r,d=c+(g?d-r:0)),u+=1;else if(p==="L"||p==="Z")p==="Z"&&(c=C,w=M,o.closed=!0),(p==="L"||ye(r-c)>.5||ye(d-w)>.5)&&(H(r,d,c,w),p==="L"&&(u+=2)),r=c,d=w;else if(p==="A"){if(G=s[u+4],_=s[u+5],h=s[u+6],t=s[u+7],b=7,G.length>1&&(G.length<3?(t=h,h=_,b--):(t=_,h=G.substr(2),b-=2),_=G.charAt(1),G=G.charAt(0)),S=Je(r,d,+s[u+1],+s[u+2],+s[u+3],+G,+_,(g?r:0)+h*1,(g?d:0)+t*1),u+=b,S)for(b=0;b<S.length;b++)o.push(S[b]);r=o[o.length-2],d=o[o.length-1]}else console.log(x);return u=o.length,u<6?(i.pop(),u=0):o[0]===o[u-2]&&o[1]===o[u-1]&&(o.closed=!0),i.totalPoints=y+u,i}function et(l){Ze(l[0])&&(l=[l]);var s="",i=l.length,r,d,m,v;for(d=0;d<i;d++){for(v=l[d],s+="M"+he(v[0])+","+he(v[1])+" C",r=v.length,m=2;m<r;m++)s+=he(v[m++])+","+he(v[m++])+" "+he(v[m++])+","+he(v[m++])+" "+he(v[m++])+","+he(v[m])+" ";v.closed&&(s+="z")}return s}/*!
9
+ */var qe=/[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig,Ye=/[\+\-]?\d*\.?\d+e[\+\-]?\d+/ig,He=Math.PI/180,Me=Math.sin,Ce=Math.cos,ye=Math.abs,be=Math.sqrt,Ze=function(s){return typeof s=="number"},ke=1e5,he=function(s){return Math.round(s*ke)/ke||0};function Qe(l,s,i,r,d,m,v){for(var y=l.length,x,u,b,c,w;--y>-1;)for(x=l[y],u=x.length,b=0;b<u;b+=2)c=x[b],w=x[b+1],x[b]=c*s+w*r+m,x[b+1]=c*i+w*d+v;return l._dirty=1,l}function Je(l,s,i,r,d,m,v,y,x){if(!(l===y&&s===x)){i=ye(i),r=ye(r);var u=d%360*He,b=Ce(u),c=Me(u),w=Math.PI,p=w*2,g=(l-y)/2,o=(s-x)/2,C=b*g+c*o,M=-c*g+b*o,h=C*C,t=M*M,S=h/(i*i)+t/(r*r);S>1&&(i=be(S)*i,r=be(S)*r);var E=i*i,G=r*r,_=(E*G-E*t-G*h)/(E*t+G*h);_<0&&(_=0);var H=(m===v?-1:1)*be(_),U=H*(i*M/r),q=H*-(r*C/i),re=(l+y)/2,$=(s+x)/2,ce=re+(b*U-c*q),ge=$+(c*U+b*q),J=(C-U)/i,Z=(M-q)/r,se=(-C-U)/i,me=(-M-q)/r,N=J*J+Z*Z,n=(Z<0?-1:1)*Math.acos(J/be(N)),e=(J*me-Z*se<0?-1:1)*Math.acos((J*se+Z*me)/be(N*(se*se+me*me)));isNaN(e)&&(e=w),!v&&e>0?e-=p:v&&e<0&&(e+=p),n%=p,e%=p;var j=Math.ceil(ye(e)/(p/4)),T=[],L=e/j,R=4/3*Me(L/2)/(1+Ce(L/2)),P=b*i,F=c*i,k=c*-r,O=b*r,A;for(A=0;A<j;A++)d=n+A*L,C=Ce(d),M=Me(d),J=Ce(d+=L),Z=Me(d),T.push(C-R*M,M+R*C,J+R*Z,Z-R*J,J,Z);for(A=0;A<T.length;A+=2)C=T[A],M=T[A+1],T[A]=C*P+M*k+ce,T[A+1]=C*F+M*O+ge;return T[A-2]=y,T[A-1]=x,T}}function Ke(l){var s=(l+"").replace(Ye,function(U){var q=+U;return q<1e-4&&q>-1e-4?0:q}).match(qe)||[],i=[],r=0,d=0,m=2/3,v=s.length,y=0,x="ERROR: malformed path: "+l,u,b,c,w,p,g,o,C,M,h,t,S,E,G,_,H=function(q,re,$,ce){h=($-q)/3,t=(ce-re)/3,o.push(q+h,re+t,$-h,ce-t,$,ce)};if(!l||!isNaN(s[0])||isNaN(s[1]))return console.log(x),i;for(u=0;u<v;u++)if(E=p,isNaN(s[u])?(p=s[u].toUpperCase(),g=p!==s[u]):u--,c=+s[u+1],w=+s[u+2],g&&(c+=r,w+=d),u||(C=c,M=w),p==="M")o&&(o.length<8?i.length-=1:y+=o.length),r=C=c,d=M=w,o=[c,w],i.push(o),u+=2,p="L";else if(p==="C")o||(o=[0,0]),g||(r=d=0),o.push(c,w,r+s[u+3]*1,d+s[u+4]*1,r+=s[u+5]*1,d+=s[u+6]*1),u+=6;else if(p==="S")h=r,t=d,(E==="C"||E==="S")&&(h+=r-o[o.length-4],t+=d-o[o.length-3]),g||(r=d=0),o.push(h,t,c,w,r+=s[u+3]*1,d+=s[u+4]*1),u+=4;else if(p==="Q")h=r+(c-r)*m,t=d+(w-d)*m,g||(r=d=0),r+=s[u+3]*1,d+=s[u+4]*1,o.push(h,t,r+(c-r)*m,d+(w-d)*m,r,d),u+=4;else if(p==="T")h=r-o[o.length-4],t=d-o[o.length-3],o.push(r+h,d+t,c+(r+h*1.5-c)*m,w+(d+t*1.5-w)*m,r=c,d=w),u+=2;else if(p==="H")H(r,d,r=c,d),u+=1;else if(p==="V")H(r,d,r,d=c+(g?d-r:0)),u+=1;else if(p==="L"||p==="Z")p==="Z"&&(c=C,w=M,o.closed=!0),(p==="L"||ye(r-c)>.5||ye(d-w)>.5)&&(H(r,d,c,w),p==="L"&&(u+=2)),r=c,d=w;else if(p==="A"){if(G=s[u+4],_=s[u+5],h=s[u+6],t=s[u+7],b=7,G.length>1&&(G.length<3?(t=h,h=_,b--):(t=_,h=G.substr(2),b-=2),_=G.charAt(1),G=G.charAt(0)),S=Je(r,d,+s[u+1],+s[u+2],+s[u+3],+G,+_,(g?r:0)+h*1,(g?d:0)+t*1),u+=b,S)for(b=0;b<S.length;b++)o.push(S[b]);r=o[o.length-2],d=o[o.length-1]}else console.log(x);return u=o.length,u<6?(i.pop(),u=0):o[0]===o[u-2]&&o[1]===o[u-1]&&(o.closed=!0),i.totalPoints=y+u,i}function et(l){Ze(l[0])&&(l=[l]);var s="",i=l.length,r,d,m,v;for(d=0;d<i;d++){for(v=l[d],s+="M"+he(v[0])+","+he(v[1])+" C",r=v.length,m=2;m<r;m++)s+=he(v[m++])+","+he(v[m++])+" "+he(v[m++])+","+he(v[m++])+" "+he(v[m++])+","+he(v[m])+" ";v.closed&&(s+="z")}return s}/*!
10
10
  * CustomEase 3.12.5
11
11
  * https://gsap.com
12
12
  *
@@ -14,6 +14,6 @@
14
14
  * Subject to the terms at https://gsap.com/standard-license or for
15
15
  * Club GSAP members, the agreement issued with that membership.
16
16
  * @author: Jack Doyle, jack@greensock.com
17
- */var le,ze,Ge=function(){return le||typeof window<"u"&&(le=window.gsap)&&le.registerPlugin&&le},Ie=function(){le=Ge(),le?(le.registerEase("_CE",xe.create),ze=1):console.warn("Please gsap.registerPlugin(CustomEase)")},tt=1e20,Se=function(s){return~~(s*1e3+(s<0?-.5:.5))/1e3},nt=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/gi,rt=/[cLlsSaAhHvVtTqQ]/g,at=function(s){var i=s.length,r=tt,d;for(d=1;d<i;d+=6)+s[d]<r&&(r=+s[d]);return r},st=function(s,i,r){!r&&r!==0&&(r=Math.max(+s[s.length-1],+s[1]));var d=+s[0]*-1,m=-r,v=s.length,y=1/(+s[v-2]+d),x=-i||(Math.abs(+s[v-1]-+s[1])<.01*(+s[v-2]-+s[0])?at(s)+m:+s[v-1]+m),u;for(x?x=1/x:x=-y,u=0;u<v;u+=2)s[u]=(+s[u]+d)*y,s[u+1]=(+s[u+1]+m)*x},ot=function l(s,i,r,d,m,v,y,x,u,b,c){var w=(s+r)/2,p=(i+d)/2,g=(r+m)/2,o=(d+v)/2,C=(m+y)/2,M=(v+x)/2,h=(w+g)/2,t=(p+o)/2,S=(g+C)/2,F=(o+M)/2,G=(h+S)/2,_=(t+F)/2,H=y-s,U=x-i,q=Math.abs((r-y)*U-(d-x)*H),re=Math.abs((m-y)*U-(v-x)*H),$;return b||(b=[{x:s,y:i},{x:y,y:x}],c=1),b.splice(c||b.length-1,0,{x:G,y:_}),(q+re)*(q+re)>u*(H*H+U*U)&&($=b.length,l(s,i,w,p,h,t,G,_,u,b,c),l(G,_,S,F,C,M,y,x,u,b,c+1+(b.length-$))),b},xe=function(){function l(i,r,d){ze||Ie(),this.id=i,this.setData(r,d)}var s=l.prototype;return s.setData=function(r,d){d=d||{},r=r||"0,0,1,1";var m=r.match(nt),v=1,y=[],x=[],u=d.precision||1,b=u<=1,c,w,p,g,o,C,M,h,t;if(this.data=r,(rt.test(r)||~r.indexOf("M")&&r.indexOf("C")<0)&&(m=Ke(r)[0]),c=m.length,c===4)m.unshift(0,0),m.push(1,1),c=8;else if((c-2)%6)throw"Invalid CustomEase";for((+m[0]!=0||+m[c-2]!=1)&&st(m,d.height,d.originY),this.segment=m,g=2;g<c;g+=6)w={x:+m[g-2],y:+m[g-1]},p={x:+m[g+4],y:+m[g+5]},y.push(w,p),ot(w.x,w.y,+m[g],+m[g+1],+m[g+2],+m[g+3],p.x,p.y,1/(u*2e5),y,y.length-1);for(c=y.length,g=0;g<c;g++)M=y[g],h=y[g-1]||M,(M.x>h.x||h.y!==M.y&&h.x===M.x||M===h)&&M.x<=1?(h.cx=M.x-h.x,h.cy=M.y-h.y,h.n=M,h.nx=M.x,b&&g>1&&Math.abs(h.cy/h.cx-y[g-2].cy/y[g-2].cx)>2&&(b=0),h.cx<v&&(h.cx?v=h.cx:(h.cx=.001,g===c-1&&(h.x-=.001,v=Math.min(v,.001),b=0)))):(y.splice(g--,1),c--);if(c=1/v+1|0,o=1/c,C=0,M=y[0],b){for(g=0;g<c;g++)t=g*o,M.nx<t&&(M=y[++C]),w=M.y+(t-M.x)/M.cx*M.cy,x[g]={x:t,cx:o,y:w,cy:0,nx:9},g&&(x[g-1].cy=w-x[g-1].y);x[c-1].cy=y[y.length-1].y-w}else{for(g=0;g<c;g++)M.nx<g*o&&(M=y[++C]),x[g]=M;C<y.length-1&&(x[g-1]=y[y.length-2])}return this.ease=function(S){var F=x[S*c|0]||x[c-1];return F.nx<S&&(F=F.n),F.y+(S-F.x)/F.cx*F.cy},this.ease.custom=this,this.id&&le&&le.registerEase(this.id,this.ease),this},s.getSVGData=function(r){return l.getSVGData(this,r)},l.create=function(r,d,m){return new l(r,d,m).ease},l.register=function(r){le=r,Ie()},l.get=function(r){return le.parseEase(r)},l.getSVGData=function(r,d){d=d||{};var m=d.width||100,v=d.height||100,y=d.x||0,x=(d.y||0)+v,u=le.utils.toArray(d.path)[0],b,c,w,p,g,o,C,M,h,t;if(d.invert&&(v=-v,x=0),typeof r=="string"&&(r=le.parseEase(r)),r.custom&&(r=r.custom),r instanceof l)b=et(Qe([r.segment],m,0,0,-v,y,x));else{for(b=[y,x],C=Math.max(5,(d.precision||1)*200),p=1/C,C+=2,M=5/C,h=Se(y+p*m),t=Se(x+r(p)*-v),c=(t-x)/(h-y),w=2;w<C;w++)g=Se(y+w*p*m),o=Se(x+r(w*p)*-v),(Math.abs((o-t)/(g-h)-c)>M||w===C-1)&&(b.push(h,t),c=(o-t)/(g-h)),h=g,t=o;b="M"+b.join(",")}return u&&u.setAttribute("d",b),b},l}();Ge()&&le.registerPlugin(xe);xe.version="3.12.5";ee.registerPlugin(xe);xe.create("CustomSpinEase","M0,0 C0.25,0 0.15,0.2 0.25,0.4 0.35,0.6 0.7,1 1,1");xe.create("GentlePower1","M0,0 C0.4,0 0.2,1 1,1");xe.create("SuperGentlePower1","M0,0 C0.6,0 0.2,1 1,1");xe.create("SlowerPower1","M0,0 C0.2,0.2 0.4,1 1,1");function je(l,s){return l+(s-l)*Math.random()}function it(l,s){return Math.floor(l+(s-l+1)*Math.random())}const lt=async l=>{var r;return l&&Array.isArray(l.cards)&&l.cards.length>0?{cards:l.cards,spinResults:l.spinResults??[],spinResult:((r=l.spinResults)==null?void 0:r[0])??{cardID:null,landingMode:"standard"}}:await(await fetch("/data/spinData.json")).json()},ct=l=>{if(!l||l.length===0)return null;const s=Math.floor(Math.random()*l.length);return l[s].id},ut=(l,s)=>{if(!l||!s)return null;const i=l.findIndex(r=>String(r.id)===String(s));return i>=0?i:null},Oe=f.forwardRef(({onSpinComplete:l,visible:s=!0,spinParams:i,cards:r=[],targetCardID:d=null,landingMode:m=null},v)=>{const y=f.useRef(),{size:x,camera:u}=fe.useThree(),b=f.useRef(null),c=f.useRef(!0),w=f.useRef(!1),p=f.useRef(null),g=f.useRef(!1),o=f.useMemo(()=>({...Te.defaultSpinParams,...i,beforeTease:{...Te.defaultSpinParams.beforeTease,...i==null?void 0:i.beforeTease},afterTease:{...Te.defaultSpinParams.afterTease,...i==null?void 0:i.afterTease}}),[i]),{scene:C}=B.useGLTF("/models/Cards/card-blue.glb"),[M,h]=f.useState(!1),[t]=f.useState(()=>({rotation:0,velocity:0,isDragging:!1,isSpinning:!1,isSnapping:!1,lastPointerX:0})),[S,F]=ve.useControls("Card",()=>({radiusMultiplier:{value:12.4,min:.5,max:20,step:.1,label:"Radius Space"},autoRotate:{value:!1,label:"Auto Rotate"},autoRotateSpeed:{value:.02,min:-2,max:2,step:.1,label:"Auto Rotate Speed"},snap:{value:!0,label:"Snap to Card"},cardScaleCenter:{value:1.1,min:1,max:2,step:.01,label:"Card Scale Center"},cardScaleSide:{value:.9,min:.1,max:1,step:.01,label:"Card Scale Side"},"Go to Card #":{value:1,min:1,max:26,step:1},"Random Spin":ve.button(()=>{const N=Math.floor(Math.random()*26);p.current&&p.current(N)})}));ve.useControls("Spin Controls",()=>({landingMode:{value:o.landingMode,options:{Standard:"ff_standard","Before Tease":"ff_before","After Tease":"ff_after"},label:"Landing Mode",onChange:N=>{o.landingMode=N}},"Global Physics":ve.folder({speedMultiplier:{value:o.speedMultiplier,min:.1,max:5,step:.01,label:"Spin Speed",onChange:N=>{o.speedMultiplier=N}}}),"Before Tease":ve.folder({bt_teaseCards:{value:o.beforeTease.teaseCards,min:1,max:5,step:1,label:"Tease Cards Count",onChange:N=>{o.beforeTease.teaseCards=N}},bt_stopOffset:{value:o.beforeTease.stopOffset,min:0,max:1,step:.01,label:"Stop Offset",onChange:N=>{o.beforeTease.stopOffset=N}},bt_gravityPull:{value:o.beforeTease.gravityPull,min:0,max:.001,step:1e-6,label:"Gravity Pull",onChange:N=>{o.beforeTease.gravityPull=N}},bt_gravityIncrease:{value:o.beforeTease.gravityIncrease,min:0,max:.001,step:1e-6,label:"Gravity Increase",onChange:N=>{o.beforeTease.gravityIncrease=N}},bt_maxGravityVelocity:{value:o.beforeTease.maxGravityVelocity,min:0,max:.02,step:1e-4,label:"Max Gravity Velocity",onChange:N=>{o.beforeTease.maxGravityVelocity=N}}}),"After Tease":ve.folder({at_teaseCards:{value:o.afterTease.teaseCards,min:1,max:5,step:1,label:"Tease Cards Count",onChange:N=>{o.afterTease.teaseCards=N}},at_stopOffset:{value:o.afterTease.stopOffset,min:0,max:1,step:.01,label:"Stop Offset",onChange:N=>{o.afterTease.stopOffset=N}},at_gravityPull:{value:o.afterTease.gravityPull,min:0,max:.001,step:1e-6,label:"Gravity Pull",onChange:N=>{o.afterTease.gravityPull=N}},at_gravityIncrease:{value:o.afterTease.gravityIncrease,min:0,max:.001,step:1e-6,label:"Gravity Increase",onChange:N=>{o.afterTease.gravityIncrease=N}},at_maxGravityVelocity:{value:o.afterTease.maxGravityVelocity,min:0,max:.02,step:1e-4,label:"Max Gravity Velocity",onChange:N=>{o.afterTease.maxGravityVelocity=N}}})}));const G=r.length||26,_=f.useMemo(()=>({totalCards:G,radiusMultiplier:S.radiusMultiplier,autoRotate:S.autoRotate,autoRotateSpeed:S.autoRotateSpeed,snap:S.snap,friction:.98,cardScale:.005,cardScaleCenter:S.cardScaleCenter,cardScaleSide:S.cardScaleSide,dragSpeed:.2}),[S,G]),H=f.useMemo(()=>{if(!C)return .35;const N=new Q.Box3().setFromObject(C);return(N.max.x-N.min.x)*_.cardScale},[C,_.cardScale]),U=x.width<600,q=U?.1:.07,re=U?8:4,$=Math.PI*2/_.totalCards,J=1*_.cardScale/2/Math.tan(Math.PI/_.totalCards)*_.radiusMultiplier,Z=f.useCallback((N,n)=>{b.current&&(ee.gsap.ticker.remove(b.current),b.current=null),ee.gsap.to(t,{rotation:n,duration:.35,ease:"power2.out",onComplete:()=>{t.isSpinning=!1,t.velocity=0,t.isSnapping=!1,w.current=!0,l&&l(N)}})},[t,F,l]),se=f.useCallback((N,n=!1)=>{isNaN(t.rotation)&&(t.rotation=0,t.velocity=0),t.isSpinning=!0,t.isSnapping=!1,t.velocity=0;const e=_.autoRotate;ee.gsap.killTweensOf(t),b.current&&ee.gsap.ticker.remove(b.current);let j=it(o.spinsMin,o.spinsMax);Math.random()<o.dramaticLoopChance&&j++;const T=t.rotation,R=Math.floor(T/(Math.PI*2))*(Math.PI*2)-j*Math.PI*2-N*$,P=["ff_standard","ff_before","ff_after"],E=n?"ff_standard":P[Math.floor(Math.random()*P.length)];let k=R;E==="ff_before"?k=R+$*(o.beforeTease.teaseCards-1+o.beforeTease.stopOffset):E==="ff_after"&&(k=R-$*(o.afterTease.teaseCards-1+o.afterTease.stopOffset));const O=Math.abs(k-T),A=Math.max(o.durationMin,Math.min(o.durationMax,O*o.durationDistScale)),X=je(o.nudgeMin,o.nudgeMax),W=je(o.nudgeDurationMin,o.nudgeDurationMax),Y=A*je(o.pullDepthScaleMin,o.pullDepthScaleMax),D=A*je(o.pullDurScaleMin,o.pullDurScaleMax),te=T+X*$,ae=T-Y*$,ne=ee.gsap.timeline();ne.to(t,{rotation:te,duration:W,ease:"power1.out"}),ne.to(t,{rotation:ae,duration:D,ease:`back.in(${o.pullBackStrength})`}),ne.add(()=>{const ie=1-(1-o.friction)*o.speedMultiplier;let pe="spin",z=0;b.current=()=>{const I=ee.gsap.ticker.deltaRatio(60);if(pe==="spin"){const K=(k-t.rotation)*(1-Math.pow(ie,I));t.rotation+=K,z=K/I;const de=E==="ff_standard"?5e-4:95e-5;Math.abs(z)<de&&(E==="ff_before"?pe="gravity":E==="ff_after"?(pe="gravity-reverse",z=0):Z(N,R,e))}else if(pe==="gravity"){const V=t.rotation-R,K=o.beforeTease.gravityPull+Math.abs(V)*o.beforeTease.gravityIncrease;z-=K*I,Math.abs(z)>o.beforeTease.maxGravityVelocity&&(z=-o.beforeTease.maxGravityVelocity),t.rotation+=z*I,t.rotation<=R&&Z(N,R,e)}else if(pe==="gravity-reverse"){const V=t.rotation-R,K=o.afterTease.gravityPull+Math.abs(V)*o.afterTease.gravityIncrease;z+=K*I,Math.abs(z)>o.afterTease.maxGravityVelocity&&(z=o.afterTease.maxGravityVelocity),t.rotation+=z*I,t.rotation>=R&&Z(N,R,e)}},ee.gsap.ticker.add(b.current)})},[t,$,_.autoRotate,Z]);f.useEffect(()=>{p.current=se},[se]),f.useImperativeHandle(v,()=>({goToCard:N=>se(N,!0)})),f.useEffect(()=>{M&&s?document.documentElement.style.setProperty("--line-visible","1"):document.documentElement.style.setProperty("--line-visible","0")},[M,s]),f.useLayoutEffect(()=>{!s||!y.current||(h(!1),y.current.position.y=10,g.current=!1,ee.gsap.to(y.current.position,{y:0,duration:2,ease:"power4.out",onComplete:()=>{if(h(!0),!g.current){g.current=!0;let N=d;(!N||N===null)&&(N=ct(r));const n=ut(r,N),e=n!==null?n:Math.floor(Math.random()*_.totalCards);p.current&&p.current(e)}}}))},[s,_.totalCards,d,r]),f.useEffect(()=>{if(c.current){c.current=!1;return}if(w.current){w.current=!1;return}se(S["Go to Card #"]-1)},[S["Go to Card #"],se]);const me=f.useMemo(()=>x.width<850?27.1:30,[x.width]);return fe.useFrame(()=>{if(!y.current||!s)return;if(!t.isSpinning){if(_.autoRotate)t.velocity+=(_.autoRotateSpeed-t.velocity)*.05,t.rotation+=t.velocity;else if(t.velocity*=_.friction,t.rotation+=t.velocity,_.snap&&Math.abs(t.velocity)<.001&&!t.isSnapping){t.isSnapping=!0,t.velocity=0;const n=Math.round(t.rotation/$)*$;ee.gsap.to(t,{rotation:n,duration:.5,ease:"power2.out",overwrite:!0,onComplete:()=>{t.isSnapping=!1}})}}y.current.rotation.y=t.rotation;const N=Math.cos($);if(y.current.children.forEach((n,e)=>{const j=$*e+t.rotation,T=Math.cos(j);let L=T>N?_.cardScaleSide+(_.cardScaleCenter-_.cardScaleSide)*((T-N)/(1-N)):_.cardScaleSide;const R=_.cardScale*L;n.scale.set(R,R,R)}),M){const n=H,e=new Q.Vector3(-n/2,0,J),j=new Q.Vector3(n/2,0,J);u.updateMatrixWorld();const T=e.project(u),L=j.project(u),P=Math.abs(L.x-T.x)/2*100*.6;document.documentElement.style.setProperty("--line-width",`${P}%`)}else document.documentElement.style.setProperty("--line-width","0%")}),a.jsx("group",{ref:y,rotation:[Q.MathUtils.degToRad(re),0,0],scale:me,children:Array.from({length:_.totalCards}).map((N,n)=>a.jsx(Be,{index:n,radius:J,sliceAngle:$,cardScale:_.cardScale,cardY:q,cards:r},n))})}),dt=["blue","green","pink","yellow"];dt.forEach(l=>{B.useGLTF.preload(`/models/Cards/card-${l}.glb`)});function ft(l){const s=new Map,i=new Map,r=l.clone();return Ve(l,r,function(d,m){s.set(m,d),i.set(d,m)}),r.traverse(function(d){if(!d.isSkinnedMesh)return;const m=d,v=s.get(d),y=v.skeleton.bones;m.skeleton=v.skeleton.clone(),m.bindMatrix.copy(v.bindMatrix),m.skeleton.bones=y.map(function(x){return i.get(x)}),m.bind(m.skeleton,m.bindMatrix)}),r}function Ve(l,s,i){i(l,s);for(let r=0;r<l.children.length;r++)Ve(l.children[r],s.children[r],i)}const mt=f.forwardRef(({currentColor:l="black",visible:s=!0,onRevealComplete:i},r)=>{const d=f.useRef(),{scene:m,animations:v}=B.useGLTF("/models/GiftBox/gift-box.glb"),{scene:y}=B.useGLTF("/models/Cards/card.glb"),[x,u]=f.useState(null),b=f.useRef(null),c=f.useRef({}),w={black:B.useTexture("textures/texturesGiftBox/black.jpg"),blue:B.useTexture("textures/texturesGiftBox/blue.jpg"),green:B.useTexture("textures/texturesGiftBox/green.jpg"),pink:B.useTexture("textures/texturesGiftBox/pink.jpg"),yellow:B.useTexture("textures/texturesGiftBox/yellow.jpg")};Object.values(w).forEach(h=>{h.flipY=!1,h.colorSpace=Q.SRGBColorSpace});const p=f.useMemo(()=>{let h=null;return y.traverse(t=>{var S;((S=t.material)==null?void 0:S.name)==="Mat_CardBaseUpdate"&&(h=t.material.clone(),h.toneMapped=!1)}),h},[y]);f.useEffect(()=>{if(!s||!m)return;const h=ft(m);u(h);const t=new Q.AnimationMixer(h);b.current=t,c.current={},v.forEach(F=>{const G=t.clipAction(F);c.current[F.name]=G});const S=F=>{F.action===c.current.Reveal&&i&&i(),F.action===c.current.WrongAction&&c.current.Levitating&&(c.current.Levitating.reset().play(),c.current.Levitating.crossFadeFrom(c.current.WrongAction,.2,!1))};return t.addEventListener("finished",S),c.current.Levitating&&c.current.Levitating.play(),()=>{b.current&&(b.current.stopAllAction(),b.current.removeEventListener("finished",S),b.current=null),c.current={}}},[s,m,v]),fe.useFrame((h,t)=>{b.current&&b.current.update(t)}),f.useEffect(()=>{const h=x||m;h&&h.traverse(t=>{var S,F,G;t instanceof Q.Mesh&&((S=t.material)!=null&&S.name.includes("Mat_CardBaseUpdate")&&p&&(t.material=p.clone()),(F=t.material)!=null&&F.name.includes("Mat_QuestionMark")&&(t.material._isCloned||(t.material=t.material.clone(),t.material._isCloned=!0),t.material.emissive.set(.07,.07,.07),t.material.emissiveMap=t.material.map),(G=t.material)!=null&&G.name.includes("Mat_Black")&&(t.material._isCloned||(t.material=t.material.clone(),t.material._isCloned=!0),t.material.map=w[l]||w.black,t.material.needsUpdate=!0),t.isMesh&&(t.material.envMapIntensity=.4))})},[x,m,p,w,l]),f.useImperativeHandle(r,()=>({playReveal:()=>{if(c.current.Reveal&&c.current.Levitating&&b.current){const h=c.current.Reveal,t=c.current.Levitating;return h.setLoop(Q.LoopOnce),h.clampWhenFinished=!0,h.reset().play(),h.crossFadeFrom(t,.3,!1),h.getClip().duration}return 0},playWrongAction:()=>{if(c.current.WrongAction&&c.current.Levitating&&b.current){const h=c.current.WrongAction,t=c.current.Levitating;h.reset().play(),h.crossFadeFrom(t,.2,!1)}}}));const g=Q.MathUtils.degToRad(30),o=Q.MathUtils.degToRad(-125),C=Q.MathUtils.degToRad(0),M=x||m;return a.jsx("primitive",{ref:d,object:M,visible:s,scale:[.071,.071,.071],position:[.09,-3,-.5],rotation:[g,o,C]})}),pt=f.forwardRef(({onColorChange:l,maxLoops:s,colorSequence:i,openedCount:r},d)=>{const[m,v]=f.useState(()=>{const x=Math.min(i.length-r,5);return i.slice(r,r+x).map((u,b)=>({id:r+b,color:u}))}),y=f.useRef(null);return f.useEffect(()=>{m.length>0&&l(m[0].color)},[m,l]),f.useImperativeHandle(d,()=>({moveToNextBox:()=>{if(m.length<1)return;m.length>1&&l(m[1].color);const x=ee.gsap.timeline({onComplete:()=>{v(c=>{if(c.length===0)return c;const w=c.slice(1),g=c[c.length-1].id+1;return g<i.length?[...w,{id:g,color:i[g]}]:w}),ee.gsap.set(y.current,{x:0})}}),u=y.current.children[0],b=u.offsetWidth+parseInt(window.getComputedStyle(y.current).gap||0);x.to(u,{opacity:0,duration:.5,ease:"power2.inOut"},0),x.to(y.current,{x:-b,duration:.5,ease:"power2.inOut"},0)}})),a.jsx("div",{className:"gift-box-sroll-parent",children:a.jsx("div",{className:"gift-box-scroll",ref:y,children:m.map(x=>a.jsx("div",{className:"items",children:a.jsx("img",{src:`/images/gift-box-imgs/${x.color}-box.webp`,alt:`${x.color} box`,"data-color":x.color,draggable:"false"})},x.id))})})}),gt=()=>a.jsxs(a.Fragment,{children:[a.jsx("ambientLight",{intensity:1.8}),a.jsx("directionalLight",{position:[0,2,1.25],intensity:4.5,color:"#d4d3d3",castShadow:!0,"shadow-camera-far":15,"shadow-mapSize":[1024,1024],"shadow-normalBias":.05})]}),ht=f.forwardRef(({position:l=[0,0,0],scale:s=.02,color:i="blue"},r)=>{const d=f.useRef(),[m,v]=f.useState(!0),y=B.useGLTF("/models/Flames/flame-blue.glb"),x=B.useGLTF("/models/Flames/flame-green.glb"),u=B.useGLTF("/models/Flames/flame-grey.glb"),b=B.useGLTF("/models/Flames/flame-pink.glb"),c=B.useGLTF("/models/Flames/flame-yellow.glb"),w=f.useMemo(()=>({blue:y,green:x,grey:u,pink:b,yellow:c}),[y,x,u,b,c]),p=B.useEnvironment({files:["/textures/environmentMap/px.jpg","/textures/environmentMap/nx.jpg","/textures/environmentMap/py.jpg","/textures/environmentMap/ny.jpg","/textures/environmentMap/pz.jpg","/textures/environmentMap/nz.jpg"]}),g=f.useMemo(()=>{const t={};return Object.keys(w).forEach(S=>{w[S].scene.traverse(F=>{F instanceof Q.Mesh&&F.material&&F.material.map&&(t[S]=F.material.map)})}),t},[w]),{scene:o,animations:C}=y,{actions:M,names:h}=B.useAnimations(C,o);return f.useEffect(()=>{if(h.length>0){Object.values(M).forEach(F=>F==null?void 0:F.stop());const t=M.idle?"idle":h[0],S=M[t];S&&S.reset().fadeIn(.5).play()}return()=>{Object.values(M).forEach(t=>t==null?void 0:t.stop())}},[M,h]),f.useEffect(()=>{const t=(i==null?void 0:i.toLowerCase())||"blue";g[t]&&o.traverse(S=>{S instanceof Q.Mesh&&(S.material.toneMapped=!1,S.material.envMap=p,S.material.envMapIntensity=1,S.material.map&&(S.material.map=g[t],S.material.needsUpdate=!0))})},[o,i,g,p]),f.useImperativeHandle(r,()=>({changeColor:t=>{console.warn("changeColor called on Flame, but color is now managed via props")},show:()=>v(!0),hide:()=>v(!1)})),a.jsx("group",{ref:d,position:l,scale:s,visible:m,children:a.jsx("primitive",{object:o})})});B.useGLTF.preload("models/Flames/flame-blue.glb");B.useGLTF.preload("models/Flames/flame-green.glb");B.useGLTF.preload("models/Flames/flame-grey.glb");B.useGLTF.preload("models/Flames/flame-pink.glb");B.useGLTF.preload("models/Flames/flame-yellow.glb");const Ae={blue:{textColor:"rgba(14, 134, 216, 1)",gradientFill:"linear-gradient(90deg, #A7DFF5 0%, #08ADED 100%)"},pink:{textColor:"rgba(245, 160, 197, 1)",gradientFill:"linear-gradient(90deg, #F5A0C5 0%, #FB76C7 100%)"},yellow:{textColor:"rgba(255, 165, 57, 1)",gradientFill:"linear-gradient(90deg, #FFD16E 0%, #F5AA0C 100%)"},green:{textColor:"rgba(107, 142, 16, 1)",gradientFill:"linear-gradient(90deg, #DAFB86 0%, #B0ED14 100%)"}},xt=({flameRef:l,maxLoops:s=5,currentCount:i=0,currentColor:r="blue"})=>{const d=i/s*100,m=Ae[r]||Ae.blue;return a.jsx("div",{className:"flame-ui",children:a.jsxs("div",{className:"flame-ui__card",children:[a.jsxs("div",{className:"flame-ui__top",children:[a.jsx("div",{className:"flame-ui__icon-wrapper",children:a.jsxs(B.View,{style:{width:"100%",height:"100%",zIndex:10},children:[a.jsx(B.PerspectiveCamera,{makeDefault:!0,position:[0,0,4],fov:45,near:.1,far:100}),a.jsx("ambientLight",{intensity:1}),a.jsx("directionalLight",{position:[-2,3,3],intensity:3}),a.jsx(ht,{ref:l,position:[0,-1.5,0],scale:.042,color:r})]})}),a.jsxs("div",{className:"flame-ui__count-group",children:[a.jsx("div",{className:"flame-ui__count",style:{color:m.textColor},children:i}),a.jsx("div",{className:"flame-ui__count-label",children:"Reveals Scanned"})]})]}),a.jsx("div",{className:"flame-ui__progress-track",children:a.jsx("div",{className:"flame-ui__progress-fill",style:{width:`${d}%`,background:m.gradientFill}})}),a.jsxs("div",{className:"flame-ui__status-group",children:[a.jsx("div",{className:"flame-ui__status-title",style:{color:m.textColor},children:"Rare prize detected"}),a.jsxs("div",{className:"flame-ui__status-subtitle",children:[i," of ",s," prizes found"]})]})]})})},vt={blue:255,green:65280,pink:16761035,yellow:16776960},_e=Object.keys(vt),bt={maxLoops:5,topMin:.1,topMax:.3,distanceFromCamera:12,cubeSize:.5,durationMin:1.8,durationMax:2},yt=f.memo(({id:l,colorName:s,config:i,onComplete:r})=>{const d=f.useRef(),m=f.useRef(null),v=f.useRef(null),{camera:y}=fe.useThree(),x=`models/Parachute/parachute-${s}.glb`,u=B.useGLTF(x),b=f.useCallback((w,p)=>{if(!y||!y.projectionMatrix)return new Q.Vector3;const g=new Q.Vector3(w,p,0);y.updateProjectionMatrix(),g.unproject(y);const o=g.sub(y.position).normalize(),C=i.distanceFromCamera;return y.position.clone().add(o.multiplyScalar(C))},[y,i.distanceFromCamera]),c=f.useRef(r);return f.useEffect(()=>{c.current=r},[r]),f.useEffect(()=>{const w=d.current;if(!w)return;const p=u.scene.clone();m.current=p,p.traverse(t=>{if(t.material)if(Array.isArray(t.material))t.material=t.material.map(S=>{const F=S.clone();return F.transparent=!0,F.opacity=1,F});else{const S=t.material.clone();S.transparent=!0,S.opacity=1,t.material=S}}),w.children=[],w.add(p),p.scale.set(.04,.04,.04),p.rotation.x=Q.MathUtils.degToRad(15);const g=(Math.random()-.5)*1,o=.8,C=i.topMin+Math.random()*(i.topMax-i.topMin),M=b(g,o),h=b(g,C);if(w.position.copy(M),u.animations&&u.animations.length>0){const t=new Q.AnimationMixer(p);v.current=t,t.clipAction(u.animations[0]).play()}return ee.to(w.position,{x:h.x,y:h.y,z:h.z,duration:4,ease:"power1.inOut",onComplete:()=>{const t=[];p.traverse(S=>{S.material&&t.push(...Array.isArray(S.material)?S.material:[S.material])}),t.length>0?ee.to(t,{opacity:0,duration:.5,onComplete:()=>{v.current&&v.current.stopAllAction(),c.current&&c.current(l)}}):(v.current&&v.current.stopAllAction(),c.current&&c.current(l))}}),()=>{ee.killTweensOf(w.position),m.current&&w&&(m.current.traverse(t=>{t.material&&(Array.isArray(t.material)?t.material:[t.material]).forEach(F=>ee.killTweensOf(F))}),w.remove(m.current),m.current=null),v.current&&(v.current.stopAllAction(),v.current=null)}},[l,s,i,b,u]),fe.useFrame((w,p)=>{v.current&&v.current.update(p)}),a.jsx("group",{ref:d})});B.useGLTF.preload("models/Parachute/parachute-blue.glb");B.useGLTF.preload("models/Parachute/parachute-green.glb");B.useGLTF.preload("models/Parachute/parachute-pink.glb");B.useGLTF.preload("models/Parachute/parachute-yellow.glb");const wt=({isActive:l=!0,maxLoops:s=5,spawnDelay:i=2,colorSequence:r=[],onCubeSpawn:d,onAllComplete:m})=>{const[v,y]=f.useState([]),x=f.useRef({count:0,nextAllowedTime:0,isFinished:!1,hasStarted:!1}),u=f.useCallback(b=>{y(c=>{const w=c.filter(p=>p.id!==b);return x.current.isFinished&&w.length===0&&(m==null||m()),w})},[m]);return fe.useFrame(b=>{const{clock:c}=b,w=c.getElapsedTime();if(!l||x.current.isFinished||(x.current.hasStarted||(x.current.hasStarted=!0,x.current.nextAllowedTime=w),w<x.current.nextAllowedTime))return;if(x.current.count>=s){x.current.isFinished=!0;return}x.current.nextAllowedTime=w+i;const p=Math.random().toString(36).substring(2,9),g=r[x.current.count]||_e[Math.floor(Math.random()*_e.length)];x.current.count++,d&&d(g),y(o=>[...o,{id:p,colorName:g}])}),a.jsx("group",{children:v.map(b=>a.jsx(yt,{id:b.id,colorName:b.colorName,config:bt,onComplete:u},b.id))})},Mt=f.memo(({id:l,position:s,scale:i,cloudType:r,speed:d,direction:m,viewport:v,onComplete:y})=>{const x=f.useRef(),u=5;f.useLayoutEffect(()=>{x.current&&(x.current.position.fromArray(s),x.current.scale.setScalar(i))},[]),fe.useFrame((p,g)=>{x.current&&(m==="horizontal"?(x.current.position.x-=d*g,x.current.position.x<-v.width/2-u&&y(l)):(x.current.position.y+=d*g,x.current.position.y>v.height/2+u&&y(l)))});const b=`models/Clouds/cloud-${r}.glb`,c=B.useGLTF(b),w=f.useMemo(()=>c.scene.clone(),[c.scene]);return a.jsx("group",{ref:x,children:a.jsx("primitive",{object:w})})}),Ct=({speed:l=2,enableHorizontal:s=!0,enableVertical:i=!1,spawnInterval:r=8,scale:d=.8,maxLoops:m=5,currentCount:v=0})=>{const[y,x]=f.useState([]),{viewport:u}=fe.useThree(),b=f.useRef(0),c=f.useRef(0),w=f.useRef(!0),p=4,g=f.useCallback(M=>{let h=0,t=0;const S=-2;return M==="horizontal"?(h=u.width/2+p,t=(Math.random()-.5)*u.height*.8):(h=(Math.random()-.5)*u.width*.8,t=-u.height/2-p),new Q.Vector3(h,t,S)},[u]),o=f.useCallback(()=>{if(!w.current)return;let M;s&&i?M=Math.random()<.5?"horizontal":"vertical":i?M="vertical":M="horizontal";const h=g(M),t=Math.random()<.5?1:2,S=c.current++;x(F=>[...F,{id:S,position:h.toArray(),cloudType:t,direction:M}])},[g,s,i]),C=f.useCallback(M=>{x(h=>h.filter(t=>t.id!==M))},[]);return f.useEffect(()=>{v>=m&&(w.current=!1)},[v,m]),f.useEffect(()=>{o()},[]),fe.useFrame((M,h)=>{w.current&&(b.current+=h,b.current>=r&&(o(),b.current=0))}),a.jsx("group",{children:y.map(M=>a.jsx(Mt,{id:M.id,position:M.position,scale:d,cloudType:M.cloudType,speed:l,direction:M.direction,viewport:u,onComplete:C},M.id))})};B.useGLTF.preload("models/Clouds/cloud-1.glb");B.useGLTF.preload("models/Clouds/cloud-2.glb");const St="/images/gift-box-imgs/yellow-box.webp",De="/images/gift-box-imgs/blue-box.webp",jt="/images/gift-box-imgs/green-box.webp",Tt="/images/gift-box-imgs/pink-box.webp",Rt=({maxLoops:l=6,colorSequence:s=[],onComplete:i})=>{const[r]=f.useState(l),[d]=f.useState(l*3),m=f.useRef(null),v=f.useRef(null),y=f.useRef({isDragging:!1,startX:0}),x=f.useRef(null),u=f.useRef({isDragging:!1,startX:0,scrollLeft:0}),b={yellow:St,blue:De,green:jt,pink:Tt},c=s.map((p,g)=>({id:g,image:b[p]||De,color:p}));f.useEffect(()=>{const p=m.current,g=v.current;if(!p||!g)return;const o=M=>{if(!y.current.isDragging)return;const h=M.touches?M.touches[0].clientX:M.clientX,t=g.getBoundingClientRect(),S=p.getBoundingClientRect(),F=t.width-S.width-8;let G=h-y.current.startX;G=Math.max(0,Math.min(G,F)),ee.set(p,{x:G}),G>=F-2&&(y.current.isDragging=!1,i&&i())},C=()=>{y.current.isDragging&&(y.current.isDragging=!1,ee.to(p,{x:0,duration:.5,ease:"back.out(0.5)",onComplete:()=>{p&&(p.style.transition="")}}))};return window.addEventListener("mousemove",o),window.addEventListener("mouseup",C),window.addEventListener("touchmove",o,{passive:!1}),window.addEventListener("touchend",C),()=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",C),window.removeEventListener("touchmove",o),window.removeEventListener("touchend",C)}},[i]);const w=p=>{const g=m.current;if(!g)return;y.current.isDragging=!0;const o=window.getComputedStyle(g).transform;let C=0;o!=="none"&&(C=new DOMMatrix(o).m41),y.current.startX=p-C,g.style.transition="none",ee.killTweensOf(g)};return f.useEffect(()=>{const p=x.current;if(!p||c.length<5)return;const g=M=>{u.current.isDragging=!0,u.current.startX=M.pageX-p.offsetLeft,u.current.scrollLeft=p.scrollLeft,p.style.cursor="grabbing"},o=M=>{if(!u.current.isDragging)return;M.preventDefault();const t=(M.pageX-p.offsetLeft-u.current.startX)*2;p.scrollLeft=u.current.scrollLeft-t},C=()=>{u.current.isDragging=!1,p.style.cursor="grab"};return p.addEventListener("mousedown",g),window.addEventListener("mousemove",o),window.addEventListener("mouseup",C),p.addEventListener("mouseleave",C),()=>{p.removeEventListener("mousedown",g),window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",C),p.removeEventListener("mouseleave",C)}},[c.length]),a.jsxs("div",{className:"prize-detected-container",children:[a.jsx("div",{className:"prize-detected-bg"}),a.jsxs("div",{className:"prize-detected-card",children:[a.jsxs("div",{className:"prize-detected-heading",children:[a.jsxs("h1",{className:"prize-detected-title",children:[r," Prizes Detected"]}),a.jsxs("p",{className:"prize-detected-subtitle",children:["From ",d," Reveals scanned"]})]}),a.jsx("div",{className:"prize-detected-boxes",ref:x,style:{justifyContent:c.length>=5?"flex-start":"center",cursor:c.length>=5?"grab":"default"},children:c.map(p=>a.jsx("div",{className:"gift-box-wrapper",children:a.jsx("img",{src:p.image,alt:`${p.color} gift box`,className:"gift-box-image",draggable:"false"})},p.id))}),a.jsxs("div",{className:"slide-to-collect-section",ref:v,children:[a.jsx("button",{className:"slide-button",ref:m,onMouseDown:p=>w(p.clientX),onTouchStart:p=>w(p.touches[0].clientX),children:a.jsx("img",{src:"/images/right-arrow.svg",alt:"arrow",className:"arrow-icon"})}),a.jsx("span",{className:"slide-text",children:"Slide to Collect"}),a.jsx("div",{className:"button-spacer"})]})]})]})};var Ne={};(function l(s,i,r,d){var m=!!(s.Worker&&s.Blob&&s.Promise&&s.OffscreenCanvas&&s.OffscreenCanvasRenderingContext2D&&s.HTMLCanvasElement&&s.HTMLCanvasElement.prototype.transferControlToOffscreen&&s.URL&&s.URL.createObjectURL),v=typeof Path2D=="function"&&typeof DOMMatrix=="function",y=function(){if(!s.OffscreenCanvas)return!1;try{var n=new OffscreenCanvas(1,1),e=n.getContext("2d");e.fillRect(0,0,1,1);var j=n.transferToImageBitmap();e.createPattern(j,"no-repeat")}catch{return!1}return!0}();function x(){}function u(n){var e=i.exports.Promise,j=e!==void 0?e:s.Promise;return typeof j=="function"?new j(n):(n(x,x),null)}var b=function(n,e){return{transform:function(j){if(n)return j;if(e.has(j))return e.get(j);var T=new OffscreenCanvas(j.width,j.height),L=T.getContext("2d");return L.drawImage(j,0,0),e.set(j,T),T},clear:function(){e.clear()}}}(y,new Map),c=function(){var n=Math.floor(16.666666666666668),e,j,T={},L=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(e=function(R){var P=Math.random();return T[P]=requestAnimationFrame(function E(k){L===k||L+n-1<k?(L=k,delete T[P],R()):T[P]=requestAnimationFrame(E)}),P},j=function(R){T[R]&&cancelAnimationFrame(T[R])}):(e=function(R){return setTimeout(R,n)},j=function(R){return clearTimeout(R)}),{frame:e,cancel:j}}(),w=function(){var n,e,j={};function T(L){function R(P,E){L.postMessage({options:P||{},callback:E})}L.init=function(E){var k=E.transferControlToOffscreen();L.postMessage({canvas:k},[k])},L.fire=function(E,k,O){if(e)return R(E,null),e;var A=Math.random().toString(36).slice(2);return e=u(function(X){function W(Y){Y.data.callback===A&&(delete j[A],L.removeEventListener("message",W),e=null,b.clear(),O(),X())}L.addEventListener("message",W),R(E,A),j[A]=W.bind(null,{data:{callback:A}})}),e},L.reset=function(){L.postMessage({reset:!0});for(var E in j)j[E](),delete j[E]}}return function(){if(n)return n;if(!r&&m){var L=["var CONFETTI, SIZE = {}, module = {};","("+l.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {"," if (msg.data.options) {"," CONFETTI(msg.data.options).then(function () {"," if (msg.data.callback) {"," postMessage({ callback: msg.data.callback });"," }"," });"," } else if (msg.data.reset) {"," CONFETTI && CONFETTI.reset();"," } else if (msg.data.resize) {"," SIZE.width = msg.data.resize.width;"," SIZE.height = msg.data.resize.height;"," } else if (msg.data.canvas) {"," SIZE.width = msg.data.canvas.width;"," SIZE.height = msg.data.canvas.height;"," CONFETTI = module.exports.create(msg.data.canvas);"," }","}"].join(`
18
- `);try{n=new Worker(URL.createObjectURL(new Blob([L])))}catch(R){return typeof console<"u"&&typeof console.warn=="function"&&console.warn("🎊 Could not load worker",R),null}T(n)}return n}}(),p={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function g(n,e){return e?e(n):n}function o(n){return n!=null}function C(n,e,j){return g(n&&o(n[e])?n[e]:p[e],j)}function M(n){return n<0?0:Math.floor(n)}function h(n,e){return Math.floor(Math.random()*(e-n))+n}function t(n){return parseInt(n,16)}function S(n){return n.map(F)}function F(n){var e=String(n).replace(/[^0-9a-f]/gi,"");return e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:t(e.substring(0,2)),g:t(e.substring(2,4)),b:t(e.substring(4,6))}}function G(n){var e=C(n,"origin",Object);return e.x=C(e,"x",Number),e.y=C(e,"y",Number),e}function _(n){n.width=document.documentElement.clientWidth,n.height=document.documentElement.clientHeight}function H(n){var e=n.getBoundingClientRect();n.width=e.width,n.height=e.height}function U(n){var e=document.createElement("canvas");return e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.pointerEvents="none",e.style.zIndex=n,e}function q(n,e,j,T,L,R,P,E,k){n.save(),n.translate(e,j),n.rotate(R),n.scale(T,L),n.arc(0,0,1,P,E,k),n.restore()}function re(n){var e=n.angle*(Math.PI/180),j=n.spread*(Math.PI/180);return{x:n.x,y:n.y,wobble:Math.random()*10,wobbleSpeed:Math.min(.11,Math.random()*.1+.05),velocity:n.startVelocity*.5+Math.random()*n.startVelocity,angle2D:-e+(.5*j-Math.random()*j),tiltAngle:(Math.random()*(.75-.25)+.25)*Math.PI,color:n.color,shape:n.shape,tick:0,totalTicks:n.ticks,decay:n.decay,drift:n.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:n.gravity*3,ovalScalar:.6,scalar:n.scalar,flat:n.flat}}function $(n,e){e.x+=Math.cos(e.angle2D)*e.velocity+e.drift,e.y+=Math.sin(e.angle2D)*e.velocity+e.gravity,e.velocity*=e.decay,e.flat?(e.wobble=0,e.wobbleX=e.x+10*e.scalar,e.wobbleY=e.y+10*e.scalar,e.tiltSin=0,e.tiltCos=0,e.random=1):(e.wobble+=e.wobbleSpeed,e.wobbleX=e.x+10*e.scalar*Math.cos(e.wobble),e.wobbleY=e.y+10*e.scalar*Math.sin(e.wobble),e.tiltAngle+=.1,e.tiltSin=Math.sin(e.tiltAngle),e.tiltCos=Math.cos(e.tiltAngle),e.random=Math.random()+2);var j=e.tick++/e.totalTicks,T=e.x+e.random*e.tiltCos,L=e.y+e.random*e.tiltSin,R=e.wobbleX+e.random*e.tiltCos,P=e.wobbleY+e.random*e.tiltSin;if(n.fillStyle="rgba("+e.color.r+", "+e.color.g+", "+e.color.b+", "+(1-j)+")",n.beginPath(),v&&e.shape.type==="path"&&typeof e.shape.path=="string"&&Array.isArray(e.shape.matrix))n.fill(se(e.shape.path,e.shape.matrix,e.x,e.y,Math.abs(R-T)*.1,Math.abs(P-L)*.1,Math.PI/10*e.wobble));else if(e.shape.type==="bitmap"){var E=Math.PI/10*e.wobble,k=Math.abs(R-T)*.1,O=Math.abs(P-L)*.1,A=e.shape.bitmap.width*e.scalar,X=e.shape.bitmap.height*e.scalar,W=new DOMMatrix([Math.cos(E)*k,Math.sin(E)*k,-Math.sin(E)*O,Math.cos(E)*O,e.x,e.y]);W.multiplySelf(new DOMMatrix(e.shape.matrix));var Y=n.createPattern(b.transform(e.shape.bitmap),"no-repeat");Y.setTransform(W),n.globalAlpha=1-j,n.fillStyle=Y,n.fillRect(e.x-A/2,e.y-X/2,A,X),n.globalAlpha=1}else if(e.shape==="circle")n.ellipse?n.ellipse(e.x,e.y,Math.abs(R-T)*e.ovalScalar,Math.abs(P-L)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI):q(n,e.x,e.y,Math.abs(R-T)*e.ovalScalar,Math.abs(P-L)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI);else if(e.shape==="star")for(var D=Math.PI/2*3,te=4*e.scalar,ae=8*e.scalar,ne=e.x,oe=e.y,ue=5,ie=Math.PI/ue;ue--;)ne=e.x+Math.cos(D)*ae,oe=e.y+Math.sin(D)*ae,n.lineTo(ne,oe),D+=ie,ne=e.x+Math.cos(D)*te,oe=e.y+Math.sin(D)*te,n.lineTo(ne,oe),D+=ie;else n.moveTo(Math.floor(e.x),Math.floor(e.y)),n.lineTo(Math.floor(e.wobbleX),Math.floor(L)),n.lineTo(Math.floor(R),Math.floor(P)),n.lineTo(Math.floor(T),Math.floor(e.wobbleY));return n.closePath(),n.fill(),e.tick<e.totalTicks}function ce(n,e,j,T,L){var R=e.slice(),P=n.getContext("2d"),E,k,O=u(function(A){function X(){E=k=null,P.clearRect(0,0,T.width,T.height),b.clear(),L(),A()}function W(){r&&!(T.width===d.width&&T.height===d.height)&&(T.width=n.width=d.width,T.height=n.height=d.height),!T.width&&!T.height&&(j(n),T.width=n.width,T.height=n.height),P.clearRect(0,0,T.width,T.height),R=R.filter(function(Y){return $(P,Y)}),R.length?E=c.frame(W):X()}E=c.frame(W),k=X});return{addFettis:function(A){return R=R.concat(A),O},canvas:n,promise:O,reset:function(){E&&c.cancel(E),k&&k()}}}function ge(n,e){var j=!n,T=!!C(e||{},"resize"),L=!1,R=C(e,"disableForReducedMotion",Boolean),P=m&&!!C(e||{},"useWorker"),E=P?w():null,k=j?_:H,O=n&&E?!!n.__confetti_initialized:!1,A=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion)").matches,X;function W(D,te,ae){for(var ne=C(D,"particleCount",M),oe=C(D,"angle",Number),ue=C(D,"spread",Number),ie=C(D,"startVelocity",Number),pe=C(D,"decay",Number),z=C(D,"gravity",Number),I=C(D,"drift",Number),V=C(D,"colors",S),K=C(D,"ticks",Number),de=C(D,"shapes"),we=C(D,"scalar"),Re=!!C(D,"flat"),Le=G(D),Pe=ne,Fe=[],Xe=n.width*Le.x,Ue=n.height*Le.y;Pe--;)Fe.push(re({x:Xe,y:Ue,angle:oe,spread:ue,startVelocity:ie,color:V[Pe%V.length],shape:de[h(0,de.length)],ticks:K,decay:pe,gravity:z,drift:I,scalar:we,flat:Re}));return X?X.addFettis(Fe):(X=ce(n,Fe,k,te,ae),X.promise)}function Y(D){var te=R||C(D,"disableForReducedMotion",Boolean),ae=C(D,"zIndex",Number);if(te&&A)return u(function(ie){ie()});j&&X?n=X.canvas:j&&!n&&(n=U(ae),document.body.appendChild(n)),T&&!O&&k(n);var ne={width:n.width,height:n.height};E&&!O&&E.init(n),O=!0,E&&(n.__confetti_initialized=!0);function oe(){if(E){var ie={getBoundingClientRect:function(){if(!j)return n.getBoundingClientRect()}};k(ie),E.postMessage({resize:{width:ie.width,height:ie.height}});return}ne.width=ne.height=null}function ue(){X=null,T&&(L=!1,s.removeEventListener("resize",oe)),j&&n&&(document.body.contains(n)&&document.body.removeChild(n),n=null,O=!1)}return T&&!L&&(L=!0,s.addEventListener("resize",oe,!1)),E?E.fire(D,ne,ue):W(D,ne,ue)}return Y.reset=function(){E&&E.reset(),X&&X.reset()},Y}var J;function Z(){return J||(J=ge(null,{useWorker:!0,resize:!0})),J}function se(n,e,j,T,L,R,P){var E=new Path2D(n),k=new Path2D;k.addPath(E,new DOMMatrix(e));var O=new Path2D;return O.addPath(k,new DOMMatrix([Math.cos(P)*L,Math.sin(P)*L,-Math.sin(P)*R,Math.cos(P)*R,j,T])),O}function me(n){if(!v)throw new Error("path confetti are not supported in this browser");var e,j;typeof n=="string"?e=n:(e=n.path,j=n.matrix);var T=new Path2D(e),L=document.createElement("canvas"),R=L.getContext("2d");if(!j){for(var P=1e3,E=P,k=P,O=0,A=0,X,W,Y=0;Y<P;Y+=2)for(var D=0;D<P;D+=2)R.isPointInPath(T,Y,D,"nonzero")&&(E=Math.min(E,Y),k=Math.min(k,D),O=Math.max(O,Y),A=Math.max(A,D));X=O-E,W=A-k;var te=10,ae=Math.min(te/X,te/W);j=[ae,0,0,ae,-Math.round(X/2+E)*ae,-Math.round(W/2+k)*ae]}return{type:"path",path:e,matrix:j}}function N(n){var e,j=1,T="#000000",L='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';typeof n=="string"?e=n:(e=n.text,j="scalar"in n?n.scalar:j,L="fontFamily"in n?n.fontFamily:L,T="color"in n?n.color:T);var R=10*j,P=""+R+"px "+L,E=new OffscreenCanvas(R,R),k=E.getContext("2d");k.font=P;var O=k.measureText(e),A=Math.ceil(O.actualBoundingBoxRight+O.actualBoundingBoxLeft),X=Math.ceil(O.actualBoundingBoxAscent+O.actualBoundingBoxDescent),W=2,Y=O.actualBoundingBoxLeft+W,D=O.actualBoundingBoxAscent+W;A+=W+W,X+=W+W,E=new OffscreenCanvas(A,X),k=E.getContext("2d"),k.font=P,k.fillStyle=T,k.fillText(e,Y,D);var te=1/j;return{type:"bitmap",bitmap:E.transferToImageBitmap(),matrix:[te,0,0,te,-A*te/2,-X*te/2]}}i.exports=function(){return Z().apply(this,arguments)},i.exports.reset=function(){Z().reset()},i.exports.create=ge,i.exports.shapeFromPath=me,i.exports.shapeFromText=N})(function(){return typeof window<"u"?window:typeof self<"u"?self:this||{}}(),Ne,!1);const Ee=Ne.exports;Ne.exports.create;const Ft=({type:l,onCollect:s,card:i=null})=>{const[r,d]=f.useState(30),[m,v]=f.useState(30),y=f.useCallback(()=>{Ee({particleCount:100,spread:70,origin:{y:.6},zIndex:1e4});const C=2*1e3,M=Date.now()+C;(function h(){Ee({particleCount:2,angle:60,spread:55,origin:{x:0},zIndex:1e4}),Ee({particleCount:2,angle:120,spread:55,origin:{x:1},zIndex:1e4}),Date.now()<M&&requestAnimationFrame(h)})()},[]);if(f.useEffect(()=>{if(l&&(y(),l==="xp"&&(i!=null&&i.xpAmount))){const M=i.xpAmount,h=1500,t=performance.now(),S=F=>{const G=F-t,_=Math.min(G/h,1),H=1-Math.pow(1-_,3),U=Math.floor(0+(M-0)*H),q=(0+(M-0)*H)/100*100;d(U),v(q),_<1&&requestAnimationFrame(S)};requestAnimationFrame(S)}},[l,i,y]),!l||!i)return null;const u=(()=>{if(l==="xp"&&i.xpAmount)return{amount:i.xpAmount,label:`${i.xpAmount} XP`,image:i.imageUrl,title:i.prizeName};if(l==="instant-win")return{amount:i.prizeValue,label:`$${i.prizeValue.toFixed(2)} Instant Win`,image:i.imageUrl,title:i.prizeName};if(l==="set-piece"){const C=i.collectionCount?i.collectionCount.replace(" of ","/").replace(/^/,"Set Piece "):null;return{amount:i.prizeValue,label:`$${i.prizeValue.toLocaleString("en-US")} Cash Prize`,image:i.imageUrl,title:"Collection 1 Set",collection:C}}return{}})(),b={uncommon:"linear-gradient(180deg, #DAFB86 0%, #FFFFFF 100%)",limited:"linear-gradient(180deg, #A7DFF5 0%, #FFFFFF 100%)",rare:"linear-gradient(166deg, #E55C8F 3.81%, #FFF 95.17%)",exclusive:"linear-gradient(180deg, #FFE24F 0%, #FFFFFF 100%)"},c={uncommon:"#4CB263",limited:"#0E86D8",rare:"#E85AA0",exclusive:"#D9C14C"},w={limited:{badgeBg:"#308CF3",badgeTextColor:"#fff",collectionText:"#0E86D8"},rare:{badgeBg:"#E85AA0",badgeTextColor:"#fff",collectionText:"#E85AA0"},exclusive:{badgeBg:"#FEE357",badgeTextColor:"#000",collectionText:"#D9C14C"}},p=b[i.rarityTier]||"transparent",g=c[i.rarityTier],o=w[i.rarityTier]||{badgeBg:"transparent",badgeTextColor:"#000",collectionText:"#000"};return a.jsxs("div",{className:"reward-collection-screen",style:{display:"flex"},children:[l==="xp"&&a.jsx("div",{className:"xp-bar-container",style:{display:"block"},children:a.jsxs("div",{className:"xp-bar-wrapper",children:[a.jsx("div",{className:"xp-bar-left",children:a.jsxs("div",{className:"xp-bar-flame",children:[a.jsx("img",{src:"/images/reward-imgs/flame-icon.webp",alt:"flame",className:"xp-bar-flame-img"}),a.jsx("div",{className:"xp-bar-streak-badge",children:a.jsx("span",{children:"Streak"})}),a.jsx("div",{className:"xp-bar-streak-count",children:"4"})]})}),a.jsxs("div",{className:"xp-bar-right",children:[a.jsxs("div",{className:"xp-bar-level-row",children:[a.jsx("div",{className:"xp-bar-avatar",children:a.jsx("img",{src:"/images/reward-imgs/avatar.webp",alt:"avatar",className:"xp-bar-avatar-img"})}),a.jsx("div",{className:"xp-bar-level-text",children:"Level 1"}),a.jsxs("div",{className:"xp-bar-reward-badge",children:[a.jsx("img",{src:"/images/reward-imgs/coin.webp",alt:"coin",className:"xp-bar-reward-coin"}),a.jsx("span",{className:"xp-bar-reward-amount",children:"$10"})]})]}),a.jsx("div",{className:"xp-bar-progress",children:a.jsx("div",{className:"xp-bar-fill",style:{width:`${m}%`,transition:"none"},children:a.jsx("div",{className:"xp-bar-star",children:a.jsx("img",{src:"/images/reward-imgs/flash-icon.svg",alt:"flash"})})})}),a.jsxs("div",{className:"xp-bar-info",children:[a.jsxs("div",{className:"xp-bar-current-xp",children:[a.jsx("span",{className:"xp-bar-xp-number",children:r}),a.jsx("span",{className:"xp-bar-xp-total",children:"/ 100 XP"})]}),a.jsxs("div",{className:"xp-bar-next-xp",children:[a.jsxs("span",{className:"xp-bar-next-xp-bold",children:[100-r," XP"]}),a.jsx("span",{children:" to Level 2"})]})]})]})]})}),l==="instant-win"&&a.jsx("div",{className:"instant-win-card",style:{display:"flex",background:p},children:a.jsxs("div",{className:"card-content-1",children:[a.jsxs("div",{className:"heading",children:[a.jsx("p",{children:"You won an"}),a.jsx("p",{children:"Instant Win"})]}),a.jsxs("div",{className:"reward-row",children:[a.jsx("div",{className:"image-box",children:a.jsx("div",{className:"image-wrapper",children:a.jsx("img",{src:u.image,alt:"reward",className:"reward-image",onError:C=>{C.target.src="/images/ticket-imgs/5-dollar.webp"}})})}),a.jsx("div",{className:"title-card",children:a.jsx("p",{style:{color:g},children:u.title})})]}),a.jsx("button",{className:"button",onClick:s,children:"Collect"})]})}),l==="set-piece"&&a.jsx("div",{className:"set-piece-card",style:{display:"flex",background:p},children:a.jsxs("div",{className:"card-content-1",children:[a.jsxs("div",{className:"heading",children:[a.jsx("p",{children:"You won a"}),a.jsx("p",{children:"Set Piece"})]}),a.jsxs("div",{className:"badge",style:{background:o.badgeBg},children:[a.jsx("img",{src:"/images/reward-imgs/coin.webp",alt:"coin",className:"coin"}),a.jsx("span",{style:{color:o.badgeTextColor},children:u.label})]}),a.jsxs("div",{className:"reward-row",children:[a.jsx("div",{className:"image-box",children:a.jsx("div",{className:"image-wrapper",children:a.jsx("img",{src:u.image,alt:"set-piece",className:"reward-image",onError:C=>{C.target.src="/images/reward-imgs/set-piece.webp"}})})}),a.jsxs("div",{className:"title-card",children:[a.jsx("p",{className:"collection",style:{color:o.collectionText},children:u.title}),u.collection&&a.jsx("p",{className:"subtitle",children:u.collection})]})]}),a.jsx("button",{className:"button",onClick:s,children:"Collect"})]})}),l==="xp"&&a.jsx("div",{className:"xp-card",style:{display:"flex",background:p},children:a.jsxs("div",{className:"card-content",children:[a.jsx("div",{className:"heading",children:a.jsx("p",{children:"You won"})}),a.jsx("div",{className:"reward-row",children:a.jsx("img",{src:u.image,alt:"xp",className:"reward-image-xp",onError:C=>{C.target.src="/images/xp-imgs/5-xp.webp"}})}),a.jsx("button",{className:"button",onClick:s,children:"Collect"})]})})]})},Et=({currentBox:l,totalBoxes:s})=>a.jsx("div",{className:"box-indicator",children:a.jsx("div",{className:"box-indicator-content",children:a.jsxs("p",{className:"box-indicator-text",children:["Box ",l," of ",s]})})}),Nt=l=>!l||!Array.isArray(l)?(console.warn("⚠️ Invalid cards array provided"),Promise.resolve()):Promise.all(l.map(s=>new Promise(i=>{const r=new Image,d=s.name||s.prizeName||`Card ${s.id}`,m=s.imageUrl||s.image;r.onload=()=>{i(!0)},r.onerror=()=>{console.warn(`Image failed to preload: ${d} - ${m}`),i(!1)},r.src=m}))),Lt=({onComplete:l,boxes:s=[],prizes:i=[],spinCards:r=[],eventSource:d})=>{const m=f.useRef(),v=f.useRef(),y=f.useRef(),x=f.useRef(),[u,b]=f.useState(!1),[c,w]=f.useState(!1),[p,g]=f.useState(!1),[o,C]=f.useState(!1),[M,h]=f.useState(!1),[t,S]=f.useState(null),[F,G]=f.useState(!1),[_,H]=f.useState(!1),[U,q]=f.useState([]),[re,$]=f.useState([]),[ce,ge]=f.useState(null),[J,Z]=f.useState(null),[se,me]=f.useState(null),[,N]=f.useState("black"),[n,e]=f.useState(!1),[j]=f.useState(s.length>0?s.length:1),[T,L]=f.useState(0),[R,P]=f.useState(0);f.useEffect(()=>{(async()=>{try{console.log("Fetching spin data...");const I=await lt(r);q(I.cards),I.spinResults&&I.spinResults.length>0&&($(I.spinResults),ge(String(I.spinResults[0].cardID)),Z(I.spinResults[0].landingMode||"standard")),console.log("Spin data fetched successfully"),await Nt(I.cards),G(!0)}catch(I){console.error("Error loading spin data:",I),G(!0)}})()},[]),f.useEffect(()=>{const z=["/models/GiftBox/gift-box.glb","/models/Cards/card.glb",...["blue","green","pink","yellow"].map(I=>`/models/Parachute/parachute-${I}.glb`)];Promise.all(z.map(I=>B.useGLTF.preload(I))).then(()=>H(!0)).catch(I=>{console.error("Error preloading models:",I),H(!0)})},[]),f.useEffect(()=>{F&&_&&h(!0)},[F,_]);const E=f.useCallback(()=>{S(null),b(!1),e(!1);const z=R+1;if(P(z),z>=j){g(!1),w(!1),l==null||l();return}if(re.length>0){const I=re[z];I&&(ge(String(I.cardID)),Z(I.landingMode||"standard"))}v.current&&v.current.moveToNextBox(),g(!0),w(!0)},[R,j,l,re]),k=f.useCallback(z=>{if(!U||U.length===0)return;const I=ce?U.find(K=>String(K.id)===String(ce))??U[z%U.length]:U[z%U.length];me(I);let V="set-piece";I.type==="XP Reward"?V="xp":I.type==="Instant Win"||I.type==="Golden Ticket"?V="instant-win":I.type==="No Win"?V="no-win":I.type==="Set Piece"&&(V="set-piece"),S(V)},[U,ce]),O=s[R]??null,[A]=f.useState(()=>{const z=["blue","green","pink","yellow"],I=[];let V=null;for(let K=0;K<j;K++){let de;do de=z[Math.floor(Math.random()*z.length)];while(de===V&&z.length>1);I.push(de),V=de}return I}),[X,W]=f.useState(A[0]),Y=f.useRef(null),D=f.useRef(null),te=f.useCallback(z=>{W(z),N(z)},[]),ae=f.useCallback(z=>{W(z),L(I=>I+1)},[]),ne=f.useCallback(()=>{h(!1),C(!0)},[]),oe=f.useCallback(()=>{w(!1)},[]),ue=f.useCallback(()=>{if(!n)if(e(!0),m.current){const z=m.current.playReveal();setTimeout(()=>b(!0),Math.max(0,(z-2)*1e3))}else oe(),b(!0)},[n,oe]),ie=f.useCallback(()=>{C(!1),g(!0),w(!0)},[]);f.useEffect(()=>{const z=V=>{if(!p||n)return;const K=V.target;if(K&&(K.closest(".gift-box-sroll-parent")||K.closest(".gift-box-scroll"))){D.current=null;return}Y.current=V.touches?V.touches[0].clientX:V.clientX,D.current=V.touches?V.touches[0].clientY:V.clientY},I=V=>{if(!p||n||D.current===null)return;const K=V.changedTouches?V.changedTouches[0].clientX:V.clientX,de=V.changedTouches?V.changedTouches[0].clientY:V.clientY,we=D.current-de,Re=Math.abs(Y.current-K);we>50&&we>Re&&ue(),D.current=null};return window.addEventListener("mousedown",z),window.addEventListener("mouseup",I),window.addEventListener("touchstart",z),window.addEventListener("touchend",I),()=>{window.removeEventListener("mousedown",z),window.removeEventListener("mouseup",I),window.removeEventListener("touchstart",z),window.removeEventListener("touchend",I)}},[p,n,ue]);const pe=d||(typeof document<"u"?document.body:null);return a.jsxs("div",{className:"experience-container",children:[a.jsxs(fe.Canvas,{shadows:!0,eventSource:pe,gl:{antialias:!0,alpha:!0,toneMapping:Q.CineonToneMapping,toneMappingExposure:1.75},style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1,pointerEvents:"auto"},children:[a.jsx(gt,{}),a.jsxs("group",{name:"background-layer",children:[a.jsx(B.PerspectiveCamera,{makeDefault:!0,position:[0,0,20],fov:35,near:.1,far:100}),M&&a.jsxs(f.Suspense,{fallback:null,children:[a.jsx(wt,{flameRef:x,isActive:!0,maxLoops:j,colorSequence:A,onCubeSpawn:ae,onAllComplete:ne}),a.jsx(Ct,{speed:1.8,directionMultiplier:1,spawnInterval:2.8,scale:.2,maxLoops:j,currentCount:T,enableHorizontal:!1,enableVertical:!0})]}),a.jsx(B.Environment,{files:["/textures/environmentMap/px.jpg","/textures/environmentMap/nx.jpg","/textures/environmentMap/py.jpg","/textures/environmentMap/ny.jpg","/textures/environmentMap/pz.jpg","/textures/environmentMap/nz.jpg"]})]}),a.jsxs("group",{name:"interactive-layer",children:[a.jsx(B.PerspectiveCamera,{makeDefault:!1,position:[0,0,.4],fov:35,near:.01,far:100}),a.jsxs(f.Suspense,{fallback:null,children:[a.jsx(mt,{ref:m,currentColor:X,visible:c,onRevealComplete:oe}),u&&F&&a.jsx(Oe,{ref:y,onSpinComplete:k,cards:U,targetCardID:ce,landingMode:J})]})]})]}),a.jsx(Ft,{type:t,onCollect:E,card:se,currentBox:O}),a.jsx(fe.Canvas,{shadows:!0,eventSource:pe,gl:{antialias:!0,alpha:!0,toneMapping:Q.CineonToneMapping,toneMappingExposure:1.75},style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:3,pointerEvents:"none"},children:a.jsx(f.Suspense,{fallback:null,children:a.jsx(B.View.Port,{})})}),M&&a.jsx(xt,{flameRef:x,maxLoops:j,currentCount:T,currentColor:X}),p&&c&&!n&&a.jsx(Et,{currentBox:R+1,totalBoxes:j}),p&&a.jsxs(a.Fragment,{children:[!n&&a.jsxs("div",{className:"swipe-indicator",children:[a.jsx("img",{src:"/images/arrow.svg",className:"arrow",alt:"arrow"}),a.jsx("div",{className:"swipe-to-open-text",children:"Swipe to open"})]}),!t&&a.jsx(pt,{ref:v,onColorChange:te,maxLoops:j,colorSequence:A,openedCount:R})]}),u&&F&&a.jsx("div",{className:"line"}),o&&a.jsx(Rt,{maxLoops:j,colorSequence:A,onComplete:ie})]})};exports.defaultSpinParams=Te.defaultSpinParams;exports.Card=Be;exports.Carousel=Oe;exports.Experience=Lt;
17
+ */var le,ze,Ge=function(){return le||typeof window<"u"&&(le=window.gsap)&&le.registerPlugin&&le},Ie=function(){le=Ge(),le?(le.registerEase("_CE",xe.create),ze=1):console.warn("Please gsap.registerPlugin(CustomEase)")},tt=1e20,Se=function(s){return~~(s*1e3+(s<0?-.5:.5))/1e3},nt=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/gi,rt=/[cLlsSaAhHvVtTqQ]/g,at=function(s){var i=s.length,r=tt,d;for(d=1;d<i;d+=6)+s[d]<r&&(r=+s[d]);return r},st=function(s,i,r){!r&&r!==0&&(r=Math.max(+s[s.length-1],+s[1]));var d=+s[0]*-1,m=-r,v=s.length,y=1/(+s[v-2]+d),x=-i||(Math.abs(+s[v-1]-+s[1])<.01*(+s[v-2]-+s[0])?at(s)+m:+s[v-1]+m),u;for(x?x=1/x:x=-y,u=0;u<v;u+=2)s[u]=(+s[u]+d)*y,s[u+1]=(+s[u+1]+m)*x},ot=function l(s,i,r,d,m,v,y,x,u,b,c){var w=(s+r)/2,p=(i+d)/2,g=(r+m)/2,o=(d+v)/2,C=(m+y)/2,M=(v+x)/2,h=(w+g)/2,t=(p+o)/2,S=(g+C)/2,E=(o+M)/2,G=(h+S)/2,_=(t+E)/2,H=y-s,U=x-i,q=Math.abs((r-y)*U-(d-x)*H),re=Math.abs((m-y)*U-(v-x)*H),$;return b||(b=[{x:s,y:i},{x:y,y:x}],c=1),b.splice(c||b.length-1,0,{x:G,y:_}),(q+re)*(q+re)>u*(H*H+U*U)&&($=b.length,l(s,i,w,p,h,t,G,_,u,b,c),l(G,_,S,E,C,M,y,x,u,b,c+1+(b.length-$))),b},xe=function(){function l(i,r,d){ze||Ie(),this.id=i,this.setData(r,d)}var s=l.prototype;return s.setData=function(r,d){d=d||{},r=r||"0,0,1,1";var m=r.match(nt),v=1,y=[],x=[],u=d.precision||1,b=u<=1,c,w,p,g,o,C,M,h,t;if(this.data=r,(rt.test(r)||~r.indexOf("M")&&r.indexOf("C")<0)&&(m=Ke(r)[0]),c=m.length,c===4)m.unshift(0,0),m.push(1,1),c=8;else if((c-2)%6)throw"Invalid CustomEase";for((+m[0]!=0||+m[c-2]!=1)&&st(m,d.height,d.originY),this.segment=m,g=2;g<c;g+=6)w={x:+m[g-2],y:+m[g-1]},p={x:+m[g+4],y:+m[g+5]},y.push(w,p),ot(w.x,w.y,+m[g],+m[g+1],+m[g+2],+m[g+3],p.x,p.y,1/(u*2e5),y,y.length-1);for(c=y.length,g=0;g<c;g++)M=y[g],h=y[g-1]||M,(M.x>h.x||h.y!==M.y&&h.x===M.x||M===h)&&M.x<=1?(h.cx=M.x-h.x,h.cy=M.y-h.y,h.n=M,h.nx=M.x,b&&g>1&&Math.abs(h.cy/h.cx-y[g-2].cy/y[g-2].cx)>2&&(b=0),h.cx<v&&(h.cx?v=h.cx:(h.cx=.001,g===c-1&&(h.x-=.001,v=Math.min(v,.001),b=0)))):(y.splice(g--,1),c--);if(c=1/v+1|0,o=1/c,C=0,M=y[0],b){for(g=0;g<c;g++)t=g*o,M.nx<t&&(M=y[++C]),w=M.y+(t-M.x)/M.cx*M.cy,x[g]={x:t,cx:o,y:w,cy:0,nx:9},g&&(x[g-1].cy=w-x[g-1].y);x[c-1].cy=y[y.length-1].y-w}else{for(g=0;g<c;g++)M.nx<g*o&&(M=y[++C]),x[g]=M;C<y.length-1&&(x[g-1]=y[y.length-2])}return this.ease=function(S){var E=x[S*c|0]||x[c-1];return E.nx<S&&(E=E.n),E.y+(S-E.x)/E.cx*E.cy},this.ease.custom=this,this.id&&le&&le.registerEase(this.id,this.ease),this},s.getSVGData=function(r){return l.getSVGData(this,r)},l.create=function(r,d,m){return new l(r,d,m).ease},l.register=function(r){le=r,Ie()},l.get=function(r){return le.parseEase(r)},l.getSVGData=function(r,d){d=d||{};var m=d.width||100,v=d.height||100,y=d.x||0,x=(d.y||0)+v,u=le.utils.toArray(d.path)[0],b,c,w,p,g,o,C,M,h,t;if(d.invert&&(v=-v,x=0),typeof r=="string"&&(r=le.parseEase(r)),r.custom&&(r=r.custom),r instanceof l)b=et(Qe([r.segment],m,0,0,-v,y,x));else{for(b=[y,x],C=Math.max(5,(d.precision||1)*200),p=1/C,C+=2,M=5/C,h=Se(y+p*m),t=Se(x+r(p)*-v),c=(t-x)/(h-y),w=2;w<C;w++)g=Se(y+w*p*m),o=Se(x+r(w*p)*-v),(Math.abs((o-t)/(g-h)-c)>M||w===C-1)&&(b.push(h,t),c=(o-t)/(g-h)),h=g,t=o;b="M"+b.join(",")}return u&&u.setAttribute("d",b),b},l}();Ge()&&le.registerPlugin(xe);xe.version="3.12.5";ee.registerPlugin(xe);xe.create("CustomSpinEase","M0,0 C0.25,0 0.15,0.2 0.25,0.4 0.35,0.6 0.7,1 1,1");xe.create("GentlePower1","M0,0 C0.4,0 0.2,1 1,1");xe.create("SuperGentlePower1","M0,0 C0.6,0 0.2,1 1,1");xe.create("SlowerPower1","M0,0 C0.2,0.2 0.4,1 1,1");function je(l,s){return l+(s-l)*Math.random()}function it(l,s){return Math.floor(l+(s-l+1)*Math.random())}const lt=async l=>{var r;return l&&Array.isArray(l.cards)&&l.cards.length>0?{cards:l.cards,spinResults:l.spinResults??[],spinResult:((r=l.spinResults)==null?void 0:r[0])??{cardID:null,landingMode:"standard"}}:await(await fetch("/data/spinData.json")).json()},ct=l=>{if(!l||l.length===0)return null;const s=Math.floor(Math.random()*l.length);return l[s].id},ut=(l,s)=>{if(!l||!s)return null;const i=l.findIndex(r=>String(r.id)===String(s));return i>=0?i:null},Oe=f.forwardRef(({onSpinComplete:l,visible:s=!0,spinParams:i,cards:r=[],targetCardID:d=null,landingMode:m=null},v)=>{const y=f.useRef(),{size:x,camera:u}=fe.useThree(),b=f.useRef(null),c=f.useRef(!0),w=f.useRef(!1),p=f.useRef(null),g=f.useRef(!1),o=f.useMemo(()=>({...Te.defaultSpinParams,...i,beforeTease:{...Te.defaultSpinParams.beforeTease,...i==null?void 0:i.beforeTease},afterTease:{...Te.defaultSpinParams.afterTease,...i==null?void 0:i.afterTease}}),[i]),{scene:C}=B.useGLTF("/models/Cards/card-blue.glb"),[M,h]=f.useState(!1),[t]=f.useState(()=>({rotation:0,velocity:0,isDragging:!1,isSpinning:!1,isSnapping:!1,lastPointerX:0})),[S,E]=ve.useControls("Card",()=>({radiusMultiplier:{value:12.4,min:.5,max:20,step:.1,label:"Radius Space"},autoRotate:{value:!1,label:"Auto Rotate"},autoRotateSpeed:{value:.02,min:-2,max:2,step:.1,label:"Auto Rotate Speed"},snap:{value:!0,label:"Snap to Card"},cardScaleCenter:{value:1.1,min:1,max:2,step:.01,label:"Card Scale Center"},cardScaleSide:{value:.9,min:.1,max:1,step:.01,label:"Card Scale Side"},"Go to Card #":{value:1,min:1,max:26,step:1},"Random Spin":ve.button(()=>{const N=Math.floor(Math.random()*26);p.current&&p.current(N)})}));ve.useControls("Spin Controls",()=>({landingMode:{value:o.landingMode,options:{Standard:"ff_standard","Before Tease":"ff_before","After Tease":"ff_after"},label:"Landing Mode",onChange:N=>{o.landingMode=N}},"Global Physics":ve.folder({speedMultiplier:{value:o.speedMultiplier,min:.1,max:5,step:.01,label:"Spin Speed",onChange:N=>{o.speedMultiplier=N}}}),"Before Tease":ve.folder({bt_teaseCards:{value:o.beforeTease.teaseCards,min:1,max:5,step:1,label:"Tease Cards Count",onChange:N=>{o.beforeTease.teaseCards=N}},bt_stopOffset:{value:o.beforeTease.stopOffset,min:0,max:1,step:.01,label:"Stop Offset",onChange:N=>{o.beforeTease.stopOffset=N}},bt_gravityPull:{value:o.beforeTease.gravityPull,min:0,max:.001,step:1e-6,label:"Gravity Pull",onChange:N=>{o.beforeTease.gravityPull=N}},bt_gravityIncrease:{value:o.beforeTease.gravityIncrease,min:0,max:.001,step:1e-6,label:"Gravity Increase",onChange:N=>{o.beforeTease.gravityIncrease=N}},bt_maxGravityVelocity:{value:o.beforeTease.maxGravityVelocity,min:0,max:.02,step:1e-4,label:"Max Gravity Velocity",onChange:N=>{o.beforeTease.maxGravityVelocity=N}}}),"After Tease":ve.folder({at_teaseCards:{value:o.afterTease.teaseCards,min:1,max:5,step:1,label:"Tease Cards Count",onChange:N=>{o.afterTease.teaseCards=N}},at_stopOffset:{value:o.afterTease.stopOffset,min:0,max:1,step:.01,label:"Stop Offset",onChange:N=>{o.afterTease.stopOffset=N}},at_gravityPull:{value:o.afterTease.gravityPull,min:0,max:.001,step:1e-6,label:"Gravity Pull",onChange:N=>{o.afterTease.gravityPull=N}},at_gravityIncrease:{value:o.afterTease.gravityIncrease,min:0,max:.001,step:1e-6,label:"Gravity Increase",onChange:N=>{o.afterTease.gravityIncrease=N}},at_maxGravityVelocity:{value:o.afterTease.maxGravityVelocity,min:0,max:.02,step:1e-4,label:"Max Gravity Velocity",onChange:N=>{o.afterTease.maxGravityVelocity=N}}})}));const G=r.length||26,_=f.useMemo(()=>({totalCards:G,radiusMultiplier:S.radiusMultiplier,autoRotate:S.autoRotate,autoRotateSpeed:S.autoRotateSpeed,snap:S.snap,friction:.98,cardScale:.005,cardScaleCenter:S.cardScaleCenter,cardScaleSide:S.cardScaleSide,dragSpeed:.2}),[S,G]),H=f.useMemo(()=>{if(!C)return .35;const N=new Q.Box3().setFromObject(C);return(N.max.x-N.min.x)*_.cardScale},[C,_.cardScale]),U=x.width<600,q=U?.1:.07,re=U?8:4,$=Math.PI*2/_.totalCards,J=1*_.cardScale/2/Math.tan(Math.PI/_.totalCards)*_.radiusMultiplier,Z=f.useCallback((N,n)=>{b.current&&(ee.gsap.ticker.remove(b.current),b.current=null),ee.gsap.to(t,{rotation:n,duration:.35,ease:"power2.out",onComplete:()=>{t.isSpinning=!1,t.velocity=0,t.isSnapping=!1,w.current=!0,l&&l(N)}})},[t,E,l]),se=f.useCallback((N,n=!1)=>{isNaN(t.rotation)&&(t.rotation=0,t.velocity=0),t.isSpinning=!0,t.isSnapping=!1,t.velocity=0;const e=_.autoRotate;ee.gsap.killTweensOf(t),b.current&&ee.gsap.ticker.remove(b.current);let j=it(o.spinsMin,o.spinsMax);Math.random()<o.dramaticLoopChance&&j++;const T=t.rotation,R=Math.floor(T/(Math.PI*2))*(Math.PI*2)-j*Math.PI*2-N*$,P=["ff_standard","ff_before","ff_after"],F=n?"ff_standard":P[Math.floor(Math.random()*P.length)];let k=R;F==="ff_before"?k=R+$*(o.beforeTease.teaseCards-1+o.beforeTease.stopOffset):F==="ff_after"&&(k=R-$*(o.afterTease.teaseCards-1+o.afterTease.stopOffset));const O=Math.abs(k-T),A=Math.max(o.durationMin,Math.min(o.durationMax,O*o.durationDistScale)),X=je(o.nudgeMin,o.nudgeMax),W=je(o.nudgeDurationMin,o.nudgeDurationMax),Y=A*je(o.pullDepthScaleMin,o.pullDepthScaleMax),D=A*je(o.pullDurScaleMin,o.pullDurScaleMax),te=T+X*$,ae=T-Y*$,ne=ee.gsap.timeline();ne.to(t,{rotation:te,duration:W,ease:"power1.out"}),ne.to(t,{rotation:ae,duration:D,ease:`back.in(${o.pullBackStrength})`}),ne.add(()=>{const ie=1-(1-o.friction)*o.speedMultiplier;let pe="spin",z=0;b.current=()=>{const I=ee.gsap.ticker.deltaRatio(60);if(pe==="spin"){const K=(k-t.rotation)*(1-Math.pow(ie,I));t.rotation+=K,z=K/I;const de=F==="ff_standard"?5e-4:95e-5;Math.abs(z)<de&&(F==="ff_before"?pe="gravity":F==="ff_after"?(pe="gravity-reverse",z=0):Z(N,R,e))}else if(pe==="gravity"){const V=t.rotation-R,K=o.beforeTease.gravityPull+Math.abs(V)*o.beforeTease.gravityIncrease;z-=K*I,Math.abs(z)>o.beforeTease.maxGravityVelocity&&(z=-o.beforeTease.maxGravityVelocity),t.rotation+=z*I,t.rotation<=R&&Z(N,R,e)}else if(pe==="gravity-reverse"){const V=t.rotation-R,K=o.afterTease.gravityPull+Math.abs(V)*o.afterTease.gravityIncrease;z+=K*I,Math.abs(z)>o.afterTease.maxGravityVelocity&&(z=o.afterTease.maxGravityVelocity),t.rotation+=z*I,t.rotation>=R&&Z(N,R,e)}},ee.gsap.ticker.add(b.current)})},[t,$,_.autoRotate,Z]);f.useEffect(()=>{p.current=se},[se]),f.useImperativeHandle(v,()=>({goToCard:N=>se(N,!0)})),f.useEffect(()=>{M&&s?document.documentElement.style.setProperty("--line-visible","1"):document.documentElement.style.setProperty("--line-visible","0")},[M,s]),f.useLayoutEffect(()=>{!s||!y.current||(h(!1),y.current.position.y=10,g.current=!1,ee.gsap.to(y.current.position,{y:0,duration:2,ease:"power4.out",onComplete:()=>{if(h(!0),!g.current){g.current=!0;let N=d;(!N||N===null)&&(N=ct(r));const n=ut(r,N),e=n!==null?n:Math.floor(Math.random()*_.totalCards);p.current&&p.current(e)}}}))},[s,_.totalCards,d,r]),f.useEffect(()=>{if(c.current){c.current=!1;return}if(w.current){w.current=!1;return}se(S["Go to Card #"]-1)},[S["Go to Card #"],se]);const me=f.useMemo(()=>x.width<850?27.1:30,[x.width]);return fe.useFrame(()=>{if(!y.current||!s)return;if(!t.isSpinning){if(_.autoRotate)t.velocity+=(_.autoRotateSpeed-t.velocity)*.05,t.rotation+=t.velocity;else if(t.velocity*=_.friction,t.rotation+=t.velocity,_.snap&&Math.abs(t.velocity)<.001&&!t.isSnapping){t.isSnapping=!0,t.velocity=0;const n=Math.round(t.rotation/$)*$;ee.gsap.to(t,{rotation:n,duration:.5,ease:"power2.out",overwrite:!0,onComplete:()=>{t.isSnapping=!1}})}}y.current.rotation.y=t.rotation;const N=Math.cos($);if(y.current.children.forEach((n,e)=>{const j=$*e+t.rotation,T=Math.cos(j);let L=T>N?_.cardScaleSide+(_.cardScaleCenter-_.cardScaleSide)*((T-N)/(1-N)):_.cardScaleSide;const R=_.cardScale*L;n.scale.set(R,R,R)}),M){const n=H,e=new Q.Vector3(-n/2,0,J),j=new Q.Vector3(n/2,0,J);u.updateMatrixWorld();const T=e.project(u),L=j.project(u),P=Math.abs(L.x-T.x)/2*100*.6;document.documentElement.style.setProperty("--line-width",`${P}%`)}else document.documentElement.style.setProperty("--line-width","0%")}),a.jsx("group",{ref:y,rotation:[Q.MathUtils.degToRad(re),0,0],scale:me,children:Array.from({length:_.totalCards}).map((N,n)=>a.jsx(Be,{index:n,radius:J,sliceAngle:$,cardScale:_.cardScale,cardY:q,cards:r},n))})}),dt=["blue","green","pink","yellow"];dt.forEach(l=>{B.useGLTF.preload(`/models/Cards/card-${l}.glb`)});function ft(l){const s=new Map,i=new Map,r=l.clone();return Ve(l,r,function(d,m){s.set(m,d),i.set(d,m)}),r.traverse(function(d){if(!d.isSkinnedMesh)return;const m=d,v=s.get(d),y=v.skeleton.bones;m.skeleton=v.skeleton.clone(),m.bindMatrix.copy(v.bindMatrix),m.skeleton.bones=y.map(function(x){return i.get(x)}),m.bind(m.skeleton,m.bindMatrix)}),r}function Ve(l,s,i){i(l,s);for(let r=0;r<l.children.length;r++)Ve(l.children[r],s.children[r],i)}const mt=f.forwardRef(({currentColor:l="black",visible:s=!0,onRevealComplete:i},r)=>{const d=f.useRef(),{scene:m,animations:v}=B.useGLTF("/models/GiftBox/gift-box.glb"),{scene:y}=B.useGLTF("/models/Cards/card.glb"),[x,u]=f.useState(null),b=f.useRef(null),c=f.useRef({}),w={black:B.useTexture("textures/texturesGiftBox/black.jpg"),blue:B.useTexture("textures/texturesGiftBox/blue.jpg"),green:B.useTexture("textures/texturesGiftBox/green.jpg"),pink:B.useTexture("textures/texturesGiftBox/pink.jpg"),yellow:B.useTexture("textures/texturesGiftBox/yellow.jpg")};Object.values(w).forEach(h=>{h.flipY=!1,h.colorSpace=Q.SRGBColorSpace});const p=f.useMemo(()=>{let h=null;return y.traverse(t=>{var S;((S=t.material)==null?void 0:S.name)==="Mat_CardBaseUpdate"&&(h=t.material.clone(),h.toneMapped=!1)}),h},[y]);f.useEffect(()=>{if(!s||!m)return;const h=ft(m);u(h);const t=new Q.AnimationMixer(h);b.current=t,c.current={},v.forEach(E=>{const G=t.clipAction(E);c.current[E.name]=G});const S=E=>{E.action===c.current.Reveal&&i&&i(),E.action===c.current.WrongAction&&c.current.Levitating&&(c.current.Levitating.reset().play(),c.current.Levitating.crossFadeFrom(c.current.WrongAction,.2,!1))};return t.addEventListener("finished",S),c.current.Levitating&&c.current.Levitating.play(),()=>{b.current&&(b.current.stopAllAction(),b.current.removeEventListener("finished",S),b.current=null),c.current={}}},[s,m,v]),fe.useFrame((h,t)=>{b.current&&b.current.update(t)}),f.useEffect(()=>{const h=x||m;h&&h.traverse(t=>{var S,E,G;t instanceof Q.Mesh&&((S=t.material)!=null&&S.name.includes("Mat_CardBaseUpdate")&&p&&(t.material=p.clone()),(E=t.material)!=null&&E.name.includes("Mat_QuestionMark")&&(t.material._isCloned||(t.material=t.material.clone(),t.material._isCloned=!0),t.material.emissive.set(.07,.07,.07),t.material.emissiveMap=t.material.map),(G=t.material)!=null&&G.name.includes("Mat_Black")&&(t.material._isCloned||(t.material=t.material.clone(),t.material._isCloned=!0),t.material.map=w[l]||w.black,t.material.needsUpdate=!0),t.isMesh&&(t.material.envMapIntensity=.4))})},[x,m,p,w,l]),f.useImperativeHandle(r,()=>({playReveal:()=>{if(c.current.Reveal&&c.current.Levitating&&b.current){const h=c.current.Reveal,t=c.current.Levitating;return h.setLoop(Q.LoopOnce),h.clampWhenFinished=!0,h.reset().play(),h.crossFadeFrom(t,.3,!1),h.getClip().duration}return 0},playWrongAction:()=>{if(c.current.WrongAction&&c.current.Levitating&&b.current){const h=c.current.WrongAction,t=c.current.Levitating;h.reset().play(),h.crossFadeFrom(t,.2,!1)}}}));const g=Q.MathUtils.degToRad(30),o=Q.MathUtils.degToRad(-125),C=Q.MathUtils.degToRad(0),M=x||m;return a.jsx("primitive",{ref:d,object:M,visible:s,scale:[.071,.071,.071],position:[.09,-3,-.5],rotation:[g,o,C]})}),pt=f.forwardRef(({onColorChange:l,maxLoops:s,colorSequence:i,openedCount:r},d)=>{const[m,v]=f.useState(()=>{const x=Math.min(i.length-r,5);return i.slice(r,r+x).map((u,b)=>({id:r+b,color:u}))}),y=f.useRef(null);return f.useEffect(()=>{m.length>0&&l(m[0].color)},[m,l]),f.useImperativeHandle(d,()=>({moveToNextBox:()=>{if(m.length<1)return;m.length>1&&l(m[1].color);const x=ee.gsap.timeline({onComplete:()=>{v(c=>{if(c.length===0)return c;const w=c.slice(1),g=c[c.length-1].id+1;return g<i.length?[...w,{id:g,color:i[g]}]:w}),ee.gsap.set(y.current,{x:0})}}),u=y.current.children[0],b=u.offsetWidth+parseInt(window.getComputedStyle(y.current).gap||0);x.to(u,{opacity:0,duration:.5,ease:"power2.inOut"},0),x.to(y.current,{x:-b,duration:.5,ease:"power2.inOut"},0)}})),a.jsx("div",{className:"gift-box-sroll-parent",children:a.jsx("div",{className:"gift-box-scroll",ref:y,children:m.map(x=>a.jsx("div",{className:"items",children:a.jsx("img",{src:`/images/gift-box-imgs/${x.color}-box.webp`,alt:`${x.color} box`,"data-color":x.color,draggable:"false"})},x.id))})})}),gt=()=>a.jsxs(a.Fragment,{children:[a.jsx("ambientLight",{intensity:1.8}),a.jsx("directionalLight",{position:[0,2,1.25],intensity:4.5,color:"#d4d3d3",castShadow:!0,"shadow-camera-far":15,"shadow-mapSize":[1024,1024],"shadow-normalBias":.05})]}),ht=f.forwardRef(({position:l=[0,0,0],scale:s=.02,color:i="blue"},r)=>{const d=f.useRef(),[m,v]=f.useState(!0),y=B.useGLTF("/models/Flames/flame-blue.glb"),x=B.useGLTF("/models/Flames/flame-green.glb"),u=B.useGLTF("/models/Flames/flame-grey.glb"),b=B.useGLTF("/models/Flames/flame-pink.glb"),c=B.useGLTF("/models/Flames/flame-yellow.glb"),w=f.useMemo(()=>({blue:y,green:x,grey:u,pink:b,yellow:c}),[y,x,u,b,c]),p=B.useEnvironment({files:["/textures/environmentMap/px.jpg","/textures/environmentMap/nx.jpg","/textures/environmentMap/py.jpg","/textures/environmentMap/ny.jpg","/textures/environmentMap/pz.jpg","/textures/environmentMap/nz.jpg"]}),g=f.useMemo(()=>{const t={};return Object.keys(w).forEach(S=>{w[S].scene.traverse(E=>{E instanceof Q.Mesh&&E.material&&E.material.map&&(t[S]=E.material.map)})}),t},[w]),{scene:o,animations:C}=y,{actions:M,names:h}=B.useAnimations(C,o);return f.useEffect(()=>{if(h.length>0){Object.values(M).forEach(E=>E==null?void 0:E.stop());const t=M.idle?"idle":h[0],S=M[t];S&&S.reset().fadeIn(.5).play()}return()=>{Object.values(M).forEach(t=>t==null?void 0:t.stop())}},[M,h]),f.useEffect(()=>{const t=(i==null?void 0:i.toLowerCase())||"blue";g[t]&&o.traverse(S=>{S instanceof Q.Mesh&&(S.material.toneMapped=!1,S.material.envMap=p,S.material.envMapIntensity=1,S.material.map&&(S.material.map=g[t],S.material.needsUpdate=!0))})},[o,i,g,p]),f.useImperativeHandle(r,()=>({changeColor:t=>{console.warn("changeColor called on Flame, but color is now managed via props")},show:()=>v(!0),hide:()=>v(!1)})),a.jsx("group",{ref:d,position:l,scale:s,visible:m,children:a.jsx("primitive",{object:o})})});B.useGLTF.preload("models/Flames/flame-blue.glb");B.useGLTF.preload("models/Flames/flame-green.glb");B.useGLTF.preload("models/Flames/flame-grey.glb");B.useGLTF.preload("models/Flames/flame-pink.glb");B.useGLTF.preload("models/Flames/flame-yellow.glb");const Ae={blue:{textColor:"rgba(14, 134, 216, 1)",gradientFill:"linear-gradient(90deg, #A7DFF5 0%, #08ADED 100%)"},pink:{textColor:"rgba(245, 160, 197, 1)",gradientFill:"linear-gradient(90deg, #F5A0C5 0%, #FB76C7 100%)"},yellow:{textColor:"rgba(255, 165, 57, 1)",gradientFill:"linear-gradient(90deg, #FFD16E 0%, #F5AA0C 100%)"},green:{textColor:"rgba(107, 142, 16, 1)",gradientFill:"linear-gradient(90deg, #DAFB86 0%, #B0ED14 100%)"}},xt=({flameRef:l,maxLoops:s=5,currentCount:i=0,currentColor:r="blue"})=>{const d=i/s*100,m=Ae[r]||Ae.blue;return a.jsx("div",{className:"flame-ui",children:a.jsxs("div",{className:"flame-ui__card",children:[a.jsxs("div",{className:"flame-ui__top",children:[a.jsx("div",{className:"flame-ui__icon-wrapper",children:a.jsxs(B.View,{style:{width:"100%",height:"100%",zIndex:10},children:[a.jsx(B.PerspectiveCamera,{makeDefault:!0,position:[0,0,4],fov:45,near:.1,far:100}),a.jsx("ambientLight",{intensity:1}),a.jsx("directionalLight",{position:[-2,3,3],intensity:3}),a.jsx(ht,{ref:l,position:[0,-1.5,0],scale:.042,color:r})]})}),a.jsxs("div",{className:"flame-ui__count-group",children:[a.jsx("div",{className:"flame-ui__count",style:{color:m.textColor},children:i}),a.jsx("div",{className:"flame-ui__count-label",children:"Reveals Scanned"})]})]}),a.jsx("div",{className:"flame-ui__progress-track",children:a.jsx("div",{className:"flame-ui__progress-fill",style:{width:`${d}%`,background:m.gradientFill}})}),a.jsxs("div",{className:"flame-ui__status-group",children:[a.jsx("div",{className:"flame-ui__status-title",style:{color:m.textColor},children:"Rare prize detected"}),a.jsxs("div",{className:"flame-ui__status-subtitle",children:[i," of ",s," prizes found"]})]})]})})},vt={blue:255,green:65280,pink:16761035,yellow:16776960},_e=Object.keys(vt),bt={maxLoops:5,topMin:.1,topMax:.3,distanceFromCamera:12,cubeSize:.5,durationMin:1.8,durationMax:2},yt=f.memo(({id:l,colorName:s,config:i,onComplete:r})=>{const d=f.useRef(),m=f.useRef(null),v=f.useRef(null),{camera:y}=fe.useThree(),x=`models/Parachute/parachute-${s}.glb`,u=B.useGLTF(x),b=f.useCallback((w,p)=>{if(!y||!y.projectionMatrix)return new Q.Vector3;const g=new Q.Vector3(w,p,0);y.updateProjectionMatrix(),g.unproject(y);const o=g.sub(y.position).normalize(),C=i.distanceFromCamera;return y.position.clone().add(o.multiplyScalar(C))},[y,i.distanceFromCamera]),c=f.useRef(r);return f.useEffect(()=>{c.current=r},[r]),f.useEffect(()=>{const w=d.current;if(!w)return;const p=u.scene.clone();m.current=p,p.traverse(t=>{if(t.material)if(Array.isArray(t.material))t.material=t.material.map(S=>{const E=S.clone();return E.transparent=!0,E.opacity=1,E});else{const S=t.material.clone();S.transparent=!0,S.opacity=1,t.material=S}}),w.children=[],w.add(p),p.scale.set(.04,.04,.04),p.rotation.x=Q.MathUtils.degToRad(15);const g=(Math.random()-.5)*1,o=.8,C=i.topMin+Math.random()*(i.topMax-i.topMin),M=b(g,o),h=b(g,C);if(w.position.copy(M),u.animations&&u.animations.length>0){const t=new Q.AnimationMixer(p);v.current=t,t.clipAction(u.animations[0]).play()}return ee.to(w.position,{x:h.x,y:h.y,z:h.z,duration:4,ease:"power1.inOut",onComplete:()=>{const t=[];p.traverse(S=>{S.material&&t.push(...Array.isArray(S.material)?S.material:[S.material])}),t.length>0?ee.to(t,{opacity:0,duration:.5,onComplete:()=>{v.current&&v.current.stopAllAction(),c.current&&c.current(l)}}):(v.current&&v.current.stopAllAction(),c.current&&c.current(l))}}),()=>{ee.killTweensOf(w.position),m.current&&w&&(m.current.traverse(t=>{t.material&&(Array.isArray(t.material)?t.material:[t.material]).forEach(E=>ee.killTweensOf(E))}),w.remove(m.current),m.current=null),v.current&&(v.current.stopAllAction(),v.current=null)}},[l,s,i,b,u]),fe.useFrame((w,p)=>{v.current&&v.current.update(p)}),a.jsx("group",{ref:d})});B.useGLTF.preload("models/Parachute/parachute-blue.glb");B.useGLTF.preload("models/Parachute/parachute-green.glb");B.useGLTF.preload("models/Parachute/parachute-pink.glb");B.useGLTF.preload("models/Parachute/parachute-yellow.glb");const wt=({isActive:l=!0,maxLoops:s=5,spawnDelay:i=2,colorSequence:r=[],onCubeSpawn:d,onAllComplete:m})=>{const[v,y]=f.useState([]),x=f.useRef({count:0,nextAllowedTime:0,isFinished:!1,hasStarted:!1}),u=f.useCallback(b=>{y(c=>{const w=c.filter(p=>p.id!==b);return x.current.isFinished&&w.length===0&&(m==null||m()),w})},[m]);return fe.useFrame(b=>{const{clock:c}=b,w=c.getElapsedTime();if(!l||x.current.isFinished||(x.current.hasStarted||(x.current.hasStarted=!0,x.current.nextAllowedTime=w),w<x.current.nextAllowedTime))return;if(x.current.count>=s){x.current.isFinished=!0;return}x.current.nextAllowedTime=w+i;const p=Math.random().toString(36).substring(2,9),g=r[x.current.count]||_e[Math.floor(Math.random()*_e.length)];x.current.count++,d&&d(g),y(o=>[...o,{id:p,colorName:g}])}),a.jsx("group",{children:v.map(b=>a.jsx(yt,{id:b.id,colorName:b.colorName,config:bt,onComplete:u},b.id))})},Mt=f.memo(({id:l,position:s,scale:i,cloudType:r,speed:d,direction:m,viewport:v,onComplete:y})=>{const x=f.useRef(),u=5;f.useLayoutEffect(()=>{x.current&&(x.current.position.fromArray(s),x.current.scale.setScalar(i))},[]),fe.useFrame((p,g)=>{x.current&&(m==="horizontal"?(x.current.position.x-=d*g,x.current.position.x<-v.width/2-u&&y(l)):(x.current.position.y+=d*g,x.current.position.y>v.height/2+u&&y(l)))});const b=`models/Clouds/cloud-${r}.glb`,c=B.useGLTF(b),w=f.useMemo(()=>c.scene.clone(),[c.scene]);return a.jsx("group",{ref:x,children:a.jsx("primitive",{object:w})})}),Ct=({speed:l=2,enableHorizontal:s=!0,enableVertical:i=!1,spawnInterval:r=8,scale:d=.8,maxLoops:m=5,currentCount:v=0})=>{const[y,x]=f.useState([]),{viewport:u}=fe.useThree(),b=f.useRef(0),c=f.useRef(0),w=f.useRef(!0),p=4,g=f.useCallback(M=>{let h=0,t=0;const S=-2;return M==="horizontal"?(h=u.width/2+p,t=(Math.random()-.5)*u.height*.8):(h=(Math.random()-.5)*u.width*.8,t=-u.height/2-p),new Q.Vector3(h,t,S)},[u]),o=f.useCallback(()=>{if(!w.current)return;let M;s&&i?M=Math.random()<.5?"horizontal":"vertical":i?M="vertical":M="horizontal";const h=g(M),t=Math.random()<.5?1:2,S=c.current++;x(E=>[...E,{id:S,position:h.toArray(),cloudType:t,direction:M}])},[g,s,i]),C=f.useCallback(M=>{x(h=>h.filter(t=>t.id!==M))},[]);return f.useEffect(()=>{v>=m&&(w.current=!1)},[v,m]),f.useEffect(()=>{o()},[]),fe.useFrame((M,h)=>{w.current&&(b.current+=h,b.current>=r&&(o(),b.current=0))}),a.jsx("group",{children:y.map(M=>a.jsx(Mt,{id:M.id,position:M.position,scale:d,cloudType:M.cloudType,speed:l,direction:M.direction,viewport:u,onComplete:C},M.id))})};B.useGLTF.preload("models/Clouds/cloud-1.glb");B.useGLTF.preload("models/Clouds/cloud-2.glb");const St="/images/gift-box-imgs/yellow-box.webp",De="/images/gift-box-imgs/blue-box.webp",jt="/images/gift-box-imgs/green-box.webp",Tt="/images/gift-box-imgs/pink-box.webp",Rt=({maxLoops:l=6,colorSequence:s=[],onComplete:i})=>{const[r]=f.useState(l),[d]=f.useState(l*3),m=f.useRef(null),v=f.useRef(null),y=f.useRef({isDragging:!1,startX:0}),x=f.useRef(null),u=f.useRef({isDragging:!1,startX:0,scrollLeft:0}),b={yellow:St,blue:De,green:jt,pink:Tt},c=s.map((p,g)=>({id:g,image:b[p]||De,color:p}));f.useEffect(()=>{const p=m.current,g=v.current;if(!p||!g)return;const o=M=>{if(!y.current.isDragging)return;const h=M.touches?M.touches[0].clientX:M.clientX,t=g.getBoundingClientRect(),S=p.getBoundingClientRect(),E=t.width-S.width-8;let G=h-y.current.startX;G=Math.max(0,Math.min(G,E)),ee.set(p,{x:G}),G>=E-2&&(y.current.isDragging=!1,i&&i())},C=()=>{y.current.isDragging&&(y.current.isDragging=!1,ee.to(p,{x:0,duration:.5,ease:"back.out(0.5)",onComplete:()=>{p&&(p.style.transition="")}}))};return window.addEventListener("mousemove",o),window.addEventListener("mouseup",C),window.addEventListener("touchmove",o,{passive:!1}),window.addEventListener("touchend",C),()=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",C),window.removeEventListener("touchmove",o),window.removeEventListener("touchend",C)}},[i]);const w=p=>{const g=m.current;if(!g)return;y.current.isDragging=!0;const o=window.getComputedStyle(g).transform;let C=0;o!=="none"&&(C=new DOMMatrix(o).m41),y.current.startX=p-C,g.style.transition="none",ee.killTweensOf(g)};return f.useEffect(()=>{const p=x.current;if(!p||c.length<5)return;const g=M=>{u.current.isDragging=!0,u.current.startX=M.pageX-p.offsetLeft,u.current.scrollLeft=p.scrollLeft,p.style.cursor="grabbing"},o=M=>{if(!u.current.isDragging)return;M.preventDefault();const t=(M.pageX-p.offsetLeft-u.current.startX)*2;p.scrollLeft=u.current.scrollLeft-t},C=()=>{u.current.isDragging=!1,p.style.cursor="grab"};return p.addEventListener("mousedown",g),window.addEventListener("mousemove",o),window.addEventListener("mouseup",C),p.addEventListener("mouseleave",C),()=>{p.removeEventListener("mousedown",g),window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",C),p.removeEventListener("mouseleave",C)}},[c.length]),a.jsxs("div",{className:"prize-detected-container",children:[a.jsx("div",{className:"prize-detected-bg"}),a.jsxs("div",{className:"prize-detected-card",children:[a.jsxs("div",{className:"prize-detected-heading",children:[a.jsxs("h1",{className:"prize-detected-title",children:[r," Prizes Detected"]}),a.jsxs("p",{className:"prize-detected-subtitle",children:["From ",d," Reveals scanned"]})]}),a.jsx("div",{className:"prize-detected-boxes",ref:x,style:{justifyContent:c.length>=5?"flex-start":"center",cursor:c.length>=5?"grab":"default"},children:c.map(p=>a.jsx("div",{className:"gift-box-wrapper",children:a.jsx("img",{src:p.image,alt:`${p.color} gift box`,className:"gift-box-image",draggable:"false"})},p.id))}),a.jsxs("div",{className:"slide-to-collect-section",ref:v,children:[a.jsx("button",{className:"slide-button",ref:m,onMouseDown:p=>w(p.clientX),onTouchStart:p=>w(p.touches[0].clientX),children:a.jsx("img",{src:"/images/right-arrow.svg",alt:"arrow",className:"arrow-icon"})}),a.jsx("span",{className:"slide-text",children:"Slide to Collect"}),a.jsx("div",{className:"button-spacer"})]})]})]})};var Ne={};(function l(s,i,r,d){var m=!!(s.Worker&&s.Blob&&s.Promise&&s.OffscreenCanvas&&s.OffscreenCanvasRenderingContext2D&&s.HTMLCanvasElement&&s.HTMLCanvasElement.prototype.transferControlToOffscreen&&s.URL&&s.URL.createObjectURL),v=typeof Path2D=="function"&&typeof DOMMatrix=="function",y=function(){if(!s.OffscreenCanvas)return!1;try{var n=new OffscreenCanvas(1,1),e=n.getContext("2d");e.fillRect(0,0,1,1);var j=n.transferToImageBitmap();e.createPattern(j,"no-repeat")}catch{return!1}return!0}();function x(){}function u(n){var e=i.exports.Promise,j=e!==void 0?e:s.Promise;return typeof j=="function"?new j(n):(n(x,x),null)}var b=function(n,e){return{transform:function(j){if(n)return j;if(e.has(j))return e.get(j);var T=new OffscreenCanvas(j.width,j.height),L=T.getContext("2d");return L.drawImage(j,0,0),e.set(j,T),T},clear:function(){e.clear()}}}(y,new Map),c=function(){var n=Math.floor(16.666666666666668),e,j,T={},L=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(e=function(R){var P=Math.random();return T[P]=requestAnimationFrame(function F(k){L===k||L+n-1<k?(L=k,delete T[P],R()):T[P]=requestAnimationFrame(F)}),P},j=function(R){T[R]&&cancelAnimationFrame(T[R])}):(e=function(R){return setTimeout(R,n)},j=function(R){return clearTimeout(R)}),{frame:e,cancel:j}}(),w=function(){var n,e,j={};function T(L){function R(P,F){L.postMessage({options:P||{},callback:F})}L.init=function(F){var k=F.transferControlToOffscreen();L.postMessage({canvas:k},[k])},L.fire=function(F,k,O){if(e)return R(F,null),e;var A=Math.random().toString(36).slice(2);return e=u(function(X){function W(Y){Y.data.callback===A&&(delete j[A],L.removeEventListener("message",W),e=null,b.clear(),O(),X())}L.addEventListener("message",W),R(F,A),j[A]=W.bind(null,{data:{callback:A}})}),e},L.reset=function(){L.postMessage({reset:!0});for(var F in j)j[F](),delete j[F]}}return function(){if(n)return n;if(!r&&m){var L=["var CONFETTI, SIZE = {}, module = {};","("+l.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {"," if (msg.data.options) {"," CONFETTI(msg.data.options).then(function () {"," if (msg.data.callback) {"," postMessage({ callback: msg.data.callback });"," }"," });"," } else if (msg.data.reset) {"," CONFETTI && CONFETTI.reset();"," } else if (msg.data.resize) {"," SIZE.width = msg.data.resize.width;"," SIZE.height = msg.data.resize.height;"," } else if (msg.data.canvas) {"," SIZE.width = msg.data.canvas.width;"," SIZE.height = msg.data.canvas.height;"," CONFETTI = module.exports.create(msg.data.canvas);"," }","}"].join(`
18
+ `);try{n=new Worker(URL.createObjectURL(new Blob([L])))}catch(R){return typeof console<"u"&&typeof console.warn=="function"&&console.warn("🎊 Could not load worker",R),null}T(n)}return n}}(),p={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function g(n,e){return e?e(n):n}function o(n){return n!=null}function C(n,e,j){return g(n&&o(n[e])?n[e]:p[e],j)}function M(n){return n<0?0:Math.floor(n)}function h(n,e){return Math.floor(Math.random()*(e-n))+n}function t(n){return parseInt(n,16)}function S(n){return n.map(E)}function E(n){var e=String(n).replace(/[^0-9a-f]/gi,"");return e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:t(e.substring(0,2)),g:t(e.substring(2,4)),b:t(e.substring(4,6))}}function G(n){var e=C(n,"origin",Object);return e.x=C(e,"x",Number),e.y=C(e,"y",Number),e}function _(n){n.width=document.documentElement.clientWidth,n.height=document.documentElement.clientHeight}function H(n){var e=n.getBoundingClientRect();n.width=e.width,n.height=e.height}function U(n){var e=document.createElement("canvas");return e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.pointerEvents="none",e.style.zIndex=n,e}function q(n,e,j,T,L,R,P,F,k){n.save(),n.translate(e,j),n.rotate(R),n.scale(T,L),n.arc(0,0,1,P,F,k),n.restore()}function re(n){var e=n.angle*(Math.PI/180),j=n.spread*(Math.PI/180);return{x:n.x,y:n.y,wobble:Math.random()*10,wobbleSpeed:Math.min(.11,Math.random()*.1+.05),velocity:n.startVelocity*.5+Math.random()*n.startVelocity,angle2D:-e+(.5*j-Math.random()*j),tiltAngle:(Math.random()*(.75-.25)+.25)*Math.PI,color:n.color,shape:n.shape,tick:0,totalTicks:n.ticks,decay:n.decay,drift:n.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:n.gravity*3,ovalScalar:.6,scalar:n.scalar,flat:n.flat}}function $(n,e){e.x+=Math.cos(e.angle2D)*e.velocity+e.drift,e.y+=Math.sin(e.angle2D)*e.velocity+e.gravity,e.velocity*=e.decay,e.flat?(e.wobble=0,e.wobbleX=e.x+10*e.scalar,e.wobbleY=e.y+10*e.scalar,e.tiltSin=0,e.tiltCos=0,e.random=1):(e.wobble+=e.wobbleSpeed,e.wobbleX=e.x+10*e.scalar*Math.cos(e.wobble),e.wobbleY=e.y+10*e.scalar*Math.sin(e.wobble),e.tiltAngle+=.1,e.tiltSin=Math.sin(e.tiltAngle),e.tiltCos=Math.cos(e.tiltAngle),e.random=Math.random()+2);var j=e.tick++/e.totalTicks,T=e.x+e.random*e.tiltCos,L=e.y+e.random*e.tiltSin,R=e.wobbleX+e.random*e.tiltCos,P=e.wobbleY+e.random*e.tiltSin;if(n.fillStyle="rgba("+e.color.r+", "+e.color.g+", "+e.color.b+", "+(1-j)+")",n.beginPath(),v&&e.shape.type==="path"&&typeof e.shape.path=="string"&&Array.isArray(e.shape.matrix))n.fill(se(e.shape.path,e.shape.matrix,e.x,e.y,Math.abs(R-T)*.1,Math.abs(P-L)*.1,Math.PI/10*e.wobble));else if(e.shape.type==="bitmap"){var F=Math.PI/10*e.wobble,k=Math.abs(R-T)*.1,O=Math.abs(P-L)*.1,A=e.shape.bitmap.width*e.scalar,X=e.shape.bitmap.height*e.scalar,W=new DOMMatrix([Math.cos(F)*k,Math.sin(F)*k,-Math.sin(F)*O,Math.cos(F)*O,e.x,e.y]);W.multiplySelf(new DOMMatrix(e.shape.matrix));var Y=n.createPattern(b.transform(e.shape.bitmap),"no-repeat");Y.setTransform(W),n.globalAlpha=1-j,n.fillStyle=Y,n.fillRect(e.x-A/2,e.y-X/2,A,X),n.globalAlpha=1}else if(e.shape==="circle")n.ellipse?n.ellipse(e.x,e.y,Math.abs(R-T)*e.ovalScalar,Math.abs(P-L)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI):q(n,e.x,e.y,Math.abs(R-T)*e.ovalScalar,Math.abs(P-L)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI);else if(e.shape==="star")for(var D=Math.PI/2*3,te=4*e.scalar,ae=8*e.scalar,ne=e.x,oe=e.y,ue=5,ie=Math.PI/ue;ue--;)ne=e.x+Math.cos(D)*ae,oe=e.y+Math.sin(D)*ae,n.lineTo(ne,oe),D+=ie,ne=e.x+Math.cos(D)*te,oe=e.y+Math.sin(D)*te,n.lineTo(ne,oe),D+=ie;else n.moveTo(Math.floor(e.x),Math.floor(e.y)),n.lineTo(Math.floor(e.wobbleX),Math.floor(L)),n.lineTo(Math.floor(R),Math.floor(P)),n.lineTo(Math.floor(T),Math.floor(e.wobbleY));return n.closePath(),n.fill(),e.tick<e.totalTicks}function ce(n,e,j,T,L){var R=e.slice(),P=n.getContext("2d"),F,k,O=u(function(A){function X(){F=k=null,P.clearRect(0,0,T.width,T.height),b.clear(),L(),A()}function W(){r&&!(T.width===d.width&&T.height===d.height)&&(T.width=n.width=d.width,T.height=n.height=d.height),!T.width&&!T.height&&(j(n),T.width=n.width,T.height=n.height),P.clearRect(0,0,T.width,T.height),R=R.filter(function(Y){return $(P,Y)}),R.length?F=c.frame(W):X()}F=c.frame(W),k=X});return{addFettis:function(A){return R=R.concat(A),O},canvas:n,promise:O,reset:function(){F&&c.cancel(F),k&&k()}}}function ge(n,e){var j=!n,T=!!C(e||{},"resize"),L=!1,R=C(e,"disableForReducedMotion",Boolean),P=m&&!!C(e||{},"useWorker"),F=P?w():null,k=j?_:H,O=n&&F?!!n.__confetti_initialized:!1,A=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion)").matches,X;function W(D,te,ae){for(var ne=C(D,"particleCount",M),oe=C(D,"angle",Number),ue=C(D,"spread",Number),ie=C(D,"startVelocity",Number),pe=C(D,"decay",Number),z=C(D,"gravity",Number),I=C(D,"drift",Number),V=C(D,"colors",S),K=C(D,"ticks",Number),de=C(D,"shapes"),we=C(D,"scalar"),Re=!!C(D,"flat"),Le=G(D),Pe=ne,Fe=[],Xe=n.width*Le.x,Ue=n.height*Le.y;Pe--;)Fe.push(re({x:Xe,y:Ue,angle:oe,spread:ue,startVelocity:ie,color:V[Pe%V.length],shape:de[h(0,de.length)],ticks:K,decay:pe,gravity:z,drift:I,scalar:we,flat:Re}));return X?X.addFettis(Fe):(X=ce(n,Fe,k,te,ae),X.promise)}function Y(D){var te=R||C(D,"disableForReducedMotion",Boolean),ae=C(D,"zIndex",Number);if(te&&A)return u(function(ie){ie()});j&&X?n=X.canvas:j&&!n&&(n=U(ae),document.body.appendChild(n)),T&&!O&&k(n);var ne={width:n.width,height:n.height};F&&!O&&F.init(n),O=!0,F&&(n.__confetti_initialized=!0);function oe(){if(F){var ie={getBoundingClientRect:function(){if(!j)return n.getBoundingClientRect()}};k(ie),F.postMessage({resize:{width:ie.width,height:ie.height}});return}ne.width=ne.height=null}function ue(){X=null,T&&(L=!1,s.removeEventListener("resize",oe)),j&&n&&(document.body.contains(n)&&document.body.removeChild(n),n=null,O=!1)}return T&&!L&&(L=!0,s.addEventListener("resize",oe,!1)),F?F.fire(D,ne,ue):W(D,ne,ue)}return Y.reset=function(){F&&F.reset(),X&&X.reset()},Y}var J;function Z(){return J||(J=ge(null,{useWorker:!0,resize:!0})),J}function se(n,e,j,T,L,R,P){var F=new Path2D(n),k=new Path2D;k.addPath(F,new DOMMatrix(e));var O=new Path2D;return O.addPath(k,new DOMMatrix([Math.cos(P)*L,Math.sin(P)*L,-Math.sin(P)*R,Math.cos(P)*R,j,T])),O}function me(n){if(!v)throw new Error("path confetti are not supported in this browser");var e,j;typeof n=="string"?e=n:(e=n.path,j=n.matrix);var T=new Path2D(e),L=document.createElement("canvas"),R=L.getContext("2d");if(!j){for(var P=1e3,F=P,k=P,O=0,A=0,X,W,Y=0;Y<P;Y+=2)for(var D=0;D<P;D+=2)R.isPointInPath(T,Y,D,"nonzero")&&(F=Math.min(F,Y),k=Math.min(k,D),O=Math.max(O,Y),A=Math.max(A,D));X=O-F,W=A-k;var te=10,ae=Math.min(te/X,te/W);j=[ae,0,0,ae,-Math.round(X/2+F)*ae,-Math.round(W/2+k)*ae]}return{type:"path",path:e,matrix:j}}function N(n){var e,j=1,T="#000000",L='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';typeof n=="string"?e=n:(e=n.text,j="scalar"in n?n.scalar:j,L="fontFamily"in n?n.fontFamily:L,T="color"in n?n.color:T);var R=10*j,P=""+R+"px "+L,F=new OffscreenCanvas(R,R),k=F.getContext("2d");k.font=P;var O=k.measureText(e),A=Math.ceil(O.actualBoundingBoxRight+O.actualBoundingBoxLeft),X=Math.ceil(O.actualBoundingBoxAscent+O.actualBoundingBoxDescent),W=2,Y=O.actualBoundingBoxLeft+W,D=O.actualBoundingBoxAscent+W;A+=W+W,X+=W+W,F=new OffscreenCanvas(A,X),k=F.getContext("2d"),k.font=P,k.fillStyle=T,k.fillText(e,Y,D);var te=1/j;return{type:"bitmap",bitmap:F.transferToImageBitmap(),matrix:[te,0,0,te,-A*te/2,-X*te/2]}}i.exports=function(){return Z().apply(this,arguments)},i.exports.reset=function(){Z().reset()},i.exports.create=ge,i.exports.shapeFromPath=me,i.exports.shapeFromText=N})(function(){return typeof window<"u"?window:typeof self<"u"?self:this||{}}(),Ne,!1);const Ee=Ne.exports;Ne.exports.create;const Ft=({type:l,onCollect:s,card:i=null})=>{const[r,d]=f.useState(30),[m,v]=f.useState(30),y=f.useCallback(()=>{Ee({particleCount:100,spread:70,origin:{y:.6},zIndex:1e4});const C=2*1e3,M=Date.now()+C;(function h(){Ee({particleCount:2,angle:60,spread:55,origin:{x:0},zIndex:1e4}),Ee({particleCount:2,angle:120,spread:55,origin:{x:1},zIndex:1e4}),Date.now()<M&&requestAnimationFrame(h)})()},[]);if(f.useEffect(()=>{if(l&&(y(),l==="xp"&&(i!=null&&i.xpAmount))){const M=i.xpAmount,h=1500,t=performance.now(),S=E=>{const G=E-t,_=Math.min(G/h,1),H=1-Math.pow(1-_,3),U=Math.floor(0+(M-0)*H),q=(0+(M-0)*H)/100*100;d(U),v(q),_<1&&requestAnimationFrame(S)};requestAnimationFrame(S)}},[l,i,y]),!l||!i)return null;const u=(()=>{if(l==="xp"&&i.xpAmount)return{amount:i.xpAmount,label:`${i.xpAmount} XP`,image:i.imageUrl,title:i.prizeName};if(l==="instant-win")return{amount:i.prizeValue,label:`$${i.prizeValue.toFixed(2)} Instant Win`,image:i.imageUrl,title:i.prizeName};if(l==="set-piece"){const C=i.collectionCount?i.collectionCount.replace(" of ","/").replace(/^/,"Set Piece "):null;return{amount:i.prizeValue,label:`$${i.prizeValue.toLocaleString("en-US")} Cash Prize`,image:i.imageUrl,title:"Collection 1 Set",collection:C}}return{}})(),b={uncommon:"linear-gradient(180deg, #DAFB86 0%, #FFFFFF 100%)",limited:"linear-gradient(180deg, #A7DFF5 0%, #FFFFFF 100%)",rare:"linear-gradient(166deg, #E55C8F 3.81%, #FFF 95.17%)",exclusive:"linear-gradient(180deg, #FFE24F 0%, #FFFFFF 100%)"},c={uncommon:"#4CB263",limited:"#0E86D8",rare:"#E85AA0",exclusive:"#D9C14C"},w={limited:{badgeBg:"#308CF3",badgeTextColor:"#fff",collectionText:"#0E86D8"},rare:{badgeBg:"#E85AA0",badgeTextColor:"#fff",collectionText:"#E85AA0"},exclusive:{badgeBg:"#FEE357",badgeTextColor:"#000",collectionText:"#D9C14C"}},p=b[i.rarityTier]||"transparent",g=c[i.rarityTier],o=w[i.rarityTier]||{badgeBg:"transparent",badgeTextColor:"#000",collectionText:"#000"};return a.jsxs("div",{className:"reward-collection-screen",style:{display:"flex"},children:[l==="xp"&&a.jsx("div",{className:"xp-bar-container",style:{display:"block"},children:a.jsxs("div",{className:"xp-bar-wrapper",children:[a.jsx("div",{className:"xp-bar-left",children:a.jsxs("div",{className:"xp-bar-flame",children:[a.jsx("img",{src:"/images/reward-imgs/flame-icon.webp",alt:"flame",className:"xp-bar-flame-img"}),a.jsx("div",{className:"xp-bar-streak-badge",children:a.jsx("span",{children:"Streak"})}),a.jsx("div",{className:"xp-bar-streak-count",children:"4"})]})}),a.jsxs("div",{className:"xp-bar-right",children:[a.jsxs("div",{className:"xp-bar-level-row",children:[a.jsx("div",{className:"xp-bar-avatar",children:a.jsx("img",{src:"/images/reward-imgs/avatar.webp",alt:"avatar",className:"xp-bar-avatar-img"})}),a.jsx("div",{className:"xp-bar-level-text",children:"Level 1"}),a.jsxs("div",{className:"xp-bar-reward-badge",children:[a.jsx("img",{src:"/images/reward-imgs/coin.webp",alt:"coin",className:"xp-bar-reward-coin"}),a.jsx("span",{className:"xp-bar-reward-amount",children:"$10"})]})]}),a.jsx("div",{className:"xp-bar-progress",children:a.jsx("div",{className:"xp-bar-fill",style:{width:`${m}%`,transition:"none"},children:a.jsx("div",{className:"xp-bar-star",children:a.jsx("img",{src:"/images/reward-imgs/flash-icon.svg",alt:"flash"})})})}),a.jsxs("div",{className:"xp-bar-info",children:[a.jsxs("div",{className:"xp-bar-current-xp",children:[a.jsx("span",{className:"xp-bar-xp-number",children:r}),a.jsx("span",{className:"xp-bar-xp-total",children:"/ 100 XP"})]}),a.jsxs("div",{className:"xp-bar-next-xp",children:[a.jsxs("span",{className:"xp-bar-next-xp-bold",children:[100-r," XP"]}),a.jsx("span",{children:" to Level 2"})]})]})]})]})}),l==="instant-win"&&a.jsx("div",{className:"instant-win-card",style:{display:"flex",background:p},children:a.jsxs("div",{className:"card-content-1",children:[a.jsxs("div",{className:"heading",children:[a.jsx("p",{children:"You won an"}),a.jsx("p",{children:"Instant Win"})]}),a.jsxs("div",{className:"reward-row",children:[a.jsx("div",{className:"image-box",children:a.jsx("div",{className:"image-wrapper",children:a.jsx("img",{src:u.image,alt:"reward",className:"reward-image",onError:C=>{C.target.src="/images/ticket-imgs/5-dollar.webp"}})})}),a.jsx("div",{className:"title-card",children:a.jsx("p",{style:{color:g},children:u.title})})]}),a.jsx("button",{className:"button",onClick:s,children:"Collect"})]})}),l==="set-piece"&&a.jsx("div",{className:"set-piece-card",style:{display:"flex",background:p},children:a.jsxs("div",{className:"card-content-1",children:[a.jsxs("div",{className:"heading",children:[a.jsx("p",{children:"You won a"}),a.jsx("p",{children:"Set Piece"})]}),a.jsxs("div",{className:"badge",style:{background:o.badgeBg},children:[a.jsx("img",{src:"/images/reward-imgs/coin.webp",alt:"coin",className:"coin"}),a.jsx("span",{style:{color:o.badgeTextColor},children:u.label})]}),a.jsxs("div",{className:"reward-row",children:[a.jsx("div",{className:"image-box",children:a.jsx("div",{className:"image-wrapper",children:a.jsx("img",{src:u.image,alt:"set-piece",className:"reward-image",onError:C=>{C.target.src="/images/reward-imgs/set-piece.webp"}})})}),a.jsxs("div",{className:"title-card",children:[a.jsx("p",{className:"collection",style:{color:o.collectionText},children:u.title}),u.collection&&a.jsx("p",{className:"subtitle",children:u.collection})]})]}),a.jsx("button",{className:"button",onClick:s,children:"Collect"})]})}),l==="xp"&&a.jsx("div",{className:"xp-card",style:{display:"flex",background:p},children:a.jsxs("div",{className:"card-content",children:[a.jsx("div",{className:"heading",children:a.jsx("p",{children:"You won"})}),a.jsx("div",{className:"reward-row",children:a.jsx("img",{src:u.image,alt:"xp",className:"reward-image-xp",onError:C=>{C.target.src="/images/xp-imgs/5-xp.webp"}})}),a.jsx("button",{className:"button",onClick:s,children:"Collect"})]})})]})},Et=({currentBox:l,totalBoxes:s})=>a.jsx("div",{className:"box-indicator",children:a.jsx("div",{className:"box-indicator-content",children:a.jsxs("p",{className:"box-indicator-text",children:["Box ",l," of ",s]})})}),Nt=l=>!l||!Array.isArray(l)?(console.warn("⚠️ Invalid cards array provided"),Promise.resolve()):Promise.all(l.map(s=>new Promise(i=>{const r=new Image,d=s.name||s.prizeName||`Card ${s.id}`,m=s.imageUrl||s.image;r.onload=()=>{i(!0)},r.onerror=()=>{console.warn(`Image failed to preload: ${d} - ${m}`),i(!1)},r.src=m}))),Lt=({onComplete:l,boxes:s=[],prizes:i=[],spinCards:r=[],eventSource:d})=>{const m=f.useRef(),v=f.useRef(),y=f.useRef(),x=f.useRef(),[u,b]=f.useState(!1),[c,w]=f.useState(!1),[p,g]=f.useState(!1),[o,C]=f.useState(!1),[M,h]=f.useState(!1),[t,S]=f.useState(null),[E,G]=f.useState(!1),[_,H]=f.useState(!1),[U,q]=f.useState([]),[re,$]=f.useState([]),[ce,ge]=f.useState(null),[J,Z]=f.useState(null),[se,me]=f.useState(null),[,N]=f.useState("black"),[n,e]=f.useState(!1),[j]=f.useState(s.length>0?s.length:1),[T,L]=f.useState(0),[R,P]=f.useState(0);f.useEffect(()=>{(async()=>{try{console.log("Fetching spin data...");const I=await lt(r);q(I.cards),I.spinResults&&I.spinResults.length>0&&($(I.spinResults),ge(String(I.spinResults[0].cardID)),Z(I.spinResults[0].landingMode||"standard")),console.log("Spin data fetched successfully"),await Nt(I.cards),G(!0)}catch(I){console.error("Error loading spin data:",I),G(!0)}})()},[]),f.useEffect(()=>{const z=["/models/GiftBox/gift-box.glb","/models/Cards/card.glb",...["blue","green","pink","yellow"].map(I=>`/models/Parachute/parachute-${I}.glb`)];Promise.all(z.map(I=>B.useGLTF.preload(I))).then(()=>H(!0)).catch(I=>{console.error("Error preloading models:",I),H(!0)})},[]),f.useEffect(()=>{E&&_&&h(!0)},[E,_]);const F=f.useCallback(()=>{S(null),b(!1),e(!1);const z=R+1;if(P(z),z>=j){g(!1),w(!1),l==null||l();return}if(re.length>0){const I=re[z];I&&(ge(String(I.cardID)),Z(I.landingMode||"standard"))}v.current&&v.current.moveToNextBox(),g(!0),w(!0)},[R,j,l,re]),k=f.useCallback(z=>{if(!U||U.length===0)return;const I=ce?U.find(K=>String(K.id)===String(ce))??U[z%U.length]:U[z%U.length];me(I);let V="set-piece";if(I.type==="XP Reward"?V="xp":I.type==="Instant Win"||I.type==="Golden Ticket"?V="instant-win":I.type==="No Win"?V="no-win":I.type==="Set Piece"&&(V="set-piece"),V==="no-win"){F();return}S(V)},[U,ce,F]),O=s[R]??null,[A]=f.useState(()=>{const z=["blue","green","pink","yellow"],I=[];let V=null;for(let K=0;K<j;K++){let de;do de=z[Math.floor(Math.random()*z.length)];while(de===V&&z.length>1);I.push(de),V=de}return I}),[X,W]=f.useState(A[0]),Y=f.useRef(null),D=f.useRef(null),te=f.useCallback(z=>{W(z),N(z)},[]),ae=f.useCallback(z=>{W(z),L(I=>I+1)},[]),ne=f.useCallback(()=>{h(!1),C(!0)},[]),oe=f.useCallback(()=>{w(!1)},[]),ue=f.useCallback(()=>{if(!n)if(e(!0),m.current){const z=m.current.playReveal();setTimeout(()=>b(!0),Math.max(0,(z-2)*1e3))}else oe(),b(!0)},[n,oe]),ie=f.useCallback(()=>{C(!1),g(!0),w(!0)},[]);f.useEffect(()=>{const z=V=>{if(!p||n)return;const K=V.target;if(K&&(K.closest(".gift-box-sroll-parent")||K.closest(".gift-box-scroll"))){D.current=null;return}Y.current=V.touches?V.touches[0].clientX:V.clientX,D.current=V.touches?V.touches[0].clientY:V.clientY},I=V=>{if(!p||n||D.current===null)return;const K=V.changedTouches?V.changedTouches[0].clientX:V.clientX,de=V.changedTouches?V.changedTouches[0].clientY:V.clientY,we=D.current-de,Re=Math.abs(Y.current-K);we>50&&we>Re&&ue(),D.current=null};return window.addEventListener("mousedown",z),window.addEventListener("mouseup",I),window.addEventListener("touchstart",z),window.addEventListener("touchend",I),()=>{window.removeEventListener("mousedown",z),window.removeEventListener("mouseup",I),window.removeEventListener("touchstart",z),window.removeEventListener("touchend",I)}},[p,n,ue]);const pe=d||(typeof document<"u"?document.body:null);return a.jsxs("div",{className:"experience-container",children:[a.jsxs(fe.Canvas,{shadows:!0,eventSource:pe,gl:{antialias:!0,alpha:!0,toneMapping:Q.CineonToneMapping,toneMappingExposure:1.75},style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1,pointerEvents:"auto"},children:[a.jsx(gt,{}),a.jsxs("group",{name:"background-layer",children:[a.jsx(B.PerspectiveCamera,{makeDefault:!0,position:[0,0,20],fov:35,near:.1,far:100}),M&&a.jsxs(f.Suspense,{fallback:null,children:[a.jsx(wt,{flameRef:x,isActive:!0,maxLoops:j,colorSequence:A,onCubeSpawn:ae,onAllComplete:ne}),a.jsx(Ct,{speed:1.8,directionMultiplier:1,spawnInterval:2.8,scale:.2,maxLoops:j,currentCount:T,enableHorizontal:!1,enableVertical:!0})]}),a.jsx(B.Environment,{files:["/textures/environmentMap/px.jpg","/textures/environmentMap/nx.jpg","/textures/environmentMap/py.jpg","/textures/environmentMap/ny.jpg","/textures/environmentMap/pz.jpg","/textures/environmentMap/nz.jpg"]})]}),a.jsxs("group",{name:"interactive-layer",children:[a.jsx(B.PerspectiveCamera,{makeDefault:!1,position:[0,0,.4],fov:35,near:.01,far:100}),a.jsxs(f.Suspense,{fallback:null,children:[a.jsx(mt,{ref:m,currentColor:X,visible:c,onRevealComplete:oe}),u&&E&&a.jsx(Oe,{ref:y,onSpinComplete:k,cards:U,targetCardID:ce,landingMode:J})]})]})]}),a.jsx(Ft,{type:t,onCollect:F,card:se,currentBox:O}),a.jsx(fe.Canvas,{shadows:!0,eventSource:pe,gl:{antialias:!0,alpha:!0,toneMapping:Q.CineonToneMapping,toneMappingExposure:1.75},style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:3,pointerEvents:"none"},children:a.jsx(f.Suspense,{fallback:null,children:a.jsx(B.View.Port,{})})}),M&&a.jsx(xt,{flameRef:x,maxLoops:j,currentCount:T,currentColor:X}),p&&c&&!n&&a.jsx(Et,{currentBox:R+1,totalBoxes:j}),p&&a.jsxs(a.Fragment,{children:[!n&&a.jsxs("div",{className:"swipe-indicator",children:[a.jsx("img",{src:"/images/arrow.svg",className:"arrow",alt:"arrow"}),a.jsx("div",{className:"swipe-to-open-text",children:"Swipe to open"})]}),!t&&a.jsx(pt,{ref:v,onColorChange:te,maxLoops:j,colorSequence:A,openedCount:R})]}),u&&E&&a.jsx("div",{className:"line"}),o&&a.jsx(Rt,{maxLoops:j,colorSequence:A,onComplete:ie})]})};exports.defaultSpinParams=Te.defaultSpinParams;exports.Card=Be;exports.Carousel=Oe;exports.Experience=Lt;
19
19
  //# sourceMappingURL=index.cjs.js.map