{"version":3,"file":"TextGlitch.CEgO2JBR.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/1oMTLy48mQlkHUIQamxl/LQz0SsKx4UpdYoEs5F0b/TextGlitch.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const DEFAULT_SCRAMBLE_CHARS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}|;:,.<>?\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function TextGlitch(props){const{text,font,color,scrambleColor,duration,style,glitch}=props;const[display,setDisplay]=useState(text);const[scrambling,setScrambling]=useState(false);const intervalRef=useRef(null);const timeoutRef=useRef(null);// Use prop or default\nconst chars=(props.scrambleChars||DEFAULT_SCRAMBLE_CHARS).split(\"\");useEffect(()=>{if(!glitch){setDisplay(text);setScrambling(false);return;}if(RenderTarget.current()!==RenderTarget.preview){setDisplay(text);setScrambling(false);return;}if(RenderTarget.current()===RenderTarget.thumbnail){setDisplay(text);setScrambling(false);return;}setDisplay(text);setScrambling(true);let frame=0;const scramble=()=>{const percent=Math.max(0,Math.min(100,props.scramblePercent??100));let scrambled=text.split(\"\").map((c,i)=>{if(c===\" \")return c;if(Math.random()*100>percent)return c;return`<span data-scramble=\"1\">${chars[Math.floor(Math.random()*chars.length)]}</span>`;}).join(\"\");setDisplay(scrambled);frame++;};intervalRef.current=window.setInterval(scramble,props.speed||40);timeoutRef.current=window.setTimeout(()=>{if(intervalRef.current)clearInterval(intervalRef.current);setDisplay(text);setScrambling(false);},duration);return()=>{if(intervalRef.current)clearInterval(intervalRef.current);if(timeoutRef.current)clearTimeout(timeoutRef.current);};},[text,duration,glitch,props.scrambleChars])// Add scrambleChars as dependency\n;function renderText(){const{weight,optical}=props.variable||{weight:400,optical:22};const fontVariation={fontWeight:weight,fontVariationSettings:`'wght' ${weight}, 'opsz' ${optical}`};const styleBase={...font,color,...fontVariation};if(!scrambling)return /*#__PURE__*/_jsx(\"span\",{style:styleBase,children:text});const parts=display.split(/(<span data-scramble=\"1\">.*?<\\/span>)/g);return /*#__PURE__*/_jsx(\"span\",{style:styleBase,children:parts.map((part,i)=>{if(part.startsWith('<span data-scramble=\"1\">')){const letter=part.replace(/<.*?>/g,\"\");return /*#__PURE__*/_jsx(\"span\",{style:{color:scrambleColor},children:letter},i);}return /*#__PURE__*/_jsx(\"span\",{children:part},i);})});}const isFixedWidth=style&&style.width===\"100%\";const isFixedHeight=style&&style.height===\"100%\";return /*#__PURE__*/_jsx(\"div\",{style:{...style,position:\"relative\",width:isFixedWidth?\"100%\":\"max-content\",minWidth:isFixedWidth?undefined:\"max-content\",height:isFixedHeight?\"100%\":undefined},children:renderText()});}TextGlitch.displayName=\"Text Glitch\";addPropertyControls(TextGlitch,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Scramble Me!\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:22,variant:\"Semibold\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"}},variable:{type:ControlType.Object,title:\"Variable\",controls:{optical:{type:ControlType.Number,title:\"Optical\",defaultValue:22,min:14,max:32,step:1},weight:{type:ControlType.Number,title:\"Weight\",defaultValue:400,min:100,max:900,step:1}},defaultValue:{optical:22,weight:400}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},scrambleColor:{type:ControlType.Color,title:\"Scrambled\",defaultValue:\"#8855FF\"},scrambleChars:{// <-- Add the control\ntype:ControlType.String,title:\"Chars\",defaultValue:DEFAULT_SCRAMBLE_CHARS,displayTextArea:true},scramblePercent:{type:ControlType.Number,title:\"Scramble %\",defaultValue:100,min:0,max:100,unit:\"%\",step:1},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:40,min:10,max:200,unit:\"ms\",step:1},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1200,min:200,max:5e3,unit:\"ms\",step:50},glitch:{type:ControlType.Boolean,title:\"Glitch\",enabledTitle:\"Yes\",disabledTitle:\"No\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextGlitch\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextGlitch.map"],"mappings":"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"}