{"version":3,"file":"StaggerText_v1.CZO6ohlk.mjs","names":["useRef","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/uegNgXUEMBofcocJKAtQ/ZU69M8IRlsB1DMqx5bDn/StaggerText_v1.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView,useScroll,useMotionValueEvent}from\"framer-motion\";import{useMemo,useRef,useState}from\"react\";/**\n * Staggered Text\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 60\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function StaggerText(props){const{text,type,stagger,reverse,y,x,transition,font,color,align,style,trigger,threshold,once,tag,padding,textTransform,reference}=props;const content=text||\"Build faster with Framer\";const isStatic=useIsStaticRenderer();const ref=useRef(null);const[isHovered,setIsHovered]=useState(false);// ✅ Element-based inView (unchanged)\nconst isElementInView=useInView(ref,{once:trigger===\"inView\"?once:false,amount:threshold});// ✅ Viewport-based scroll tracking (NEW)\nconst{scrollYProgress}=useScroll({target:ref,offset:[\"start end\",\"end start\"]});const[isViewportInView,setViewportInView]=useState(false);const hasTriggeredRef=useRef(false);useMotionValueEvent(scrollYProgress,\"change\",v=>{const meetsThreshold=v>=1-threshold;// If once = true → trigger only first time\nif(once){if(!hasTriggeredRef.current&&meetsThreshold){hasTriggeredRef.current=true;setViewportInView(true);}}else{// Normal behavior (replay allowed)\nsetViewportInView(meetsThreshold);}});// ✅ Final inView logic\nconst isInView=reference===\"viewport\"?isViewportInView:isElementInView;const items=useMemo(()=>{return type===\"word\"?content.split(\" \"):content.split(\"\");},[content,type]);const totalItems=items.length;const makeTransition=delay=>{return{...transition,delay};};const child={hidden:index=>{let hiddenIndex=index;if(trigger===\"hover\"){hiddenIndex=reverse?index:totalItems-1-index;}else if(reverse){hiddenIndex=totalItems-1-index;}return{opacity:0,y,x,transition:makeTransition(hiddenIndex*stagger)};},visible:index=>{const visibleIndex=reverse?totalItems-1-index:index;return{opacity:1,y:0,x:0,transition:makeTransition(visibleIndex*stagger)};}};const getAnimateState=()=>{if(isStatic)return\"visible\";if(trigger===\"appear\")return\"visible\";if(trigger===\"hover\")return isHovered?\"visible\":\"hidden\";if(trigger===\"inView\"||trigger===\"whileInView\"){return isInView?\"visible\":\"hidden\";}return\"visible\";};const Component=motion[tag];return /*#__PURE__*/_jsx(Component,{ref:ref,initial:isStatic?\"visible\":\"hidden\",animate:getAnimateState(),onMouseEnter:()=>trigger===\"hover\"&&setIsHovered(true),onMouseLeave:()=>trigger===\"hover\"&&setIsHovered(false),style:{...style,display:\"inline-block\",width:style?.width===\"100%\"?\"100%\":\"max-content\",textAlign:align,color,whiteSpace:\"normal\",wordBreak:\"break-word\",overflow:\"visible\",margin:0,padding,textTransform,...font},children:items.map((item,i)=>/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",overflow:\"clip\",marginRight:type===\"word\"?\"0.2em\":\"0\",paddingBottom:\"4px\",paddingRight:type===\"word\"?\"2px\":\"0\"},children:/*#__PURE__*/_jsx(motion.span,{custom:i,variants:child,style:{display:\"inline-block\",position:\"relative\",willChange:\"opacity, transform\"},children:item===\" \"?\"\\xa0\":item})},i))});}addPropertyControls(StaggerText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Build faster with Framer\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Medium\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},textTransform:{type:ControlType.Enum,title:\"Transform\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],optionTitles:[\"None\",\"Uppercase\",\"Lowercase\",\"Capitalize\"],defaultValue:\"none\",displaySegmentedControl:false},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},align:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"0\"},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"appear\",\"hover\",\"inView\",\"whileInView\"],optionTitles:[\"On Appear\",\"On Hover\",\"Layer in View\",\"While in View\"],defaultValue:\"appear\"},reference:{type:ControlType.Enum,title:\"Reference\",options:[\"element\",\"viewport\"],optionTitles:[\"Element\",\"Viewport\"],defaultValue:\"element\",hidden:props=>props.trigger===\"appear\"||props.trigger===\"hover\"},threshold:{type:ControlType.Number,title:\"Threshold\",defaultValue:.2,min:0,max:1,step:.1,hidden:props=>props.trigger===\"appear\"||props.trigger===\"hover\",description:\"Element: Portion visible | Viewport: 0=Top, 0.5=Center, 1=Bottom\"},once:{type:ControlType.Boolean,title:\"Once\",defaultValue:true,hidden:props=>props.trigger!==\"inView\"},type:{type:ControlType.Enum,title:\"Split\",options:[\"word\",\"char\"],optionTitles:[\"Words\",\"Characters\"],defaultValue:\"word\"},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.08,min:0,max:.5,step:.01},reverse:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:false},x:{type:ControlType.Number,title:\"Offset X\",defaultValue:0,min:-200,max:200},y:{type:ControlType.Number,title:\"Offset Y\",defaultValue:20,min:-200,max:200},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:{type:\"tween\",duration:.4,ease:\"easeOut\"}},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],defaultValue:\"p\",displaySegmentedControl:false,description:\"More components at [Framerize](https://dub.sh/frmze-cc).\"}});StaggerText.displayName=\"Stagger Text v1\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StaggerText\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"60\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StaggerText_v1.map"],"mappings":"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"}