{"version":3,"file":"Wristband3D.C-Rw0-RJ.mjs","names":["useState","useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/VhTjpfZbOp9PNfGQU6fZ/5tnL72p7EwVFcvRbDUcq/Wristband3D.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useEffect,useMemo,useState,startTransition,useCallback}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * 3D Wristband\n *\n * Renders a lightweight 3D loop band using WebGL with separate front/back textures.\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function Wristband3D(props){const{frontTexture,backTexture,centerContent,bandRadius,bandWidth,radialSegments,flipBackUV,backBrightness,rotX,rotY,rotZ,autoRotate,autoRotateSpeed,slowOnHover,slowOnHoverSpeed,roughness,metalness,pixelRatioCap,antialias,enableDrag,dragSensitivity,physicsDamping,enableGlow,glowColor,glowIntensity,glowSize,opacityBeforeHover,style}=props;const[isHover,setIsHover]=useState(false);const[isDragging,setIsDragging]=useState(false);const containerRef=useRef(null);const canvasRef=useRef(null);const glRef=useRef(null);const programRef=useRef(null);const buffersRef=useRef(null);const texturesRef=useRef({front:null,back:null});const frameRef=useRef(null);const angleRef=useRef(0);const lastTimeRef=useRef(null);const isStatic=useIsStaticRenderer();const drawSceneRef=useRef(null);// Drag and physics state\nconst dragStartRef=useRef(null);const lastDragRef=useRef(null);const rotationRef=useRef({x:0,y:0,z:0});const velocityRef=useRef({x:0,y:0,z:0});const dragStartRotationRef=useRef({x:0,y:0,z:0});const hasFront=!!frontTexture?.src;const hasBackRaw=!!backTexture?.src;const hasBack=hasBackRaw||hasFront;const effectiveFrontSrc=frontTexture?.src;const effectiveBackSrc=hasBackRaw?backTexture?.src:effectiveFrontSrc;const dpr=useMemo(()=>{if(typeof window===\"undefined\"){const cap=Math.max(1,pixelRatioCap||1);return cap;}const base=isStatic?pixelRatioCap||2:window.devicePixelRatio||1;const cap=Math.max(1,pixelRatioCap||1);return Math.min(base,cap);},[pixelRatioCap,isStatic]);const size=useMemo(()=>{const w=(style?.width)||600;const h=(style?.height)||400;return{width:w,height:h};},[style?.width,style?.height]);const geometryData=useMemo(()=>{const segments=Math.max(16,Math.min(256,Math.floor(radialSegments)));const height=bandWidth;const radius=Math.max(.01,bandRadius);const vertexCount=(segments+1)*2;const positions=new Float32Array(vertexCount*3);const normals=new Float32Array(vertexCount*3);const uvs=new Float32Array(vertexCount*2);const indices=new Uint16Array(segments*6);let pOffset=0;let nOffset=0;let uvOffset=0;for(let i=0;i<=segments;i++){const theta=i/segments*Math.PI*2;const cos=Math.cos(theta);const sin=Math.sin(theta);const x=radius*cos;const z=radius*sin;const u=i/segments;const yTop=height*.5;const yBottom=-height*.5;// top ring\npositions[pOffset++]=x;positions[pOffset++]=yTop;positions[pOffset++]=z;normals[nOffset++]=cos;normals[nOffset++]=0;normals[nOffset++]=sin;uvs[uvOffset++]=u;uvs[uvOffset++]=1;// bottom ring\npositions[pOffset++]=x;positions[pOffset++]=yBottom;positions[pOffset++]=z;normals[nOffset++]=cos;normals[nOffset++]=0;normals[nOffset++]=sin;uvs[uvOffset++]=u;uvs[uvOffset++]=0;}let indexOffset=0;for(let i=0;i<segments;i++){const i0=i*2;const i1=i0+1;const i2=i0+2;const i3=i0+3;indices[indexOffset++]=i0;indices[indexOffset++]=i2;indices[indexOffset++]=i1;indices[indexOffset++]=i2;indices[indexOffset++]=i3;indices[indexOffset++]=i1;}return{positions,normals,uvs,indices,indexCount:indices.length};},[bandRadius,bandWidth,radialSegments]);const ensureGL=useCallback(()=>{if(!canvasRef.current)return null;if(glRef.current)return glRef.current;const gl=canvasRef.current.getContext(\"webgl\",{antialias,alpha:true,premultipliedAlpha:false,preserveDrawingBuffer:true})||canvasRef.current.getContext(\"experimental-webgl\");if(!gl)return null;glRef.current=gl;return gl;},[antialias]);const compileShader=(gl,type,source)=>{const shader=gl.createShader(type);gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.error(gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;};const createProgram=useCallback(gl=>{const vertSrc=`\n        attribute vec3 position;\n        attribute vec3 normal;\n        attribute vec2 uv;\n\n        uniform mat4 uProjectionMatrix;\n        uniform mat4 uViewMatrix;\n        uniform mat4 uModelMatrix;\n        uniform mat3 uNormalMatrix;\n\n        varying vec3 vNormal;\n        varying vec3 vWorldPos;\n        varying vec2 vUv;\n\n        void main() {\n            vec4 worldPos = uModelMatrix * vec4(position, 1.0);\n            gl_Position = uProjectionMatrix * uViewMatrix * worldPos;\n            vWorldPos = worldPos.xyz;\n            vNormal = normalize(uNormalMatrix * normal);\n            vUv = uv;\n        }\n        `;const fragSrc=`\n        precision mediump float;\n\n        varying vec3 vNormal;\n        varying vec3 vWorldPos;\n        varying vec2 vUv;\n\n        uniform sampler2D uFrontTexture;\n        uniform sampler2D uBackTexture;\n        uniform bool uHasFront;\n        uniform bool uHasBack;\n        uniform bool uFlipBack;\n        uniform float uBackBrightness;\n\n        uniform vec3 uAmbientColor;\n        uniform vec3 uDirLightColor;\n        uniform vec3 uDirLightDir;\n        uniform vec3 uBaseColor;\n\n        uniform float uRoughness;\n        uniform float uMetalness;\n\n        void main() {\n            // Use the already-transformed UVs from vertex shader\n            vec2 uvFront = vUv;\n            vec2 uvBack = uFlipBack ? vec2(1.0 - vUv.x, vUv.y) : vUv;\n\n            // Sample texture based on face direction\n            vec4 texColor;\n            if (gl_FrontFacing) {\n                if (uHasFront) {\n                    texColor = texture2D(uFrontTexture, uvFront);\n                } else {\n                    texColor = vec4(uBaseColor, 1.0);\n                }\n            } else {\n                if (uHasBack) {\n                    texColor = texture2D(uBackTexture, uvBack);\n                } else {\n                    texColor = vec4(uBaseColor, 1.0);\n                }\n                // Apply brightness adjustment to back face for depth simulation\n                texColor.rgb *= uBackBrightness;\n            }\n\n            // Output texture color directly without lighting\n            gl_FragColor = texColor;\n        }\n        `;const vs=compileShader(gl,gl.VERTEX_SHADER,vertSrc);const fs=compileShader(gl,gl.FRAGMENT_SHADER,fragSrc);if(!vs||!fs)return null;const program=gl.createProgram();gl.attachShader(program,vs);gl.attachShader(program,fs);gl.bindAttribLocation(program,0,\"position\");gl.bindAttribLocation(program,1,\"normal\");gl.bindAttribLocation(program,2,\"uv\");gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.error(gl.getProgramInfoLog(program));gl.deleteProgram(program);return null;}gl.deleteShader(vs);gl.deleteShader(fs);return program;},[]);const createBuffers=useCallback(gl=>{const{positions,normals,uvs,indices,indexCount}=geometryData;const positionBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.bufferData(gl.ARRAY_BUFFER,positions,gl.STATIC_DRAW);const normalBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,normalBuffer);gl.bufferData(gl.ARRAY_BUFFER,normals,gl.STATIC_DRAW);const uvBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,uvBuffer);gl.bufferData(gl.ARRAY_BUFFER,uvs,gl.STATIC_DRAW);const indexBuffer=gl.createBuffer();gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indexBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indices,gl.STATIC_DRAW);buffersRef.current={position:positionBuffer,normal:normalBuffer,uv:uvBuffer,index:indexBuffer,indexCount};},[geometryData]);const loadTexture=useCallback((gl,url)=>{if(!url)return null;const tex=gl.createTexture();if(!tex)return null;gl.bindTexture(gl.TEXTURE_2D,tex);const level=0;const internalFormat=gl.RGBA;const width=2;const height=2;const border=0;const srcFormat=gl.RGBA;const srcType=gl.UNSIGNED_BYTE;const placeholder=new Uint8Array([200,200,200,255,200,200,200,255,200,200,200,255,200,200,200,255]);gl.texImage2D(gl.TEXTURE_2D,level,internalFormat,width,height,border,srcFormat,srcType,placeholder);// Use settings that are always valid, even for NPOT textures\ngl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);const image=new Image;image.crossOrigin=\"anonymous\";image.onload=()=>{const target=glRef.current;if(!target)return;gl.bindTexture(gl.TEXTURE_2D,tex);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,0);try{gl.texImage2D(gl.TEXTURE_2D,level,internalFormat,srcFormat,srcType,image);}catch{// Keep placeholder data if the real image cannot be used\nreturn;}// If the image has power-of-two dimensions, enable repeat and mipmaps\nconst isPowerOf2=value=>(value&value-1)===0;if(isPowerOf2(image.width)&&isPowerOf2(image.height)){gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.REPEAT);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.REPEAT);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR_MIPMAP_LINEAR);gl.generateMipmap(gl.TEXTURE_2D);}else{// NPOT textures must use CLAMP_TO_EDGE and no mipmaps\ngl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);}// Redraw once the texture has finished loading so UV-mapped imagery appears\nif(drawSceneRef.current){drawSceneRef.current();}};image.src=url;return tex;},[]);const setupScene=useCallback(()=>{const gl=ensureGL();if(!gl)return;if(!programRef.current){const program=createProgram(gl);if(!program)return;programRef.current=program;}if(!buffersRef.current){createBuffers(gl);}const prog=programRef.current;gl.useProgram(prog);const posLoc=gl.getAttribLocation(prog,\"position\");const normLoc=gl.getAttribLocation(prog,\"normal\");const uvLoc=gl.getAttribLocation(prog,\"uv\");const bufs=buffersRef.current;gl.bindBuffer(gl.ARRAY_BUFFER,bufs.position);gl.enableVertexAttribArray(posLoc);gl.vertexAttribPointer(posLoc,3,gl.FLOAT,false,0,0);gl.bindBuffer(gl.ARRAY_BUFFER,bufs.normal);gl.enableVertexAttribArray(normLoc);gl.vertexAttribPointer(normLoc,3,gl.FLOAT,false,0,0);gl.bindBuffer(gl.ARRAY_BUFFER,bufs.uv);gl.enableVertexAttribArray(uvLoc);gl.vertexAttribPointer(uvLoc,2,gl.FLOAT,false,0,0);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,bufs.index);const frontTex=loadTexture(gl,effectiveFrontSrc||null);const backTex=loadTexture(gl,effectiveBackSrc||null);texturesRef.current.front=frontTex;texturesRef.current.back=backTex;},[ensureGL,createProgram,createBuffers,loadTexture,effectiveFrontSrc,effectiveBackSrc]);const updateTextures=useCallback(()=>{const gl=glRef.current;if(!gl)return;const frontTex=loadTexture(gl,effectiveFrontSrc||null);const backTex=loadTexture(gl,effectiveBackSrc||null);texturesRef.current.front=frontTex;texturesRef.current.back=backTex;},[effectiveFrontSrc,effectiveBackSrc,loadTexture]);const resizeCanvas=useCallback(()=>{if(!canvasRef.current||!containerRef.current)return;const gl=ensureGL();if(!gl)return;const rect=containerRef.current.getBoundingClientRect();const width=rect.width||size.width;const height=rect.height||size.height;const displayWidth=Math.round(width*dpr);const displayHeight=Math.round(height*dpr);if(canvasRef.current.width!==displayWidth||canvasRef.current.height!==displayHeight){canvasRef.current.width=displayWidth;canvasRef.current.height=displayHeight;}gl.viewport(0,0,displayWidth,displayHeight);},[ensureGL,dpr,size.width,size.height]);const drawScene=useCallback(timeMs=>{const gl=glRef.current;const prog=programRef.current;const bufs=buffersRef.current;if(!gl||!prog||!bufs)return;resizeCanvas();const width=canvasRef.current?.width||size.width*dpr;const height=canvasRef.current?.height||size.height*dpr;const aspect=width/height;gl.clearColor(0,0,0,0);gl.enable(gl.DEPTH_TEST);gl.disable(gl.CULL_FACE);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);const fieldOfView=45*Math.PI/180;const near=.1;const far=100;const projectionMatrix=mat4Perspective(fieldOfView,aspect,near,far);const radius=Math.max(.01,bandRadius);const halfHeight=Math.max(.01,bandWidth*.5);const objectRadius=Math.sqrt(radius*radius+halfHeight*halfHeight);const fovY=fieldOfView;const fovX=2*Math.atan(Math.tan(fovY*.5)*aspect);const distY=objectRadius/Math.tan(fovY*.5);const distX=objectRadius/Math.tan(fovX*.5);const distance=Math.max(distX,distY)*1.1;const eye=[0,0,distance];const target=[0,0,0];const up=[0,1,0];const viewMatrix=mat4LookAt(eye,target,up);const rx=rotX*Math.PI/180+rotationRef.current.x;const baseRy=rotY*Math.PI/180;const rz=rotZ*Math.PI/180+rotationRef.current.z;const autoAngle=angleRef.current||0;const ry=baseRy+autoAngle+rotationRef.current.y;const modelMatrix=mat4Multiply(mat4RotationZ(rz),mat4Multiply(mat4RotationY(ry),mat4RotationX(rx)));const normalMatrix=mat3FromMat4(mat4Invert(mat4Transpose(modelMatrix)));gl.useProgram(prog);const locProj=gl.getUniformLocation(prog,\"uProjectionMatrix\");const locView=gl.getUniformLocation(prog,\"uViewMatrix\");const locModel=gl.getUniformLocation(prog,\"uModelMatrix\");const locNormalMat=gl.getUniformLocation(prog,\"uNormalMatrix\");const locHasFront=gl.getUniformLocation(prog,\"uHasFront\");const locHasBack=gl.getUniformLocation(prog,\"uHasBack\");const locFlipBack=gl.getUniformLocation(prog,\"uFlipBack\");const locBackBrightness=gl.getUniformLocation(prog,\"uBackBrightness\");const locAmbient=gl.getUniformLocation(prog,\"uAmbientColor\");const locDirColor=gl.getUniformLocation(prog,\"uDirLightColor\");const locDirDir=gl.getUniformLocation(prog,\"uDirLightDir\");const locBase=gl.getUniformLocation(prog,\"uBaseColor\");const locRough=gl.getUniformLocation(prog,\"uRoughness\");const locMetal=gl.getUniformLocation(prog,\"uMetalness\");gl.uniformMatrix4fv(locProj,false,projectionMatrix);gl.uniformMatrix4fv(locView,false,viewMatrix);gl.uniformMatrix4fv(locModel,false,modelMatrix);gl.uniformMatrix3fv(locNormalMat,false,normalMatrix);gl.uniform1i(locHasFront,hasFront?1:0);gl.uniform1i(locHasBack,hasBack?1:0);gl.uniform1i(locFlipBack,flipBackUV?1:0);gl.uniform1f(locBackBrightness,backBrightness);gl.uniform3f(locAmbient,.5,.5,.5);gl.uniform3f(locDirColor,.7,.7,.7);const dir=normalize3([.5,1,.8]);gl.uniform3f(locDirDir,dir[0],dir[1],dir[2]);const baseCol=[.82,.82,.82];gl.uniform3f(locBase,baseCol[0],baseCol[1],baseCol[2]);gl.uniform1f(locRough,roughness);gl.uniform1f(locMetal,metalness);const locFrontSampler=gl.getUniformLocation(prog,\"uFrontTexture\");const locBackSampler=gl.getUniformLocation(prog,\"uBackTexture\");if(texturesRef.current.front){gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,texturesRef.current.front);gl.uniform1i(locFrontSampler,0);}if(texturesRef.current.back){gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,texturesRef.current.back);gl.uniform1i(locBackSampler,1);}gl.drawElements(gl.TRIANGLES,bufs.indexCount,gl.UNSIGNED_SHORT,0);},[resizeCanvas,size.width,size.height,dpr,bandRadius,bandWidth,rotX,rotY,rotZ,hasFront,hasBack,flipBackUV,roughness,metalness,backBrightness]);useEffect(()=>{if(!canvasRef.current||!containerRef.current)return;setupScene();drawScene();return()=>{const gl=glRef.current;if(gl){if(texturesRef.current.front)gl.deleteTexture(texturesRef.current.front);if(texturesRef.current.back)gl.deleteTexture(texturesRef.current.back);const bufs=buffersRef.current;if(bufs){if(bufs.position)gl.deleteBuffer(bufs.position);if(bufs.normal)gl.deleteBuffer(bufs.normal);if(bufs.uv)gl.deleteBuffer(bufs.uv);if(bufs.index)gl.deleteBuffer(bufs.index);}if(programRef.current)gl.deleteProgram(programRef.current);}glRef.current=null;buffersRef.current=null;programRef.current=null;};},[setupScene,drawScene]);useEffect(()=>{if(!glRef.current||!buffersRef.current)return;const gl=glRef.current;const prog=programRef.current;if(!gl||!prog)return;const{positions,normals,uvs,indices,indexCount}=geometryData;const bufs=buffersRef.current;gl.bindBuffer(gl.ARRAY_BUFFER,bufs.position);gl.bufferData(gl.ARRAY_BUFFER,positions,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,bufs.normal);gl.bufferData(gl.ARRAY_BUFFER,normals,gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,bufs.uv);gl.bufferData(gl.ARRAY_BUFFER,uvs,gl.STATIC_DRAW);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,bufs.index);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indices,gl.STATIC_DRAW);buffersRef.current={...bufs,indexCount};drawScene();},[geometryData,drawScene]);useEffect(()=>{if(!glRef.current)return;updateTextures();drawScene();},[updateTextures,drawScene]);useEffect(()=>{if(typeof window===\"undefined\")return;const handleResize=()=>{if(!canvasRef.current||!containerRef.current)return;resizeCanvas();drawScene();};window.addEventListener(\"resize\",handleResize);return()=>{window.removeEventListener(\"resize\",handleResize);};},[resizeCanvas,drawScene]);useEffect(()=>{if(isStatic){drawScene();return;}if(!autoRotate&&!enableDrag){if(frameRef.current!==null&&typeof window!==\"undefined\"){cancelAnimationFrame(frameRef.current);frameRef.current=null;}angleRef.current=0;drawScene();return;}if(typeof window===\"undefined\")return;const animate=time=>{if(lastTimeRef.current===null){lastTimeRef.current=time;}const deltaMs=time-lastTimeRef.current;lastTimeRef.current=time;// Auto-rotate logic\nif(autoRotate&&!isDragging){const effectiveSpeed=isHover&&slowOnHover?slowOnHoverSpeed:autoRotateSpeed;const deltaDeg=effectiveSpeed*(deltaMs/16.6667);startTransition(()=>{angleRef.current+=deltaDeg*Math.PI/180;});}// Physics simulation when not dragging\nif(enableDrag&&!isDragging){const damping=Math.pow(physicsDamping,deltaMs/16.6667);startTransition(()=>{velocityRef.current.x*=damping;velocityRef.current.y*=damping;velocityRef.current.z*=damping;rotationRef.current.x+=velocityRef.current.x*(deltaMs/16.6667);rotationRef.current.y+=velocityRef.current.y*(deltaMs/16.6667);rotationRef.current.z+=velocityRef.current.z*(deltaMs/16.6667);});}drawScene(time);frameRef.current=window.requestAnimationFrame(animate);};frameRef.current=window.requestAnimationFrame(animate);return()=>{if(frameRef.current!==null){window.cancelAnimationFrame(frameRef.current);frameRef.current=null;}lastTimeRef.current=null;};},[autoRotate,autoRotateSpeed,slowOnHover,slowOnHoverSpeed,isHover,drawScene,isStatic,enableDrag,isDragging,physicsDamping]);useEffect(()=>{drawScene();drawSceneRef.current=drawScene;},[drawScene]);const handleMouseDown=useCallback(e=>{if(!enableDrag||!canvasRef.current)return;e.preventDefault();startTransition(()=>{setIsDragging(true);dragStartRef.current={x:e.clientX,y:e.clientY};lastDragRef.current={x:e.clientX,y:e.clientY,time:Date.now()};dragStartRotationRef.current={...rotationRef.current};velocityRef.current={x:0,y:0,z:0};});},[enableDrag]);const handleMouseMove=useCallback(e=>{if(!isDragging||!dragStartRef.current||!lastDragRef.current)return;const deltaX=e.clientX-lastDragRef.current.x;const deltaY=e.clientY-lastDragRef.current.y;const deltaTime=Date.now()-lastDragRef.current.time;// Calculate total movement from drag start for direct mapping\nconst totalDeltaX=e.clientX-dragStartRef.current.x;const totalDeltaY=e.clientY-dragStartRef.current.y;if(deltaTime>0){const sensitivity=dragSensitivity*.01;// Direct mapping: cursor position directly controls rotation\nstartTransition(()=>{rotationRef.current.y=dragStartRotationRef.current.y+totalDeltaX*sensitivity;rotationRef.current.x=dragStartRotationRef.current.x+totalDeltaY*sensitivity;// Minimal random Z rotation based on movement speed\nconst movement=Math.sqrt(deltaX*deltaX+deltaY*deltaY);rotationRef.current.z+=(Math.random()-.5)*movement*sensitivity*.02;// Calculate velocity for physics (scaled down for subtlety)\nconst velocityScale=.3;velocityRef.current.y=deltaX*sensitivity*velocityScale/(deltaTime/16.6667);velocityRef.current.x=deltaY*sensitivity*velocityScale/(deltaTime/16.6667);velocityRef.current.z=(Math.random()-.5)*movement*sensitivity*.02*velocityScale/(deltaTime/16.6667);});lastDragRef.current={x:e.clientX,y:e.clientY,time:Date.now()};}},[isDragging,dragSensitivity]);const handleMouseUp=useCallback(()=>{if(!isDragging)return;startTransition(()=>{setIsDragging(false);dragStartRef.current=null;lastDragRef.current=null;});},[isDragging]);// Add global mouse event listeners\nuseEffect(()=>{if(!enableDrag||typeof window===\"undefined\")return;if(isDragging){window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"mouseup\",handleMouseUp);}return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"mouseup\",handleMouseUp);};},[isDragging,enableDrag,handleMouseMove,handleMouseUp]);const mergedStyle={...style,position:\"relative\",overflow:\"hidden\",cursor:enableDrag?isDragging?\"grabbing\":\"grab\":\"default\"};return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:mergedStyle,onMouseEnter:()=>{startTransition(()=>setIsHover(true));},onMouseLeave:()=>{startTransition(()=>setIsHover(false));},onMouseDown:handleMouseDown,children:[/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",zIndex:0,position:\"relative\",filter:enableGlow&&isHover?`drop-shadow(0 0 ${glowSize}px ${glowColor}) brightness(${1+glowIntensity*.2})`:\"none\",opacity:enableGlow?isHover?1:opacityBeforeHover:1,transition:\"filter 0.3s ease, opacity 0.3s ease\"}}),centerContent&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"none\",zIndex:1},children:/*#__PURE__*/_jsx(\"div\",{style:{pointerEvents:\"auto\"},children:centerContent})})]});}function normalize3(v){const len=Math.hypot(v[0],v[1],v[2])||1;return[v[0]/len,v[1]/len,v[2]/len];}// Matrix math utilities for WebGL\nfunction mat4Perspective(fov,aspect,near,far){const f=1/Math.tan(fov/2);const rangeInv=1/(near-far);const mat=new Float32Array(16);mat[0]=f/aspect;mat[5]=f;mat[10]=(near+far)*rangeInv;mat[11]=-1;mat[14]=near*far*rangeInv*2;return mat;}function mat4LookAt(eye,target,up){const zAxis=normalize3([eye[0]-target[0],eye[1]-target[1],eye[2]-target[2]]);const xAxis=normalize3(cross3(up,zAxis));const yAxis=cross3(zAxis,xAxis);const mat=new Float32Array(16);mat[0]=xAxis[0];mat[1]=yAxis[0];mat[2]=zAxis[0];mat[4]=xAxis[1];mat[5]=yAxis[1];mat[6]=zAxis[1];mat[8]=xAxis[2];mat[9]=yAxis[2];mat[10]=zAxis[2];mat[12]=-(xAxis[0]*eye[0]+xAxis[1]*eye[1]+xAxis[2]*eye[2]);mat[13]=-(yAxis[0]*eye[0]+yAxis[1]*eye[1]+yAxis[2]*eye[2]);mat[14]=-(zAxis[0]*eye[0]+zAxis[1]*eye[1]+zAxis[2]*eye[2]);mat[15]=1;return mat;}function cross3(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]];}function mat4RotationX(angle){const c=Math.cos(angle);const s=Math.sin(angle);const mat=new Float32Array(16);mat[0]=1;mat[5]=c;mat[6]=s;mat[9]=-s;mat[10]=c;mat[15]=1;return mat;}function mat4RotationY(angle){const c=Math.cos(angle);const s=Math.sin(angle);const mat=new Float32Array(16);mat[0]=c;mat[2]=-s;mat[5]=1;mat[8]=s;mat[10]=c;mat[15]=1;return mat;}function mat4RotationZ(angle){const c=Math.cos(angle);const s=Math.sin(angle);const mat=new Float32Array(16);mat[0]=c;mat[1]=s;mat[4]=-s;mat[5]=c;mat[10]=1;mat[15]=1;return mat;}function mat4Multiply(a,b){const result=new Float32Array(16);for(let i=0;i<4;i++){for(let j=0;j<4;j++){result[i*4+j]=a[i*4+0]*b[0*4+j]+a[i*4+1]*b[1*4+j]+a[i*4+2]*b[2*4+j]+a[i*4+3]*b[3*4+j];}}return result;}function mat4Transpose(m){const result=new Float32Array(16);for(let i=0;i<4;i++){for(let j=0;j<4;j++){result[i*4+j]=m[j*4+i];}}return result;}function mat4Invert(m){const inv=new Float32Array(16);inv[0]=m[5]*m[10]*m[15]-m[5]*m[11]*m[14]-m[9]*m[6]*m[15]+m[9]*m[7]*m[14]+m[13]*m[6]*m[11]-m[13]*m[7]*m[10];inv[4]=-m[4]*m[10]*m[15]+m[4]*m[11]*m[14]+m[8]*m[6]*m[15]-m[8]*m[7]*m[14]-m[12]*m[6]*m[11]+m[12]*m[7]*m[10];inv[8]=m[4]*m[9]*m[15]-m[4]*m[11]*m[13]-m[8]*m[5]*m[15]+m[8]*m[7]*m[13]+m[12]*m[5]*m[11]-m[12]*m[7]*m[9];inv[12]=-m[4]*m[9]*m[14]+m[4]*m[10]*m[13]+m[8]*m[5]*m[14]-m[8]*m[6]*m[13]-m[12]*m[5]*m[10]+m[12]*m[6]*m[9];inv[1]=-m[1]*m[10]*m[15]+m[1]*m[11]*m[14]+m[9]*m[2]*m[15]-m[9]*m[3]*m[14]-m[13]*m[2]*m[11]+m[13]*m[3]*m[10];inv[5]=m[0]*m[10]*m[15]-m[0]*m[11]*m[14]-m[8]*m[2]*m[15]+m[8]*m[3]*m[14]+m[12]*m[2]*m[11]-m[12]*m[3]*m[10];inv[9]=-m[0]*m[9]*m[15]+m[0]*m[11]*m[13]+m[8]*m[1]*m[15]-m[8]*m[3]*m[13]-m[12]*m[1]*m[11]+m[12]*m[3]*m[9];inv[13]=m[0]*m[9]*m[14]-m[0]*m[10]*m[13]-m[8]*m[1]*m[14]+m[8]*m[2]*m[13]+m[12]*m[1]*m[10]-m[12]*m[2]*m[9];inv[2]=m[1]*m[6]*m[15]-m[1]*m[7]*m[14]-m[5]*m[2]*m[15]+m[5]*m[3]*m[14]+m[13]*m[2]*m[7]-m[13]*m[3]*m[6];inv[6]=-m[0]*m[6]*m[15]+m[0]*m[7]*m[14]+m[4]*m[2]*m[15]-m[4]*m[3]*m[14]-m[12]*m[2]*m[7]+m[12]*m[3]*m[6];inv[10]=m[0]*m[5]*m[15]-m[0]*m[7]*m[13]-m[4]*m[1]*m[15]+m[4]*m[3]*m[13]+m[12]*m[1]*m[7]-m[12]*m[3]*m[5];inv[14]=-m[0]*m[5]*m[14]+m[0]*m[6]*m[13]+m[4]*m[1]*m[14]-m[4]*m[2]*m[13]-m[12]*m[1]*m[6]+m[12]*m[2]*m[5];inv[3]=-m[1]*m[6]*m[11]+m[1]*m[7]*m[10]+m[5]*m[2]*m[11]-m[5]*m[3]*m[10]-m[9]*m[2]*m[7]+m[9]*m[3]*m[6];inv[7]=m[0]*m[6]*m[11]-m[0]*m[7]*m[10]-m[4]*m[2]*m[11]+m[4]*m[3]*m[10]+m[8]*m[2]*m[7]-m[8]*m[3]*m[6];inv[11]=-m[0]*m[5]*m[11]+m[0]*m[7]*m[9]+m[4]*m[1]*m[11]-m[4]*m[3]*m[9]-m[8]*m[1]*m[7]+m[8]*m[3]*m[5];inv[15]=m[0]*m[5]*m[10]-m[0]*m[6]*m[9]-m[4]*m[1]*m[10]+m[4]*m[2]*m[9]+m[8]*m[1]*m[6]-m[8]*m[2]*m[5];const det=m[0]*inv[0]+m[1]*inv[4]+m[2]*inv[8]+m[3]*inv[12];if(det===0)return m;const detInv=1/det;for(let i=0;i<16;i++){inv[i]=inv[i]*detInv;}return inv;}function mat3FromMat4(m){const result=new Float32Array(9);result[0]=m[0];result[1]=m[1];result[2]=m[2];result[3]=m[4];result[4]=m[5];result[5]=m[6];result[6]=m[8];result[7]=m[9];result[8]=m[10];return result;}addPropertyControls(Wristband3D,{frontTexture:{type:ControlType.ResponsiveImage,title:\"Front\"},backTexture:{type:ControlType.ResponsiveImage,title:\"Back\"},centerContent:{type:ControlType.Slot,title:\"Center Content\",maxCount:1},bandRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:2.2,min:.2,max:10,step:.1},bandWidth:{type:ControlType.Number,title:\"Width\",defaultValue:.5,min:.1,max:3,step:.05},radialSegments:{type:ControlType.Number,title:\"Segments\",defaultValue:64,min:16,max:256,step:1,displayStepper:true},flipBackUV:{type:ControlType.Boolean,title:\"Flip Back UV\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},backBrightness:{type:ControlType.Number,title:\"Back Brightness\",defaultValue:.6,min:0,max:1,step:.01},rotX:{type:ControlType.Number,title:\"Rot X\",defaultValue:15,min:-180,max:180,step:1},rotY:{type:ControlType.Number,title:\"Rot Y\",defaultValue:25,min:-180,max:180,step:1},rotZ:{type:ControlType.Number,title:\"Rot Z\",defaultValue:0,min:-180,max:180,step:1},enableDrag:{type:ControlType.Boolean,title:\"Enable Drag\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},dragSensitivity:{type:ControlType.Number,title:\"Drag Sensitivity\",defaultValue:1,min:0,max:4,step:.1,hidden:p=>!p.enableDrag},physicsDamping:{type:ControlType.Number,title:\"Physics Damping\",defaultValue:.95,min:.8,max:.99,step:.01,hidden:p=>!p.enableDrag},enableGlow:{type:ControlType.Boolean,title:\"Glow on Hover\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},opacityBeforeHover:{type:ControlType.Number,title:\"Opacity Before Hover\",defaultValue:.7,min:0,max:1,step:.01,hidden:p=>!p.enableGlow},glowColor:{type:ControlType.Color,title:\"Glow Color\",defaultValue:\"#0099FF\",hidden:p=>!p.enableGlow},glowIntensity:{type:ControlType.Number,title:\"Glow Intensity\",defaultValue:1,min:0,max:2,step:.1,hidden:p=>!p.enableGlow},glowSize:{type:ControlType.Number,title:\"Glow Size\",defaultValue:20,min:0,max:100,step:1,hidden:p=>!p.enableGlow},autoRotate:{type:ControlType.Boolean,title:\"Auto Rotate\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},autoRotateSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:.3,min:-3,max:3,step:.05,displayStepper:true,hidden:p=>!p.autoRotate},slowOnHover:{type:ControlType.Boolean,title:\"Slow on Hover\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},slowOnHoverSpeed:{type:ControlType.Number,title:\"Hover Speed\",defaultValue:.06,min:-3,max:3,step:.05,displayStepper:true,hidden:p=>!p.autoRotate||!p.slowOnHover},roughness:{type:ControlType.Number,title:\"Roughness\",defaultValue:.7,min:0,max:1,step:.01},metalness:{type:ControlType.Number,title:\"Metalness\",defaultValue:.05,min:0,max:1,step:.01},pixelRatioCap:{type:ControlType.Number,title:\"PixelRatio\",defaultValue:2,min:1,max:3,step:.1},antialias:{type:ControlType.Boolean,title:\"Antialias\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Wristband3D\",\"slots\":[\"centerContent\"],\"annotations\":{\"framerIntrinsicWidth\":\"600\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"400\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Wristband3D.map"],"mappings":"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,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE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"}