{"version":3,"file":"TextRing3D.D7_9W9wh.mjs","names":["React.useRef","React.useMemo","React.useState","__esmMin","pe","init_npm_react_18_3_1","init_ssg_sandbox_shims","window","le","_e","p","init_jsx_runtime","ce","de","useTransform","useScroll","useSpring","useReducedMotion","init_framer_motion_DhsWWWsN","motion","init_framer_CaDWdxiz","useIsStaticRenderer","ControlType","addPropertyControls","TextRing3D","props","rootRef","measurementRef","isStaticRenderer","prefersReducedMotion","shouldReduceMotion","respectReducedMotion","typographyStyle","next","font","size","setSize","element","applySize","width","height","previous","updateSize","observer","entry","entries","baseSize","safeTexts","texts","text","count","renderedTexts","uppercase","textSignature","typographySignature","radius","ringSize","angleStep","circumference","slotArc","perspective","perspectiveRatio","frontProjectionScale","textRenderScale","inverseTextRenderScale","normalizedWidths","setNormalizedWidths","probe","cancelled","measure","nextWidths","fonts","widthRatios","measured","index","preferredFontSize","textScale","fittedFontLimit","smallestLimit","totalRatio","minGap","pairLimit","finalFontSize","highResFontSize","tiltRad","tilt","depthTiltRad","depthTilt","projectedMinY","projectedMaxY","angle","x","z","x1","y1","z1","projectedY","projectedCenterY","projectedRingHeight","largestTextWidth","estimatedLineHeight","textVerticalEnvelope","estimatedVisualHeight","autoSceneScale","verticalFill","sceneScale","scaledPerspective","sceneOffsetY","directionMultiplier","direction","endAngle","startAngle","rotations","rawRotationY","scrollYProgress","smoothRotationY","liveRotationY","smoothScroll","canvasRotation","displayedRotationY","style","radians","hideBackfaces","init_TextRing3D"],"sources":["https:/framerusercontent.com/modules/0CgUGiCXEmCjY9qD4mL1/yzHfRrNuVX8EfwXba43h/TextRing3D.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useReducedMotion,useScroll,useSpring,useTransform}from\"framer-motion\";/**\n * 3D Text Ring / Tube\n *\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 1000\n * @framerIntrinsicHeight 700\n */export default function TextRing3D(props){const{texts=[\"COCO\",\"MARIA\",\"DAN\",\"MIKO\",\"VIGO\",\"COCO\",\"MARIA\",\"DAN\",\"MIKO\",\"VIGO\"],ringSize=80,// How much of the component height\n// the visible ring should approximately occupy.\nverticalFill=84,perspectiveRatio=1.4,// Left / right tilt\ntilt=15,// Forward / backward tilt\ndepthTilt=0,rotations=1,startAngle=0,direction=\"forward\",smoothScroll=true,// Respect user's operating-system\n// prefers-reduced-motion setting.\nrespectReducedMotion=true,textScale=7,minGap=.5,font={},color=\"#111111\",uppercase=false,hideBackfaces=false,style}=props;const rootRef=React.useRef(null);const measurementRef=React.useRef(null);const isStaticRenderer=useIsStaticRenderer();// --------------------------------------------------\n// Reduced Motion\n//\n// useReducedMotion() follows the user's OS/browser\n// prefers-reduced-motion setting.\n//\n// If:\n//\n// Reduce Motion = Yes\n// AND\n// prefers-reduced-motion = reduce\n//\n// then the ring remains static at startAngle.\n// --------------------------------------------------\nconst prefersReducedMotion=useReducedMotion();const shouldReduceMotion=respectReducedMotion&&prefersReducedMotion===true;// --------------------------------------------------\n// Typography\n//\n// Font size is responsive, therefore any font-size\n// coming from Framer Typography is ignored.\n// --------------------------------------------------\nconst typographyStyle=React.useMemo(()=>{const next={...font||{}};delete next.fontSize;delete next.textAlign;return next;},[font]);// --------------------------------------------------\n// Component layout size\n//\n// clientWidth / contentRect are used instead of\n// getBoundingClientRect() so Framer Canvas zoom\n// doesn't affect geometry.\n// --------------------------------------------------\nconst[size,setSize]=React.useState({width:1e3,height:700});React.useEffect(()=>{const element=rootRef.current;if(!element)return;const applySize=(width,height)=>{if(!Number.isFinite(width)||!Number.isFinite(height)||width<=0||height<=0){return;}setSize(previous=>{if(Math.abs(previous.width-width)<.1&&Math.abs(previous.height-height)<.1){return previous;}return{width,height};});};const updateSize=()=>{applySize(element.clientWidth,element.clientHeight);};updateSize();if(typeof ResizeObserver!==\"undefined\"){const observer=new ResizeObserver(entries=>{const entry=entries[0];if(!entry){updateSize();return;}applySize(entry.contentRect.width||element.clientWidth,entry.contentRect.height||element.clientHeight);});observer.observe(element);return()=>{observer.disconnect();};}window.addEventListener(\"resize\",updateSize);return()=>{window.removeEventListener(\"resize\",updateSize);};},[]);// --------------------------------------------------\n// Common responsive scale\n// --------------------------------------------------\nconst baseSize=Math.max(1,Math.min(size.width,size.height));// --------------------------------------------------\n// Texts\n// --------------------------------------------------\nconst safeTexts=Array.isArray(texts)&&texts.length>0?texts.map(text=>String(text)):[\"TEXT\"];const count=safeTexts.length;const renderedTexts=safeTexts.map(text=>uppercase?text.toUpperCase():text);const textSignature=renderedTexts.join(\"\\x01\");const typographySignature=JSON.stringify(typographyStyle);// --------------------------------------------------\n// Ring geometry\n// --------------------------------------------------\nconst radius=baseSize*(ringSize/100)*.5;const angleStep=count>0?360/count:360;const circumference=Math.PI*2*radius;const slotArc=count>0?circumference/count:circumference;// --------------------------------------------------\n// Perspective\n// --------------------------------------------------\nconst perspective=Math.max(1,baseSize*perspectiveRatio);// --------------------------------------------------\n// Supersampling\n// --------------------------------------------------\nconst safePerspectiveGap=Math.max(1,perspective-radius);const frontProjectionScale=perspective/safePerspectiveGap;const textRenderScale=Math.min(4,Math.max(2,frontProjectionScale*1.5));const inverseTextRenderScale=1/textRenderScale;// --------------------------------------------------\n// Measure normalized label widths\n// --------------------------------------------------\nconst[normalizedWidths,setNormalizedWidths]=React.useState([]);React.useLayoutEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\"){return;}const probe=measurementRef.current;if(!probe)return;let cancelled=false;const measure=()=>{if(cancelled)return;const referenceSize=100;probe.style.fontSize=`${referenceSize}px`;const nextWidths=renderedTexts.map(text=>{probe.textContent=text||\" \";const width=probe.offsetWidth;return Math.max(0,width/referenceSize);});probe.textContent=\"Measurement\";if(!cancelled){setNormalizedWidths(nextWidths);}};measure();if(document.fonts?.ready){document.fonts.ready.then(measure);}const fonts=document.fonts;if(fonts&&typeof fonts.addEventListener===\"function\"){fonts.addEventListener(\"loadingdone\",measure);}return()=>{cancelled=true;if(fonts&&typeof fonts.removeEventListener===\"function\"){fonts.removeEventListener(\"loadingdone\",measure);}};},[textSignature,typographySignature]);// --------------------------------------------------\n// Width fallback\n// --------------------------------------------------\nconst widthRatios=renderedTexts.map((text,index)=>{const measured=normalizedWidths[index];if(Number.isFinite(measured)&&measured>0){return measured;}return Math.max(.5,text.length*.6);});// --------------------------------------------------\n// Responsive text size\n// --------------------------------------------------\nconst preferredFontSize=baseSize*(textScale/100);// --------------------------------------------------\n// Gap fitting\n// --------------------------------------------------\nlet fittedFontLimit=preferredFontSize;if(count>1&&slotArc>0){let smallestLimit=Number.POSITIVE_INFINITY;for(let index=0;index<count;index++){const next=(index+1)%count;const currentRatio=widthRatios[index]||0;const nextRatio=widthRatios[next]||0;const occupiedRatio=(currentRatio+nextRatio)/2;const totalRatio=occupiedRatio+Math.max(0,minGap);if(totalRatio<=0){continue;}const pairLimit=slotArc/totalRatio;smallestLimit=Math.min(smallestLimit,pairLimit);}if(Number.isFinite(smallestLimit)){fittedFontLimit=Math.min(preferredFontSize,smallestLimit);}}const finalFontSize=Math.max(1,fittedFontLimit);const highResFontSize=finalFontSize*textRenderScale;// --------------------------------------------------\n// Automatic vertical fitting\n// --------------------------------------------------\nconst tiltRad=tilt*Math.PI/180;const depthTiltRad=depthTilt*Math.PI/180;let projectedMinY=Number.POSITIVE_INFINITY;let projectedMaxY=Number.NEGATIVE_INFINITY;const projectionSamples=180;for(let index=0;index<projectionSamples;index++){const angle=index/projectionSamples*Math.PI*2;// Original circle in X/Z plane.\nconst x=Math.sin(angle)*radius;const z=Math.cos(angle)*radius;// rotateX(depthTilt)\nconst x1=x;const y1=-z*Math.sin(depthTiltRad);const z1=z*Math.cos(depthTiltRad);// rotateZ(tilt)\nconst y2=x1*Math.sin(tiltRad)+y1*Math.cos(tiltRad);// Perspective projection.\nconst denominator=Math.max(1,perspective-z1);const projection=perspective/denominator;const projectedY=y2*projection;projectedMinY=Math.min(projectedMinY,projectedY);projectedMaxY=Math.max(projectedMaxY,projectedY);}if(!Number.isFinite(projectedMinY)||!Number.isFinite(projectedMaxY)){projectedMinY=-finalFontSize;projectedMaxY=finalFontSize;}// Centre of projected ring geometry.\nconst projectedCenterY=(projectedMinY+projectedMaxY)/2;const projectedRingHeight=Math.max(1,projectedMaxY-projectedMinY);// --------------------------------------------------\n// Include text dimensions in estimated bounds\n// --------------------------------------------------\nconst largestTextRatio=widthRatios.length>0?Math.max(...widthRatios):1;const largestTextWidth=largestTextRatio*finalFontSize;const estimatedLineHeight=finalFontSize*1.1;const textVerticalEnvelope=(largestTextWidth*Math.abs(Math.sin(tiltRad))+estimatedLineHeight*Math.max(.35,Math.abs(Math.cos(tiltRad))))*Math.min(2,frontProjectionScale);const estimatedVisualHeight=Math.max(1,projectedRingHeight+textVerticalEnvelope);// --------------------------------------------------\n// Vertical fill\n// --------------------------------------------------\nconst targetVisualHeight=size.height*Math.max(.2,verticalFill/100);const autoSceneScale=targetVisualHeight/estimatedVisualHeight;const sceneScale=Math.min(3.5,Math.max(1,autoSceneScale));const scaledPerspective=perspective*sceneScale;// --------------------------------------------------\n// Vertical optical centring\n// --------------------------------------------------\nconst sceneOffsetY=-projectedCenterY*sceneScale;// --------------------------------------------------\n// Scroll scrub\n// --------------------------------------------------\nconst{scrollYProgress}=useScroll({target:rootRef,offset:[\"start end\",\"end start\"]});const directionMultiplier=direction===\"forward\"?1:-1;const endAngle=startAngle+360*rotations*directionMultiplier;const rawRotationY=useTransform(scrollYProgress,[0,1],[startAngle,endAngle]);const smoothRotationY=useSpring(rawRotationY,{stiffness:120,damping:28,mass:.22});const liveRotationY=smoothScroll?smoothRotationY:rawRotationY;// --------------------------------------------------\n// Framer Canvas preview\n//\n// Canvas is static and shows approximately\n// 50% scroll progress.\n// --------------------------------------------------\nconst canvasRotation=startAngle+180*rotations*directionMultiplier;// --------------------------------------------------\n// Final rotation\n//\n// Canvas:\n// static middle position\n//\n// Published / Preview + Reduced Motion:\n// static start position\n//\n// Published / Preview + normal motion:\n// live scroll-scrub position\n// --------------------------------------------------\nconst displayedRotationY=isStaticRenderer?canvasRotation:shouldReduceMotion?startAngle:liveRotationY;// --------------------------------------------------\n// Render\n// --------------------------------------------------\nreturn /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...style,width:\"100%\",height:\"100%\",minWidth:1,minHeight:1,position:\"relative\",overflow:\"hidden\",background:\"transparent\",pointerEvents:\"none\",userSelect:\"none\"},children:[/*#__PURE__*/_jsx(\"span\",{ref:measurementRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",left:\"-100000px\",top:\"-100000px\",display:\"inline-block\",visibility:\"hidden\",whiteSpace:\"nowrap\",pointerEvents:\"none\",fontFamily:\"Arial, sans-serif\",fontWeight:600,lineHeight:\"1em\",letterSpacing:\"-0.04em\",...typographyStyle,fontSize:\"100px\"},children:\"Measurement\"}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,transform:`translate3d(0, ${sceneOffsetY}px, 0)`},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,perspective:`${scaledPerspective}px`,perspectiveOrigin:\"50% 50%\",transformStyle:\"preserve-3d\",overflow:\"visible\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,transform:`\n                                scale3d(\n                                    ${sceneScale},\n                                    ${sceneScale},\n                                    ${sceneScale}\n                                )\n                                rotateZ(${tilt}deg)\n                                rotateX(${depthTilt}deg)\n                            `,transformOrigin:\"50% 50%\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",inset:0,rotateY:displayedRotationY,transformOrigin:\"50% 50%\",transformStyle:\"preserve-3d\"},children:renderedTexts.map((text,index)=>{const angle=index*angleStep;const radians=angle*Math.PI/180;const x=Math.sin(radians)*radius;const z=Math.cos(radians)*radius;return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:\"50%\",width:\"100%\",height:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",margin:0,padding:0,transform:`\n                                                    translate3d(\n                                                        ${x}px,\n                                                        0px,\n                                                        ${z}px\n                                                    )\n                                                    rotateY(${angle}deg)\n                                                `,transformOrigin:\"50% 50%\",transformStyle:\"preserve-3d\",backfaceVisibility:hideBackfaces?\"hidden\":\"visible\",WebkitBackfaceVisibility:hideBackfaces?\"hidden\":\"visible\"},children:/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",flex:\"0 0 auto\",margin:0,padding:0,fontFamily:\"Arial, sans-serif\",fontWeight:600,lineHeight:\"1em\",letterSpacing:\"-0.04em\",...typographyStyle,fontSize:`${highResFontSize}px`,color,textAlign:\"center\",whiteSpace:\"nowrap\",textTransform:uppercase?\"uppercase\":\"none\",transform:`scale(${inverseTextRenderScale})`,transformOrigin:\"50% 50%\",textRendering:\"geometricPrecision\",WebkitFontSmoothing:\"antialiased\",MozOsxFontSmoothing:\"grayscale\"},children:text})},`${index}-${text}`);})})})})})]});}// --------------------------------------------------\n// Framer Property Controls\n// --------------------------------------------------\naddPropertyControls(TextRing3D,{texts:{type:ControlType.Array,title:\"Texts\",control:{type:ControlType.String,defaultValue:\"Text\",placeholder:\"Text\"},defaultValue:[\"COCO\",\"MARIA\",\"DAN\",\"MIKO\",\"VIGO\",\"COCO\",\"MARIA\",\"DAN\",\"MIKO\",\"VIGO\"],maxCount:50},ringSize:{type:ControlType.Number,title:\"Ring Size\",defaultValue:80,min:10,max:200,step:1,unit:\"%\",displayStepper:true},verticalFill:{type:ControlType.Number,title:\"Vertical Fill\",defaultValue:84,min:40,max:110,step:1,unit:\"%\",displayStepper:true,description:\"How much of the component height the ring should occupy.\"},perspectiveRatio:{type:ControlType.Number,title:\"Perspective\",defaultValue:1.4,min:.2,max:5,step:.05,displayStepper:true,description:\"Perspective relative to ring size.\"},tilt:{type:ControlType.Number,title:\"Tilt\",defaultValue:15,min:-90,max:90,step:1,unit:\"\\xb0\",displayStepper:true},depthTilt:{type:ControlType.Number,title:\"Depth Tilt\",defaultValue:0,min:-90,max:90,step:1,unit:\"\\xb0\",displayStepper:true,description:\"Forward / backward tilt.\"},rotations:{type:ControlType.Number,title:\"Rotations\",defaultValue:1,min:0,max:10,step:.1,displayStepper:true},startAngle:{type:ControlType.Number,title:\"Start\",defaultValue:0,min:-360,max:360,step:1,unit:\"\\xb0\",displayStepper:true},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"forward\",\"reverse\"],optionTitles:[\"Forward\",\"Reverse\"],defaultValue:\"forward\",displaySegmentedControl:true},smoothScroll:{type:ControlType.Boolean,title:\"Smooth Scrub\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},// --------------------------------------------------\n// Accessibility\n// --------------------------------------------------\nrespectReducedMotion:{type:ControlType.Boolean,title:\"Reduce Motion\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Respect the user's system reduced motion preference.\"},textScale:{type:ControlType.Number,title:\"Text Size\",defaultValue:7,min:1,max:20,step:.25,unit:\"%\",displayStepper:true,description:\"Maximum text size relative to the whole ring.\"},minGap:{type:ControlType.Number,title:\"Min Gap\",defaultValue:.5,min:0,max:4,step:.05,displayStepper:true,description:\"Relative gap. 1 = one text size.\"},font:{type:ControlType.Font,title:\"Typography\",controls:\"extended\",defaultFontType:\"sans-serif\",displayFontSize:false,displayTextAlignment:false,defaultValue:{variant:\"Semibold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\"},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},hideBackfaces:{type:ControlType.Boolean,title:\"Back Faces\",defaultValue:false,enabledTitle:\"Hide\",disabledTitle:\"Show\",description:\"Made by [Bestlooker](https://framer.link/CxdtHWB)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextRing3D\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth any-prefer-fixed\",\"framerIntrinsicWidth\":\"1000\",\"framerIntrinsicHeight\":\"700\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextRing3D.map"],"mappings":"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"}