{"version":3,"file":"BlurGradient_Prod.Zu3U8cWl.mjs","names":["React.useState","React.useContext","React.useMemo","React.useRef","__esmMin","init_npm_react_18_3_1","window","oe","pe","init_ssg_sandbox_shims","ce","c","init_jsx_runtime","_e","de","spring","MotionConfigContext","init_framer_motion_DhsWWWsN","useIsStaticRenderer","addPropertyControls","ControlType","init_framer_BWFVvmND","gradientDirection","direction","blurAmounts","displayBlur","BlurGradient","isStatic","reduceMotion","setReduceMotion","nativeTransition","easeKey","seconds","delay","timing","match","animationMs","part","rootRef","committedBlur","blur","renderLayers","setRenderLayers","hasBlurLayers","setHasBlurLayers","setDisplayBlur","heldBlur","setHeldBlur","settled","query","apply","frame","nextFrame","settleTimer","previous","changing","settleMs","root","inView","update","observer","entry","shownBlur","layersOn","motion","filterTransition","layers","directionCss","painted","membership","gate","built","LAYER_MASKS","index","gradient","layer","MIN_LAYER_BLUR","layerStyles","borderRadius","ROOT_STYLE","init_BlurGradient_Prod"],"sources":["https:/framerusercontent.com/modules/rofp3mS0LNY15cjhHzia/aILnQsP5wfjjYZV3aRRY/BlurGradient_Prod.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{MotionConfigContext,spring}from\"framer-motion\";const ROOT_STYLE={position:\"absolute\",inset:0,overflow:\"hidden\"};const MIN_LAYER_BLUR=.2;const LAYER_MASKS=[\"rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 12.5%, rgba(0, 0, 0, 1) 25%, rgba(0, 0, 0, 0) 37.5%\",\"rgba(0, 0, 0, 0) 12.5%, rgba(0, 0, 0, 1) 25%, rgba(0, 0, 0, 1) 37.5%, rgba(0, 0, 0, 0) 50%\",\"rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 1) 37.5%, rgba(0, 0, 0, 1) 50%, rgba(0, 0, 0, 0) 62.5%\",\"rgba(0, 0, 0, 0) 37.5%, rgba(0, 0, 0, 1) 50%, rgba(0, 0, 0, 1) 62.5%, rgba(0, 0, 0, 0) 75%\",\"rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 1) 62.5%, rgba(0, 0, 0, 1) 75%, rgba(0, 0, 0, 0) 87.5%\",\"rgba(0, 0, 0, 0) 62.5%, rgba(0, 0, 0, 1) 75%, rgba(0, 0, 0, 1) 87.5%, rgba(0, 0, 0, 0) 100%\",\"rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 1) 87.5%, rgba(0, 0, 0, 1) 100%\",\"rgba(0, 0, 0, 0) 87.5%, rgba(0, 0, 0, 1) 100%\"];function gradientDirection(direction){switch(direction){case\"toBottom\":return\"to bottom\";case\"toTop\":return\"to top\";case\"toLeft\":return\"to left\";case\"toRight\":return\"to right\";default:return\"to bottom\";}}function blurAmounts(displayBlur){return[`${displayBlur/2/2/2/2/2/2/2}px`,`${displayBlur/2/2/2/2/2/2}px`,`${displayBlur/2/2/2/2/2}px`,`${displayBlur/2/2/2/2}px`,`${displayBlur/2/2/2}px`,`${displayBlur/2/2}px`,`${displayBlur/2}px`,`${displayBlur}px`];}/**\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 240\n * @framerIntrinsicHeight 240\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function BlurGradient({blur=10,borderRadius=\"0px\",direction=\"toBottom\"}){const isStatic=useIsStaticRenderer();const[reduceMotion,setReduceMotion]=React.useState(false);const nativeTransition=React.useContext(MotionConfigContext).transition;const easeKey=Array.isArray(nativeTransition?.ease)?nativeTransition.ease.join(\",\"):nativeTransition?.ease;const{filterTransition,settleMs}=React.useMemo(()=>{const seconds=Math.max(0,Number(nativeTransition?.duration??.3));const delay=Math.max(0,Number(nativeTransition?.delay??0));let timing=`${seconds}s linear`;if(nativeTransition?.type===\"spring\"){if(nativeTransition.stiffness&&nativeTransition.damping){timing=String(spring({keyframes:[0,1],stiffness:nativeTransition.stiffness,damping:nativeTransition.damping,mass:nativeTransition.mass??1}));}else{timing=String(spring(seconds,nativeTransition.bounce??.25));}}else if(Array.isArray(nativeTransition?.ease)&&nativeTransition.ease.length===4){timing=`${seconds}s cubic-bezier(${nativeTransition.ease.join(\", \")})`;}else if(typeof nativeTransition?.ease===\"string\"&&[\"linear\",\"ease\",\"ease-in\",\"ease-out\",\"ease-in-out\"].includes(nativeTransition.ease)){timing=`${seconds}s ${nativeTransition.ease}`;}const match=timing.match(/^([\\d.]+)(ms|s)/);const animationMs=match?Number(match[1])*(match[2]===\"s\"?1e3:1):seconds*1e3;const part=`${timing} ${delay}s`;return{filterTransition:`backdrop-filter ${part}, -webkit-backdrop-filter ${part}`,settleMs:animationMs+delay*1e3};},[nativeTransition,nativeTransition?.type,nativeTransition?.duration,nativeTransition?.delay,nativeTransition?.bounce,nativeTransition?.stiffness,nativeTransition?.damping,nativeTransition?.mass,easeKey]);const rootRef=React.useRef(null);const committedBlur=React.useRef(blur);const[renderLayers,setRenderLayers]=React.useState(true);const[hasBlurLayers,setHasBlurLayers]=React.useState(blur>0);const[displayBlur,setDisplayBlur]=React.useState(blur);const[heldBlur,setHeldBlur]=React.useState(blur);const settled=isStatic||reduceMotion;React.useEffect(()=>{if(typeof window===\"undefined\"||typeof window.matchMedia!==\"function\")return;const query=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const apply=()=>setReduceMotion(query.matches);apply();query.addEventListener?.(\"change\",apply);return()=>query.removeEventListener?.(\"change\",apply);},[]);React.useEffect(()=>{if(settled){setDisplayBlur(blur);setHasBlurLayers(blur>0);setHeldBlur(blur);committedBlur.current=blur;return;}let frame=0;let nextFrame=0;let settleTimer=0;const previous=committedBlur.current;const changing=previous!==blur;committedBlur.current=blur;if(changing)setHeldBlur(Math.max(previous,blur));if(blur>0){if(!hasBlurLayers){setDisplayBlur(0);setHasBlurLayers(true);setHeldBlur(blur);frame=requestAnimationFrame(()=>{nextFrame=requestAnimationFrame(()=>setDisplayBlur(blur));});}else if(changing&&blur>previous){frame=requestAnimationFrame(()=>setDisplayBlur(blur));}else{setDisplayBlur(blur);}}else{setDisplayBlur(0);if(settleMs===0){setHasBlurLayers(false);setHeldBlur(0);}else settleTimer=window.setTimeout(()=>{setHasBlurLayers(false);setHeldBlur(0);},settleMs+50);}return()=>{cancelAnimationFrame(frame);frame=0;cancelAnimationFrame(nextFrame);nextFrame=0;window.clearTimeout(settleTimer);settleTimer=0;};},[blur,settleMs,settled]);React.useEffect(()=>{if(isStatic){setRenderLayers(true);return;}const root=rootRef.current;if(!root)return;let inView=true;const update=()=>setRenderLayers(inView&&!document.hidden);const observer=typeof IntersectionObserver!==\"undefined\"?new IntersectionObserver(([entry])=>{inView=entry.isIntersecting;update();}):null;observer?.observe(root);document.addEventListener(\"visibilitychange\",update);update();return()=>{observer?.disconnect();document.removeEventListener(\"visibilitychange\",update);};},[isStatic]);const shownBlur=settled?blur:displayBlur;const layersOn=settled?blur>0:renderLayers&&hasBlurLayers;const motion=settled?\"none\":filterTransition;const layers=React.useMemo(()=>{const directionCss=gradientDirection(direction);const painted=blurAmounts(shownBlur);const membership=Math.max(shownBlur,blur,heldBlur);const gate=blurAmounts(membership);const built=LAYER_MASKS.map((gradient,index)=>({index,gate:parseFloat(gate[index]),backdrop:`blur(${painted[index]})`,mask:`linear-gradient(${directionCss}, ${gradient})`}));return built.filter((layer,index)=>layer.gate>=MIN_LAYER_BLUR||index===built.length-1&&membership>0);},[shownBlur,blur,heldBlur,direction]);const layerStyles=React.useMemo(()=>layers.map(layer=>({position:\"absolute\",inset:0,zIndex:layer.index+1,backdropFilter:layer.backdrop,WebkitBackdropFilter:layer.backdrop,maskImage:layer.mask,WebkitMaskImage:layer.mask,borderRadius,pointerEvents:\"none\",transition:motion})),[layers,borderRadius,motion]);return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:ROOT_STYLE,children:layersOn&&layerStyles.map((style,index)=>/*#__PURE__*/_jsx(\"div\",{style:style},layers[index].index))});}addPropertyControls(BlurGradient,{blur:{title:\"Blur\",type:ControlType.Number,defaultValue:10,min:0,max:100,step:1},borderRadius:{title:\"Radius\",type:ControlType.BorderRadius,defaultValue:\"0px\"},direction:{title:\"Direction\",type:ControlType.SegmentedEnum,options:[\"toBottom\",\"toTop\",\"toLeft\",\"toRight\"],optionTitles:[\"↓\",\"↑\",\"←\",\"→\"],...{optionIcons:[\"direction-down\",\"direction-up\",\"direction-left\",\"direction-right\"]},defaultValue:\"toBottom\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});BlurGradient.displayName=\"Progressive Blur\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BlurGradient\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"240\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"240\",\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BlurGradient_Prod.map"],"mappings":"A,qRAAs9B,SAASsB,EAAkB,EAAU,CAAC,OAAOC,EAAP,CAAkB,IAAI,WAAW,MAAM,YAAY,IAAI,QAAQ,MAAM,SAAS,IAAI,SAAS,MAAM,UAAU,IAAI,UAAU,MAAM,WAAW,QAAQ,MAAM,WAAY,CAAC,CAAC,SAASC,EAAY,EAAY,CAAC,MAAM,CAAC,GAAGC,EAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAGA,EAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAGA,EAAY,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAGA,EAAY,EAAE,EAAE,EAAE,EAAE,IAAI,GAAGA,EAAY,EAAE,EAAE,EAAE,IAAI,GAAGA,EAAY,EAAE,EAAE,IAAI,GAAGA,EAAY,EAAE,IAAI,GAAGA,EAAY,GAAG,CAAE,CAQz5C,SAAwBC,EAAa,CAAC,OAAK,GAAG,eAAa,MAAM,YAAU,YAAY,CAAC,IAAMC,EAAST,EAAoB,EAAO,CAACU,EAAaC,GAAiB7B,EAAe,EAAK,EAAQ8B,EAAiB7B,EAAiBe,CAAmB,CAAC,CAAC,WAAiBe,EAAQ,MAAM,QAAQD,GAAkB,IAAI,EAAEA,EAAiB,KAAK,KAAK,GAAG,EAAEA,GAAkB,KAAU,CAAC,mBAAiB,YAAU5B,MAAkB,CAAC,IAAM8B,EAAQ,KAAK,IAAI,EAAE,OAAOF,GAAkB,UAAU,EAAE,CAAC,EAAQG,EAAM,KAAK,IAAI,EAAE,OAAOH,GAAkB,OAAO,CAAC,CAAC,EAAMI,EAAO,GAAGF,EAAQ,UAAaF,GAAkB,OAAO,SAAU,AAA4MI,EAAzMJ,EAAiB,WAAWA,EAAiB,QAAgB,OAAOf,EAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,UAAUe,EAAiB,UAAU,QAAQA,EAAiB,QAAQ,KAAKA,EAAiB,MAAM,CAAC,CAAC,CAAC,EAAe,OAAOf,EAAOiB,EAAQF,EAAiB,QAAQ,GAAG,CAAC,EAAY,MAAM,QAAQA,GAAkB,IAAI,GAAGA,EAAiB,KAAK,SAAS,EAAG,EAAO,GAAGE,EAAQ,iBAAiBF,EAAiB,KAAK,KAAK,IAAI,EAAE,GAAY,OAAOA,GAAkB,MAAO,UAAU,CAAC,SAAS,OAAO,UAAU,WAAW,aAAa,CAAC,CAAC,SAASA,EAAiB,IAAI,IAAG,EAAO,GAAGE,EAAQ,IAAIF,EAAiB,QAAQ,IAAMK,EAAMD,EAAO,MAAM,iBAAiB,EAAQE,EAAYD,EAAM,OAAOA,EAAM,EAAE,GAAGA,EAAM,KAAK,IAAI,IAAI,GAAGH,EAAQ,IAAUK,EAAK,GAAGH,EAAO,GAAGD,EAAM,GAAG,MAAM,CAAC,iBAAiB,mBAAmBI,EAAK,4BAA4BA,IAAO,SAASD,EAAYH,EAAM,GAAG,CAAE,EAAE,CAACH,EAAiBA,GAAkB,KAAKA,GAAkB,SAASA,GAAkB,MAAMA,GAAkB,OAAOA,GAAkB,UAAUA,GAAkB,QAAQA,GAAkB,KAAKC,CAAO,CAAC,EAAQO,EAAQnC,EAAa,IAAI,EAAQoC,EAAcpC,EAAaqC,CAAI,EAAO,CAACC,EAAaC,GAAiB1C,EAAe,EAAI,EAAO,CAAC2C,EAAcC,GAAkB5C,EAAewC,EAAK,CAAC,EAAO,CAACf,EAAYoB,GAAgB7C,EAAewC,CAAI,EAAO,CAACM,EAASC,GAAa/C,EAAewC,CAAI,EAAQQ,EAAQrB,GAAUC,EAAalB,MAAoB,CAAC,GAAUJ,IAAS,QAAa,OAAOA,EAAO,YAAa,WAAW,OAAO,IAAM2C,EAAM3C,EAAO,WAAW,kCAAkC,EAAQ4C,MAAUrB,EAAgBoB,EAAM,OAAO,EAAmD,OAAjDC,EAAM,EAAED,EAAM,mBAAmB,SAASC,CAAK,MAAYD,EAAM,sBAAsB,SAASC,CAAK,CAAE,EAAE,CAAC,CAAC,EAAExC,MAAoB,CAAC,GAAGsC,EAAQ,CAACH,EAAeL,CAAI,EAAEI,EAAiBJ,EAAK,CAAC,EAAEO,EAAYP,CAAI,EAAE,EAAc,QAAQA,EAAK,MAAO,CAAC,IAAIW,EAAM,EAAMC,EAAU,EAAMC,EAAY,EAAQC,EAASf,EAAc,QAAcgB,EAASD,IAAWd,EAA4iB,MAAviB,GAAc,QAAQA,EAAQe,GAASR,EAAY,KAAK,IAAIO,EAASd,CAAI,CAAC,EAAKA,EAAK,EAAOG,EAAiLY,GAAUf,EAAKc,EAAU,EAAM,0BAA0BT,EAAeL,CAAI,CAAC,EAAQK,EAAeL,CAAI,GAA1QK,EAAe,CAAC,EAAED,EAAiB,EAAI,EAAEG,EAAYP,CAAI,EAAE,EAAM,0BAA0B,CAAC,EAAU,0BAA0BK,EAAeL,CAAI,CAAC,CAAE,CAAC,IAA4HK,EAAe,CAAC,EAAKW,IAAW,GAAGZ,EAAiB,EAAK,EAAEG,EAAY,CAAC,GAAQ,EAAYzC,EAAO,eAAe,CAACsC,EAAiB,EAAK,EAAEG,EAAY,CAAC,CAAE,EAAES,EAAS,EAAE,OAAa,CAAC,qBAAqBL,CAAK,EAAE,EAAM,EAAE,qBAAqBC,CAAS,EAAE,EAAU,EAAE9C,EAAO,aAAa+C,CAAW,EAAE,EAAY,CAAE,CAAE,EAAE,CAACb,EAAKgB,EAASR,CAAO,CAAC,EAAEtC,MAAoB,CAAC,GAAGiB,EAAS,CAACe,EAAgB,EAAI,EAAE,MAAO,CAAC,IAAMe,EAAKnB,EAAQ,QAAQ,GAAG,CAACmB,EAAK,OAAO,IAAIC,EAAO,GAAWC,MAAWjB,EAAgBgB,GAAQ,CAAC,SAAS,MAAM,EAAQE,EAAS,OAAO,qBAAuB,IAAY,IAAI,sBAAsB,CAACC,KAAS,CAAC,EAAOA,EAAM,eAAeF,EAAO,CAAE,CAAC,EAAE,KAA2F,OAAtFC,GAAU,QAAQH,CAAI,EAAE,SAAS,iBAAiB,mBAAmBE,CAAM,EAAEA,EAAO,MAAY,CAACC,GAAU,WAAW,EAAE,SAAS,oBAAoB,mBAAmBD,CAAM,CAAE,CAAE,EAAE,CAAChC,CAAQ,CAAC,EAAE,IAAMmC,EAAUd,EAAQR,EAAKf,EAAkBsC,EAASf,EAAQR,EAAK,EAAEC,GAAcE,EAAoBqB,EAAOhB,EAAQ,OAAOiB,EAAuBC,EAAOhE,MAAkB,CAAC,IAAMiE,EAAa7C,EAAkBC,CAAS,EAAQ6C,EAAQ5C,EAAYsC,CAAS,EAAQO,EAAW,KAAK,IAAIP,EAAUtB,EAAKM,CAAQ,EAAQwB,EAAK9C,EAAY6C,CAAU,EAAQE,EAAMC,EAAY,KAAK,EAAS,KAAS,CAAC,QAAM,KAAK,WAAWF,EAAKG,EAAM,EAAE,SAAS,QAAQL,EAAQK,GAAO,GAAG,KAAK,mBAAmBN,EAAa,IAAIO,EAAS,EAAE,EAAE,EAAE,OAAOH,EAAM,QAAQ,EAAM,IAAQI,EAAM,MAAMC,GAAgBH,IAAQF,EAAM,OAAO,GAAGF,EAAW,CAAC,CAAE,EAAE,CAACP,EAAUtB,EAAKM,EAASvB,CAAS,CAAC,EAAQsD,EAAY3E,MAAkBgE,EAAO,IAAI,IAAQ,CAAC,SAAS,WAAW,MAAM,EAAE,OAAOS,EAAM,MAAM,EAAE,eAAeA,EAAM,SAAS,qBAAqBA,EAAM,SAAS,UAAUA,EAAM,KAAK,gBAAgBA,EAAM,KAAK,eAAa,cAAc,OAAO,WAAWX,CAAM,EAAE,EAAE,CAACE,EAAOY,EAAad,CAAM,CAAC,EAAE,MAAoB,gBAAK,MAAM,CAAC,IAAI1B,EAAQ,MAAMyC,EAAW,SAAShB,GAAUc,EAAY,KAAK,EAAM,IAAqB,gBAAK,MAAM,CAAO,OAAK,EAAEX,EAAOO,EAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,C,4DAR9oJ,EAAW,CAAC,SAAS,WAAW,MAAM,EAAE,SAAS,QAAQ,EAAQ,EAAe,GAAS,EAAY,CAAC,4FAA4F,6FAA6F,6FAA6F,6FAA6F,6FAA6F,8FAA8F,sEAAsE,+CAA+C,EAQs4HtD,EAAoBO,EAAa,CAAC,KAAK,CAAC,MAAM,OAAO,KAAKN,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,SAAS,KAAKA,EAAY,aAAa,aAAa,KAAK,EAAE,UAAU,CAAC,MAAM,YAAY,KAAKA,EAAY,cAAc,QAAQ,CAAC,WAAW,QAAQ,SAAS,SAAS,EAAE,aAAa,CAAC,IAAI,IAAI,IAAI,GAAG,EAAM,YAAY,CAAC,iBAAiB,eAAe,iBAAiB,iBAAiB,EAAG,aAAa,WAAW,YAAY,oEAAoE,CAAC,CAAC,EAAE,EAAa,YAAY,kB"}