{"version":3,"file":"DitherSpringType.GmyPFEAu.mjs","names":["React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","React.useRef","React.useState","React.useMemo","React.useCallback","__esmMin","init_npm_react_18_3_1","ie","window","oe","pe","init_ssg_sandbox_shims","ce","ne","c","J","init_jsx_runtime","_e","de","x","MotionConfigContext","motion","LayoutGroup","init_framer_motion_DhsWWWsN","withCSS","useLocaleInfo","useComponentViewport","cx","addFonts","useIsStaticRenderer","useVariantState","addPropertyControls","ControlType","init_framer_BWFVvmND","addPropertyOverrides","variants","nextOverrides","variant","overrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","Variants","humanReadableVariantMap","getProps","createLayoutDependency","Framerh4a7dWxv8","init_h4a7dWxv8","config","transition","value","contextValue","props","fallbackRef","refBinding","ref","defaultLayoutId","restProps","layoutDependency","scopingClassNames","layoutId","gestureHandlers","className","classNames","style","baseVariant","gestureVariant","varFallback","comma","input","depth","i","ch","cssColour","fallback","now","hit","colourCache","probe","scope","resolved","out","resolveTokenColor","element","toRGBA","colourProbe","colour","d","mixRGBA","m","a","b","t","particleTint","r","g","PARTICLE_TINT","clamp01","smoothstep","edge0","edge1","hashXY","h","y","fontString","font","size","applyLetterSpacing","spacing","typed","ctx","justifyFor","f","align","letterSpacingPx","widestLinePx","widest","line","lines","w","lineHeightPx","lh","fontSize","trimmed","n","measureGlyphMetrics","fallbackAscent","fallbackDescent","metrics","text","inkLayoutFromMetrics","inkHeight","frameH","lineBox","baseline","inkMid","measureInkLayout","parseFontSize","match","fittedFrameHeight","parsed","lineCount","coil","spiralOn","clamp","finiteOr","amplitude","easeProgress","curve","qualityCap","q","quality","requested","width","DitherSpringType","DEFAULT_INSET","isStaticRenderer","wrapperRef","backCanvasRef","frontCanvasRef","dottedCanvasRef","sizeRef","particlesRef","visibilityRef","reducedMotionRef","rafRef","phaseRef","lastTsRef","geomKeyRef","appearStartRef","appearProgressRef","measuredBox","setMeasuredBox","poolRef","backRef","frontRef","safeProps","turnsSafe","turns","amplitudeSafe","spreadSafe","spread","thicknessSafe","thickness","particleCountSafe","particleCount","speedSafe","spinSpeed","particleSizeSafe","particleSize","mixSafe","mix","perspectiveSafe","perspective","textDepthSafe","textDepth","appearDelaySafe","appearDelay","appearDurationSafe","appearDuration","rayLengthSafe","rayLength","rayOpacitySafe","rayOpacity","easingRaw","appearEasing","qRaw","scaleFromSafe","scaleFrom","maxTextScaleSafe","maxTextScale","edgeFadeSafe","edgeFade","fadeAxisRaw","fadeAxis","particleColour","particleA","particleSizePx","appear","spiral","dotted","fitWidth","draw","backCanvas","frontCanvas","backCtx","frontCtx","height","dpr","coilScale","spanWidth","amplitudePx","tubeRadius","maxPoints","geomKey","forceRebuild","newParticles","tBase","jitterT","hash01","phase","z","ringAngle","ringRadius","oy","oz","jitter","useB","cy","rotationX","cosX","sinX","ampScale","perspStrength","focal","baseSize","fadeAmt","fadeHoriz","fadeVert","appearOn","rayLen","appearProgress","entering","head","pool","liveCount","pts","p","reveal","glow","behind","settle","y1","z1","denom","persp","sx","sy","edge","nx","ny","sizePx","slot","textPlaneZ","back","front","item","byDepth","drawPass","items","x0","y0","renderNow","rebuild","stopLoop","tickRef","ts","dt","since","linear","entranceRunning","syncScheduler","entrancePending","skip","root","updateSize","cap","nextW","nextH","canvas","prev","resizeObserver","media","apply","observer","inView","entries","fadeMask","amount","stop","end","axis","horizontal","vertical","insetFrac","inset","hovered","setHovered","hoverRef","repaintRef","underline","hoverDots","host","on","off","copy","kept","row","stackWords","words","fontTick","setFontTick","alive","bump","scaledFont","base","from","unitPx","room","at100","fit","wrap","context","ink","dots","baseInk","hoverInk","inkMix","lastPaint","reduceMotion","copyLines","shouldAssemble","maxRadius","driftDistance","field","frame","running","resize","ratio","build","offCtx","dottedInk","blockTop","pixels","pitch","dotSize","columns","rows","threshold","weight","column","alpha","coverage","spreadN","paint","progress","seconds","time","idle","shimmer","target","dot","wave","radius","offset","ro","loop","layerStyle","fitHeight","incomingHeight","usesFitHeight","_height","_minHeight","restStyle","textColor","splitLines","underlineWeight","underlineColor","init_DitherSpringType","max","min","v","s"],"sources":["https:/framerusercontent.com/modules/mUHv7FsDSdaCEHvzlfjg/xHOVC9P36lnBhDxUUnsl/h4a7dWxv8.js","https:/framerusercontent.com/modules/vhT5t49OHZFa8AWEFIIV/udX251UMHLo6rs6mS1wk/DitherSpringType.js"],"sourcesContent":["// Generated by Framer (9805f18)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"MAsJj1Ki9\",\"ZTUvY15qg\"];const serializationHash=\"framer-9q408\";const variantClassNames={MAsJj1Ki9:\"framer-v-wjxkjt\",ZTUvY15qg:\"framer-v-y4bll1\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Desktop:\"MAsJj1Ki9\",Tablet:\"ZTUvY15qg\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"MAsJj1Ki9\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"MAsJj1Ki9\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-wjxkjt\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"MAsJj1Ki9\",ref:refBinding,style:{...style},...addPropertyOverrides({ZTUvY15qg:{\"data-framer-name\":\"Tablet\"}},baseVariant,gestureVariant)})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-9q408.framer-1nehnzv, .framer-9q408 .framer-1nehnzv { display: block; }\",\".framer-9q408.framer-wjxkjt { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 10px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 48px; }\",\".framer-9q408.framer-v-y4bll1.framer-wjxkjt { width: 20px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 10\n * @framerIntrinsicWidth 48\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"ZTUvY15qg\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerh4a7dWxv8=withCSS(Component,css,\"framer-9q408\");export default Framerh4a7dWxv8;Framerh4a7dWxv8.displayName=\"Page wrapper padding\";Framerh4a7dWxv8.defaultProps={height:10,width:48};addPropertyControls(Framerh4a7dWxv8,{variant:{options:[\"MAsJj1Ki9\",\"ZTUvY15qg\"],optionTitles:[\"Desktop\",\"Tablet\"],title:\"Variant\",type:ControlType.Enum}});addFonts(Framerh4a7dWxv8,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerh4a7dWxv8\",\"slots\":[],\"annotations\":{\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"48\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicHeight\":\"10\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ZTUvY15qg\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./h4a7dWxv8.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const clamp=(v,min,max)=>Math.min(max,Math.max(min,v));const hash01=n=>{const x=Math.sin(n*127.1+311.7)*43758.5453123;return x-Math.floor(x);};const byDepth=(a,b)=>a.z-b.z;// Canvas 2D can't read CSS variables, so a colour style (`var(--token-…)`,\n// often with a fallback and a name comment attached) has to be turned into a\n// real colour first. The browser does it: a hidden probe inside the component\n// takes the value as its text colour, and the computed colour comes back.\nconst colourCache=new Map;function varFallback(input){const comma=input.indexOf(\",\");if(comma<0)return\"\";let depth=0;for(let i=comma+1;i<input.length;i++){const ch=input[i];if(ch===\"(\")depth++;else if(ch===\")\"){if(depth===0)return input.slice(comma+1,i).trim();depth--;}}return\"\";}function cssColour(value,scope,fallback){const input=String(value??\"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g,\"\").trim();if(!input)return fallback;if(!/var\\(/i.test(input))return input;if(typeof document===\"undefined\")return varFallback(input)||fallback;const now=Date.now();const hit=colourCache.get(input);if(hit&&now-hit.at<1e3)return hit.value;const probe=document.createElement(\"span\");probe.style.color=input;if(!probe.style.color)return varFallback(input)||fallback;probe.style.display=\"none\";const host=scope&&scope.isConnected?scope:document.body;host.appendChild(probe);const resolved=getComputedStyle(probe).color;probe.remove();const out=resolved||varFallback(input)||fallback;colourCache.set(input,{at:now,value:out});return out;}function resolveTokenColor(value,element,fallback){return cssColour(value,element,fallback);}let colourProbe=null;/** Any CSS colour to [r, g, b, a] (0-255, alpha 0-1). */function toRGBA(colour){if(!colourProbe){const probe=document.createElement(\"canvas\");probe.width=probe.height=1;colourProbe=probe.getContext(\"2d\",{willReadFrequently:true});}if(!colourProbe)return[18,17,16,1];colourProbe.clearRect(0,0,1,1);colourProbe.fillStyle=colour;colourProbe.fillRect(0,0,1,1);const d=colourProbe.getImageData(0,0,1,1).data;return[d[0],d[1],d[2],d[3]/255];}function mixRGBA(a,b,t){const m=i=>a[i]+(b[i]-a[i])*t;return`rgba(${Math.round(m(0))}, ${Math.round(m(1))}, ${Math.round(m(2))}, ${m(3)})`;}// Particle B is a light tint of Particle A, so one colour (ideally a colour\n// style) drives the whole spiral.\nconst PARTICLE_TINT=.58;function particleTint(colour){if(typeof document===\"undefined\")return colour;const[r,g,b,a]=toRGBA(colour);return mixRGBA([r,g,b,a],[255,255,255,a],PARTICLE_TINT);}function clamp01(value){return value<0?0:value>1?1:value;}function smoothstep(edge0,edge1,x){const t=clamp01((x-edge0)/Math.max(1e-6,edge1-edge0));return t*t*(3-2*t);}function hashXY(x,y){let h=x*374761393+y*668265263|0;h=(h^h>>>13)*1274126177|0;return((h^h>>>16)>>>0)/4294967295;}function fontString(font,size){const style=font?.fontStyle||\"normal\";const weight=font?.fontWeight||700;const family=font?.fontFamily||'\"Inter Display\", Inter, sans-serif';return`${style} ${weight} ${size}px ${family}`;}function applyLetterSpacing(ctx,font){const spacing=font?.letterSpacing;if(spacing==null)return;const typed=ctx;if(\"letterSpacing\"in typed)typed.letterSpacing=String(spacing);}// Default horizontal breathing room either side of the type, in percent.\nconst DEFAULT_INSET=4;function justifyFor(font){const f=font??{};const align=String(f.textAlign??f.textAlignment??\"center\");if(align===\"left\"||align===\"start\")return\"flex-start\";if(align===\"right\"||align===\"end\")return\"flex-end\";return\"center\";}function letterSpacingPx(value,size){if(typeof value===\"number\"&&Number.isFinite(value))return value;if(typeof value!==\"string\")return 0;const n=parseFloat(value);if(!Number.isFinite(n))return 0;return value.trim().endsWith(\"em\")?n*size:n;}/**\n * Width of the widest line at `size`. Letter-spacing is added by hand rather\n * than through ctx.letterSpacing so em spacing scales with the size in every\n * browser.\n */function widestLinePx(lines,font,size){if(typeof document===\"undefined\")return 0;const ctx=document.createElement(\"canvas\").getContext(\"2d\");if(!ctx)return 0;ctx.font=fontString(font,size);const spacing=letterSpacingPx(font?.letterSpacing,size);let widest=0;for(const line of lines){const w=ctx.measureText(line||\" \").width+spacing*Array.from(line).length;if(w>widest)widest=w;}return widest;}function parsePx(value){if(typeof value===\"number\"&&Number.isFinite(value))return value;if(typeof value===\"string\"){const n=parseFloat(value);if(Number.isFinite(n))return n;}return 0;}function lineHeightPx(font,fontSize){const lh=font?.lineHeight;if(typeof lh===\"number\"&&Number.isFinite(lh)){return lh>0&&lh<5?lh*fontSize:lh;}if(typeof lh===\"string\"){const trimmed=lh.trim();if(trimmed.endsWith(\"em\"))return parseFloat(trimmed)*fontSize;if(trimmed.endsWith(\"px\"))return parseFloat(trimmed);const n=parseFloat(trimmed);if(Number.isFinite(n))return n>0&&n<5?n*fontSize:n;}return fontSize;}function measureGlyphMetrics(text,font,fontSize){const fallbackAscent=fontSize*.73;const fallbackDescent=fontSize*.22;const fallback={inkAscent:fallbackAscent,inkDescent:fallbackDescent,fontAscent:fontSize*.92,fontDescent:fontSize*.2,fontSize};if(typeof document===\"undefined\")return fallback;const canvas=document.createElement(\"canvas\");const ctx=canvas.getContext(\"2d\");if(!ctx)return fallback;ctx.font=fontString(font,fontSize);applyLetterSpacing(ctx,font);const metrics=ctx.measureText(text||\" \");return{inkAscent:metrics.actualBoundingBoxAscent||fallbackAscent,inkDescent:metrics.actualBoundingBoxDescent||fallbackDescent,fontAscent:metrics.fontBoundingBoxAscent||fallback.fontAscent,fontDescent:metrics.fontBoundingBoxDescent||fallback.fontDescent,fontSize};}function inkLayoutFromMetrics(metrics,font,frameH){const inkHeight=Math.max(8,metrics.inkAscent+metrics.inkDescent);if(frameH<2){return{inkHeight,inkMid:0,shiftY:0,ascent:metrics.inkAscent,descent:metrics.inkDescent};}const lineBox=Math.max(1,lineHeightPx(font,metrics.fontSize));const lineTop=(frameH-lineBox)/2;const halfLeading=(lineBox-(metrics.fontAscent+metrics.fontDescent))/2;const baseline=lineTop+halfLeading+metrics.fontAscent;const inkTop=baseline-metrics.inkAscent;const inkBottom=baseline+metrics.inkDescent;const inkMid=(inkTop+inkBottom)/2;return{inkHeight,inkMid,shiftY:frameH*.5-inkMid,ascent:metrics.inkAscent,descent:metrics.inkDescent};}function measureInkLayout(text,font,fontSize,frameH){return inkLayoutFromMetrics(measureGlyphMetrics(text,font,fontSize),font,frameH);}/**\n * Splits a Font control's size into value + unit. The control hands back either\n * a number or a string like \"112px\", and rem has to survive the round trip so a\n * buyer working in rem does not silently get pixels back.\n */function parseFontSize(value){if(typeof value===\"number\"&&Number.isFinite(value)){return{value,unit:\"px\"};}if(typeof value===\"string\"){const match=value.trim().match(/^(-?[\\d.]+)(px|rem|em)?$/i);if(match){const n=Number(match[1]);if(Number.isFinite(n)){return{value:n,unit:(match[2]||\"px\").toLowerCase()};}}}return null;}function fittedFrameHeight(font,spiralOn,amplitude,lineCount=1){const parsed=parseFontSize(font?.fontSize);const size=parsed?parsed.value:112;const line=Math.max(size,lineHeightPx(font,size))*Math.max(1,lineCount);const coil=spiralOn?size*clamp(finiteOr(amplitude,.32),.05,.6)*1.15:size*.08;return Math.max(48,Math.ceil(line+coil*2));}/**\n * Entrance easing. Linear is a constant-velocity ray that starts and stops\n * abruptly; the others let it accelerate away and coast to a stop, which is\n * what makes the spring look like it is being drawn rather than scanned.\n */function easeProgress(t,curve){const x=clamp(t,0,1);switch(curve){case\"linear\":return x;case\"out\":return 1-Math.pow(1-x,3);case\"inOut\":return x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2;default:// \"smooth\" — smootherstep, gentle at both ends with no hard corner\nreturn x*x*x*(x*(x*6-15)+10);}}const finiteOr=(value,fallback)=>typeof value===\"number\"&&Number.isFinite(value)?value:fallback;const particleSizePx=size=>{const s=clamp(Math.round(size),1,4);return s===4?5:s;};function qualityCap(quality,width,requested){const q=String(quality||\"high\").toLowerCase();if(q===\"high\")return requested;if(q===\"low\")return Math.min(requested,1600);if(width<480)return Math.min(requested,5e3);if(width<720)return Math.min(requested,11e3);return Math.min(requested,18e3);}/**\n * DitherSpringType\n *\n * A sharp field of dithered particles forming a thick, spinning spiral tube\n * that wraps a headline in 3D. The tube is split at the text's depth plane and\n * painted onto two canvases — the half behind the text and the half in front —\n * with the type sandwiched between them, so the spring genuinely passes behind\n * the letterforms and back out in front of them as it turns.\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicHeight 280\n */export default function DitherSpringType(props){const{text,font,textColor,dotted=false,dots=\"#121110\",dotSize=2.6,spacing=9,weight=.5,shimmer=.18,spiral=true,textDepth,edgeFade,fadeAxis,appear,appearDelay,appearDuration,rayLength,rayOpacity,appearEasing,scaleFrom,maxTextScale,fitWidth=false,stackWords=false,splitLines=false,inset=DEFAULT_INSET,underline=false,underlineColor,underlineWeight=4,hoverDots,particleA,particleB,turns,amplitude,spread,thickness,particleCount,particleSize,mix,spinSpeed,perspective,quality,style}=props;const isStaticRenderer=useIsStaticRenderer();const wrapperRef=React.useRef(null);const backCanvasRef=React.useRef(null);const frontCanvasRef=React.useRef(null);const dottedCanvasRef=React.useRef(null);const sizeRef=React.useRef({width:0,height:0,dpr:1});const particlesRef=React.useRef([]);const visibilityRef=React.useRef(true);const reducedMotionRef=React.useRef(false);const rafRef=React.useRef(null);const phaseRef=React.useRef(.35);const lastTsRef=React.useRef(null);const geomKeyRef=React.useRef(\"\");// Entrance clock: starts the first time the component scrolls into view.\nconst appearStartRef=React.useRef(null);const appearProgressRef=React.useRef(0);// Reused every frame. Rebuilding these per frame meant allocating one\n// object per particle at 60fps, and the resulting GC churn was visible as\n// stutter during the entrance.\nconst[measuredBox,setMeasuredBox]=React.useState({width:0,height:0});const poolRef=React.useRef([]);const backRef=React.useRef([]);const frontRef=React.useRef([]);const safeProps=React.useMemo(()=>{const turnsSafe=finiteOr(turns,6);const amplitudeSafe=finiteOr(amplitude,.32);const spreadSafe=finiteOr(spread,1);const thicknessSafe=finiteOr(thickness,.34);const particleCountSafe=finiteOr(particleCount,3200);const speedSafe=finiteOr(spinSpeed,.33);const particleSizeSafe=finiteOr(particleSize,1);const mixSafe=finiteOr(mix,.32);const perspectiveSafe=finiteOr(perspective,2.9);const textDepthSafe=finiteOr(textDepth,0);const appearDelaySafe=finiteOr(appearDelay,0);const appearDurationSafe=finiteOr(appearDuration,2.6);const rayLengthSafe=finiteOr(rayLength,.12);const rayOpacitySafe=finiteOr(rayOpacity,1);const easingRaw=String(appearEasing||\"smooth\");const qRaw=String(quality||\"high\").toLowerCase();const scaleFromSafe=finiteOr(scaleFrom,1200);const maxTextScaleSafe=finiteOr(maxTextScale,1.4);const edgeFadeSafe=finiteOr(edgeFade,.12);const fadeAxisRaw=String(fadeAxis||\"horizontal\").toLowerCase();const particleColour=cssColour(particleA,null,\"#BF2222\");return{particleA:particleColour,particleB:particleTint(particleColour),turns:clamp(turnsSafe,2,16),amplitude:clamp(amplitudeSafe,.05,.6),spread:clamp(spreadSafe,.3,2),thickness:clamp(thicknessSafe,.05,.6),particleCount:clamp(Math.round(particleCountSafe),200,2e4),speed:clamp(speedSafe,0,1),ditherSize:particleSizePx(particleSizeSafe),mix:clamp(mixSafe,0,1),perspective:clamp(perspectiveSafe,.8,4),textDepth:clamp(textDepthSafe,-1,1),appear:appear!==false,appearDelay:clamp(appearDelaySafe,0,10),appearDuration:clamp(appearDurationSafe,.1,10),rayLength:clamp(rayLengthSafe,.01,.4),rayOpacity:clamp(rayOpacitySafe,0,1),appearEasing:easingRaw===\"linear\"||easingRaw===\"out\"||easingRaw===\"inOut\"?easingRaw:\"smooth\",quality:qRaw===\"low\"?\"low\":qRaw===\"auto\"?\"auto\":\"high\",scaleFrom:clamp(scaleFromSafe,320,3840),maxTextScale:clamp(maxTextScaleSafe,1,3),edgeFade:clamp(edgeFadeSafe,0,.85),fadeAxis:fadeAxisRaw===\"vertical\"||fadeAxisRaw===\"both\"?fadeAxisRaw:\"horizontal\",spiral:spiral!==false,dotted:dotted===true,fitWidth:fitWidth===true};},[particleA,turns,amplitude,spread,thickness,particleCount,spinSpeed,particleSize,mix,perspective,textDepth,appear,appearDelay,appearDuration,rayLength,rayOpacity,appearEasing,quality,scaleFrom,maxTextScale,edgeFade,fadeAxis,spiral,dotted,fitWidth]);const draw=React.useCallback(forceRebuild=>{const backCanvas=backCanvasRef.current;const frontCanvas=frontCanvasRef.current;if(!backCanvas||!frontCanvas)return;const backCtx=backCanvas.getContext(\"2d\");const frontCtx=frontCanvas.getContext(\"2d\");if(!backCtx||!frontCtx)return;const{width,height,dpr}=sizeRef.current;if(width<=0||height<=0)return;for(const ctx of[backCtx,frontCtx]){ctx.setTransform(dpr,0,0,dpr,0,0);ctx.clearRect(0,0,width,height);ctx.imageSmoothingEnabled=false;}if(!safeProps.spiral)return;// With Fit Width the frame height already tracks the type, so the\n// coil follows it without a second width-based boost.\nconst coilScale=safeProps.fitWidth||safeProps.maxTextScale<=1||width<=safeProps.scaleFrom?1:Math.min(width/safeProps.scaleFrom,safeProps.maxTextScale);const spanWidth=width*safeProps.spread*coilScale;const amplitudePx=clamp(height*safeProps.amplitude*coilScale,Math.min(8,height*.06),height*.62*coilScale);const tubeRadius=amplitudePx*safeProps.thickness;const maxPoints=qualityCap(safeProps.quality,width,safeProps.particleCount);const geomKey=[safeProps.turns.toFixed(3),amplitudePx.toFixed(3),tubeRadius.toFixed(3),spanWidth.toFixed(2),maxPoints,safeProps.ditherSize,safeProps.mix.toFixed(3),width.toFixed(1),height.toFixed(1),coilScale.toFixed(3)].join(\"|\");if(forceRebuild||geomKey!==geomKeyRef.current){geomKeyRef.current=geomKey;const newParticles=[];for(let i=0;i<maxPoints;i++){const tBase=i/Math.max(1,maxPoints-1);const jitterT=(hash01(i*17.31+2.9)-.5)*(1/Math.max(1,maxPoints))*1.4;const t=clamp(tBase+jitterT,0,1);const phase=t*safeProps.turns*Math.PI*2;const x=(t-.5)*spanWidth;const y=amplitudePx*Math.cos(phase);const z=amplitudePx*Math.sin(phase);// Fill the full tube cross-section (not just its shell)\n// so a thick spiral reads as solid, even with few points.\nconst ringAngle=hash01(i*41.7)*Math.PI*2;const ringRadius=tubeRadius*Math.sqrt(hash01(i*7.13+3.4));const oy=Math.cos(ringAngle)*ringRadius;const oz=Math.sin(ringAngle)*ringRadius;const jitter=Math.max(.15,safeProps.ditherSize*.18);const useB=hash01(i*29.1+19.7)<safeProps.mix;newParticles.push({x:x+(hash01(i*2.17)-.5)*safeProps.ditherSize*.12,y:y+oy,z:z+oz,t,useB,jitterX:(hash01(i*3.123)-.5)*jitter,jitterY:(hash01(i*5.987)-.5)*jitter,sizeMul:.95+hash01(i*11.3)*.12});}particlesRef.current=newParticles;}const cx=width*.5;const cy=height*.5;const rotationX=phaseRef.current;const cosX=Math.cos(rotationX);const sinX=Math.sin(rotationX);const ampScale=1+Math.sin(phaseRef.current*.85)*.03;const perspStrength=safeProps.perspective;const focal=Math.min(width,height)*(.32+perspStrength*.72);const baseSize=Math.max(1,safeProps.ditherSize*coilScale);const fadeAmt=safeProps.edgeFade;const fadeHoriz=fadeAmt>.001&&safeProps.fadeAxis!==\"vertical\";const fadeVert=fadeAmt>.001&&(safeProps.fadeAxis===\"vertical\"||safeProps.fadeAxis===\"both\");// Entrance: a single ray runs along the spiral path itself. Because\n// t maps to both the x position and the coil angle, advancing it\n// corkscrews the ray through the helix rather than sweeping a flat\n// band across the frame. Nothing exists ahead of it; right behind it\n// the tube blooms out of its own axis, so the ray draws the spring.\nconst appearOn=safeProps.appear;const rayLen=safeProps.rayLength;const appearProgress=appearOn?appearProgressRef.current:1;const entering=appearOn&&appearProgress<1;// overshoot by one ray length so the far end finishes settling\nconst head=appearProgress*(1+rayLen);const pool=poolRef.current;let liveCount=0;const pts=particlesRef.current;for(let i=0;i<pts.length;i++){const p=pts[i];let reveal=1;let glow=0;if(entering){const behind=head-p.t;if(behind<0)continue;// the ray has not arrived yet\nconst settle=clamp(behind/rayLen,0,1);reveal=settle*settle*(3-2*settle)// smoothstep\n;// brightest exactly at the head, gone by the end of the ray\nconst g=1-settle;glow=g*g*(3-2*g);}const x=p.x;const y=p.y*ampScale*reveal;const z=p.z*ampScale*reveal;const y1=y*cosX-z*sinX;const z1=y*sinX+z*cosX;const denom=focal+z1;if(denom<=8)continue;const persp=focal/denom;const sx=cx+(x+p.jitterX)*persp;const sy=cy+(y1+p.jitterY)*persp;let edge=1;if(fadeHoriz){const nx=sx/Math.max(1,width);if(nx<fadeAmt)edge*=smoothstep(0,fadeAmt,nx);else if(nx>1-fadeAmt)edge*=smoothstep(0,fadeAmt,1-nx);}if(fadeVert){const ny=sy/Math.max(1,height);if(ny<fadeAmt)edge*=smoothstep(0,fadeAmt,ny);else if(ny>1-fadeAmt)edge*=smoothstep(0,fadeAmt,1-ny);}if(edge<=.01)continue;// Uniform, flat appearance — no near/far shading.\n// The ray head is the one exception: it burns slightly brighter\n// and fatter so it reads as a travelling point of light.\nconst sizePx=Math.max(1,Math.round(baseSize*p.sizeMul*(1+glow*.9)));let slot=pool[liveCount];if(slot===undefined){slot={sx:0,sy:0,z:0,alpha:1,color:\"\",size:1};pool[liveCount]=slot;}slot.sx=sx;slot.sy=sy;slot.z=z1;slot.alpha=clamp((reveal+glow*safeProps.rayOpacity)*edge,0,1);slot.color=p.useB?safeProps.particleB:safeProps.particleA;slot.size=sizePx;liveCount++;}// The text sits on its own depth plane. Everything further away is\n// painted under it, everything nearer over it, so the tube reads as\n// genuinely wrapping the letterforms rather than sitting on top.\nconst textPlaneZ=safeProps.textDepth*amplitudePx;const back=backRef.current;const front=frontRef.current;back.length=0;front.length=0;for(let i=0;i<liveCount;i++){const item=pool[i];if(item.z<textPlaneZ)back.push(item);else front.push(item);}back.sort(byDepth);front.sort(byDepth);const drawPass=(ctx,items)=>{for(let i=0;i<items.length;i++){const p=items[i];const sizePx=p.size;const x0=Math.round(p.sx-sizePx*.5);const y0=Math.round(p.sy-sizePx*.5);ctx.globalAlpha=p.alpha;ctx.fillStyle=p.color;ctx.fillRect(x0,y0,sizePx,sizePx);}ctx.globalAlpha=1;};drawPass(backCtx,back);drawPass(frontCtx,front);},[safeProps]);const renderNow=React.useCallback(rebuild=>{if(!backCanvasRef.current||!frontCanvasRef.current)return;const{width,height}=sizeRef.current;if(width<=0||height<=0)return;draw(rebuild);},[draw]);const stopLoop=React.useCallback(()=>{if(typeof window===\"undefined\")return;if(rafRef.current!==null){cancelAnimationFrame(rafRef.current);rafRef.current=null;}lastTsRef.current=null;},[]);const tickRef=React.useRef(()=>undefined);tickRef.current=ts=>{if(lastTsRef.current===null)lastTsRef.current=ts;const dt=Math.min(.05,(ts-lastTsRef.current)/1e3);lastTsRef.current=ts;phaseRef.current+=dt*(safeProps.speed*.85);// Advance the entrance clock, which only starts once in view.\nif(safeProps.appear&&appearStartRef.current!==null){const since=(ts-appearStartRef.current)/1e3;const linear=clamp((since-safeProps.appearDelay)/safeProps.appearDuration,0,1);appearProgressRef.current=easeProgress(linear,safeProps.appearEasing);}renderNow(false);const entranceRunning=safeProps.appear&&appearProgressRef.current<1;const stillAnimate=visibilityRef.current&&!reducedMotionRef.current&&(safeProps.spiral&&safeProps.speed>0||entranceRunning)&&!isStaticRenderer;if(!stillAnimate){stopLoop();return;}rafRef.current=window.requestAnimationFrame(t=>tickRef.current(t));};const syncScheduler=React.useCallback(()=>{if(typeof window===\"undefined\")return;const entrancePending=safeProps.appear&&appearProgressRef.current<1;const shouldAnimate=visibilityRef.current&&!reducedMotionRef.current&&(safeProps.spiral&&safeProps.speed>0||entrancePending)&&!isStaticRenderer;if(shouldAnimate){if(rafRef.current===null){lastTsRef.current=null;rafRef.current=window.requestAnimationFrame(t=>tickRef.current(t));}}else{stopLoop();renderNow(false);}},[isStaticRenderer,renderNow,safeProps.speed,safeProps.appear,safeProps.spiral,stopLoop]);// On the Framer canvas, in export, or under reduced-motion the entrance has\n// no chance to play — show the finished state rather than an empty frame.\n// Changing any entrance setting re-arms it, so tweaking a value replays it.\nReact.useEffect(()=>{const skip=!safeProps.appear||isStaticRenderer||reducedMotionRef.current;appearStartRef.current=null;appearProgressRef.current=skip?1:0;renderNow(false);syncScheduler();},[safeProps.appear,safeProps.appearDelay,safeProps.appearDuration,safeProps.rayLength,safeProps.rayOpacity,safeProps.appearEasing,isStaticRenderer,renderNow,syncScheduler]);React.useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\"){return;}const root=wrapperRef.current;const backCanvas=backCanvasRef.current;const frontCanvas=frontCanvasRef.current;if(!root||!backCanvas||!frontCanvas)return;const updateSize=()=>{// Layout size, not getBoundingClientRect: Framer's Appear scale\n// would otherwise size the canvas at 0.5x and leave it soft after\n// the spring settles back to 1.\nconst width=Math.max(1,root.offsetWidth||root.clientWidth||1);const height=Math.max(1,root.offsetHeight||root.clientHeight||1);const cap=safeProps.quality===\"low\"?1.25:2;const dpr=Math.min(cap,window.devicePixelRatio||1);const nextW=Math.max(1,Math.round(width*dpr));const nextH=Math.max(1,Math.round(height*dpr));for(const canvas of[backCanvas,frontCanvas]){if(canvas.width!==nextW||canvas.height!==nextH){canvas.width=nextW;canvas.height=nextH;}}sizeRef.current={width,height,dpr};setMeasuredBox(prev=>prev.width===width&&prev.height===height?prev:{width,height});renderNow(true);};updateSize();const resizeObserver=new ResizeObserver(updateSize);resizeObserver.observe(root);window.addEventListener(\"resize\",updateSize);return()=>{resizeObserver.disconnect();window.removeEventListener(\"resize\",updateSize);};},[renderNow,safeProps.quality]);React.useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\"){return;}const media=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const apply=()=>{reducedMotionRef.current=media.matches;// Reduced motion resolves after the entrance is armed on mount, so\n// settle it here too rather than sweeping in anyway.\nif(media.matches)appearProgressRef.current=1;renderNow(true);syncScheduler();};apply();if(typeof media.addEventListener===\"function\"){media.addEventListener(\"change\",apply);return()=>media.removeEventListener(\"change\",apply);}media.addListener(apply);return()=>media.removeListener(apply);},[renderNow,syncScheduler]);React.useEffect(()=>{if(typeof window===\"undefined\")return;const root=wrapperRef.current;if(!root)return;const observer=new IntersectionObserver(entries=>{const inView=entries[0]?.isIntersecting??true;visibilityRef.current=inView;// The entrance plays the first time it is actually seen, so it\n// is never spent while the section is still below the fold.\nif(inView&&appearStartRef.current===null){appearStartRef.current=typeof performance!==\"undefined\"?performance.now():Date.now();}renderNow(false);syncScheduler();},{threshold:.01});observer.observe(root);return()=>observer.disconnect();},[renderNow,syncScheduler]);React.useEffect(()=>{if(typeof window===\"undefined\")return;renderNow(true);syncScheduler();return()=>stopLoop();},[renderNow,syncScheduler,stopLoop,safeProps.turns,safeProps.amplitude,safeProps.spread,safeProps.thickness,safeProps.particleCount,safeProps.ditherSize,safeProps.mix,safeProps.particleA,safeProps.particleB,safeProps.perspective,safeProps.textDepth,safeProps.quality,safeProps.speed]);// The fade is applied to the particle canvases only — never to the text\n// layer between them — so the tube dissolves at the edges instead of being\n// cut off, while the headline stays fully opaque.\nconst fadeMask=React.useMemo(()=>{const amount=clamp(finiteOr(edgeFade,0),0,.85);if(amount<=.001)return undefined;const stop=(amount*100).toFixed(2);const end=(100-amount*100).toFixed(2);const axis=String(fadeAxis||\"horizontal\").toLowerCase();const horizontal=`linear-gradient(to right, transparent 0%, #000 ${stop}%, #000 ${end}%, transparent 100%)`;const vertical=`linear-gradient(to bottom, transparent 0%, #000 ${stop}%, #000 ${end}%, transparent 100%)`;if(axis===\"vertical\")return{image:vertical,composite:undefined};if(axis===\"both\"){return{image:`${horizontal}, ${vertical}`,composite:\"intersect\"};}return{image:horizontal,composite:undefined};},[edgeFade,fadeAxis]);const insetFrac=clamp(finiteOr(inset,DEFAULT_INSET),0,20)/100;// Underline and Hover Dots listen to the nearest link (or parent) around\n// the component, since the component itself ignores the pointer.\nconst[hovered,setHovered]=React.useState(false);const hoverRef=React.useRef(false);const repaintRef=React.useRef(null);React.useEffect(()=>{hoverRef.current=hovered;repaintRef.current?.();},[hovered]);React.useEffect(()=>{if(!underline&&!hoverDots)return;const root=wrapperRef.current;const host=(root?.closest(\"a\"))??root?.parentElement;if(!host)return;const on=()=>setHovered(true);const off=()=>setHovered(false);host.addEventListener(\"mouseenter\",on);host.addEventListener(\"mouseleave\",off);host.addEventListener(\"focusin\",on);host.addEventListener(\"focusout\",off);return()=>{host.removeEventListener(\"mouseenter\",on);host.removeEventListener(\"mouseleave\",off);host.removeEventListener(\"focusin\",on);host.removeEventListener(\"focusout\",off);};},[underline,hoverDots]);const lines=React.useMemo(()=>{const copy=String(text??\"\");// A typed line break always starts a new line.\nif(/\\r?\\n/.test(copy)){const rows=copy.split(/\\r?\\n/).map(row=>row.trim());const kept=rows.filter(Boolean);return kept.length?kept:[copy];}if(!stackWords)return[copy];// Split on ordinary spaces only, so a non-breaking space keeps words\n// together on one line (e.g. \"get\\u00A0in\" / \"touch\").\nconst words=copy.trim().split(/[ \\t\\r\\n]+/).filter(Boolean);return words.length?words:[copy];},[text,stackWords]);// Web fonts usually land after the first measurement; re-fit once they do.\nconst[fontTick,setFontTick]=React.useState(0);React.useEffect(()=>{if(typeof document===\"undefined\"||!document.fonts)return;let alive=true;const bump=()=>{if(alive)setFontTick(n=>n+1);};document.fonts.ready.then(bump).catch(()=>{});document.fonts.addEventListener?.(\"loadingdone\",bump);return()=>{alive=false;document.fonts.removeEventListener?.(\"loadingdone\",bump);};},[]);// Above `scaleFrom` the headline grows in proportion to the component, so a\n// 1440 screen gets type 1.2x the size a 1200 screen gets, capped by\n// `maxTextScale`. A cap of 1 leaves the Font control's size untouched.\n// Fit Width instead sizes the widest line to the frame at every width.\n// Either way the type never grows past the frame, so it cannot wrap into\n// the spiral or the content below on narrow screens.\nconst scaledFont=React.useMemo(()=>{const base=font??{};const parsed=parseFontSize(base.fontSize);if(!parsed)return base// unrecognised unit — leave it alone\n;const from=clamp(finiteOr(scaleFrom,1200),320,3840);const cap=clamp(finiteOr(maxTextScale,1.4),1,3);let size=parsed.value;if(cap>1&&measuredBox.width>from){size*=Math.min(measuredBox.width/from,cap);}const unitPx=parsed.unit===\"px\"?1:parsed.unit===\"rem\"&&typeof document!==\"undefined\"?parseFloat(getComputedStyle(document.documentElement).fontSize)||16:0;if(unitPx>0&&measuredBox.width>0){const room=measuredBox.width*(1-insetFrac*2)*.98;const at100=widestLinePx(lines,base,100);if(at100>0){const fit=room/at100*100/unitPx;size=fitWidth?fit:Math.min(size,fit);}}if(size===parsed.value)return base;return{...base,fontSize:Number(size.toFixed(2))+parsed.unit};},[font,scaleFrom,maxTextScale,measuredBox.width,lines,fitWidth,fontTick,insetFrac]);React.useEffect(()=>{if(typeof window===\"undefined\"||!dotted)return;const canvas=dottedCanvasRef.current;const wrap=wrapperRef.current;if(!canvas||!wrap)return;const context=canvas.getContext(\"2d\");if(!context)return;const ink=resolveTokenColor(dots,wrap,\"#121110\");const baseInk=toRGBA(ink);const hoverInk=hoverDots?toRGBA(resolveTokenColor(hoverDots,wrap,ink)):baseInk;let inkMix=hoverRef.current&&hoverDots?1:0;let lastPaint=0;const reduceMotion=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const copyLines=lines;const parsed=parseFontSize(scaledFont.fontSize);const fontSize=parsed?parsed.value:112;const shouldAssemble=appear&&!reduceMotion&&!isStaticRenderer;let width=0;let height=0;let maxRadius=1;let driftDistance=0;let field=[];let frame=0;let running=true;function resize(){const w=Math.max(8,wrap.clientWidth||wrap.offsetWidth||1);const h=Math.max(8,wrap.clientHeight||wrap.offsetHeight||1);const ratio=Math.min(window.devicePixelRatio||1,2);width=Math.round(w);height=Math.round(h);canvas.width=Math.round(width*ratio);canvas.height=Math.round(height*ratio);canvas.style.width=width+\"px\";canvas.style.height=height+\"px\";context.setTransform(ratio,0,0,ratio,0,0);}function build(){resize();const off=document.createElement(\"canvas\");const ratio=Math.min(window.devicePixelRatio||1,2);off.width=Math.max(2,Math.round(width*ratio));off.height=Math.max(2,Math.round(height*ratio));const offCtx=off.getContext(\"2d\");if(!offCtx){field=[];return;}offCtx.setTransform(ratio,0,0,ratio,0,0);offCtx.clearRect(0,0,width,height);offCtx.fillStyle=\"#fff\";offCtx.font=fontString(scaledFont,fontSize);applyLetterSpacing(offCtx,scaledFont);offCtx.textAlign=\"center\";offCtx.textBaseline=\"alphabetic\";const dottedInk=measureInkLayout(copyLines.join(\" \"),scaledFont,fontSize,height);const lineBox=Math.max(1,lineHeightPx(scaledFont,fontSize));const blockTop=(height-lineBox*copyLines.length)/2;copyLines.forEach((line,i)=>{offCtx.fillText(line,width*.5,blockTop+i*lineBox+(lineBox-dottedInk.inkHeight)/2+dottedInk.ascent);});const pixels=offCtx.getImageData(0,0,off.width,off.height).data;const pitch=Math.max(3.2,spacing*(fontSize/96));maxRadius=Math.max(.4,Math.min(dotSize*(fontSize/120),pitch*.36));driftDistance=pitch*2.2;const columns=Math.max(1,Math.ceil(width/pitch));const rows=Math.max(1,Math.ceil(height/pitch));const threshold=Math.max(8,(1-weight)*210);field=[];for(let row=0;row<rows;row++){for(let column=0;column<columns;column++){const x=column*pitch+pitch*.5;const y=row*pitch+pitch*.5;const sx=Math.min(off.width-1,Math.round(x*ratio));const sy=Math.min(off.height-1,Math.round(y*ratio));const alpha=pixels[(sy*off.width+sx)*4+3];if(alpha<threshold)continue;const coverage=clamp01((alpha-threshold)/(255-threshold));const nx=x/Math.max(1,width)*2-1;const ny=y/Math.max(1,height)*2-1;const spreadN=Math.max(.001,Math.hypot(nx,ny));field.push({x,y,field:coverage,reach:clamp01(Math.hypot(nx,ny)/1.6),driftX:nx/spreadN,driftY:ny/spreadN,phase:hashXY(column,row)*Math.PI*2});}}}function paint(time){context.clearRect(0,0,width,height);const progress=shouldAssemble?appearProgressRef.current:1;const seconds=time/1e3*1;const idle=reduceMotion||isStaticRenderer?0:shimmer;if(hoverDots){const target=hoverRef.current?1:0;const dt=lastPaint?Math.min(64,time-lastPaint):16;inkMix+=(target-inkMix)*Math.min(1,dt/90);if(Math.abs(target-inkMix)<.01)inkMix=target;}lastPaint=time;context.fillStyle=inkMix<=0?ink:mixRGBA(baseInk,hoverInk,inkMix);context.beginPath();for(let i=0;i<field.length;i++){const dot=field[i];const settle=shouldAssemble?smoothstep(0,1,progress-dot.reach*.35):1;if(settle<=0)continue;const wave=1+idle*Math.sin(seconds*1.6+dot.phase-dot.reach*3.4);let radius=maxRadius*(.35+dot.field*.75)*settle*wave;if(radius<.12)continue;if(radius>maxRadius*1.7)radius=maxRadius*1.7;const offset=(1-settle)*driftDistance;const x=dot.x+dot.driftX*offset;const y=dot.y+dot.driftY*offset;context.moveTo(x+radius,y);context.arc(x,y,radius,0,Math.PI*2);}context.fill();}build();paint(isStaticRenderer?0:performance.now());if(isStaticRenderer||reduceMotion){repaintRef.current=()=>{inkMix=hoverRef.current&&hoverDots?1:0;paint(0);};const ro=new ResizeObserver(()=>{build();paint(0);});ro.observe(wrap);return()=>{running=false;repaintRef.current=null;ro.disconnect();};}const ro=new ResizeObserver(()=>build());ro.observe(wrap);const loop=time=>{if(!running)return;paint(time);frame=window.requestAnimationFrame(loop);};frame=window.requestAnimationFrame(loop);return()=>{running=false;window.cancelAnimationFrame(frame);ro.disconnect();};},[dotted,dots,hoverDots,dotSize,spacing,weight,shimmer,text,lines,scaledFont,appear,isStaticRenderer]);const layerStyle={position:\"absolute\",inset:0,display:\"block\",width:\"100%\",height:\"100%\",background:\"transparent\",pointerEvents:\"none\",...fadeMask?{maskImage:fadeMask.image,WebkitMaskImage:fadeMask.image,maskRepeat:\"no-repeat\",WebkitMaskRepeat:\"no-repeat\",maskSize:\"100% 100%\",WebkitMaskSize:\"100% 100%\",...fadeMask.composite?{maskComposite:fadeMask.composite,WebkitMaskComposite:\"source-in\"}:null}:null};const fitHeight=fittedFrameHeight(scaledFont,safeProps.spiral,safeProps.amplitude,lines.length);const incomingHeight=style?.height;const usesFitHeight=incomingHeight==null||incomingHeight===\"auto\"||incomingHeight===\"fit-content\"||incomingHeight===\"max-content\";const{height:_height,minHeight:_minHeight,...restStyle}=style??{};return /*#__PURE__*/_jsxs(\"div\",{ref:wrapperRef,style:{position:\"relative\",width:\"100%\",background:\"transparent\",overflow:\"hidden\",pointerEvents:\"none\",...restStyle,height:usesFitHeight?fitHeight:incomingHeight,minHeight:usesFitHeight?fitHeight:_minHeight??fitHeight},children:[/*#__PURE__*/_jsx(\"canvas\",{ref:backCanvasRef,\"aria-hidden\":\"true\",style:{...layerStyle,zIndex:0}}),dotted?/*#__PURE__*/_jsx(\"canvas\",{ref:dottedCanvasRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,zIndex:1,display:\"block\",width:\"100%\",height:\"100%\",pointerEvents:\"none\"}}):/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,zIndex:1,display:\"flex\",alignItems:\"center\",justifyContent:justifyFor(font),padding:`0 ${insetFrac*100}%`,pointerEvents:\"none\",color:textColor,...scaledFont,whiteSpace:\"pre\",...splitLines&&lines.length>1?{flexDirection:\"column\",alignItems:\"stretch\",justifyContent:\"center\"}:null},children:splitLines&&lines.length>1?lines.map((line,i)=>/*#__PURE__*/_jsx(\"div\",{style:{textAlign:i===0?\"left\":i===lines.length-1?\"right\":\"center\"},children:line},i)):lines.join(\"\\n\")}),underline?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:`${insetFrac*100}%`,right:`${insetFrac*100}%`,bottom:0,height:clamp(finiteOr(underlineWeight,4),1,24),background:underlineColor||textColor||\"currentColor\",transform:`scaleX(${hovered?1:0})`,transformOrigin:hovered?\"left center\":\"right center\",transition:\"transform 0.6s cubic-bezier(0.22, 1, 0.36, 1)\",zIndex:3,pointerEvents:\"none\"}}):null,/*#__PURE__*/_jsx(\"canvas\",{ref:frontCanvasRef,\"aria-hidden\":\"true\",style:{...layerStyle,zIndex:2}})]});}DitherSpringType.displayName=\"DitherSpringType\";DitherSpringType.displayName=\"Spiral Type\";addPropertyControls(DitherSpringType,{text:{type:ControlType.String,title:\"Text\",displayTextArea:true,defaultValue:\"MORGEN\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"112px\",variant:\"Bold\",letterSpacing:\"-0.03em\",lineHeight:\"1em\",textAlign:\"center\"}},fitWidth:{type:ControlType.Boolean,title:\"Fit Width\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On: fills the width. Off: uses the font size.\"},stackWords:{type:ControlType.Boolean,title:\"Stack Words\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},splitLines:{type:ControlType.Boolean,title:\"Split Lines\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"First word on the left, last word on the right.\",hidden:props=>!props.stackWords||Boolean(props.dotted)},inset:{type:ControlType.Number,title:\"Inset\",defaultValue:DEFAULT_INSET,min:0,max:20,step:.5,unit:\"%\",description:\"Space either side of the type.\"},textColor:{type:ControlType.Color,title:\"Text Colour\",defaultValue:\"#121110\",hidden:props=>Boolean(props.dotted)},dotted:{type:ControlType.Boolean,title:\"Dotted\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},dots:{type:ControlType.Color,title:\"Dots\",defaultValue:\"#121110\",hidden:props=>!props.dotted},dotSize:{type:ControlType.Number,title:\"Dot Size\",defaultValue:2.6,min:1,max:12,step:.1,unit:\"px\",hidden:props=>!props.dotted},spacing:{type:ControlType.Number,title:\"Spacing\",defaultValue:9,min:2,max:16,step:.5,unit:\"px\",hidden:props=>!props.dotted},weight:{type:ControlType.Number,title:\"Weight\",defaultValue:.5,min:.1,max:.9,step:.02,hidden:props=>!props.dotted},shimmer:{type:ControlType.Number,title:\"Shimmer\",defaultValue:.18,min:0,max:.8,step:.01,hidden:props=>!props.dotted},spiral:{type:ControlType.Boolean,title:\"Spiral\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},appear:{type:ControlType.Boolean,title:\"Appear\",defaultValue:true},appearDelay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:5,step:.05,unit:\"s\",hidden:props=>!props.appear},appearDuration:{type:ControlType.Number,title:\"Duration\",defaultValue:2.6,min:.1,max:8,step:.1,unit:\"s\",hidden:props=>!props.appear},appearEasing:{type:ControlType.Enum,title:\"Easing\",options:[\"smooth\",\"out\",\"inOut\",\"linear\"],optionTitles:[\"Smooth\",\"Ease Out\",\"Ease In Out\",\"Linear\"],defaultValue:\"smooth\",hidden:props=>!props.appear},rayLength:{type:ControlType.Number,title:\"Ray Length\",defaultValue:.12,min:.01,max:.4,step:.01,hidden:props=>!props.appear||!props.spiral||!props.advanced},rayOpacity:{type:ControlType.Number,title:\"Ray Opacity\",defaultValue:1,min:0,max:1,step:.01,hidden:props=>!props.appear||!props.spiral||!props.advanced},scaleFrom:{type:ControlType.Number,title:\"Scale From\",description:\"Screen width where the font is at its set size.\",defaultValue:1200,min:320,max:2560,step:10,unit:\"px\",hidden:props=>Boolean(props.fitWidth)||!props.advanced},maxTextScale:{type:ControlType.Number,title:\"Max Scale\",defaultValue:1.4,min:1,max:3,step:.05,hidden:props=>Boolean(props.fitWidth)||!props.advanced},edgeFade:{type:ControlType.Number,title:\"Edge Fade\",defaultValue:.22,min:0,max:.85,step:.01,hidden:props=>!props.spiral},fadeAxis:{type:ControlType.Enum,title:\"Fade Axis\",options:[\"horizontal\",\"vertical\",\"both\"],optionTitles:[\"Sides\",\"Top & Bottom\",\"All Edges\"],defaultValue:\"horizontal\",displaySegmentedControl:true,hidden:props=>!props.spiral||!props.edgeFade},textDepth:{type:ControlType.Number,title:\"Text Depth\",description:\"Where the spiral passes the text, back to front.\",defaultValue:0,min:-1,max:1,step:.01,hidden:props=>!props.spiral||!props.advanced},particleA:{type:ControlType.Color,title:\"Particle Colour\",description:\"Highlights use a lighter tint of it.\",defaultValue:\"#BF2222\",hidden:props=>!props.spiral},mix:{type:ControlType.Number,title:\"Color Mix\",defaultValue:.32,min:0,max:1,step:.01,hidden:props=>!props.spiral||!props.advanced},turns:{type:ControlType.Number,title:\"Spiral Turns\",defaultValue:6,min:2,max:16,step:.1,hidden:props=>!props.spiral},amplitude:{type:ControlType.Number,title:\"Spiral Height\",defaultValue:.32,min:.05,max:.6,step:.01,hidden:props=>!props.spiral},spread:{type:ControlType.Number,title:\"Spiral Spread\",defaultValue:1,min:.3,max:2,step:.01,hidden:props=>!props.spiral||!props.advanced},thickness:{type:ControlType.Number,title:\"Thickness\",defaultValue:.34,min:.05,max:.6,step:.01,hidden:props=>!props.spiral||!props.advanced},particleCount:{type:ControlType.Number,title:\"Particles\",defaultValue:3200,min:200,max:2e4,step:100,hidden:props=>!props.spiral},particleSize:{type:ControlType.Number,title:\"Particle Size\",defaultValue:1,min:1,max:4,step:1,unit:\"px\",displayStepper:true,hidden:props=>!props.spiral||!props.advanced},spinSpeed:{type:ControlType.Number,title:\"Spin Speed\",defaultValue:.33,min:0,max:1,step:.01,hidden:props=>!props.spiral},perspective:{type:ControlType.Number,title:\"Perspective\",defaultValue:2.9,min:.8,max:4,step:.05,hidden:props=>!props.spiral||!props.advanced},quality:{type:ControlType.Enum,title:\"Quality\",options:[\"high\",\"auto\",\"low\"],optionTitles:[\"High\",\"Auto\",\"Low\"],defaultValue:\"high\",displaySegmentedControl:true,hidden:props=>!props.spiral||!props.advanced},advanced:{type:ControlType.Boolean,title:\"Advanced\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DitherSpringType\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"280\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DitherSpringType.map"],"mappings":"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"}