{"version":3,"file":"shared-lib.CoHu3NQq.mjs","names":["useRef","useState","fontSize","u","material","scene","camera","metadata","siteMetadata","metadataVersion","__FramerMetadata__","metadata","siteMetadata"],"sources":["https:/framerusercontent.com/modules/qDHmgPVFJWEgXOVc7gzK/9ZoIoCdBhBcNc8vBxLAT/TextTunnel.js","https:/framerusercontent.com/modules/b3TtercNR2cJysjxhugv/qGe4LlBq94zunqY6JO26/siteMetadata.js","https:/framerusercontent.com/modules/v3GVengUSKmghDRwFweG/TzpSbXsS9vkRSXAbWVeU/augiA20Il.js","https:/framerusercontent.com/modules/IHMFpx7OkKDKHoWAAxZd/JzwqjS3JAg7T31h06BfN/pamlc7EvB.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * TDF_WebGLTextTunnel - THE UNLIMITED VERSION\n *\n * Final Polish:\n * 1. Edge Area expansion: Now supports up to 100%, allowing the tunnel to consume the entire screen.\n * 2. Perspective Locking: Distortion peaks sooner and stays at max for the remaining screen area.\n * 3. Strictly Monotonic: No curling, no folding, pure expansion.\n *\n * @framerDisableUnlink\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function TDF_WebGLTextTunnel(props){const{text,font,textColor,backgroundColor,scrollSpeed,stretchY,stretchX,gap,falloff,bloom,chromaticStrength,style}=props;const containerRef=useRef(null);const canvasContainerRef=useRef(null);const engineRef=useRef(null);const propsRef=useRef(props);const[dimensions,setDimensions]=useState({width:0,height:0});const[isReady,setIsReady]=useState(false);const dimensionsRef=useRef(dimensions);const isStatic=useIsStaticRenderer();useEffect(()=>{propsRef.current=props;},[props]);const parseFontSize=v=>{if(v===undefined||v===null)return 60;if(typeof v===\"number\")return v;const val=parseFloat(v);if(isNaN(val))return 60;const s=String(v).toLowerCase();if(s.includes(\"px\"))return val;if(s.includes(\"em\"))return val*16;if(s.includes(\"rem\"))return val*16;return val;};const parseLineHeight=(v,fontSize)=>{if(v===undefined||v===null)return fontSize*1.2;if(typeof v===\"number\"){// In CSS/Framer, a unitless number is a multiplier\nreturn v>5?v:v*fontSize;}const val=parseFloat(v);if(isNaN(val))return fontSize*1.2;const s=String(v).toLowerCase();if(s.includes(\"px\"))return val;if(s.includes(\"%\"))return val/100*fontSize;if(s.includes(\"em\"))return val*fontSize;// If it's just a string number like \"1.5\"\nreturn val*fontSize;};const fontSize=parseFontSize(font?.fontSize);const lineHeight=parseLineHeight(font?.lineHeight,fontSize);const fontFamily=font?.fontFamily||\"Inter\";const fontWeight=font?.fontWeight||font?.variant||\"400\";const letterSpacing=parseFontSize(font?.letterSpacing||0);const textAlign=font?.textAlign||\"center\";useEffect(()=>{let renderer,scene,camera,material,geometry,animationFrameId,THREE,clock;const setup=async()=>{THREE=await import(\"https://cdn.skypack.dev/three@0.150.1\");if(!canvasContainerRef.current||isStatic)return;renderer=new THREE.WebGLRenderer({antialias:true,alpha:true});const width=containerRef.current?.offsetWidth||400;const height=containerRef.current?.offsetHeight||600;renderer.setSize(width,height);setDimensions({width,height});renderer.setPixelRatio(Math.min(window.devicePixelRatio,2));canvasContainerRef.current.innerHTML=\"\";canvasContainerRef.current.appendChild(renderer.domElement);scene=new THREE.Scene;camera=new THREE.OrthographicCamera(-1,1,1,-1,0,1);material=new THREE.ShaderMaterial({uniforms:{uTexture:{value:null},uGlowTexture:{value:null},uTime:{value:0},uStretchY:{value:0},uStretchX:{value:0},uChroma:{value:0},uCurvature:{value:0},uFalloff:{value:0},uBloom:{value:0},uRepeatY:{value:1},uAspect:{value:1}},vertexShader:`\n                    varying vec2 vUv;\n                    void main() { vUv = uv; gl_Position = vec4(position, 1.0); }\n                `,fragmentShader:`\n                    precision highp float;\n                    uniform sampler2D uTexture;\n                    uniform sampler2D uGlowTexture;\n                    uniform float uTime, uStretchY, uStretchX, uChroma, uFalloff, uBloom, uRepeatY, uAspect;\n                    varying vec2 vUv;\n                    \n                    void main() {\n                        vec2 uv = vUv;\n                        float relY = uv.y - 0.5;\n\n                        // 1. FALLOFF MASK — controls how fast distortion kicks in from edge to center\n                        // Only affects the strength of edge-based effects. Independent of all others.\n                        float centerPower = mix(1.2, 12.0, uFalloff / 100.0);\n                        float mask = clamp(pow(abs(relY) * 2.0, centerPower), 0.0, 1.0);\n\n                        // 2. STRETCH X — independent horizontal expansion at edges\n                        float xExpansion = 1.0 + mask * (uStretchX / 100.0) * 10.0;\n                        float warpedX = ((uv.x - 0.5) / xExpansion) + 0.5;\n\n                        // 4. STRETCH Y — pure vertical tunnel depth, does NOT touch X or Chromatic\n                        float depth = mask * (uStretchY / 100.0) * 15.0;\n                        float warpedY = relY / (1.0 + depth);\n                        float texY = mod(warpedY * uRepeatY + uTime + 0.5, 1.0);\n\n                        // 5. CHROMATIC ABERRATION — smooth spectral dispersion\n                        // Instead of 3 hard R/G/B samples, blend across 8 spectral steps\n                        float chroma = (uChroma / 100.0) * 0.05 * mask;\n                        vec3 chromaCol = vec3(0.0);\n                        float chromaWeightSum = 0.0;\n                        const float CSTEPS = 8.0;\n                        for (float ci = 0.0; ci < CSTEPS; ci++) {\n                            float t = ci / (CSTEPS - 1.0); // 0.0 → 1.0\n                            float offset = (t - 0.5) * chroma * 2.0;\n                            float sY = mod((warpedY + offset) * uRepeatY + uTime + 0.5, 1.0);\n                            vec3 sCol = texture2D(uTexture, vec2(warpedX, sY)).rgb;\n                            // Smooth spectral weights: red at t=0, green at t=0.5, blue at t=1\n                            float rW = smoothstep(0.5, 0.0, t);\n                            float gW = 1.0 - abs(t - 0.5) * 2.0;\n                            float bW = smoothstep(0.5, 1.0, t);\n                            chromaCol += sCol * vec3(rW, gW, bW);\n                            chromaWeightSum += (rW + gW + bW);\n                        }\n                        vec3 finalCol = chromaCol / max(chromaWeightSum / 3.0, 0.001);\n\n                        // 6. BLOOM — purely additive glow layer on top, no other effect\n                        float rawBloom = uBloom / 100.0;\n                        float bloomIntensity = rawBloom * rawBloom * 0.25;\n                        vec3 result = finalCol;\n\n                        if (bloomIntensity > 0.0) {\n                            vec2 baseTC = vec2(warpedX, texY);\n                            float noise = fract(sin(dot(baseTC, vec2(12.9898, 78.233))) * 43758.5453);\n                            vec2 jitter = (vec2(noise) - 0.5) * 0.002 * bloomIntensity;\n                            vec3 blurredCol = texture2D(uGlowTexture, baseTC + jitter).rgb;\n                            float lum = dot(finalCol, vec3(0.299, 0.587, 0.114));\n                            float centerBias = mix(0.4, 1.0, 1.0 - mask);\n                            vec3 highlights = finalCol * pow(max(lum, 0.0), 1.1) * bloomIntensity * 22.0 * centerBias;\n                            vec3 aura = blurredCol * bloomIntensity * 12.0 * centerBias;\n                            result = finalCol + highlights + aura;\n                        }\n\n                        gl_FragColor = vec4(result, 1.0);\n                    }\n                `});const mesh=new THREE.Mesh(new THREE.PlaneGeometry(2,2),material);scene.add(mesh);engineRef.current={renderer,scene,camera,material,clock:new THREE.Clock,THREE};setIsReady(true);const frame=()=>{if(engineRef.current){const{renderer,scene,camera,material,clock}=engineRef.current;const u=material.uniforms;if(u.uStretchY)u.uStretchY.value=propsRef.current.stretchY;if(u.uStretchX)u.uStretchX.value=propsRef.current.stretchX;if(u.uChroma)u.uChroma.value=propsRef.current.chromaticStrength;if(u.uFalloff)u.uFalloff.value=propsRef.current.falloff;if(u.uBloom)u.uBloom.value=propsRef.current.bloom;if(u.uAspect)u.uAspect.value=dimensionsRef.current.width/Math.max(1,dimensionsRef.current.height);if(u.uTime)u.uTime.value+=clock.getDelta()*(propsRef.current.scrollSpeed/100);renderer.render(scene,camera);animationFrameId=requestAnimationFrame(frame);}};frame();};setup();return()=>{if(animationFrameId)cancelAnimationFrame(animationFrameId);if(renderer)renderer.dispose();};},[isStatic]);useEffect(()=>{if(!containerRef.current||isStatic)return;const observer=new ResizeObserver(entries=>{for(let entry of entries){const{width,height}=entry.contentRect;setDimensions({width,height});dimensionsRef.current={width,height};if(engineRef.current){const{renderer}=engineRef.current;renderer.setSize(width,height);}}});observer.observe(containerRef.current);return()=>observer.disconnect();},[isStatic]);useEffect(()=>{if(!engineRef.current||isStatic)return;const{width:w,height:h}=dimensions;if(w===0||h===0)return;const{material,THREE}=engineRef.current;const u=material.uniforms;if(u.uStretchY)u.uStretchY.value=stretchY;if(u.uStretchX)u.uStretchX.value=stretchX;if(u.uChroma)u.uChroma.value=chromaticStrength;if(u.uFalloff)u.uFalloff.value=falloff;if(u.uBloom)u.uBloom.value=bloom;if(u.uAspect)u.uAspect.value=w/h;const safeText=text||\"\";const lines=safeText.split(\"\\n\");const totalTextHeight=lineHeight*lines.length;const unitH=Math.max(totalTextHeight+gap,1);material.uniforms.uRepeatY.value=h/unitH;const canvas=document.createElement(\"canvas\");const ctx=canvas.getContext(\"2d\");if(!ctx)return;const s=1;const cw=Math.max(w*s,1);const ch=Math.max(unitH*s,1);canvas.width=cw;canvas.height=ch;ctx.fillStyle=backgroundColor;ctx.fillRect(-2,-2,cw+4,ch+4);ctx.font=`${fontWeight} ${fontSize*s}px ${fontFamily}, sans-serif`;// @ts-ignore\nif(ctx.letterSpacing!==undefined)ctx.letterSpacing=`${letterSpacing*s}px`;ctx.textAlign=textAlign;ctx.textBaseline=\"middle\";ctx.fillStyle=textColor;const tx=cw/2+(textAlign===\"left\"?-cw/2+40*s:textAlign===\"right\"?cw/2-40*s:0);lines.forEach((line,i)=>{const blockTop=(ch-totalTextHeight*s)/2;const ly=blockTop+lineHeight*s*(i+.5);ctx.fillText(line,tx,ly);});const glowCanvas=document.createElement(\"canvas\");const glowCtx=glowCanvas.getContext(\"2d\");if(glowCtx){glowCanvas.width=cw;glowCanvas.height=ch;glowCtx.filter=`blur(${3*s}px)`;glowCtx.globalAlpha=1;glowCtx.drawImage(canvas,0,0);glowCtx.filter=`blur(${8*s}px)`;glowCtx.globalAlpha=.7;glowCtx.drawImage(canvas,0,0);glowCtx.filter=`blur(${20*s}px)`;glowCtx.globalAlpha=.4;glowCtx.drawImage(canvas,0,0);}const tex=new THREE.CanvasTexture(canvas);tex.minFilter=tex.magFilter=THREE.LinearFilter;tex.wrapS=THREE.ClampToEdgeWrapping;tex.wrapT=THREE.RepeatWrapping;if(material.uniforms.uTexture.value)material.uniforms.uTexture.value.dispose();material.uniforms.uTexture.value=tex;const glowTex=new THREE.CanvasTexture(glowCanvas);glowTex.minFilter=glowTex.magFilter=THREE.LinearFilter;glowTex.wrapS=THREE.ClampToEdgeWrapping;glowTex.wrapT=THREE.RepeatWrapping;if(material.uniforms.uGlowTexture.value)material.uniforms.uGlowTexture.value.dispose();material.uniforms.uGlowTexture.value=glowTex;},[isReady,text,fontSize,lineHeight,fontFamily,fontWeight,letterSpacing,textAlign,textColor,backgroundColor,stretchY,chromaticStrength,gap,falloff,bloom,stretchX,dimensions]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{width:400,height:400,...style,backgroundColor,overflow:\"hidden\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:canvasContainerRef,style:{position:\"absolute\",inset:0,visibility:isReady&&!isStatic?\"visible\":\"hidden\"}}),(!isReady||isStatic)&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",padding:40,zIndex:1},children:/*#__PURE__*/_jsx(\"span\",{style:{...font,color:textColor,whiteSpace:\"pre-wrap\",minWidth:\"max-content\"},children:text})})]});}TDF_WebGLTextTunnel.defaultProps={text:\"designed imperfect.\",font:{fontFamily:\"Inter\",variant:\"Bold\",fontSize:60,letterSpacing:0,textAlign:\"center\",lineHeight:\"1.2em\"},textColor:\"#FFFFFF\",backgroundColor:\"#000000\",gap:100,scrollSpeed:20,stretchY:50,stretchX:30,falloff:50,bloom:30,chromaticStrength:25};addPropertyControls(TDF_WebGLTextTunnel,{text:{title:\"Text\",description:\"Displayed static on the canvas to ensure best performance. See full effects in Preview or Publish\",type:ControlType.String,displayTextArea:true,defaultValue:\"designed imperfect.\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontFamily:\"Inter\",variant:\"Bold\",fontSize:60,letterSpacing:0,textAlign:\"center\"},displayTextAlignment:true,controls:\"extended\"},textColor:{title:\"Text Color\",type:ControlType.Color,defaultValue:\"#FFFFFF\"},backgroundColor:{title:\"Background\",type:ControlType.Color,defaultValue:\"#000000\"},gap:{title:\"Gap\",type:ControlType.Number,defaultValue:100,min:0,max:500,unit:\"px\"},scrollSpeed:{title:\"AnimationSpeed\",type:ControlType.Number,defaultValue:20,min:0,max:100,unit:\"%\"},stretchY:{title:\"Stretch Y\",type:ControlType.Number,defaultValue:50,min:0,max:100,unit:\"%\",step:.1},stretchX:{title:\"Stretch X\",type:ControlType.Number,defaultValue:30,min:0,max:100,unit:\"%\",step:.1},falloff:{title:\"Falloff\",type:ControlType.Number,defaultValue:50,min:0,max:100,unit:\"%\"},bloom:{title:\"Bloom\",type:ControlType.Number,defaultValue:30,min:0,max:100,unit:\"%\"},chromaticStrength:{title:\"Chromatic\",description:\"Explore more components at [THE DESIGN FUTURIST](https://thedesignfuturist.zip)\",type:ControlType.Number,defaultValue:25,min:0,max:100,unit:\"%\",step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TDF_WebGLTextTunnel\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 400\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextTunnel.map","// Generated by Framer (3ad0d99)\nexport default function metadata(params,activeLocale){return{description:\"Made with Framer\",robots:\"max-image-preview:large\",title:\"My Framer Site\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (7c2f7bf)\nimport siteMetadata from\"https://framerusercontent.com/modules/b3TtercNR2cJysjxhugv/qGe4LlBq94zunqY6JO26/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\",mediaQuery:\"(min-width: 800px)\"},{hash:\"cpgg0z\",mediaQuery:\"(max-width: 799.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-g0q0s\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (8b16de8)\nimport siteMetadata from\"https://framerusercontent.com/modules/b3TtercNR2cJysjxhugv/qGe4LlBq94zunqY6JO26/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"1vu54s4\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-tYFcu\",title:siteMetadata(params,activeLocale).title||\"Page\",viewport:\"width=1200\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}