{"version":3,"file":"shared-lib.CIUn10DM.mjs","names":["useRef","colorRgba","color1Rgba","color2Rgba","color3Rgba","container"],"sources":["https:/framerusercontent.com/modules/2MHly5MwbPyPlmqEN0Sy/lFrsL9fK7aafbqPMV5wk/ShaderLines_prod.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// Color parsing utilities\nconst cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;function extractDefaultValue(cssVar){if(!cssVar||!cssVar.startsWith(\"var(\"))return cssVar;const match=cssVariableRegex.exec(cssVar);if(!match)return cssVar;const fallback=(match[2]||\"\").trim();if(fallback.startsWith(\"var(\"))return extractDefaultValue(fallback);return fallback||cssVar;}function resolveTokenColor(input){if(typeof input!==\"string\")return input;if(!input.startsWith(\"var(\"))return input;return extractDefaultValue(input);}function parseColorToRgba(input){if(!input)return{r:0,g:0,b:0,a:0};const str=input.trim();const rgbaMatch=str.match(/rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/i);if(rgbaMatch){const r=Math.max(0,Math.min(255,parseFloat(rgbaMatch[1])))/255;const g=Math.max(0,Math.min(255,parseFloat(rgbaMatch[2])))/255;const b=Math.max(0,Math.min(255,parseFloat(rgbaMatch[3])))/255;const a=rgbaMatch[4]!==undefined?Math.max(0,Math.min(1,parseFloat(rgbaMatch[4]))):1;return{r,g,b,a};}const hex=str.replace(/^#/,\"\");if(hex.length===8){return{r:parseInt(hex.slice(0,2),16)/255,g:parseInt(hex.slice(2,4),16)/255,b:parseInt(hex.slice(4,6),16)/255,a:parseInt(hex.slice(6,8),16)/255};}if(hex.length===6){return{r:parseInt(hex.slice(0,2),16)/255,g:parseInt(hex.slice(2,4),16)/255,b:parseInt(hex.slice(4,6),16)/255,a:1};}if(hex.length===4){return{r:parseInt(hex[0]+hex[0],16)/255,g:parseInt(hex[1]+hex[1],16)/255,b:parseInt(hex[2]+hex[2],16)/255,a:parseInt(hex[3]+hex[3],16)/255};}if(hex.length===3){return{r:parseInt(hex[0]+hex[0],16)/255,g:parseInt(hex[1]+hex[1],16)/255,b:parseInt(hex[2]+hex[2],16)/255,a:1};}return{r:0,g:0,b:0,a:1};}// UI → Internal mapping helpers\nfunction mapLinear(value,inMin,inMax,outMin,outMax){if(inMax===inMin)return outMin;const t=(value-inMin)/(inMax-inMin);return outMin+t*(outMax-outMin);}// Speed: UI [0.1..1] → internal [0.1..5] (higher UI = much faster animation)\nfunction mapSpeedUiToInternal(ui){const clamped=Math.max(.1,Math.min(1,ui));return mapLinear(clamped,.1,1,1,10);}// Band Width: UI [0.1..1] → CSS pixels [20..100]\n//  - 0.1 → 20px (narrow)\n//  - 1.0 → 100px (wide)\nfunction mapBandWidthUiToInternal(ui){const clamped=Math.max(.1,Math.min(1,ui));return mapLinear(clamped,.1,1,2,60);}// Flow: +1 for forward (in-out), -1 for reverse (out-in)\nfunction mapFlowToSign(flow){return flow===\"out-in\"?-1:1;}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 700\n * @framerIntrinsicHeight 500\n * @framerDisableUnlink\n */export default function ShaderLines(props){const containerRef=useRef(null);const speedRef=useRef(mapSpeedUiToInternal(props.speed??.5));const bandWidthRef=useRef(mapBandWidthUiToInternal(props.bandWidth??.5));const flowSignRef=useRef(mapFlowToSign(props.flow));const previewRef=useRef(props.preview??false);const colorModeRef=useRef(props.colorMode??\"single\");const blendModeRef=useRef(props.blendMode??\"additive\");// Parse colors to RGBA values with opacity support\nconst resolvedBackgroundColor=resolveTokenColor(props.backgroundColor);const backgroundColorRgba=parseColorToRgba(resolvedBackgroundColor||\"#000000\");const colorRgba=parseColorToRgba(props.color??\"#ffffff\");const color1Rgba=parseColorToRgba(props.color1??\"#0008FF\");const color2Rgba=parseColorToRgba(props.color2??\"#000000\");const color3Rgba=parseColorToRgba(props.color3??\"#70EAFF\");const backgroundColorRef=useRef([backgroundColorRgba.r,backgroundColorRgba.g,backgroundColorRgba.b,backgroundColorRgba.a]);const colorRef=useRef([colorRgba.r,colorRgba.g,colorRgba.b,colorRgba.a]);const color1Ref=useRef([color1Rgba.r,color1Rgba.g,color1Rgba.b,color1Rgba.a]);const color2Ref=useRef([color2Rgba.r,color2Rgba.g,color2Rgba.b,color2Rgba.a]);const color3Ref=useRef([color3Rgba.r,color3Rgba.g,color3Rgba.b,color3Rgba.a]);const lastRef=useRef({w:0,h:0,aspect:0,ts:0});const sceneRef=useRef({camera:null,scene:null,renderer:null,uniforms:null,animationId:null,onResize:null});// Reflect prop changes immediately inside the RAF loop (without re-initializing Three)\nuseEffect(()=>{speedRef.current=mapSpeedUiToInternal(props.speed??.5);},[props.speed]);useEffect(()=>{bandWidthRef.current=mapBandWidthUiToInternal(props.bandWidth??.5);},[props.bandWidth]);useEffect(()=>{flowSignRef.current=mapFlowToSign(props.flow);},[props.flow]);useEffect(()=>{previewRef.current=props.preview??false;},[props.preview]);useEffect(()=>{colorModeRef.current=props.colorMode??\"single\";},[props.colorMode]);useEffect(()=>{blendModeRef.current=props.blendMode??\"additive\";},[props.blendMode]);useEffect(()=>{const resolvedBgColor=resolveTokenColor(props.backgroundColor);const bgRgba=parseColorToRgba(resolvedBgColor||\"#000000\");backgroundColorRef.current=[bgRgba.r,bgRgba.g,bgRgba.b,bgRgba.a];},[props.backgroundColor]);useEffect(()=>{const colorRgba=parseColorToRgba(props.color??\"#ffffff\");colorRef.current=[colorRgba.r,colorRgba.g,colorRgba.b,colorRgba.a];},[props.color]);useEffect(()=>{const color1Rgba=parseColorToRgba(props.color1??\"#0008FF\");color1Ref.current=[color1Rgba.r,color1Rgba.g,color1Rgba.b,color1Rgba.a];},[props.color1]);useEffect(()=>{const color2Rgba=parseColorToRgba(props.color2??\"#000000\");color2Ref.current=[color2Rgba.r,color2Rgba.g,color2Rgba.b,color2Rgba.a];},[props.color2]);useEffect(()=>{const color3Rgba=parseColorToRgba(props.color3??\"#70EAFF\");color3Ref.current=[color3Rgba.r,color3Rgba.g,color3Rgba.b,color3Rgba.a];},[props.color3]);useEffect(()=>{// Load Three.js dynamically\nconst script=document.createElement(\"script\");script.src=\"https://cdnjs.cloudflare.com/ajax/libs/three.js/89/three.min.js\";script.onload=()=>{if(containerRef.current&&window.THREE){initThreeJS();}};document.head.appendChild(script);return()=>{// Cleanup\nif(sceneRef.current.animationId){cancelAnimationFrame(sceneRef.current.animationId);}if(sceneRef.current.onResize){sceneRef.current.onResize();}if(sceneRef.current.renderer){sceneRef.current.renderer.dispose();}document.head.removeChild(script);};},[]);const initThreeJS=()=>{if(!containerRef.current||!window.THREE)return;const THREE=window.THREE;const container=containerRef.current;// Clear any existing content\ncontainer.innerHTML=\"\";// Initialize camera\nconst camera=new THREE.Camera;camera.position.z=1;// Initialize scene\nconst scene=new THREE.Scene;// Create geometry\nconst geometry=new THREE.PlaneBufferGeometry(2,2);// Define uniforms\nconst uniforms={time:{type:\"f\",value:1},resolution:{type:\"v2\",value:new THREE.Vector2},// Pass band width in DEVICE pixels for resolution-consistent sizing\nbandWidthPx:{type:\"f\",value:bandWidthRef.current*(window.devicePixelRatio||1)},backgroundColor:{type:\"v4\",value:new THREE.Vector4(...backgroundColorRef.current)},color:{type:\"v4\",value:new THREE.Vector4(...colorRef.current)},color1:{type:\"v4\",value:new THREE.Vector4(...color1Ref.current)},color2:{type:\"v4\",value:new THREE.Vector4(...color2Ref.current)},color3:{type:\"v4\",value:new THREE.Vector4(...color3Ref.current)},colorMode:{type:\"f\",value:colorModeRef.current===\"single\"?0:1},blendMode:{type:\"f\",value:blendModeRef.current===\"alpha\"?0:1}};// Vertex shader\nconst vertexShader=`\n      void main() {\n        gl_Position = vec4( position, 1.0 );\n      }\n    `;// Fragment shader\nconst fragmentShader=`\n      #define TWO_PI 6.2831853072\n      #define PI 3.14159265359\n\n      precision highp float;\n      uniform vec2 resolution;\n      uniform float time;\n      uniform float bandWidthPx; // band width in DEVICE pixels\n      uniform vec4 backgroundColor; // Background color with opacity\n      uniform vec4 color; // Single color with opacity\n      uniform vec4 color1; // Spectrum color 1 with opacity\n      uniform vec4 color2; // Spectrum color 2 with opacity\n      uniform vec4 color3; // Spectrum color 3 with opacity\n      uniform float colorMode; // 0.0 = single, 1.0 = spectrum\n      uniform float blendMode; // 0.0 = alpha, 1.0 = additive\n        \n      float random (in float x) {\n          return fract(sin(x)*1e4);\n      }\n      float random (vec2 st) {\n          return fract(sin(dot(st.xy,\n                               vec2(12.9898,78.233)))*\n              43758.5453123);\n      }\n      \n      varying vec2 vUv;\n\n      void main(void) {\n        vec2 uv = (gl_FragCoord.xy * 2.0 - resolution.xy) / min(resolution.x, resolution.y);\n        \n        // Quantize X in DEVICE pixels for consistent visual width across resolutions.\n        // Compute the center of each band in pixel space, then convert back to uv.x.\n        float bandCenterPx = floor(gl_FragCoord.x / bandWidthPx) * bandWidthPx + bandWidthPx * 0.5;\n        uv.x = (bandCenterPx * 2.0 - resolution.x) / min(resolution.x, resolution.y);\n          \n        float t = time*0.06+random(uv.x)*0.4;\n        float lineWidth = 0.0008;\n\n        vec3 colorIntensity = vec3(0.0);\n        for(int j = 0; j < 3; j++){\n          for(int i=0; i < 5; i++){\n            colorIntensity[j] += lineWidth*float(i*i) / abs(fract(t - 0.01*float(j)+float(i)*0.01)*1.0 - length(uv));        \n          }\n        }\n\n        vec3 finalColor;\n        float finalAlpha;\n        \n        if (colorMode < 0.5) {\n          // Single color mode: multiply intensity by single color\n          finalColor = colorIntensity * color.rgb;\n          finalAlpha = color.a;\n        } else {\n          // Spectrum mode: apply different colors to each channel\n          finalColor = vec3(0.0);\n          finalColor += colorIntensity.r * color1.rgb; // Red channel uses color1\n          finalColor += colorIntensity.g * color2.rgb; // Green channel uses color2  \n          finalColor += colorIntensity.b * color3.rgb; // Blue channel uses color3\n          // Use average alpha of all colors for spectrum mode\n          finalAlpha = (color1.a + color2.a + color3.a) / 3.0;\n        }\n        \n        // Calculate ray intensity for alpha blending\n        float rayIntensity = max(max(finalColor.r, finalColor.g), finalColor.b);\n        \n        // Ensure minimum visibility\n        if (rayIntensity < 0.01) {\n          finalColor = color.rgb * 0.1; // Show at least 10% of the color\n          rayIntensity = 0.1;\n        }\n\n        // Handle background color with blend mode selection\n        vec3 bgColor = backgroundColor.rgb;\n        float bgAlpha = backgroundColor.a;\n        \n        vec3 blendedColor;\n        float outputAlpha;\n        \n        if (blendMode < 0.5) {\n          // Alpha blending: clean, proper transparency\n          blendedColor = finalColor.rgb * rayIntensity + bgColor * bgAlpha * (1.0 - rayIntensity);\n          outputAlpha = rayIntensity + bgAlpha * (1.0 - rayIntensity);\n        } else {\n          // Additive blending: rainbow/prismatic effect\n          blendedColor = finalColor.rgb + bgColor * bgAlpha;\n          outputAlpha = 1.0; // Always opaque for additive\n        }\n\n        gl_FragColor = vec4(blendedColor, outputAlpha);\n      }\n    `;// Create material\nconst material=new THREE.ShaderMaterial({uniforms:uniforms,vertexShader:vertexShader,fragmentShader:fragmentShader});// Create mesh and add to scene\nconst mesh=new THREE.Mesh(geometry,material);scene.add(mesh);// Initialize renderer\nconst renderer=new THREE.WebGLRenderer({alpha:true});renderer.setPixelRatio(window.devicePixelRatio);renderer.setClearColor(0,0)// Transparent background\n;// Ensure canvas fills container reliably in Framer editor and live preview\nconst canvasEl=renderer.domElement;canvasEl.style.position=\"absolute\";canvasEl.style.inset=\"0\";canvasEl.style.width=\"100%\";canvasEl.style.height=\"100%\";canvasEl.style.display=\"block\";container.appendChild(canvasEl);// Store references\nsceneRef.current={camera,scene,renderer,uniforms,animationId:null,onResize:null};// Handle resize\nconst onWindowResize=()=>{const w=container.clientWidth||container.offsetWidth||1;const h=container.clientHeight||container.offsetHeight||1;renderer.setSize(w,h);uniforms.resolution.value.x=renderer.domElement.width;uniforms.resolution.value.y=renderer.domElement.height;};onWindowResize();sceneRef.current.onResize=onWindowResize;window.addEventListener(\"resize\",onWindowResize,false);// Canvas resize detection for Framer Canvas\nif(RenderTarget.current()===RenderTarget.canvas){let rafId=0;const TICK_MS=250;const EPSPECT=.001;const tick=now=>{const container=containerRef.current;if(container){const cw=container.clientWidth||container.offsetWidth||1;const ch=container.clientHeight||container.offsetHeight||1;const aspect=cw/ch;const timeOk=!lastRef.current.ts||(now||performance.now())-lastRef.current.ts>=TICK_MS;const aspectChanged=Math.abs(aspect-lastRef.current.aspect)>EPSPECT;const sizeChanged=Math.abs(cw-lastRef.current.w)>1||Math.abs(ch-lastRef.current.h)>1;if(timeOk&&(aspectChanged||sizeChanged)){lastRef.current={w:cw,h:ch,aspect,ts:now||performance.now()};// Call resize handler to update renderer and uniforms\nonWindowResize();}}rafId=requestAnimationFrame(tick);};rafId=requestAnimationFrame(tick);// Store cleanup function\nsceneRef.current.onResize=()=>{cancelAnimationFrame(rafId);window.removeEventListener(\"resize\",onWindowResize);};}// Animation loop with frame-rate independent timing\nlet lastTime=0;const animate=currentTime=>{sceneRef.current.animationId=requestAnimationFrame(animate);// Calculate delta time for frame-rate independent animation\nconst deltaTime=lastTime?(currentTime-lastTime)/1e3:.016// Default to 60fps on first frame\n;lastTime=currentTime;// Update uniforms with current prop values\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const isPreviewOn=previewRef.current;if(!(isCanvas&&!isPreviewOn)){uniforms.time.value+=deltaTime*speedRef.current*flowSignRef.current;}// Convert CSS px → DEVICE px using renderer pixel ratio\nconst pixelRatio=(renderer.getPixelRatio?renderer.getPixelRatio():window.devicePixelRatio)||1;uniforms.bandWidthPx.value=bandWidthRef.current*pixelRatio;// Update color uniforms\nuniforms.backgroundColor.value.set(...backgroundColorRef.current);uniforms.color.value.set(...colorRef.current);uniforms.color1.value.set(...color1Ref.current);uniforms.color2.value.set(...color2Ref.current);uniforms.color3.value.set(...color3Ref.current);uniforms.colorMode.value=colorModeRef.current===\"single\"?0:1;uniforms.blendMode.value=blendModeRef.current===\"alpha\"?0:1;renderer.render(scene,camera);};animate(0);};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",display:\"block\",margin:0,padding:0}});}// Property Controls (keep last control with Framer University link)\naddPropertyControls(ShaderLines,{preview:{type:ControlType.Boolean,title:\"Preview\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},speed:{type:ControlType.Number,title:\"Speed\",min:.1,max:1,step:.05,defaultValue:.5},bandWidth:{type:ControlType.Number,title:\"Band Width\",min:.1,max:1,step:.05,defaultValue:.2},flow:{type:ControlType.Enum,title:\"Flow\",options:[\"in-out\",\"out-in\"],optionTitles:[\"In → Out\",\"Out → In\"],defaultValue:\"in-out\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},colorMode:{type:ControlType.Enum,title:\"Color Mode\",options:[\"single\",\"spectrum\"],optionTitles:[\"Single Color\",\"Spectrum\"],defaultValue:\"single\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ffffff\",hidden:props=>props.colorMode===\"spectrum\"},color1:{type:ControlType.Color,title:\"Color 1\",defaultValue:\"#0008FF\",hidden:props=>props.colorMode===\"single\"},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:\"#000000\",hidden:props=>props.colorMode===\"single\"},color3:{type:ControlType.Color,title:\"Color 3\",defaultValue:\"#70EAFF\",hidden:props=>props.colorMode===\"single\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\",description:\"Opacity only works if Blend = Alpha\"},blendMode:{type:ControlType.Enum,title:\"Blend Mode\",options:[\"alpha\",\"additive\"],optionTitles:[\"Alpha\",\"Additive\"],defaultValue:\"additive\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});ShaderLines.displayName=\"Shader Lines\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ShaderLines\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"500\",\"framerIntrinsicWidth\":\"700\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ShaderLines_prod.map"],"mappings":"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"}