{"version":3,"file":"ShutterText_2.CBPisMOx.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/nvmIqt4fLH2ubRkaw3U4/U7GG2VOht2aIJKj9iDMv/ShutterText_2.js"],"sourcesContent":["// Shutter text effect with customizable direction and animation settings\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{motion,useInView}from\"framer-motion\";import{useRef,useEffect,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * Shutter Text Effect\n * \n * Animated text reveal with shutter effect from multiple directions\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function ShutterText(props){const{text=\"Shutter Effect\",direction=\"left\",textColor=\"#000000\",font,duration=.8,delay=0,stagger=.05,loopCount=1,repeatDelay=0,transition,translateDistance=20,animate=true,wrapMode=\"char\",triggerMode=\"appear\",style}=props;const containerRef=useRef(null);const isInView=useInView(containerRef,{once:triggerMode===\"appear\"});const isStatic=useIsStaticRenderer();const[animationKey,setAnimationKey]=useState(0);// Reset animation when animate prop changes\nuseEffect(()=>{if(!isStatic&&animate){startTransition(()=>{setAnimationKey(prev=>prev+1);});}},[animate,isStatic]);const characters=text.split(\"\");const getDirectionValues=()=>{switch(direction){case\"left\":return{x:-translateDistance,y:0};case\"right\":return{x:translateDistance,y:0};case\"top\":return{x:0,y:-translateDistance};case\"bottom\":return{x:0,y:translateDistance};default:return{x:0,y:0};}};const directionValues=getDirectionValues();const textVariants={hidden:{opacity:0,x:directionValues.x,y:directionValues.y},visible:{opacity:1,x:0,y:0}};const isFixedWidth=style?.width===\"100%\";const isFixedHeight=style?.height===\"100%\";// Extract textAlign from font object and ensure it's properly applied\nconst textAlign=font?.textAlign||\"left\";const fontStyles={...font};delete fontStyles.textAlign;// Convert textAlign to justifyContent for flex layout\nconst getJustifyContent=()=>{switch(textAlign){case\"center\":return\"center\";case\"right\":return\"flex-end\";default:return\"flex-start\";}};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,position:\"relative\",display:\"flex\",alignItems:isFixedHeight?\"center\":\"flex-start\",width:isFixedWidth?\"100%\":\"max-content\",height:isFixedHeight?\"100%\":\"auto\"},children:/*#__PURE__*/_jsx(\"div\",{style:{display:wrapMode===\"word\"?\"flex\":\"inline-block\",flexWrap:wrapMode===\"word\"?\"wrap\":undefined,width:wrapMode===\"word\"?\"100%\":\"auto\",gap:wrapMode===\"word\"?\"0.25em\":undefined,justifyContent:getJustifyContent(),textAlign:wrapMode===\"char\"?textAlign:undefined},children:wrapMode===\"word\"?text.split(\" \").map((word,wordIndex)=>{const wordStartIndex=text.split(\" \").slice(0,wordIndex).join(\" \").length+(wordIndex>0?1:0);const isLastWord=wordIndex===text.split(\" \").length-1;return /*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-block\"},children:[word.split(\"\").map((char,charIndex)=>{const globalIndex=wordStartIndex+charIndex;if(isStatic){return /*#__PURE__*/_jsx(\"span\",{style:{...fontStyles,color:textColor,display:\"inline-block\"},children:char},charIndex);}return /*#__PURE__*/_jsx(motion.span,{variants:textVariants,initial:animate?\"hidden\":\"visible\",animate:animate&&(triggerMode===\"immediate\"||isInView)?\"visible\":animate?\"hidden\":\"visible\",transition:{...transition,delay:delay+globalIndex*stagger,repeat:loopCount-1,repeatType:\"loop\",repeatDelay:repeatDelay},style:{...fontStyles,color:textColor,display:\"inline-block\"},children:char},`${charIndex}-${animationKey}`);}),!isLastWord&&(isStatic?/*#__PURE__*/_jsx(\"span\",{style:{...fontStyles,color:textColor,display:\"inline-block\"},children:\"\\xa0\"}):/*#__PURE__*/_jsx(motion.span,{variants:textVariants,initial:animate?\"hidden\":\"visible\",animate:animate&&(triggerMode===\"immediate\"||isInView)?\"visible\":animate?\"hidden\":\"visible\",transition:{...transition,delay:delay+(wordStartIndex+word.length)*stagger,repeat:loopCount-1,repeatType:\"loop\",repeatDelay:repeatDelay},style:{...fontStyles,color:textColor,display:\"inline-block\"},children:\"\\xa0\"},`space-${wordIndex}-${animationKey}`))]},wordIndex);}):characters.map((char,index)=>{if(isStatic){return /*#__PURE__*/_jsx(\"span\",{style:{...fontStyles,color:textColor,display:\"inline-block\",whiteSpace:char===\" \"?\"pre\":\"normal\"},children:char===\" \"?\"\\xa0\":char},index);}return /*#__PURE__*/_jsx(motion.span,{variants:textVariants,initial:animate?\"hidden\":\"visible\",animate:animate&&(triggerMode===\"immediate\"||isInView)?\"visible\":animate?\"hidden\":\"visible\",transition:{...transition,delay:delay+index*stagger,repeat:loopCount-1,repeatType:\"loop\",repeatDelay:repeatDelay},style:{...fontStyles,color:textColor,display:\"inline-block\",whiteSpace:char===\" \"?\"pre\":\"normal\"},children:char===\" \"?\"\\xa0\":char},`${index}-${animationKey}`);})})});}addPropertyControls(ShutterText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Shutter Effect\"},animate:{type:ControlType.Boolean,title:\"Animate\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},triggerMode:{type:ControlType.Enum,title:\"Trigger\",options:[\"appear\",\"immediate\"],optionTitles:[\"On Appear\",\"Immediate\"],defaultValue:\"appear\",displaySegmentedControl:true},wrapMode:{type:ControlType.Enum,title:\"Wrap Mode\",options:[\"char\",\"word\"],optionTitles:[\"Character\",\"Word\"],defaultValue:\"char\",displaySegmentedControl:true},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"left\",\"right\",\"top\",\"bottom\"],optionTitles:[\"Left\",\"Right\",\"Top\",\"Bottom\"],defaultValue:\"left\",displaySegmentedControl:true},translateDistance:{type:ControlType.Number,title:\"Translate Distance\",defaultValue:20,min:0,max:200,step:1,unit:\"px\"},textColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.05,min:0,max:.5,step:.01,unit:\"s\"},loopCount:{type:ControlType.Number,title:\"Loop Count\",defaultValue:1,min:1,max:100,step:1,displayStepper:true},repeatDelay:{type:ControlType.Number,title:\"Repeat Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"},transition:{type:ControlType.Transition,title:\"Transition\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ShutterText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ShutterText_2.map"],"mappings":"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"}