{"version":3,"file":"TextMotion_1.BK4IW_py.mjs","names":["useRef","useState","React.useState","React.useRef","useRef","useState","useMemo","startTransition","useId","__esmMin","pe","init_npm_react_18_3_1","init_ssg_sandbox_shims","window","te","ie","_e","p","c","init_jsx_runtime","ce","de","useInView","motion","init_framer_motion_DhsWWWsN","RenderTarget","init_framer_D6uXRwWs","addPropertyControls","ControlType","useIsStaticRenderer","CountUp","props","ref","inView","replay","n","setN","controls","animate","value","v","duration","delay","font","letterSpacing","prefix","suffix","init_CountUp","Side","hover","setHover","item","src","isRight","align","compact","radius","muted","label","ProjectNav","prev","DEFAULT_PREV","next","DEFAULT_NEXT","w","setW","ro","cw","compactBelow","topSpace","bottomSpace","line","prevLabel","nextLabel","itemControls","init_Project_Nav","tokenize","lines","text","splitBy","t","pseudoRandom","x","staggerIndex","order","total","i","presetEffect","propEffect","PRESETS","detailToFrequency","f","detail","effect","filterString","blurPx","brightness","glowPx","glowColor","chromaShadow","offset","alpha","wipeClip","progress","skew","TextMotion","isStatic","isCanvas","shouldForceVisiblePreview","hovered","setHovered","cycle","setCycle","sectionVisible","setSectionVisible","scrollTriggered","setScrollTriggered","scrollTriggeredRef","demoPreset","setDemoPreset","threshold","activePreset","demoPanel","preset","handleDemoSelect","m","base","BASE","pick","fallback","k","ratio","indexed","units","isSpace","unit","totalUnits","u","trigger","cycleMs","loopDelay","id","node","sectionLike","observer","entries","lastTick","onScroll","now","onKeyDown","target","delta","nextIndex","DEMO_PRESETS","activePresetRef","demoAutoPlay","demoAutoInterval","playing","usesClock","usesTurbulenceEffect","elapsed","setElapsed","displaceRef","filterId","start","raf","step","eased","isChroma","isShine","isNeon","isWipe","textColor","spread","seed","salt","variants","EASING","tokenStyle","ORIGIN","clipStyle","isFilled","style","usesTurbulence","turbulenceWrapStyle","isScramble","isType","contentFor","content","revealAt","orderIdx","SCRAMBLE_GLYPHS","renderToken","index","shown","token","key","demoPanelEl","DEMO_JUSTIFY","demoAlign","demoGap","demoPosition","demoSpacing","DEMO_ALIGN_SELF","isActive","titleCase","demoDotSize","demoColor","demoInactiveOpacity","useCustomFont","ui","ci","li","PRESET_OPTIONS","PRESET_TITLES","hideUnlessCustom","hideUnlessDemo","init_TextMotion_1","s"],"sources":["https:/framerusercontent.com/modules/MsCSmTwzUiT5aCNGl5Rg/n4Vg5QaTLSDFYORrVXNF/CountUp.js","https:/framerusercontent.com/modules/JIsCYUr2mfA2A2BrhlpN/LsGTkGpNRGcClBR6Vpe8/Project_Nav.js","https:/framerusercontent.com/modules/Ji6tfKjMqGOFzbUtrJz9/JgUtilog1TZ62YiDUcW7/TextMotion_1.js"],"sourcesContent":["import{jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{animate,useInView}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";// Animated metric: counts from 0 to the value when it scrolls into view.\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CountUp(props){const{value,prefix,suffix,duration,delay,color,fontSize,fontWeight,font,letterSpacing,replay}=props;const ref=useRef(null);const inView=useInView(ref,{once:!replay,amount:.6});const[n,setN]=useState(0);useEffect(()=>{if(!inView){if(replay)setN(0);return;}const controls=animate(0,value,{duration,delay,ease:[.16,1,.3,1],onUpdate:v=>setN(Math.round(v))});return()=>controls.stop();},[inView,value,duration,delay,replay]);return /*#__PURE__*/_jsxs(\"span\",{ref:ref,style:{display:\"inline-block\",whiteSpace:\"nowrap\",fontFamily:font,fontSize,fontWeight,lineHeight:1,letterSpacing:`${letterSpacing}em`,color,fontVariantNumeric:\"tabular-nums\"},\"aria-label\":`${prefix}${value}${suffix}`,children:[prefix,n,suffix]});}CountUp.defaultProps={value:28,prefix:\"+\",suffix:\"%\",duration:1.6,delay:0,color:\"#FFFFFF\",fontSize:56,fontWeight:500,font:\"Inter, sans-serif\",letterSpacing:-.04,replay:false};addPropertyControls(CountUp,{value:{type:ControlType.Number,title:\"Value\",min:0,max:1e3,step:1},prefix:{type:ControlType.String,title:\"Prefix\"},suffix:{type:ControlType.String,title:\"Suffix\"},duration:{type:ControlType.Number,title:\"Duration\",min:.2,max:5,step:.1,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",min:0,max:3,step:.1,unit:\"s\"},color:{type:ControlType.Color,title:\"Color\"},fontSize:{type:ControlType.Number,title:\"Size\",min:12,max:160,step:1},fontWeight:{type:ControlType.Enum,title:\"Weight\",options:[400,500,600,700],optionTitles:[\"Regular\",\"Medium\",\"Semibold\",\"Bold\"]},font:{type:ControlType.String,title:\"Font\"},letterSpacing:{type:ControlType.Number,title:\"Tracking\",min:-.1,max:.2,step:.01,unit:\"em\"},replay:{type:ControlType.Boolean,title:\"Replay\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CountUp\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountUp.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const DEFAULT_PREV={title:\"Parrobot\",link:\"/work/parrobot\",tag:\"AI guide\"};const DEFAULT_NEXT={title:\"Bolder\",link:\"/work/bolder\",tag:\"Brand & app\"};function Side({item,label,align,muted,radius,compact}){const[hover,setHover]=React.useState(false);if(!item||!item.title)return /*#__PURE__*/_jsx(\"div\",{style:{flex:1}});const src=item.image?.src||item.image;const isRight=align===\"right\";return /*#__PURE__*/_jsxs(\"a\",{href:item.link||\"#\",onMouseEnter:()=>setHover(true),onMouseLeave:()=>setHover(false),style:{flex:1,minWidth:0,display:\"flex\",flexDirection:isRight?\"row-reverse\":\"row\",alignItems:\"center\",gap:compact?0:24,textDecoration:\"none\",color:\"#fff\",padding:compact?\"24px 0\":\"32px 0\"},children:[src&&!compact&&/*#__PURE__*/_jsx(\"div\",{style:{width:120,height:135,borderRadius:radius,overflow:\"hidden\",flexShrink:0,background:\"#151515\"},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",transform:hover?\"scale(1.06)\":\"scale(1)\",transition:\"transform .5s cubic-bezier(.2,.7,.2,1)\"}})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:isRight?\"flex-end\":\"flex-start\",textAlign:isRight?\"right\":\"left\",gap:compact?8:10,minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:\"'Geist Mono', ui-monospace, monospace\",fontSize:compact?10:12,letterSpacing:\"0.14em\",textTransform:\"uppercase\",color:muted,whiteSpace:\"nowrap\"},children:compact?isRight?\"Next →\":\"← Prev\":isRight?`${label} →`:`← ${label}`}),/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:\"Switzer, Inter, sans-serif\",fontWeight:600,fontSize:compact?22:36,lineHeight:1.1,letterSpacing:\"-0.03em\",color:\"#fff\",overflowWrap:\"anywhere\"},children:item.title}),item.tag&&!compact&&/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:\"Switzer, Inter, sans-serif\",fontSize:15,color:muted},children:item.tag})]})]});}export default function ProjectNav(props){const{muted,line,radius,prevLabel,nextLabel,topSpace,bottomSpace,compactBelow}=props;const prev={...DEFAULT_PREV,...props.prev||{}};const next={...DEFAULT_NEXT,...props.next||{}};const ref=React.useRef(null);const[w,setW]=React.useState(1e3);React.useEffect(()=>{if(!ref.current)return;const ro=new ResizeObserver(()=>{const cw=ref.current?ref.current.clientWidth:1e3;setW(v=>Math.abs(v-cw)>2?cw:v);});ro.observe(ref.current);return()=>ro.disconnect();},[]);const compact=w<compactBelow;return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:\"100%\",paddingTop:topSpace,paddingBottom:bottomSpace,boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",borderTop:`1px solid ${line}`,borderBottom:`1px solid ${line}`,display:\"flex\",flexWrap:\"nowrap\",alignItems:\"stretch\",gap:compact?0:40,justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsx(Side,{item:prev,label:prevLabel,align:\"left\",muted:muted,radius:radius,compact:compact}),compact&&/*#__PURE__*/_jsx(\"div\",{style:{width:1,background:line,margin:\"16px 16px\"}}),/*#__PURE__*/_jsx(Side,{item:next,label:nextLabel,align:\"right\",muted:muted,radius:radius,compact:compact})]})});}ProjectNav.defaultProps={prevLabel:\"Previous project\",nextLabel:\"Next project\",prev:DEFAULT_PREV,next:DEFAULT_NEXT,muted:\"#8A8A8A\",line:\"#232323\",radius:10,topSpace:96,bottomSpace:0,compactBelow:560};const itemControls={title:{type:ControlType.String,title:\"Title\"},tag:{type:ControlType.String,title:\"Subtitle\"},link:{type:ControlType.Link,title:\"Link\"},image:{type:ControlType.ResponsiveImage,title:\"Cover\"}};addPropertyControls(ProjectNav,{prev:{type:ControlType.Object,title:\"Previous\",controls:itemControls},next:{type:ControlType.Object,title:\"Next\",controls:itemControls},prevLabel:{type:ControlType.String,title:\"Prev label\",defaultValue:\"Previous project\"},nextLabel:{type:ControlType.String,title:\"Next label\",defaultValue:\"Next project\"},topSpace:{type:ControlType.Number,title:\"Top space\",defaultValue:96,min:0,max:240,step:8,unit:\"px\"},bottomSpace:{type:ControlType.Number,title:\"Bottom space\",defaultValue:0,min:0,max:240,step:8,unit:\"px\"},compactBelow:{type:ControlType.Number,title:\"Compact below\",defaultValue:560,min:300,max:900,step:10,unit:\"px\"},muted:{type:ControlType.Color,title:\"Muted\",defaultValue:\"#8A8A8A\"},line:{type:ControlType.Color,title:\"Lines\",defaultValue:\"#232323\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:10,min:0,max:40}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProjectNav\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Project_Nav.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{startTransition,useEffect,useId,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{motion,useInView}from\"framer-motion\";/** Every preset is a diff against this, so the table below stays readable. */const BASE={splitBy:\"word\",effect:\"transform\",amount:0,detail:10,settle:1.8,chaos:0,z:0,x:0,y:0,opacity:0,blur:0,scale:1,scaleX:1,scaleY:1,rotate:0,rotateX:0,rotateY:0,skewX:0,origin:\"center\",clip:false,order:\"forward\",duration:.7,stagger:.03,easing:\"smooth\"};/** 37 recipes, grouped by family. \"custom\" is absent — it falls through to the props. */const PRESETS={// Movement\nfade:{y:18,duration:.6,stagger:.04},rise:{splitBy:\"line\",y:80,duration:.8,stagger:.12,easing:\"spring\"},drop:{splitBy:\"character\",y:-60,duration:.7,stagger:.02,easing:\"spring\"},slide:{x:-60,duration:.7,stagger:.05},// Softness\nsplit:{splitBy:\"character\",y:48,blur:8,duration:.7,stagger:.02,easing:\"spring\"},blur:{blur:14,duration:.9,stagger:.06},focus:{splitBy:\"character\",blur:18,scale:1.15,duration:.8,stagger:.02},// Reveal\nmask:{splitBy:\"line\",clip:true,y:100,duration:.9,stagger:.12,easing:\"snappy\"},curtain:{clip:true,y:100,duration:.7,stagger:.05,easing:\"snappy\"},unfold:{splitBy:\"line\",rotateX:-80,origin:\"top\",duration:.9,stagger:.1,easing:\"gentle\"},/** Diagonal clip sweep — the clip does the revealing, so nothing fades. */wipe:{splitBy:\"line\",effect:\"wipe\",amount:22,opacity:1,duration:.9,stagger:.12,easing:\"snappy\"},/** Odometer roll: clipped box + a hinge at the bottom edge. */roll:{splitBy:\"character\",clip:true,y:100,rotateX:-90,origin:\"bottom\",duration:.7,stagger:.03,easing:\"snappy\"},// Scale\npop:{splitBy:\"character\",scale:.4,duration:.6,stagger:.025,easing:\"snappy\"},punch:{splitBy:\"line\",scale:.8,y:20,duration:.5,stagger:.08,easing:\"bounce\"},zoom:{splitBy:\"line\",scale:1.6,blur:10,duration:.9,stagger:.1},shrink:{splitBy:\"character\",scale:2.2,duration:.6,stagger:.02,easing:\"snappy\"},/** Non-uniform squash — the only preset that scales the axes independently. */stretch:{splitBy:\"character\",scaleX:.3,scaleY:1.8,duration:.7,stagger:.025,easing:\"spring\"},// Rotation\nflip:{rotateX:90,duration:.8,stagger:.06,easing:\"gentle\"},swivel:{rotateY:90,duration:.8,stagger:.06,easing:\"gentle\"},tilt:{splitBy:\"character\",rotate:-12,y:30,duration:.7,stagger:.025,easing:\"spring\"},spin:{splitBy:\"character\",rotate:180,scale:.5,duration:.7,stagger:.03,easing:\"snappy\"},shear:{skewX:20,x:30,duration:.6,stagger:.05,easing:\"snappy\"},// Sequencing\nglitch:{splitBy:\"character\",x:14,skewX:-18,duration:.35,stagger:.012,easing:\"snappy\",order:\"random\"},wave:{splitBy:\"character\",y:30,duration:.7,stagger:.035,easing:\"spring\",order:\"center\"},cascade:{splitBy:\"character\",y:40,duration:.7,stagger:.025,order:\"reverse\"},scatter:{splitBy:\"character\",y:40,x:20,rotate:20,duration:.8,stagger:.03,easing:\"spring\",order:\"random\"},// Signature — these need machinery beyond transforms\n/** Glyphs churn, then land on the real character. Opacity stays 1: the churn is the reveal. */scramble:{splitBy:\"character\",effect:\"scramble\",opacity:1,duration:.4,stagger:.035},/** Characters appear one at a time behind a caret. */type:{splitBy:\"character\",effect:\"type\",opacity:1,duration:.01,stagger:.045},/** Low-frequency turbulence: a slow wobble. Long and slow-settling — the wobble is the point. */liquid:{splitBy:\"line\",effect:\"liquid\",amount:70,detail:10,settle:1.3,duration:2.4,stagger:.18},/** High-frequency turbulence: fine grain that reassembles into letterforms. */dissolve:{effect:\"dissolve\",amount:150,detail:76,settle:2.2,duration:1.2,stagger:.06},/** Chromatic aberration — the red/cyan fringes converge. */chroma:{splitBy:\"character\",effect:\"chroma\",amount:14,duration:.7,stagger:.02,easing:\"snappy\"},/** Staggered brightness peak reads as a highlight sweeping across the line. */shine:{splitBy:\"character\",effect:\"shine\",amount:2.8,duration:.5,stagger:.03},/** Glow blooms and tightens onto the glyph. */neon:{effect:\"neon\",amount:18,duration:.9,stagger:.07},// Extravagant — the loud end of the pack\n/** Every glyph arrives from its own random direction and converges. */explode:{splitBy:\"character\",chaos:1,scale:.3,blur:4,duration:1.1,stagger:.015,easing:\"spring\",order:\"random\"},/** Two full turns, collapsing in from nothing, on a scattered radius. */vortex:{splitBy:\"character\",chaos:.55,rotate:720,scale:0,duration:1.2,stagger:.03,easing:\"spring\"},/** Real depth: words hurtle in from far behind the screen, swivelling. */warp:{z:-900,rotateY:65,blur:12,duration:1,stagger:.08,origin:\"left\"},/** Turbulence stretched into wide vertical columns — the text drips into place. */melt:{splitBy:\"line\",effect:\"melt\",amount:95,detail:6,settle:1.2,duration:2.3,stagger:.15}};/** Dropdown order and labels. One punchy word each. */const PRESET_OPTIONS=[\"fade\",\"rise\",\"drop\",\"slide\",\"split\",\"blur\",\"focus\",\"mask\",\"curtain\",\"unfold\",\"wipe\",\"roll\",\"pop\",\"punch\",\"zoom\",\"shrink\",\"stretch\",\"flip\",\"swivel\",\"tilt\",\"spin\",\"shear\",\"glitch\",\"wave\",\"cascade\",\"scatter\",\"scramble\",\"type\",\"liquid\",\"dissolve\",\"chroma\",\"shine\",\"neon\",\"explode\",\"vortex\",\"warp\",\"melt\",\"custom\"];const titleCase=s=>s.charAt(0).toUpperCase()+s.slice(1);const PRESET_TITLES=PRESET_OPTIONS.map(titleCase);/** Dots for the demo panel — every baked preset, \"Custom\" excluded since it has no fixed recipe to preview. */const DEMO_PRESETS=PRESET_OPTIONS.filter(p=>p!==\"custom\");const EASING={/** Critically damped — natural spring deceleration with no overshoot. */spring:{type:\"spring\",bounce:0},/** The only genuinely bouncy option, used deliberately by the Punch preset. */bounce:{type:\"spring\",bounce:.55},smooth:{ease:[.22,1,.36,1]},snappy:{ease:[.16,1,.3,1]},gentle:{ease:[.4,0,.2,1]}};const ORIGIN={center:\"50% 50%\",top:\"50% 0%\",bottom:\"50% 100%\",left:\"0% 50%\",right:\"100% 50%\"};/** Cross-axis placement of the panel within the component, and how its rows justify. */const DEMO_ALIGN_SELF={left:\"flex-start\",center:\"center\",right:\"flex-end\"};const DEMO_JUSTIFY={left:\"flex-start\",center:\"center\",right:\"flex-end\"};/** Split text into lines, then into the animated units for that mode. */function tokenize(text,splitBy){const lines=text.split(\"\\n\");if(splitBy===\"line\")return lines.map(line=>[line]);return lines.map(line=>line.split(/(\\s+)/).filter(t=>t.length>0));}/** Deterministic, so server, client and canvas all agree on the same \"random\". */function pseudoRandom(n){const x=Math.sin((n+1)*12.9898)*43758.5453;return x-Math.floor(x);}/** Where a token sits in the stagger queue, which is not always its position in the text. */function staggerIndex(i,total,order){switch(order){case\"reverse\":return total-1-i;case\"center\":return Math.abs(i-(total-1)/2);case\"random\":return pseudoRandom(i)*total;default:return i;}}const SCRAMBLE_GLYPHS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#%&@$*<>/\\\\[]{}\";/** Resolves which engine a preset runs on, so effect-only sub-controls know when to appear. */function presetEffect(p,propEffect){if(!p)return\"transform\";if(p===\"custom\")return propEffect??\"transform\";return(PRESETS[p]?.effect)??\"transform\";}const usesTurbulenceEffect=e=>e===\"liquid\"||e===\"dissolve\"||e===\"melt\";/** Turbulence frequency from a friendly 0–100 dial. Squared so the low end has resolution. */function detailToFrequency(detail,effect){const f=Math.max(Math.pow(detail/100,2)*1.2,5e-4);/** Liquid stretches the noise horizontally; melt stretches it hard into vertical columns. */if(effect===\"liquid\")return`${f.toFixed(4)} ${(f*1.8).toFixed(4)}`;if(effect===\"melt\")return`${(f*.25).toFixed(4)} ${(f*6).toFixed(4)}`;return`${f.toFixed(4)} ${f.toFixed(4)}`;}/**\n * One filter string shape for every state, so framer-motion always interpolates\n * number-for-number. Dropping a function between keyframes makes it bail to a snap.\n */function filterString(blurPx,brightness,glowPx,glowColor){return`blur(${blurPx}px) brightness(${brightness}) drop-shadow(0 0 ${glowPx}px ${glowColor})`;}/** Both keyframes carry the same two shadows so only the numbers move. */function chromaShadow(offset,alpha){return`${offset}px 0 0 rgba(255,0,80,${alpha}), ${-offset}px 0 0 rgba(0,255,255,${alpha})`;}/** Four-point polygon in both states — matching point counts keep the clip interpolable. */function wipeClip(progress,skew){return progress===0?`polygon(0% 0%, 0% 0%, ${-skew}% 100%, 0% 100%)`:`polygon(0% 0%, ${100+skew}% 0%, 100% 100%, 0% 100%)`;}/**\n * Text Motion\n *\n * Animates text in by character, word, or line. 37 presets, or switch to\n * Custom to expose every motion parameter. Turn on the Demo Panel to preview\n * every preset live from a row of dots under the text.\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 120\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function TextMotion(props){const{text=\"Text animations that\\nyou’ll gonna remembers.\",preset=\"split\",trigger=\"onView\",delay=0,replay=true,threshold=.4,loopDelay=1.2,demoPanel=false,demoAutoPlay=false,demoAutoInterval=2,demoDotSize=8,demoGap=5,demoSpacing=34,demoColor=\"#FFFFFF\",demoInactiveOpacity=.3,demoAlign=\"center\",demoPosition=\"below\",useCustomFont=false,font,textColor,style}=props;const isStatic=useIsStaticRenderer();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const shouldForceVisiblePreview=isStatic||isCanvas;const ref=useRef(null);const[hovered,setHovered]=useState(false);const[cycle,setCycle]=useState(0);const[sectionVisible,setSectionVisible]=useState(false);const[scrollTriggered,setScrollTriggered]=useState(false);const scrollTriggeredRef=useRef(false);/** Set the first time a demo dot is clicked. Once set, it overrides the Preset control. */const[demoPreset,setDemoPreset]=useState(null);const inView=useInView(ref,{amount:threshold,once:!replay});/** Only lets the demo pick win while the panel is actually shown, so hiding it reverts to the Preset control. */const activePreset=demoPanel?demoPreset??preset:preset;/** A demo dot picks the preset and forces a fresh play, independent of Trigger. */const handleDemoSelect=p=>{if(p===activePreset)return;startTransition(()=>{setDemoPreset(p);setCycle(c=>c+1);});};/** Preset wins unless the user switched to Custom. */const m=useMemo(()=>{/** Custom starts from a neutral character-split recipe; presets start from their own. */const base=activePreset===\"custom\"?{...BASE,splitBy:\"character\",y:40,easing:\"spring\"}:{...BASE,...PRESETS[activePreset]};/** An enum left on \"auto\" defers to the preset, same as an untouched number. */const pick=(v,fallback)=>v===undefined||v===\"auto\"?fallback:v;/**\n         * One dial instead of ten. Intensity scales every magnitude the preset moves,\n         * so a preset keeps its character and only gets louder or quieter.\n         * Scales are ratios around 1, so their distance from rest is what scales.\n         */const k=props.intensity??1;const ratio=v=>1+(v-1)*k;return{splitBy:pick(props.splitBy,base.splitBy),effect:pick(props.effect,base.effect),amount:(props.amount??base.amount)*k,detail:props.detail??base.detail,settle:props.settle??base.settle,chaos:(props.chaos??base.chaos)*k,z:(props.z??base.z)*k,x:(props.x??base.x)*k,y:(props.y??base.y)*k,opacity:props.opacity??base.opacity,blur:(props.blur??base.blur)*k,scale:ratio(props.scale??base.scale),scaleX:ratio(props.scaleX??base.scaleX),scaleY:ratio(props.scaleY??base.scaleY),rotate:(props.rotate??base.rotate)*k,rotateX:(props.rotateX??base.rotateX)*k,rotateY:(props.rotateY??base.rotateY)*k,skewX:(props.skewX??base.skewX)*k,origin:pick(props.origin,base.origin),clip:props.clip??base.clip,order:pick(props.order,base.order),duration:props.duration??base.duration,stagger:props.stagger??base.stagger,easing:pick(props.easing,base.easing)};},[activePreset,props.intensity,props.splitBy,props.effect,props.amount,props.detail,props.settle,props.chaos,props.z,props.x,props.y,props.opacity,props.blur,props.scale,props.scaleX,props.scaleY,props.rotate,props.rotateX,props.rotateY,props.skewX,props.origin,props.clip,props.order,props.duration,props.stagger,props.easing]);const lines=useMemo(()=>tokenize(text,m.splitBy),[text,m.splitBy]);/** Flat running index so stagger is continuous across lines and words. */const indexed=useMemo(()=>{let i=0;return lines.map(units=>units.map(unit=>{const isSpace=/^\\s+$/.test(unit);if(isSpace)return{unit,index:-1,isSpace,chars:null};if(m.splitBy===\"character\"){return{unit,index:-1,isSpace,chars:Array.from(unit).map(c=>({c,index:i++}))};}return{unit,index:i++,isSpace,chars:null};}));},[lines,m.splitBy]);const totalUnits=useMemo(()=>{let n=0;for(const units of indexed){for(const u of units){if(u.isSpace)continue;n+=u.chars?u.chars.length:1;}}return Math.max(n,1);},[indexed]);useEffect(()=>{scrollTriggeredRef.current=scrollTriggered;},[scrollTriggered]);/** Loop re-mounts the tree on a timer so the whole stagger replays. */useEffect(()=>{if(trigger!==\"loop\"||isStatic)return;const cycleMs=(delay+m.duration+m.stagger*totalUnits+loopDelay)*1e3;const id=window.setInterval(()=>startTransition(()=>setCycle(c=>c+1)),cycleMs);return()=>window.clearInterval(id);},[trigger,isStatic,delay,m.duration,m.stagger,totalUnits,loopDelay]);/** Section in View uses the nearest section-like ancestor, or this layer as fallback. */useEffect(()=>{if(trigger!==\"sectionInView\"||isStatic)return;if(typeof window===\"undefined\")return;const node=ref.current;if(!node)return;const sectionLike=node.closest(\"section, main, article, [role='region'], [data-framer-section], [data-framer-name*='Section']\")??node;const observer=new window.IntersectionObserver(entries=>{const next=entries[0]?.isIntersecting??false;startTransition(()=>setSectionVisible(next));},{threshold});observer.observe(sectionLike);return()=>observer.disconnect();},[trigger,isStatic,threshold]);/** On Scroll replays the entrance on discrete scroll events (throttled). */useEffect(()=>{if(trigger!==\"onScroll\"||isStatic)return;if(typeof window===\"undefined\")return;let lastTick=0;const throttleMs=180;const onScroll=()=>{const now=Date.now();if(now-lastTick<throttleMs)return;lastTick=now;if(!replay&&scrollTriggeredRef.current)return;scrollTriggeredRef.current=true;startTransition(()=>setScrollTriggered(true));startTransition(()=>setCycle(c=>c+1));};window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>window.removeEventListener(\"scroll\",onScroll);},[trigger,isStatic,replay]);/** Left/Right steps through the Demo Panel's presets — only wired up while the panel is on. */useEffect(()=>{if(!demoPanel||isStatic)return;if(typeof window===\"undefined\")return;const onKeyDown=e=>{if(e.key!==\"ArrowLeft\"&&e.key!==\"ArrowRight\")return;const target=e.target;if(target?.isContentEditable)return;if(target&&/^(input|textarea|select)$/i.test(target.tagName))return;e.preventDefault();const delta=e.key===\"ArrowRight\"?1:-1;const currentIndex=DEMO_PRESETS.indexOf(activePreset);const nextIndex=(currentIndex+delta+DEMO_PRESETS.length)%DEMO_PRESETS.length;handleDemoSelect(DEMO_PRESETS[nextIndex]);};window.addEventListener(\"keydown\",onKeyDown);return()=>window.removeEventListener(\"keydown\",onKeyDown);},[demoPanel,isStatic,activePreset]);/** Read inside the interval without depending on it, so Auto Play never restarts its own countdown mid-cycle. */const activePresetRef=useRef(activePreset);useEffect(()=>{activePresetRef.current=activePreset;},[activePreset]);/** Auto Play walks the whole set on a timer — same wrap-around as the arrow keys. */useEffect(()=>{if(!demoPanel||!demoAutoPlay||isStatic)return;if(typeof window===\"undefined\")return;const id=window.setInterval(()=>{const currentIndex=DEMO_PRESETS.indexOf(activePresetRef.current);const nextIndex=(currentIndex+1+DEMO_PRESETS.length)%DEMO_PRESETS.length;startTransition(()=>{setDemoPreset(DEMO_PRESETS[nextIndex]);setCycle(c=>c+1);});},Math.max(demoAutoInterval,.1)*1e3);return()=>window.clearInterval(id);},[demoPanel,demoAutoPlay,isStatic,demoAutoInterval]);const playing=shouldForceVisiblePreview||/** A manual demo pick, or Auto Play, always plays — regardless of Trigger — but only while the panel is shown. */demoPanel&&(demoPreset!==null||demoAutoPlay)||trigger===\"onMount\"||trigger===\"loop\"||trigger===\"onScroll\"&&scrollTriggered||trigger===\"onView\"&&inView||trigger===\"sectionInView\"&&sectionVisible||trigger===\"hover\"&&hovered;/** Content-mutating and SVG-filter effects need a wall clock; transforms do not. */const usesClock=m.effect===\"scramble\"||m.effect===\"type\"||usesTurbulenceEffect(m.effect);const[elapsed,setElapsed]=useState(0);const displaceRef=useRef(null);const filterId=`tm-${useId().replace(/:/g,\"\")}`;/** Restart the clock whenever a fresh play begins. */useEffect(()=>{if(!usesClock)return;setElapsed(shouldForceVisiblePreview?9999:0);},[usesClock,cycle,activePreset,shouldForceVisiblePreview]);useEffect(()=>{if(!usesClock||shouldForceVisiblePreview||!playing)return;if(typeof window===\"undefined\")return;const start=performance.now();let raf=0;const total=delay+m.duration+m.stagger*totalUnits;const step=()=>{const t=(performance.now()-start)/1e3;/** Drive the SVG filter imperatively — no re-render per frame. */if(displaceRef.current){const p=Math.min(t/Math.max(total,.01),1);const eased=Math.pow(1-p,m.settle);displaceRef.current.setAttribute(\"scale\",String(m.amount*eased));}setElapsed(t);if(t<total+.1)raf=window.requestAnimationFrame(step);};raf=window.requestAnimationFrame(step);return()=>window.cancelAnimationFrame(raf);},[usesClock,shouldForceVisiblePreview,playing,cycle,activePreset,delay,m.duration,m.stagger,m.amount,m.settle,totalUnits]);const isChroma=m.effect===\"chroma\";const isShine=m.effect===\"shine\";const isNeon=m.effect===\"neon\";const isWipe=m.effect===\"wipe\";const glowColor=textColor??\"currentColor\";/** Signed −1..1 from a token's seed, so each glyph gets a stable direction of its own. */const spread=(seed,salt)=>(pseudoRandom(seed*3+salt)-.5)*2;const variants={/** A function so `chaos` can give every token its own start, not just its own delay. */hidden:({seed})=>({opacity:m.opacity,/** Chaos is px, so it cannot mix with the percentage offsets a clip mask uses. */x:m.x+(m.chaos&&!m.clip?spread(seed,1)*m.chaos*240:0),/** Under a clip mask the offset is a share of the line box, not pixels. */y:m.clip?`${m.y}%`:m.y+(m.chaos?spread(seed,2)*m.chaos*200:0),z:m.z,scale:m.scale,scaleX:m.scaleX,scaleY:m.scaleY,rotate:m.rotate+(m.chaos?spread(seed,3)*m.chaos*160:0),rotateX:m.rotateX,rotateY:m.rotateY,skewX:m.skewX,/** Per-element, so 3D survives the nested word wrappers. */transformPerspective:800,filter:filterString(m.blur,isShine?m.amount:1,isNeon?m.amount:0,glowColor),...isChroma?{textShadow:chromaShadow(m.amount,.9)}:null,...isWipe?{clipPath:wipeClip(0,m.amount)}:null}),visible:({i})=>({opacity:1,x:0,y:m.clip?\"0%\":0,z:0,scale:1,scaleX:1,scaleY:1,rotate:0,rotateX:0,rotateY:0,skewX:0,transformPerspective:800,filter:filterString(0,1,0,glowColor),...isChroma?{textShadow:chromaShadow(0,0)}:null,...isWipe?{clipPath:wipeClip(1,m.amount)}:null,transition:{...EASING[m.easing],duration:m.duration,delay:delay+i*m.stagger}})};const tokenStyle={display:\"inline-block\",transformOrigin:ORIGIN[m.origin],willChange:\"transform, filter, opacity\"};/** The mask box. Padding/negative-margin keeps descenders from being sliced. */const clipStyle={display:\"inline-block\",overflow:\"hidden\",verticalAlign:\"bottom\",paddingBottom:\"0.15em\",marginBottom:\"-0.15em\"};const isFilled=style?.width===\"100%\";/** Liquid and Dissolve distort the whole text block, so the filter goes on a wrapper. */const usesTurbulence=usesTurbulenceEffect(m.effect);const turbulenceWrapStyle=usesTurbulence?{filter:`url(#${filterId})`,willChange:\"filter\"}:{};const isScramble=m.effect===\"scramble\";const isType=m.effect===\"type\";/**\n     * For the content-driven effects, swap what the token renders based on the clock:\n     * before its turn a scramble token shows a junk glyph and a type token shows nothing.\n     */const contentFor=(content,orderIdx)=>{if(!isScramble&&!isType)return content;if(shouldForceVisiblePreview)return content;const revealAt=delay+orderIdx*m.stagger;if(elapsed>=revealAt)return content;if(isType)return\"\";/** Re-roll roughly every 45ms, offset per token so they do not churn in lockstep. */const seed=Math.floor(elapsed/.045)+orderIdx;return SCRAMBLE_GLYPHS[Math.floor(pseudoRandom(seed)*SCRAMBLE_GLYPHS.length)];};const renderToken=(content,index,key)=>{const orderIdx=staggerIndex(index,totalUnits,m.order);const shown=contentFor(content,orderIdx);const token=/*#__PURE__*/_jsx(motion.span,{custom:{i:orderIdx,seed:index},variants:variants,initial:shouldForceVisiblePreview?\"visible\":\"hidden\",animate:shouldForceVisiblePreview||playing?\"visible\":\"hidden\",style:tokenStyle,children:shown===\"\"?/*#__PURE__*/_jsx(\"span\",{style:{visibility:\"hidden\"},children:content}):shown},m.clip?undefined:key);if(!m.clip)return token;return /*#__PURE__*/_jsx(\"span\",{style:clipStyle,children:token},key);};const demoPanelEl=demoPanel&&/*#__PURE__*/_jsx(\"div\",{role:\"group\",\"aria-label\":\"Preset demo\",style:{display:\"flex\",/** Always a single row — the row is free to grow as wide as it needs. */flexWrap:\"nowrap\",justifyContent:DEMO_JUSTIFY[demoAlign],alignItems:\"center\",gap:demoGap,marginTop:demoPosition===\"below\"?demoSpacing:0,marginBottom:demoPosition===\"above\"?demoSpacing:0,alignSelf:DEMO_ALIGN_SELF[demoAlign]},children:DEMO_PRESETS.map(p=>{const isActive=p===activePreset;return /*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>handleDemoSelect(p),\"aria-label\":titleCase(p),\"aria-pressed\":isActive,style:{display:\"block\",flexShrink:0,width:demoDotSize,height:demoDotSize,padding:0,margin:0,border:\"none\",borderRadius:\"50%\",/** Defaults to white, independent of Text Color — the panel is UI chrome, not part of the copy. */background:demoColor,/** Same size for every dot — the active one is only brighter. */opacity:isActive?1:demoInactiveOpacity,cursor:\"pointer\",transition:\"opacity 0.2s ease\"}},p);})},\"demo-panel\");return /*#__PURE__*/_jsxs(\"div\",{ref:ref,onMouseEnter:isStatic?undefined:()=>startTransition(()=>setHovered(true)),onMouseLeave:isStatic?undefined:()=>startTransition(()=>setHovered(false)),style:{...style,position:\"relative\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",/** Inherit the surrounding type unless the designer overrides it. */font:useCustomFont?undefined:\"inherit\",...useCustomFont?font:null,/** Always fall back to inherit, so a custom font never lands as black on black. */color:textColor??\"inherit\",...isFilled?null:{minWidth:\"max-content\"}},children:[demoPosition===\"above\"&&demoPanelEl,usesTurbulence&&/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",style:{position:\"absolute\",width:0,height:0,pointerEvents:\"none\"},children:/*#__PURE__*/_jsxs(\"filter\",{id:filterId,colorInterpolationFilters:\"sRGB\",children:[/*#__PURE__*/_jsx(\"feTurbulence\",{type:\"fractalNoise\",/** Low frequency reads as a liquid wave; high frequency as fine grain. */baseFrequency:detailToFrequency(m.detail,m.effect),numOctaves:m.effect===\"liquid\"?2:1,seed:7,result:\"noise\"}),/*#__PURE__*/_jsx(\"feDisplacementMap\",{ref:displaceRef,in:\"SourceGraphic\",in2:\"noise\",scale:shouldForceVisiblePreview?0:m.amount,xChannelSelector:\"R\",yChannelSelector:\"G\"})]})}),/*#__PURE__*/_jsx(\"div\",{style:turbulenceWrapStyle,children:indexed.map((units,li)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"block\",whiteSpace:\"pre-wrap\"},children:units.map((u,ui)=>{if(u.isSpace)return /*#__PURE__*/_jsx(\"span\",{children:u.unit},ui);if(u.chars){return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",whiteSpace:\"nowrap\"},children:u.chars.map(({c,index},ci)=>renderToken(c,index,ci))},ui);}return renderToken(u.unit,u.index,ui);})},`${cycle}-${li}`))}),demoPosition===\"below\"&&demoPanelEl]});}/** Motion parameters are only meaningful once the preset is set to Custom. */const hideUnlessCustom=p=>p.preset!==\"custom\";/** Demo Panel settings are only meaningful once the panel is switched on. */const hideUnlessDemo=p=>!p.demoPanel;addPropertyControls(TextMotion,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Text animations that\\nyou’ll gonna remembers.\",displayTextArea:true,placeholder:\"Type your copy…\"},preset:{type:ControlType.Enum,title:\"Preset\",defaultValue:\"split\",options:PRESET_OPTIONS,optionTitles:PRESET_TITLES},demoPanel:{type:ControlType.Boolean,title:\"Demo Panel\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},demoAutoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:false,hidden:hideUnlessDemo},demoAutoInterval:{type:ControlType.Number,title:\"Auto Interval\",defaultValue:2,min:.5,max:10,step:.1,unit:\"s\",hidden:p=>!p.demoPanel||!p.demoAutoPlay},demoPosition:{type:ControlType.Enum,title:\"Position\",defaultValue:\"below\",options:[\"above\",\"below\"],optionTitles:[\"Above\",\"Below\"],displaySegmentedControl:true,hidden:hideUnlessDemo},demoAlign:{type:ControlType.Enum,title:\"Align\",defaultValue:\"center\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],displaySegmentedControl:true,hidden:hideUnlessDemo},demoDotSize:{type:ControlType.Number,title:\"Dot Size\",defaultValue:8,min:4,max:20,step:1,unit:\"px\",hidden:hideUnlessDemo},demoGap:{type:ControlType.Number,title:\"Dot Gap\",defaultValue:5,min:0,max:30,step:1,unit:\"px\",hidden:hideUnlessDemo},demoSpacing:{type:ControlType.Number,title:\"Panel Spacing\",defaultValue:34,min:0,step:1,unit:\"px\",hidden:hideUnlessDemo},demoColor:{type:ControlType.Color,title:\"Panel Color\",defaultValue:\"#FFFFFF\",hidden:hideUnlessDemo},demoInactiveOpacity:{type:ControlType.Number,title:\"Inactive Opacity\",defaultValue:.3,min:0,max:1,step:.05,hidden:hideUnlessDemo},/**\n     * Per-preset sub-controls, kept deliberately short: three knobs for most presets,\n     * five for the turbulence ones. Everything is optional or \"auto\", so an untouched\n     * knob defers to the preset. The long tail of individual dimensions lives in Custom.\n     */intensity:{type:ControlType.Number,title:\"Intensity\",description:\"Scales everything the preset moves. 1 is the preset as designed.\",optional:true,min:0,max:3,step:.05},duration:{type:ControlType.Number,title:\"Duration\",optional:true,min:.05,max:8,step:.05,unit:\"s\"},stagger:{type:ControlType.Number,title:\"Stagger\",optional:true,min:0,max:.4,step:.005,unit:\"s\"},/** Turbulence-only, because grain and decay have no meaning anywhere else. */detail:{type:ControlType.Number,title:\"Detail\",description:\"Turbulence grain. Low is a slow liquid wave, high is fine sand.\",optional:true,min:1,max:100,step:1,hidden:p=>!usesTurbulenceEffect(presetEffect(p.preset,p.effect))},settle:{type:ControlType.Number,title:\"Settle\",description:\"How fast the turbulence decays. Lower lingers, higher snaps to rest.\",optional:true,min:.4,max:5,step:.1,hidden:p=>!usesTurbulenceEffect(presetEffect(p.preset,p.effect))},/** Custom-only from here — the full parameter set, hidden behind the Custom preset. */effect:{type:ControlType.Enum,title:\"Effect\",defaultValue:\"auto\",options:[\"auto\",\"transform\",\"scramble\",\"type\",\"liquid\",\"dissolve\",\"melt\",\"chroma\",\"shine\",\"neon\",\"wipe\"],optionTitles:[\"Auto\",\"Transform\",\"Scramble\",\"Type\",\"Liquid\",\"Dissolve\",\"Melt\",\"Chroma\",\"Shine\",\"Neon\",\"Wipe\"],hidden:hideUnlessCustom},easing:{type:ControlType.Enum,title:\"Easing\",defaultValue:\"auto\",options:[\"auto\",\"spring\",\"bounce\",\"smooth\",\"snappy\",\"gentle\"],optionTitles:[\"Auto\",\"Spring\",\"Bounce\",\"Smooth\",\"Snappy\",\"Gentle\"],hidden:hideUnlessCustom},splitBy:{type:ControlType.Enum,title:\"Split By\",defaultValue:\"auto\",options:[\"auto\",\"character\",\"word\",\"line\"],optionTitles:[\"Auto\",\"Char\",\"Word\",\"Line\"],displaySegmentedControl:true,hidden:hideUnlessCustom},order:{type:ControlType.Enum,title:\"Order\",defaultValue:\"auto\",options:[\"auto\",\"forward\",\"reverse\",\"center\",\"random\"],optionTitles:[\"Auto\",\"Forward\",\"Reverse\",\"Center\",\"Random\"],hidden:hideUnlessCustom},origin:{type:ControlType.Enum,title:\"Origin\",defaultValue:\"auto\",options:[\"auto\",\"center\",\"top\",\"bottom\",\"left\",\"right\"],optionTitles:[\"Auto\",\"Center\",\"Top\",\"Bottom\",\"Left\",\"Right\"],hidden:hideUnlessCustom},amount:{type:ControlType.Number,title:\"Amount\",optional:true,min:0,max:300,step:1,hidden:hideUnlessCustom},chaos:{type:ControlType.Number,title:\"Chaos\",description:\"Per-glyph random spread.\",optional:true,min:0,max:2,step:.05,hidden:hideUnlessCustom},z:{type:ControlType.Number,title:\"Depth\",optional:true,min:-2e3,max:2e3,step:10,unit:\"px\",hidden:hideUnlessCustom},y:{type:ControlType.Number,title:\"Distance Y\",optional:true,min:-300,max:300,step:1,unit:\"px\",hidden:hideUnlessCustom},x:{type:ControlType.Number,title:\"Distance X\",optional:true,min:-300,max:300,step:1,unit:\"px\",hidden:hideUnlessCustom},blur:{type:ControlType.Number,title:\"Blur\",optional:true,min:0,max:40,step:1,unit:\"px\",hidden:hideUnlessCustom},scale:{type:ControlType.Number,title:\"Scale\",optional:true,min:0,max:3,step:.05,hidden:hideUnlessCustom},scaleX:{type:ControlType.Number,title:\"Scale X\",optional:true,min:0,max:3,step:.05,hidden:hideUnlessCustom},scaleY:{type:ControlType.Number,title:\"Scale Y\",optional:true,min:0,max:3,step:.05,hidden:hideUnlessCustom},rotate:{type:ControlType.Number,title:\"Rotate\",optional:true,min:-720,max:720,step:1,unit:\"\\xb0\",hidden:hideUnlessCustom},rotateX:{type:ControlType.Number,title:\"Flip X\",optional:true,min:-180,max:180,step:1,unit:\"\\xb0\",hidden:hideUnlessCustom},rotateY:{type:ControlType.Number,title:\"Flip Y\",optional:true,min:-180,max:180,step:1,unit:\"\\xb0\",hidden:hideUnlessCustom},skewX:{type:ControlType.Number,title:\"Skew\",optional:true,min:-60,max:60,step:1,unit:\"\\xb0\",hidden:hideUnlessCustom},opacity:{type:ControlType.Number,title:\"Start Opacity\",optional:true,min:0,max:1,step:.05,hidden:hideUnlessCustom},clip:{type:ControlType.Boolean,title:\"Mask\",optional:true,hidden:hideUnlessCustom},/** Always visible */trigger:{type:ControlType.Enum,title:\"Trigger\",defaultValue:\"onView\",options:[\"onView\",\"sectionInView\",\"onScroll\",\"onMount\",\"hover\",\"loop\"],optionTitles:[\"Layer in View\",\"Section in View\",\"On Scroll\",\"On Mount\",\"Hover\",\"Loop\"]},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:5,step:.05,unit:\"s\"},threshold:{type:ControlType.Number,title:\"Threshold\",defaultValue:.4,min:0,max:1,step:.05,hidden:p=>p.trigger!==\"onView\"&&p.trigger!==\"sectionInView\"},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:true,hidden:p=>p.trigger!==\"onView\"&&p.trigger!==\"sectionInView\"&&p.trigger!==\"onScroll\"},loopDelay:{type:ControlType.Number,title:\"Loop Gap\",defaultValue:1.2,min:0,max:8,step:.1,unit:\"s\",hidden:p=>p.trigger!==\"loop\"},/** Typography escape hatches — both inherit from the canvas by default. */textColor:{type:ControlType.Color,title:\"Color\",optional:true},useCustomFont:{type:ControlType.Boolean,title:\"Own Font\",defaultValue:false},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"46px\",variant:\"Bold\",letterSpacing:\"0.01em\",lineHeight:\"1.15em\"},hidden:p=>!p.useCustomFont},madeByKollinaStudio:{type:\"description\",title:\"\",description:\"Made by KollinaStudio\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextMotion\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"120\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextMotion_1.map"],"mappings":"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"}