{"version":3,"file":"GradientWave.k4XMnIFi.mjs","names":["n"],"sources":["https:/ga.jspm.io/npm:@motionone/utils@10.14.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/easing@10.13.1/dist/index.es.js","https:/framerusercontent.com/modules/cKGD16u2MGB7MfqfVXFp/wiztTCbXokZrMicHAmZc/Grain.js","https:/framerusercontent.com/modules/qbISo04IgXwHvt1f08Bw/PqHx9uwswPwEixzYIrpZ/GradientWave.js"],"sourcesContent":["function addUniqueItem(t,e){-1===t.indexOf(e)&&t.push(e)}function removeItem(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const clamp=(t,e,n)=>Math.min(Math.max(n,t),e);const t={duration:.3,delay:0,endDelay:0,repeat:0,easing:\"ease\"};const isNumber=t=>\"number\"===typeof t;const isEasingList=t=>Array.isArray(t)&&!isNumber(t[0]);const wrap=(t,e,n)=>{const o=e-t;return((n-t)%o+o)%o+t};function getEasingForSegment(t,e){return isEasingList(t)?t[wrap(0,t.length,e)]:t}const mix=(t,e,n)=>-n*t+n*e+t;const noop=()=>{};const noopReturn=t=>t;const progress=(t,e,n)=>e-t===0?1:(n-t)/(e-t);function fillOffset(t,e){const n=t[t.length-1];for(let o=1;o<=e;o++){const s=progress(0,e,o);t.push(mix(n,1,s))}}function defaultOffset(t){const e=[0];fillOffset(e,t-1);return e}function interpolate(t,e=defaultOffset(t.length),n=noopReturn){const o=t.length;const s=o-e.length;s>0&&fillOffset(e,s);return s=>{let f=0;for(;f<o-2;f++)if(s<e[f+1])break;let r=clamp(0,1,progress(e[f],e[f+1],s));const c=getEasingForSegment(n,f);r=c(r);return mix(t[f],t[f+1],r)}}const isCubicBezier=t=>Array.isArray(t)&&isNumber(t[0]);const isEasingGenerator=t=>\"object\"===typeof t&&Boolean(t.createAnimation);const isFunction=t=>\"function\"===typeof t;const isString=t=>\"string\"===typeof t;const e={ms:t=>1e3*t,s:t=>t/1e3};\n/*\n  Convert velocity into velocity per second\n\n  @param [number]: Unit per frame\n  @param [number]: Frame duration in ms\n*/function velocityPerSecond(t,e){return e?t*(1e3/e):0}export{addUniqueItem,clamp,defaultOffset,t as defaults,fillOffset,getEasingForSegment,interpolate,isCubicBezier,isEasingGenerator,isEasingList,isFunction,isNumber,isString,mix,noop,noopReturn,progress,removeItem,e as time,velocityPerSecond,wrap};\n\n//# sourceMappingURL=index.es.js.map","import{noopReturn as t,clamp as n}from\"@motionone/utils\";const calcBezier=(t,n,e)=>(((1-3*e+3*n)*t+(3*e-6*n))*t+3*n)*t;const e=1e-7;const i=12;function binarySubdivide(t,n,o,r,c){let u;let a;let s=0;do{a=n+(o-n)/2;u=calcBezier(a,r,c)-t;u>0?o=a:n=a}while(Math.abs(u)>e&&++s<i);return a}function cubicBezier(n,e,i,o){if(n===e&&i===o)return t;const getTForX=t=>binarySubdivide(t,0,1,n,i);return t=>0===t||1===t?t:calcBezier(getTForX(t),e,o)}const steps=(t,e=\"end\")=>i=>{i=\"end\"===e?Math.min(i,.999):Math.max(i,.001);const o=i*t;const r=\"end\"===e?Math.floor(o):Math.ceil(o);return n(0,1,r/t)};export{cubicBezier,steps};\n\n//# sourceMappingURL=index.es.js.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion}from\"framer-motion\";import{steps}from\"@motionone/easing\";/**\n * @framerIntrinsicWidth 100\n * @framerIntrinsicHeight 100\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */ export default function Grain(props){const{opacity,style}=props;const keyframesX=[\"0%\",\"-5%\",\"-15%\",\"7%\",\"-5%\",\"-15%\",\"15%\",\"0%\",\"3%\",\"-10%\",];const keyframesY=[\"0%\",\"-10%\",\"5%\",\"-25%\",\"25%\",\"10%\",\"0%\",\"15%\",\"35%\",\"10%\",];const isCanvas=RenderTarget.current()===RenderTarget.canvas;return /*#__PURE__*/ _jsx(\"div\",{style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\"},children:/*#__PURE__*/ _jsx(motion.div,{style:{...containerStyle,opacity:opacity,inset:isCanvas?0:\"-200%\",width:isCanvas?\"100%\":\"400%\",height:isCanvas?\"100%\":\"400%\",position:\"absolute\"},animate:!isCanvas&&{x:keyframesX,y:keyframesY},transition:{ease:steps(10,\"start\"),repeat:Infinity,duration:8}})});};Grain.defaultProps={opacity:.5};addPropertyControls(Grain,{opacity:{title:\"Opacity\",type:ControlType.Number,step:.1,displayStepper:true,max:1,min:0}});const containerStyle={backgroundSize:\"256px 256px\",backgroundRepeat:\"repeat\",background:\"url('https://framerusercontent.com/images/rR6HYXBrMmX4cRpXfXUOvpvpB0.png')\"};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Grain\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"100\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicWidth\":\"100\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Grain.map","import{defineShader,ControlType}from\"framer\";export default defineShader({title:\"Wave Gradient\",fragment:`\n#define S(a,b,t) smoothstep(a,b,t)\n\nmat2 Rot(float a) {\n    float s = sin(a), c = cos(a);\n    return mat2(c, -s, s, c);\n}\n\nvec2 hash(vec2 p) {\n    float s = u_seed;\n    vec2 k1 = vec2(2127.1 + s * 13.37, 81.17 + s * 7.31);\n    vec2 k2 = vec2(1269.5 + s * 11.13, 283.37 + s * 5.79);\n    p = vec2(dot(p, k1), dot(p, k2));\n    return fract(sin(p) * (43758.5453 + s * 1.618));\n}\n\nfloat noise(in vec2 p) {\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n    vec2 u = f * f * (3.0 - 2.0 * f);\n    float n = mix(\n        mix(dot(-1.0 + 2.0 * hash(i), f),\n            dot(-1.0 + 2.0 * hash(i + vec2(1.0, 0.0)), f - vec2(1.0, 0.0)), u.x),\n        mix(dot(-1.0 + 2.0 * hash(i + vec2(0.0, 1.0)), f - vec2(0.0, 1.0)),\n            dot(-1.0 + 2.0 * hash(i + vec2(1.0, 1.0)), f - vec2(1.0, 1.0)), u.x),\n        u.y\n    );\n    return 0.5 + 0.5 * n;\n}\n\nvec3 getColor(int idx) {\n    if (u_colors_length < 1) return vec3(0.0);\n    int safeIdx = clamp(idx, 0, u_colors_length - 1);\n    return u_colors[safeIdx].rgb;\n}\n\nfloat seedF(float base) {\n    return base * (1.0 + 0.5 * sin(u_seed * 3.17 + base));\n}\n\nvec2 warpUV(vec2 uv) {\n    float t = u_time * u_waveSpeed;\n\n    float angleOffset = sin(u_seed * 2.73) * 30.0;\n    mat2 dirRot = Rot(radians(u_waveAngle + angleOffset));\n    vec2 ruv = dirRot * uv;\n\n    float fxMod = seedF(u_waveFreqX);\n    float fyMod = seedF(u_waveFreqY);\n\n    float phaseX = fract(sin(u_seed * 7.19) * 437.58) * 6.2832;\n    float phaseY = fract(cos(u_seed * 3.41) * 291.37) * 6.2832;\n\n    // Core wave with seed-dependent harmonics\n    float harmonic = sin(u_seed * 1.23) * 0.5;\n    float a = fyMod * ruv.y - sin(ruv.x * fxMod + ruv.y - t + phaseX);\n    a += harmonic * sin(ruv.x * fxMod * 2.0 + ruv.y * 0.5 + t * 0.7 + phaseY);\n\n    // Smoothstep mask (unchanged)\n    a = smoothstep(\n        cos(a) * u_maskSoftness,\n        sin(a) * u_maskSoftness + 3.,\n        cos(a - fyMod * ruv.y) - sin(a - fxMod * ruv.x)\n    );\n\n    a *= u_waveAmplitude;\n\n    uv = cos(a) * uv + sin(a) * vec2(-uv.y, uv.x);\n    return uv;\n}\n\nvoid main() {\n    vec2 fragCoord = v_uv * u_resolution;\n    vec2 uv = fragCoord / u_resolution.xy;\n    float ratio = u_resolution.x / u_resolution.y;\n    float t = u_time * u_waveSpeed;\n\n    vec2 tuv = uv - 0.5;\n\n    vec2 seedShift = vec2(sin(u_seed * 4.37), cos(u_seed * 5.91)) * 100.0;\n    float degree = noise(vec2(t * 0.1, tuv.x * tuv.y) + seedShift);\n    tuv.y *= 1.0 / ratio;\n    tuv *= Rot(radians((degree - 0.5) * 720.0 + 180.0));\n    tuv.y *= ratio;\n\n    // Seed-rotate uv2 before warping\n    vec2 uv2 = (fragCoord * 2.0 - u_resolution.xy) / (u_resolution.x + u_resolution.y) * 2.0;\n    float preRotAngle = fract(sin(u_seed * 5.63) * 173.29) * 6.2832;\n    uv2 *= Rot(preRotAngle);\n    vec2 warped = warpUV(uv2) * 0.5 + 0.5;\n\n    vec2 blendUV = mix(tuv, warped - 0.5, u_blendAmount);\n\n    float layerRot1 = -5.0 + sin(u_seed * 1.83) * 20.0;\n    float layerRot2 = 10.0 + cos(u_seed * 2.47) * 20.0;\n\n    vec3 c0 = getColor(0);\n    vec3 c1 = getColor(1);\n    vec3 c2 = getColor(2);\n    vec3 c3 = getColor(3);\n\n    vec3 layer1 = mix(c0, c2, S(-0.3, 0.3, (blendUV * Rot(radians(layerRot1))).x));\n    vec3 layer2 = mix(c3, c1, S(-0.3, 0.3, (blendUV * Rot(radians(layerRot2))).x));\n    vec3 col = mix(layer1, layer2, S(0.3, -0.3, blendUV.y));\n\n    col = mix(col, col * col + 0.5 * sqrt(col), 0.3);\n\n    fragColor = vec4(col, 1.0);\n}\n`,propertyControls:{colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Color},maxCount:4,defaultValue:[\"#FF3624\",\"#9EABFF\",\"#FFAE00\",\"#E29EFF\"]},seed:{type:ControlType.Number,title:\"Seed\",defaultValue:32,min:0,max:100,step:1},waveSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:1.5,min:0,max:3,step:.01},waveFreqX:{type:ControlType.Number,title:\"Freq X\",defaultValue:.9,min:.1,max:6,step:.1},waveFreqY:{type:ControlType.Number,title:\"Freq Y\",defaultValue:6,min:.1,max:6,step:.1},waveAngle:{type:ControlType.Number,title:\"Angle\",defaultValue:105,min:-180,max:180,step:1},waveAmplitude:{type:ControlType.Number,title:\"Amplitude\",defaultValue:2.1,min:.5,max:3,step:.01},maskSoftness:{type:ControlType.Number,title:\"Softness\",defaultValue:.74,min:.01,max:2,step:.01},blendAmount:{type:ControlType.Number,title:\"Blend\",defaultValue:.54,min:0,max:1,step:.01}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"shader\",\"name\":null,\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GradientWave.map"],"mappings":"2OAAiI,GAAO,EAAE,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,mBCAhH,EAAoY,GAAO,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAU,IAAR,MAAU,KAAK,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,IAAM,EAAE,EAAE,EAA+C,OAAOA,EAAE,EAAE,GAAxC,IAAR,MAAU,KAAK,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,GAAiB,CAAC,CAAC,KCOvkB,SAAwB,EAAM,EAAM,CAAC,GAAK,CAAC,UAAQ,SAAO,EAAY,EAAW,CAAC,KAAK,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,KAAK,KAAK,MAAO,EAAQ,EAAW,CAAC,KAAK,OAAO,KAAK,OAAO,MAAM,MAAM,KAAK,MAAM,MAAM,KAAM,EAAQ,EAAS,EAAa,QAAQ,IAAI,EAAa,OAAO,OAAqB,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,SAAS,QAAQ,EAAE,SAAuB,EAAK,EAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAuB,UAAQ,MAAM,EAAS,EAAE,QAAQ,MAAM,EAAS,OAAO,OAAO,OAAO,EAAS,OAAO,OAAO,SAAS,UAAU,EAAE,QAAQ,CAAC,GAAU,CAAC,EAAE,EAAW,EAAE,CAAU,EAAE,WAAW,CAAC,KAAK,EAAM,GAAG,OAAO,EAAE,OAAO,IAAS,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,mBAP1oB,IAAiE,IAAkC,IAAqC,EAOogB,EAAM,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAoB,EAAM,CAAC,QAAQ,CAAC,MAAM,UAAU,KAAK,EAAY,OAAO,KAAK,GAAG,eAAe,GAAK,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAQ,EAAe,CAAC,eAAe,cAAc,iBAAiB,SAAS,WAAW,4EAA4E,mBCPr8B,IAAgB,EAAa,CAAC,MAAM,gBAAgB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6GvG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,SAAS,QAAQ,CAAC,KAAK,EAAY,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,UAAU,UAAU,UAAU,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,IAAI,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC"}