{"version":3,"file":"AnimatedGradient.CRXSW109.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/9AUrAIHquWkbBhn8nyOF/yiPjGKrKwCCYJoDHZmYE/AnimatedGradient.js"],"sourcesContent":["// Повторити градієнт з картинки, анімувати його і дати можливість модифікувати анімацію через проперті\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useAnimation,useInView}from\"framer-motion\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * AnimatedGradient\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function AnimatedGradient(props){const{color1,color2,color3,color4,duration,ease,angle,style}=props;const ref=useRef(null);const controls=useAnimation();const isInView=useInView(ref,{once:false});const isStatic=useIsStaticRenderer();const[pos,setPos]=useState({x:Math.random(),y:Math.random()});const[vel,setVel]=useState({x:(Math.random()*.012+.008)*(Math.random()>.5?1:-1),y:(Math.random()*.012+.008)*(Math.random()>.5?1:-1)});const[frame,setFrame]=useState(0);// DVD-like bounce logic\nuseEffect(()=>{if(isStatic||!isInView)return;let running=true;let last=performance.now();function animate(now){if(!running)return;const dt=Math.min((now-last)/1e3,.05);last=now;setFrame(f=>f+1);setPos(prev=>{let{x,y}=prev;let{x:vx,y:vy}=vel;x+=vx*dt*(30/duration);y+=vy*dt*(30/duration);let bounced=false;// Bounce with offset so it doesn't stick to the edge\nif(x<0){x=0;vx=Math.abs(vx);bounced=true;}if(x>1){x=1;vx=-Math.abs(vx);bounced=true;}if(y<0){y=0;vy=Math.abs(vy);bounced=true;}if(y>1){y=1;vy=-Math.abs(vy);bounced=true;}if(bounced){// Add a small random nudge to avoid perfect loops\nvx+=(Math.random()-.5)*.002;vy+=(Math.random()-.5)*.002;setVel({x:vx,y:vy});}return{x,y};});if(running)requestAnimationFrame(animate);}requestAnimationFrame(animate);return()=>{running=false;};},[isStatic,isInView,duration,vel]);// Gradient style\nconst cx=20+pos.x*60;const cy=20+pos.y*60;const gradient=`radial-gradient(circle at ${cx}% ${cy}%, ${color1} 0%, ${color2} 40%, ${color3} 70%, ${color4} 100%)`;return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style,width:\"100%\",height:\"100%\",position:\"relative\",background:gradient,backgroundSize:\"200% 200%\",borderRadius:0,overflow:\"hidden\",transition:\"background 0.5s\",rotate:`${angle}deg`,willChange:\"background-position, background\",backfaceVisibility:\"hidden\"},\"aria-label\":\"Animated gradient background\"});}addPropertyControls(AnimatedGradient,{color1:{type:ControlType.Color,title:\"Color 1\",defaultValue:\"#e2b07a\"},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:\"#b07a3e\"},color3:{type:ControlType.Color,title:\"Color 3\",defaultValue:\"#7a4a1e\"},color4:{type:ControlType.Color,title:\"Color 4\",defaultValue:\"#3e210c\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:8,min:2,max:30,step:.1,unit:\"s\"},ease:{type:ControlType.Enum,title:\"Ease\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\"],optionTitles:[\"Linear\",\"Ease In\",\"Ease Out\",\"Ease In Out\"],defaultValue:\"easeInOut\",displaySegmentedControl:true},angle:{type:ControlType.Number,title:\"Angle\",defaultValue:0,min:-180,max:180,step:1,unit:\"deg\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedGradient\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedGradient.map"],"mappings":"gZAMG,SAAwB,EAAiB,EAAM,CAAC,GAAK,CAAC,SAAO,SAAO,SAAO,SAAO,WAAS,OAAK,QAAM,QAAM,CAAC,EAAY,EAAIA,EAAO,MAAqB,IAAe,IAAM,EAAS,EAAU,EAAI,CAAC,KAAK,GAAM,EAAQ,EAAS,IAA2B,CAAC,EAAI,EAAO,CAACC,EAAS,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAO,CAAC,EAAI,EAAO,CAACA,EAAS,CAAC,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,GAAG,EAAE,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,GAAG,EAAE,IAAI,EAAO,CAAC,EAAM,EAAS,CAACA,EAAS,GAC9d,MAAc,CAAC,GAAG,GAAU,CAAC,EAAS,OAAO,IAAI,EAAQ,GAAS,EAAK,YAAY,MAAM,SAAS,EAAQ,EAAI,CAAC,GAAG,CAAC,EAAQ,OAAO,IAAM,EAAG,KAAK,KAAK,EAAI,GAAM,IAAI,KAAK,EAAK,EAAI,EAAS,GAAG,EAAE,GAAG,EAAO,GAAM,CAAC,GAAG,CAAC,IAAE,IAAE,CAAC,EAAQ,CAAC,EAAE,EAAG,EAAE,EAAG,CAAC,EAAI,GAAG,EAAG,GAAI,GAAG,GAAU,GAAG,EAAG,GAAI,GAAG,GAAU,IAAI,EAAQ,UACxS,EAAE,IAAG,EAAE,EAAE,EAAG,KAAK,IAAI,GAAI,EAAQ,IAAS,EAAE,IAAG,EAAE,EAAE,EAAG,CAAC,KAAK,IAAI,GAAI,EAAQ,IAAS,EAAE,IAAG,EAAE,EAAE,EAAG,KAAK,IAAI,GAAI,EAAQ,IAAS,EAAE,IAAG,EAAE,EAAE,EAAG,CAAC,KAAK,IAAI,GAAI,EAAQ,IAAS,IAC7K,IAAK,KAAK,SAAS,IAAI,KAAK,IAAK,KAAK,SAAS,IAAI,KAAK,EAAO,CAAC,EAAE,EAAG,EAAE,EAAG,GAAS,CAAC,IAAE,IAAE,AAAE,GAAK,GAAQ,sBAAsB,EAAU,CAA+B,6BAAT,OAAmB,CAAC,EAAQ,EAAO,CAAE,EAAC,CAAC,EAAS,EAAS,EAAS,EAAI,EACnO,IAAM,EAAG,GAAG,EAAI,EAAE,GAAS,EAAG,GAAG,EAAI,EAAE,GAAS,EAAS,6BAA6B,EAAG,IAAI,EAAG,KAAK,EAAO,OAAO,EAAO,QAAQ,EAAO,QAAQ,EAAO,QAAQ,OAAoB,EAAK,MAAM,CAAK,MAAI,MAAM,CAAC,GAAG,EAAM,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,WAAW,EAAS,eAAe,YAAY,aAAa,EAAE,SAAS,SAAS,WAAW,kBAAkB,OAAO,GAAG,EAAM,KAAK,WAAW,kCAAkC,mBAAmB,SAAS,CAAC,aAAa,+BAA+B,CAAG,iCAAoB,EAAiB,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,UAAU,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,UAAU,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,UAAU,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,UAAU,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,SAAS,SAAS,UAAU,YAAY,CAAC,aAAa,CAAC,SAAS,UAAU,WAAW,cAAc,CAAC,aAAa,YAAY,wBAAwB,GAAK,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,KAAK,MAAM,CAAC"}