{"version":3,"file":"shared-lib.DsHS6AOd.mjs","names":["p","u","React.useMemo","React.useRef","React.useState","React.useCallback","maxScroll","raw","scrollSpread","baseSize","maxSizeBoost","maxSkewBoost","maxFloatBoost","outOfFocusBlur","outOfFocusOpacity","React.Fragment"],"sources":["https:/framerusercontent.com/modules/DaLCPj18JfDSygP6BzoR/6W0Rsk8Uqiy9kCLCfgTe/TypeZoom.js","https:/framerusercontent.com/modules/7MgBaUXOkWkRNRFihFeq/fdXcaa9lSAeINxpIld51/siteMetadata.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const FONT_PRESETS={inter:{family:\"Inter\",cssImport:\"@import url('https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,100..900&display=swap');\"},robotoFlex:{family:\"Roboto Flex\",cssImport:\"@import url('https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap');\"},montserrat:{family:\"Montserrat\",cssImport:\"@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100..900&display=swap');\"},workSans:{family:\"Work Sans\",cssImport:\"@import url('https://fonts.googleapis.com/css2?family=Work+Sans:wght@100..900&display=swap');\"},urbanist:{family:\"Urbanist\",cssImport:\"@import url('https://fonts.googleapis.com/css2?family=Urbanist:wght@100..900&display=swap');\"}};function getScrollParent(node){if(typeof window===\"undefined\"||!node)return null;let p=node.parentElement;while(p&&p!==document.documentElement){const st=window.getComputedStyle(p);const oy=st.overflowY;const ox=st.overflowX;if(/(auto|scroll|overlay)/.test(oy)||/(auto|scroll|overlay)/.test(ox)){return p;}p=p.parentElement;}return null;}function applyScrollProgressRemap(raw,startPad,endPad){const d=Math.min(.95,Math.max(0,startPad));const e=Math.min(.95,Math.max(0,endPad));if(d+e>=.999)return 0;if(raw<=d)return 0;if(raw>=1-e)return 1;return Math.min(1,Math.max(0,(raw-d)/(1-e-d)));}function parseCssColor(input){if(typeof input!==\"string\")return null;const s=input.trim();let m=s.match(/^#([0-9a-f]{3})$/i);if(m){const h=m[1];return{r:parseInt(h[0]+h[0],16),g:parseInt(h[1]+h[1],16),b:parseInt(h[2]+h[2],16),a:1};}m=s.match(/^#([0-9a-f]{6})$/i);if(m){const h=m[1];return{r:parseInt(h.slice(0,2),16),g:parseInt(h.slice(2,4),16),b:parseInt(h.slice(4,6),16),a:1};}m=s.match(/^rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/i);if(m){return{r:Number(m[1]),g:Number(m[2]),b:Number(m[3]),a:m[4]!==undefined?Number(m[4]):1};}return null;}function mixRgba(a,b,t){const u=Math.min(1,Math.max(0,t));const r=Math.round(a.r+(b.r-a.r)*u);const g=Math.round(a.g+(b.g-a.g)*u);const bl=Math.round(a.b+(b.b-a.b)*u);const al=a.a+(b.a-a.a)*u;if(al>=.999)return`rgb(${r},${g},${bl})`;return`rgba(${r},${g},${bl},${al})`;}const FALLBACK_RGBA_TEXT={r:17,g:17,b:17,a:1};const FALLBACK_RGBA_PEAK={r:37,g:99,b:235,a:1};/**\n * TypeZoom — Per-character variable font animation for Framer.\n * Animates font-weight axes and visual properties per character via cursor proximity, scroll wave, or intro reveal.\n * Not replicable with Framer's native interactions — requires direct DOM mutation per character at 60fps.\n *\n * @framerSupportedLayoutWidth any-prefer-fill\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicHeight 900\n */export default function TypeZoom(props){// 1. Grouped Props Destructuring with defaults\nconst text=props.contentGroup?.text??\"This high-end speaker combines organic architecture with advanced acoustics to create a premium audio centerpiece for any space.\";const textAlign=props.contentGroup?.textAlign??\"left\";const wrapMode=props.contentGroup?.wrapMode??\"locked\";const singleLine=props.contentGroup?.singleLine??false;const fontPreset=props.typographyGroup?.fontPreset??\"urbanist\";const baseSize=props.typographyGroup?.baseSize??56;const lineHeight=props.typographyGroup?.lineHeight??.7;const interactionMode=props.interactionMode??\"scroll\";const influenceRadius=props.influenceRadius??95;const scrollDrive=props.scrollDrive??\"parent\";const scrollSpread=props.scrollSpread??9;const scrollResponse=props.scrollSmooth??.22;const scrollDelay=props.scrollDelay??.15;const scrollEndPad=props.scrollEndPad??.54;const revealDuration=props.revealDuration??900;const revealStagger=props.revealStagger??20;const revealPeakWeight=props.revealPeakWeight??900;const maxSizeBoost=props.maxSizeBoost??88;const maxSkewBoost=props.maxSkewBoost??0;const maxFloatBoost=props.maxFloatBoost??0;const outOfFocusBlur=props.outOfFocusBlur??0;const outOfFocusOpacity=props.outOfFocusOpacity??1;const background=props.colorsGroup?.background??\"#ffffff\";const color=props.colorsGroup?.color??\"rgb(157, 20, 255)\";const colorPeak=props.colorsGroup?.colorPeak??\"rgb(255, 0, 128)\";const paddingTop=props.typographyGroup?.paddingTop??24;const paddingRight=props.typographyGroup?.paddingRight??24;const paddingBottom=props.typographyGroup?.paddingBottom??24;const paddingLeft=props.typographyGroup?.paddingLeft??24;const minContentHeight=props.typographyGroup?.minContentHeight??0;const overflow=props.typographyGroup?.overflow??\"hidden\";// 2. Load Preset Google Fonts\nReact.useEffect(()=>{if(typeof document===\"undefined\")return;const id=\"type-loop-font-presets\";let style=document.getElementById(id);if(!style){style=document.createElement(\"style\");style.id=id;style.textContent=Object.values(FONT_PRESETS).map(p=>p.cssImport).join(\"\\n\");document.head.appendChild(style);}},[]);const resolvedFontFamily=React.useMemo(()=>{const preset=FONT_PRESETS[fontPreset]||FONT_PRESETS.inter;return`\"${preset.family}\", ui-sans-serif, system-ui, -apple-system, sans-serif`;},[fontPreset]);// Refs\nconst containerRef=React.useRef(null);const textRef=React.useRef(null);const spanRefs=React.useRef([]);const charStatesRef=React.useRef([]);const rafRef=React.useRef(null);const isPointerInsideRef=React.useRef(false);const isScrollingRef=React.useRef(false);const isVisibleRef=React.useRef(true);const stableBlockHeightRef=React.useRef(0);const scrollSmoothedProgressRef=React.useRef(0);const scrollNeedsHardSyncRef=React.useRef(true);const scrollInstantSyncRef=React.useRef(false);const scrollParentElRef=React.useRef(null);const revealStartMsRef=React.useRef(0);// Dynamic ref synchronization for animation loop thread safety\nconst interactionModeRef=React.useRef(interactionMode);const scrollDriveRef=React.useRef(scrollDrive);React.useEffect(()=>{interactionModeRef.current=interactionMode;scrollNeedsHardSyncRef.current=true;},[interactionMode]);React.useEffect(()=>{scrollDriveRef.current=scrollDrive;scrollNeedsHardSyncRef.current=true;},[scrollDrive]);const scrollSettingsRef=React.useRef({scrollSpread,scrollDelay,scrollEndPad,baseSize,maxSizeBoost,scrollResponse,maxSkewBoost,maxFloatBoost,outOfFocusBlur,outOfFocusOpacity});React.useEffect(()=>{scrollSettingsRef.current={scrollSpread,scrollDelay,scrollEndPad,baseSize,maxSizeBoost,scrollResponse,maxSkewBoost,maxFloatBoost,outOfFocusBlur,outOfFocusOpacity};scrollNeedsHardSyncRef.current=true;},[scrollSpread,scrollDelay,scrollEndPad,baseSize,maxSizeBoost,scrollResponse,maxSkewBoost,maxFloatBoost,outOfFocusBlur,outOfFocusOpacity]);const visualRef=React.useRef({baseSize,maxSizeBoost,rgbaBg:parseCssColor(background)??FALLBACK_RGBA_TEXT,rgbaFrom:parseCssColor(color)??FALLBACK_RGBA_TEXT,rgbaPeak:parseCssColor(colorPeak)??FALLBACK_RGBA_PEAK});const[lockedText,setLockedText]=React.useState(\"\");React.useEffect(()=>{visualRef.current={baseSize,maxSizeBoost,rgbaBg:parseCssColor(background)??FALLBACK_RGBA_TEXT,rgbaFrom:parseCssColor(color)??FALLBACK_RGBA_TEXT,rgbaPeak:parseCssColor(colorPeak)??FALLBACK_RGBA_PEAK};},[baseSize,maxSizeBoost,background,color,colorPeak]);const effectiveText=React.useMemo(()=>{let source=text.trim().length>0?text:\"Creative minds have texture.\";if(wrapMode===\"locked\"&&!singleLine&&lockedText.length>0){source=lockedText;}if(singleLine){source=source.replace(/\\r?\\n/g,\" \");}return source;},[text,singleLine,wrapMode,lockedText]);// Typographical Word and Character Splitting logic to solve standard inline transform & word wrapping bugs\nconst wordAndCharStructure=React.useMemo(()=>{let charIndexCounter=0;const lines=effectiveText.split(\"\\n\");return lines.map((line,lineIdx)=>{const words=line.split(\" \");const wordStructs=words.map((word,wordIdx)=>{const chars=word.split(\"\");const charStructs=chars.map(char=>{const idx=charIndexCounter;charIndexCounter++;return{char,idx};});// Add a space character after the word if it's not the last word\nlet spaceStruct=null;if(wordIdx<words.length-1){const idx=charIndexCounter;charIndexCounter++;spaceStruct={char:\" \",idx};}return{chars:charStructs,space:spaceStruct};});return{words:wordStructs,isLastLine:lineIdx===lines.length-1};});},[effectiveText]);const charactersCount=React.useMemo(()=>{let count=0;wordAndCharStructure.forEach(line=>{line.words.forEach(word=>{count+=word.chars.length;if(word.space)count++;});});return count;},[wordAndCharStructure]);// Safe Locked line layout text-measuring calculation\nconst computeLockedText=React.useCallback(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;if(singleLine||wrapMode!==\"locked\")return;const host=textRef.current;if(!host)return;const width=host.clientWidth;if(width<=0)return;let source=text.trim().length>0?text:\"Creative minds have texture.\";source=source.replace(/\\r\\n/g,\"\\n\");const measurer=document.createElement(\"span\");measurer.style.position=\"fixed\";measurer.style.visibility=\"hidden\";measurer.style.pointerEvents=\"none\";measurer.style.whiteSpace=\"pre\";measurer.style.fontFamily=resolvedFontFamily;measurer.style.fontSize=`${baseSize}px`;measurer.style.fontWeight=\"100\";document.body.appendChild(measurer);const measure=s=>{measurer.textContent=s||\" \";return measurer.getBoundingClientRect().width;};const lockedLines=[];const paragraphs=source.split(\"\\n\");for(const paragraph of paragraphs){if(paragraph.length===0){lockedLines.push(\"\");continue;}const tokens=paragraph.match(/\\S+|\\s+/g)??[paragraph];let line=\"\";let lineWidth=0;for(const token of tokens){const cleanToken=line.length===0?token.replace(/^\\s+/,\"\"):token;if(cleanToken.length===0)continue;const tokenWidth=measure(cleanToken);if(line.length===0||lineWidth+tokenWidth<=width){line+=cleanToken;lineWidth+=tokenWidth;}else{lockedLines.push(line.replace(/\\s+$/g,\"\"));const next=cleanToken.replace(/^\\s+/,\"\");line=next;lineWidth=measure(next);}}lockedLines.push(line.replace(/\\s+$/g,\"\"));}document.body.removeChild(measurer);setLockedText(lockedLines.join(\"\\n\"));},[wrapMode,singleLine,text,resolvedFontFamily,baseSize]);React.useEffect(()=>{if(wrapMode!==\"locked\"||singleLine){setLockedText(\"\");return;}const el=textRef.current;if(!el)return;const onResize=()=>computeLockedText();window.addEventListener(\"resize\",onResize);// ResizeObserver fires when the element first gets a real width (avoids the\n// race where rAF runs before layout, sees clientWidth=0, and bails out)\nlet ro=null;if(typeof ResizeObserver!==\"undefined\"){ro=new ResizeObserver(onResize);ro.observe(el);}else{requestAnimationFrame(onResize);}return()=>{ro?.disconnect();window.removeEventListener(\"resize\",onResize);};},[wrapMode,singleLine,computeLockedText]);// Viewport crossing progress calculations\nconst computeViewportScrollProgressRemapped=React.useCallback(()=>{if(typeof window===\"undefined\")return 0;const el=containerRef.current;if(!el)return 0;scrollInstantSyncRef.current=false;const rect=el.getBoundingClientRect();const vh=window.innerHeight;if(rect.top>=vh){scrollInstantSyncRef.current=true;return 0;}if(rect.bottom<=0){scrollInstantSyncRef.current=true;return 1;}const liveH=rect.height;if(liveH>1){stableBlockHeightRef.current=Math.max(stableBlockHeightRef.current,liveH);}const blockH=Math.max(liveH,stableBlockHeightRef.current,1);const range=vh+blockH;const scrolled=vh-rect.top;let raw=range>0?scrolled/range:0;raw=Math.min(1,Math.max(0,raw));const s=scrollSettingsRef.current;return applyScrollProgressRemap(raw,s.scrollDelay,s.scrollEndPad);},[]);const computeParentScrollProgressRemapped=React.useCallback(()=>{if(typeof window===\"undefined\")return 0;const el=containerRef.current;if(!el)return 0;scrollInstantSyncRef.current=false;const parent=scrollParentElRef.current;const s=scrollSettingsRef.current;if(!parent){const rect=el.getBoundingClientRect();const vh=window.innerHeight;if(rect.top>=vh){scrollInstantSyncRef.current=true;return 0;}if(rect.bottom<=0){scrollInstantSyncRef.current=true;return 1;}const root=document.documentElement;const maxScroll=Math.max(1,root.scrollHeight-root.clientHeight);const scrollTop=window.scrollY||root.scrollTop;let raw=scrollTop/maxScroll;raw=Math.min(1,Math.max(0,raw));return applyScrollProgressRemap(raw,s.scrollDelay,s.scrollEndPad);}const prect=parent.getBoundingClientRect();const er=el.getBoundingClientRect();if(er.top>=prect.bottom){scrollInstantSyncRef.current=true;return 0;}if(er.bottom<=prect.top){scrollInstantSyncRef.current=true;return 1;}const maxScroll=Math.max(1,parent.scrollHeight-parent.clientHeight);let raw=parent.scrollTop/maxScroll;raw=Math.min(1,Math.max(0,raw));return applyScrollProgressRemap(raw,s.scrollDelay,s.scrollEndPad);},[]);// Easing Wave Target Allocator for scroll mode\nconst applyScrollWaveTargets=React.useCallback(progress01=>{const states=charStatesRef.current;const n=states.length;if(n===0)return;const{scrollSpread,baseSize,maxSizeBoost,maxSkewBoost,maxFloatBoost,outOfFocusBlur,outOfFocusOpacity}=scrollSettingsRef.current;const spread=Math.max(.5,scrollSpread);const travel=n-1+2*spread;const center=progress01*travel-spread;for(let i=0;i<n;i++){const dist=Math.abs(i-center);const intensity=Math.max(0,1-dist/spread);const state=states[i];if(state){state.targetWeight=100+intensity*800;state.targetSize=baseSize+intensity*maxSizeBoost;state.targetSkew=intensity*maxSkewBoost;state.targetFloat=intensity*maxFloatBoost;state.targetBlur=outOfFocusBlur*(1-intensity);state.targetOpacity=outOfFocusOpacity+intensity*(1-outOfFocusOpacity);}}},[]);// Easing Animation Frame Loop (The Rendering and Calculations Thread)\nconst tick=React.useCallback(()=>{if(typeof window===\"undefined\"||!isVisibleRef.current){rafRef.current=null;return;}const now=performance.now();const states=charStatesRef.current;let hasEnergy=false;if(interactionModeRef.current===\"scroll\"){const rawRemapped=scrollDriveRef.current===\"parent\"?computeParentScrollProgressRemapped():computeViewportScrollProgressRemapped();const response=Math.min(1,Math.max(.01,scrollSettingsRef.current.scrollResponse));if(scrollNeedsHardSyncRef.current||scrollInstantSyncRef.current){scrollSmoothedProgressRef.current=rawRemapped;scrollNeedsHardSyncRef.current=false;}else{const diff=rawRemapped-scrollSmoothedProgressRef.current;if(Math.abs(diff)>1e-4){scrollSmoothedProgressRef.current+=diff*response;hasEnergy=true;}else{scrollSmoothedProgressRef.current=rawRemapped;}}applyScrollWaveTargets(scrollSmoothedProgressRef.current);}const easing=.15;for(let i=0;i<states.length;i++){const state=states[i];if(!state)continue;const dw=(state.targetWeight-state.currentWeight)*easing;const ds=(state.targetSize-state.currentSize)*easing;const dk=(state.targetSkew-state.currentSkew)*easing;const df=(state.targetFloat-state.currentFloat)*easing;const db=(state.targetBlur-state.currentBlur)*easing;const doP=(state.targetOpacity-state.currentOpacity)*easing;state.currentWeight+=dw;state.currentSize+=ds;state.currentSkew+=dk;state.currentFloat+=df;state.currentBlur+=db;state.currentOpacity+=doP;if(Math.abs(dw)>.05||Math.abs(ds)>.05||Math.abs(dk)>.01||Math.abs(df)>.05||Math.abs(db)>.01||Math.abs(doP)>.005){hasEnergy=true;}const span=spanRefs.current[i];if(span){const lerpActive=Math.abs(dw)>.05||Math.abs(ds)>.05||Math.abs(dk)>.01||Math.abs(df)>.05||Math.abs(db)>.01||Math.abs(doP)>.005;let spanActive=lerpActive;if(!spanActive&&interactionModeRef.current===\"reveal\"){const elapsed=now-revealStartMsRef.current-i*Math.max(0,revealStagger);spanActive=elapsed<Math.max(1,revealDuration);}span.style.willChange=spanActive?\"transform, font-variation-settings\":\"auto\";span.style.setProperty(\"--char-weight\",`${state.currentWeight}`);span.style.setProperty(\"--char-size\",`${state.currentSize}`);span.style.setProperty(\"--char-skew-deg\",`${state.currentSkew}deg`);span.style.setProperty(\"--char-float-px\",`${state.currentFloat}px`);span.style.setProperty(\"--char-blur-px\",`${state.currentBlur}px`);span.style.setProperty(\"--char-opacity\",`${state.currentOpacity}`);const v=visualRef.current;if(interactionModeRef.current===\"reveal\"){const duration=Math.max(1,revealDuration);const stagger=Math.max(0,revealStagger);const elapsed=now-revealStartMsRef.current-i*stagger;const p=Math.min(1,Math.max(0,elapsed/duration));const baseW=100;const peakW=Math.max(baseW,Math.min(1e3,revealPeakWeight));const wMix=p<.5?p*2:(1-p)*2;const revealWeight=baseW+(peakW-baseW)*wMix;span.style.setProperty(\"--char-weight\",`${revealWeight}`);if(p<.5){span.style.color=mixRgba(v.rgbaBg,v.rgbaPeak,p*2);}else{span.style.color=mixRgba(v.rgbaPeak,v.rgbaFrom,(p-.5)*2);}span.style.setProperty(\"--char-opacity\",`${p}`);if(p<1){hasEnergy=true;}}else{let t=0;if(v.maxSizeBoost>.001){t=(state.currentSize-v.baseSize)/v.maxSizeBoost;}else{t=(state.currentWeight-100)/800;}t=Math.min(1,Math.max(0,t));span.style.color=mixRgba(v.rgbaFrom,v.rgbaPeak,t);}}}if(interactionModeRef.current===\"cursor\"&&!isPointerInsideRef.current){for(let i=0;i<states.length;i++){const state=states[i];if(state){state.targetWeight=100;state.targetSize=baseSize;state.targetSkew=0;state.targetFloat=0;state.targetBlur=0;state.targetOpacity=1;}}}if(hasEnergy){rafRef.current=requestAnimationFrame(tick);}else{rafRef.current=null;}},[baseSize,revealDuration,revealStagger,revealPeakWeight,computeViewportScrollProgressRemapped,computeParentScrollProgressRemapped,applyScrollWaveTargets]);// Smart Sleep trigger system to wake animation thread when required\nconst ensureAnimationRunning=React.useCallback(()=>{if(typeof window===\"undefined\"||!isVisibleRef.current)return;if(rafRef.current===null){rafRef.current=requestAnimationFrame(tick);}},[tick]);// Cleanup RAF on unmount\nReact.useEffect(()=>{return()=>{if(rafRef.current!==null){cancelAnimationFrame(rafRef.current);rafRef.current=null;}};},[]);// IntersectionObserver to completely halt off-screen renders\nReact.useEffect(()=>{if(typeof window===\"undefined\"||typeof IntersectionObserver===\"undefined\")return;const el=containerRef.current;if(!el)return;const observer=new IntersectionObserver(([entry])=>{isVisibleRef.current=entry.isIntersecting;if(entry.isIntersecting){scrollNeedsHardSyncRef.current=true;ensureAnimationRunning();}},{threshold:0});observer.observe(el);return()=>{observer.disconnect();};},[ensureAnimationRunning]);// Reset weights on state/mode changes\nconst resetTargets=React.useCallback(()=>{const states=charStatesRef.current;for(let i=0;i<states.length;i++){const state=states[i];if(state){state.targetWeight=100;state.targetSize=baseSize;state.targetSkew=0;state.targetFloat=0;state.targetBlur=0;state.targetOpacity=1;}}},[baseSize]);React.useEffect(()=>{if(interactionMode===\"cursor\"){resetTargets();ensureAnimationRunning();}},[interactionMode,resetTargets,ensureAnimationRunning]);React.useEffect(()=>{if(interactionMode!==\"reveal\")return;revealStartMsRef.current=performance.now();const states=charStatesRef.current;for(let i=0;i<states.length;i++){const state=states[i];if(state){state.currentWeight=100;state.targetWeight=100;state.currentSize=baseSize;state.targetSize=baseSize;state.currentSkew=0;state.targetSkew=0;state.currentFloat=0;state.targetFloat=0;state.currentBlur=0;state.targetBlur=0;state.currentOpacity=0;state.targetOpacity=0;}}ensureAnimationRunning();},[interactionMode,charactersCount,baseSize,ensureAnimationRunning]);React.useEffect(()=>{const states=[];for(let i=0;i<charactersCount;i++){states.push({currentWeight:100,targetWeight:100,currentSize:baseSize,targetSize:baseSize,currentSkew:0,targetSkew:0,currentFloat:0,targetFloat:0,currentBlur:0,targetBlur:0,currentOpacity:1,targetOpacity:1});}charStatesRef.current=states;stableBlockHeightRef.current=0;scrollNeedsHardSyncRef.current=true;ensureAnimationRunning();},[charactersCount,baseSize,ensureAnimationRunning]);// Find scroll parent container\nReact.useLayoutEffect(()=>{if(typeof window===\"undefined\"||interactionMode!==\"scroll\"||scrollDrive!==\"parent\"){scrollParentElRef.current=null;return;}const el=containerRef.current;scrollParentElRef.current=el?getScrollParent(el):null;scrollNeedsHardSyncRef.current=true;ensureAnimationRunning();},[interactionMode,scrollDrive,text,ensureAnimationRunning]);// Scroll and resize event bindings to trigger loop only on changes\nReact.useEffect(()=>{if(typeof window===\"undefined\"||interactionMode!==\"scroll\")return;const handleScroll=()=>{isScrollingRef.current=true;ensureAnimationRunning();};const target=scrollDrive===\"parent\"&&scrollParentElRef.current?scrollParentElRef.current:window;target.addEventListener(\"scroll\",handleScroll,{passive:true});window.addEventListener(\"resize\",handleScroll,{passive:true});return()=>{target.removeEventListener(\"scroll\",handleScroll);window.removeEventListener(\"resize\",handleScroll);};},[interactionMode,scrollDrive,ensureAnimationRunning]);// Pointer event callbacks for Hover interaction\nconst onPointerMove=e=>{if(interactionModeRef.current!==\"cursor\"||typeof window===\"undefined\")return;isPointerInsideRef.current=true;const spans=textRef.current?.querySelectorAll(\"[data-char-index]\");if(!spans)return;const mouseX=e.clientX;const mouseY=e.clientY;const states=charStatesRef.current;spans.forEach(span=>{const index=Number(span.dataset.charIndex??\"-1\");if(index<0||index>=states.length)return;const rect=span.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const dx=mouseX-centerX;const dy=mouseY-centerY;const distance=Math.sqrt(dx*dx+dy*dy);const state=states[index];if(!state)return;if(distance<influenceRadius){const intensity=1-distance/influenceRadius;state.targetWeight=100+intensity*800;state.targetSize=baseSize+intensity*maxSizeBoost;state.targetSkew=intensity*maxSkewBoost;state.targetFloat=intensity*maxFloatBoost;state.targetBlur=outOfFocusBlur*(1-intensity);state.targetOpacity=outOfFocusOpacity+intensity*(1-outOfFocusOpacity);}else{state.targetWeight=100;state.targetSize=baseSize;state.targetSkew=0;state.targetFloat=0;state.targetBlur=outOfFocusBlur;state.targetOpacity=outOfFocusOpacity;}});ensureAnimationRunning();};const onPointerLeave=()=>{if(interactionModeRef.current!==\"cursor\")return;isPointerInsideRef.current=false;resetTargets();ensureAnimationRunning();};// Styling bounds and calculations\nconst innerMinHeight=minContentHeight>0?`${Math.min(minContentHeight,1e5)}px`:undefined;const maxAnimatedFontPx=baseSize+Math.max(0,maxSizeBoost);const lineHeightMultiplier=Math.max(.1,lineHeight);const stableLineHeightPx=Math.ceil(maxAnimatedFontPx*lineHeightMultiplier);const stableLineHeightCss=`${stableLineHeightPx}px`;const containerTouchAction=interactionMode===\"scroll\"?\"pan-y pinch-zoom\":singleLine?\"pan-x pan-y\":\"none\";const textOverflowX=singleLine?overflow===\"visible\"?\"visible\":overflow:\"visible\";const textOverflowY=singleLine?overflow===\"visible\"?\"visible\":\"hidden\":\"visible\";const textWhiteSpace=singleLine?\"nowrap\":wrapMode===\"locked\"?\"pre\":\"pre-wrap\";return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",minHeight:0,minWidth:0,display:\"flex\",flexDirection:\"row\",alignItems:\"center\",justifyContent:\"center\",background,overflow,userSelect:\"none\",touchAction:containerTouchAction,paddingTop,paddingRight,paddingBottom,paddingLeft,boxSizing:\"border-box\"},onPointerMove:onPointerMove,onPointerLeave:onPointerLeave,children:/*#__PURE__*/_jsx(\"div\",{ref:textRef,style:{width:\"100%\",minHeight:innerMinHeight,fontFamily:resolvedFontFamily,lineHeight:stableLineHeightCss,textAlign,whiteSpace:textWhiteSpace,wordBreak:\"normal\",overflowX:textOverflowX,overflowY:textOverflowY,WebkitOverflowScrolling:singleLine?\"touch\":undefined,boxSizing:\"border-box\"},children:wordAndCharStructure.map((line,lineIdx)=>/*#__PURE__*/_jsxs(React.Fragment,{children:[line.words.map((word,wordIdx)=>/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-block\",whiteSpace:\"nowrap\"},children:[word.chars.map(({char,idx})=>/*#__PURE__*/_jsx(\"span\",{ref:el=>{if(el)spanRefs.current[idx]=el;},\"data-char-index\":idx,style:{display:\"inline-block\",fontVariationSettings:`\"wght\" var(--char-weight, 100)`,fontWeight:\"var(--char-weight, 100)\",fontSize:\"calc(var(--char-size, 60) * 1px)\",transform:\"translate3d(0, var(--char-float-px, 0px), 0) skewX(var(--char-skew-deg, 0deg))\",filter:\"blur(var(--char-blur-px, 0px))\",opacity:\"var(--char-opacity, 1)\",color,verticalAlign:\"baseline\"},children:char},idx)),word.space&&/*#__PURE__*/_jsx(\"span\",{ref:el=>{if(el)spanRefs.current[word.space.idx]=el;},\"data-char-index\":word.space.idx,style:{display:\"inline-block\",fontVariationSettings:`\"wght\" var(--char-weight, 100)`,fontWeight:\"var(--char-weight, 100)\",fontSize:\"calc(var(--char-size, 60) * 1px)\",transform:\"translate3d(0, var(--char-float-px, 0px), 0) skewX(var(--char-skew-deg, 0deg))\",filter:\"blur(var(--char-blur-px, 0px))\",opacity:\"var(--char-opacity, 1)\",color,verticalAlign:\"baseline\"},children:singleLine?\"\\xa0\":\" \"},word.space.idx)]},wordIdx)),!line.isLastLine&&/*#__PURE__*/_jsx(\"br\",{})]},lineIdx))})});}// 5. Property controls grouped under neat folders via native ControlType.Object\naddPropertyControls(TypeZoom,{contentGroup:{type:ControlType.Object,title:\"Text Content\",controls:{text:{type:ControlType.String,title:\"Text\",defaultValue:\"This high-end speaker combines organic architecture with advanced acoustics to create a premium audio centerpiece for any space.\",displayTextArea:true},textAlign:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"center\",\"right\",\"justify\"],optionTitles:[\"Left\",\"Center\",\"Right\",\"Justify\"],defaultValue:\"left\"},wrapMode:{type:ControlType.Enum,title:\"Wrap\",options:[\"auto\",\"locked\"],optionTitles:[\"Auto\",\"Locked\"],defaultValue:\"locked\",description:\"Locked: fixed line breaks. Auto: responsive wrapping.\"},singleLine:{type:ControlType.Boolean,title:\"Single Line\",defaultValue:false,description:\"Force all text onto a single scrolling horizontal line.\"}}},typographyGroup:{type:ControlType.Object,title:\"Typography & Padding\",controls:{fontPreset:{type:ControlType.Enum,title:\"Font\",options:[\"inter\",\"robotoFlex\",\"montserrat\",\"workSans\",\"urbanist\"],optionTitles:[\"Inter\",\"Roboto Flex\",\"Montserrat\",\"Work Sans\",\"Urbanist\"],defaultValue:\"urbanist\"},baseSize:{type:ControlType.Number,title:\"Base Size\",min:12,max:200,step:1,defaultValue:56},lineHeight:{type:ControlType.Number,title:\"Line Height\",min:.1,max:3,step:.05,defaultValue:.7},paddingTop:{type:ControlType.Number,title:\"Top Padding\",min:0,max:200,defaultValue:24},paddingRight:{type:ControlType.Number,title:\"Right Padding\",min:0,max:200,defaultValue:24},paddingBottom:{type:ControlType.Number,title:\"Bottom Padding\",min:0,max:200,defaultValue:24},paddingLeft:{type:ControlType.Number,title:\"Left Padding\",min:0,max:200,defaultValue:24},minContentHeight:{type:ControlType.Number,title:\"Min Height\",min:0,max:2e3,defaultValue:0,description:\"0 = fit content\"},overflow:{type:ControlType.Enum,title:\"Overflow\",options:[\"visible\",\"hidden\",\"auto\",\"scroll\"],optionTitles:[\"Visible\",\"Hidden\",\"Auto\",\"Scroll\"],defaultValue:\"hidden\",description:\"Controls clipping when animated characters exceed the component bounds.\"}}},colorsGroup:{type:ControlType.Object,title:\"Colors\",controls:{background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#ffffff\"},color:{type:ControlType.Color,title:\"Base Text\",defaultValue:\"rgb(157, 20, 255)\"},colorPeak:{type:ControlType.Color,title:\"Peak Text\",defaultValue:\"rgb(255, 0, 128)\",description:\"Color blended at the peak of the hover or wave.\"}}},interactionMode:{type:ControlType.Enum,title:\"Mode\",options:[\"cursor\",\"scroll\",\"reveal\"],optionTitles:[\"Cursor Hover\",\"Scroll Wave\",\"Intro Reveal\"],defaultValue:\"scroll\",description:\"Cursor: reacts to mouse proximity. Scroll: a wave sweeps through as the element crosses the viewport. Reveal: plays once on mount.\"},influenceRadius:{type:ControlType.Number,title:\"Hover Radius\",min:40,max:800,step:5,defaultValue:95,description:\"Distance in pixels from the cursor that activates the animation.\",hidden(props){return props.interactionMode!==\"cursor\";}},scrollDrive:{type:ControlType.Enum,title:\"Scroll Drive\",options:[\"viewport\",\"parent\"],optionTitles:[\"Viewport crossing\",\"Scroll container\"],defaultValue:\"parent\",description:\"Viewport: progress tracks the element crossing the screen. Parent: driven by the nearest scrollable ancestor.\",hidden(props){return props.interactionMode!==\"scroll\";}},scrollSpread:{type:ControlType.Number,title:\"Wave Spread\",min:1,max:80,step:.5,defaultValue:9,description:\"How many characters fit inside the wave peak at once. Higher = wider, softer wave.\",hidden(props){return props.interactionMode!==\"scroll\";}},scrollSmooth:{type:ControlType.Number,title:\"Smoothness\",min:.01,max:1,step:.01,defaultValue:.22,description:\"How closely the wave follows scrolling. Lower = smoother and more delayed; 1.0 = instant.\",hidden(props){return props.interactionMode!==\"scroll\";}},scrollDelay:{type:ControlType.Number,title:\"Start Offset\",min:0,max:.9,step:.01,defaultValue:.15,description:\"Skip this fraction of scroll progress at the start. 0 = begin immediately; 0.3 = start 30% in.\",hidden(props){return props.interactionMode!==\"scroll\";}},scrollEndPad:{type:ControlType.Number,title:\"End Offset\",min:0,max:.9,step:.01,defaultValue:.54,description:\"Reserve this fraction at the end of the scroll range so the wave completes before reaching the bottom.\",hidden(props){return props.interactionMode!==\"scroll\";}},revealDuration:{type:ControlType.Number,title:\"Reveal Time (ms)\",min:100,max:5e3,step:50,defaultValue:900,description:\"How long each character's flash animation takes, in milliseconds.\",hidden(props){return props.interactionMode!==\"reveal\";}},revealStagger:{type:ControlType.Number,title:\"Stagger (ms)\",min:0,max:500,step:1,defaultValue:20,description:\"Delay in milliseconds between each character starting. Creates a cascading wave effect.\",hidden(props){return props.interactionMode!==\"reveal\";}},revealPeakWeight:{type:ControlType.Number,title:\"Peak Weight\",min:100,max:1e3,step:10,defaultValue:900,description:\"Font weight at the brightest point of the reveal flash. Requires a variable font.\",hidden(props){return props.interactionMode!==\"reveal\";}},maxSizeBoost:{type:ControlType.Number,title:\"Size Boost\",min:-100,max:200,step:1,defaultValue:88,description:\"Peak font size boost in px.\"},maxSkewBoost:{type:ControlType.Number,title:\"Slant Boost\",min:-60,max:60,step:1,defaultValue:0,description:\"Dynamic letter tilt in degrees.\"},maxFloatBoost:{type:ControlType.Number,title:\"Float Boost\",min:-200,max:200,step:1,defaultValue:0,description:\"Peak vertical displacement in px.\"},outOfFocusBlur:{type:ControlType.Number,title:\"Cinematic Blur\",min:0,max:20,step:.5,defaultValue:0,description:\"Blur on inactive letters (px). Clears to 0 at peak.\"},outOfFocusOpacity:{type:ControlType.Number,title:\"Dim Opacity\",min:0,max:1,step:.05,defaultValue:1,description:\"Opacity of inactive letters. Blends to 1.0 at peak.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TypeZoom\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"900\",\"framerSupportedLayoutWidth\":\"any-prefer-fill\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TypeZoom.map","// Generated by Framer (3ad0d99)\nexport default function metadata(params,activeLocale){return{description:\"Made with Framer\",robots:\"max-image-preview:large\",title:\"My Framer Site\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}