{"version":3,"file":"TextEncryptionEffect.Bp56GHak.mjs","names":["useRef","useState","__esmMin","init_npm_react_18_3_1","_e","c","init_jsx_runtime","ce","de","useInView","init_framer_motion_DhsWWWsN","init_framer_D6uXRwWs","addPropertyControls","RenderTarget","ControlType","TextEncryptionEffect","isCanvas","props","ref","isInView","activators","value","setValue","useDencrypt","text","runAnimation","initialValue","options","v","o","result","setResult","setSetValue","dencrypt","defaultOptions","getRandomChar","getChar","init_TextEncryptionEffect","chars","j","i","oldValue","maxLength","newValue","lastValue","isCrypting","callback","calculateValues","nextLength","nextValue","prevLength","prevValue","iterations","values","next","resolve","interval"],"sources":["https:/framerusercontent.com/modules/Cn37MyPJWVKKEyhV3K1f/X5YCp5ZD1ZInkxm1wP5q/TextEncryptionEffect.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useInView}from\"framer-motion\";import{useEffect,useState,useRef}from\"react\";// import { useDencrypt } from \"use-dencrypt-effect\"\nexport default function TextEncryptionEffect(props){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const{text,activators}=props;const ref=useRef(null);const isInView=useInView(ref,{once:!activators.replay,amount:\"some\"});const[value,setValue]=useDencrypt(activators.trigger===\"none\"?text:\"\",{chars:[...props.characters],interval:props.interval*1e3});function runAnimation(){if(!isCanvas){setValue(text);}}useEffect(()=>{if(activators.trigger===\"appear\"){runAnimation();}},[]);useEffect(()=>{if(!isCanvas&&activators.trigger===\"layerInView\"){if(isInView){runAnimation();}}},[isInView]);return /*#__PURE__*/_jsx(\"p\",{ref:ref,onClick:()=>{if(activators.press){setValue(text);}},onMouseEnter:()=>{if(activators.hover){setValue(text);}},style:{margin:0,color:props.fontColor,userSelect:props.textSelect?\"auto\":\"none\",...props.font,...props.style},children:isCanvas?text:value});}TextEncryptionEffect.displayName=\"Text Encryption Effect\";addPropertyControls(TextEncryptionEffect,{text:{defaultValue:\"Encrypted Text\",type:ControlType.String},characters:{type:ControlType.String,defaultValue:\"!#%^&*[]{}=+\\\\/|;:\",description:\"[Character Presets](https://next-acknowledge-092743.framer.app/components/text-encryption-effect)\"},interval:{type:ControlType.Number,defaultValue:.05,step:.001,unit:\"s\",title:\"Interval\"},activators:{type:ControlType.Object,buttonTitle:\"Options\",controls:{hover:{type:ControlType.Boolean,defaultValue:false},press:{type:ControlType.Boolean,defaultValue:false},trigger:{type:ControlType.Enum,defaultValue:\"appear\",options:[\"none\",\"appear\",\"layerInView\"],optionTitles:[\"None\",\"Appear\",\"Layer In View\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},replay:{type:ControlType.Boolean,defaultValue:true,hidden(props){return props.trigger!==\"layerInView\";}}}},fontColor:{type:ControlType.Color,defaultValue:\"#000\"},font:{type:\"font\",controls:\"extended\"},textSelect:{type:ControlType.Boolean,defaultValue:true}});const defaultOptions={chars:[...\"-./^*!}<~$012345abcdef\"],interval:50};const getRandomChar=chars=>chars[Math.floor(Math.random()*chars.length)];const getChar=(i,j,maxLength,oldValue,newValue,chars)=>{if(j>i){return oldValue[j];}if(i>=maxLength&&j<i-maxLength){return newValue[j];}return getRandomChar(chars);};export const dencrypt=options=>{const{chars,interval,callback,initialValue}={...defaultOptions,...options};let lastValue;let isCrypting;if(initialValue){lastValue=initialValue;callback(lastValue);}function*calculateValues(nextValue,prevValue=\"\"){const nextLength=nextValue.length;const prevLength=prevValue.length;const maxLength=Math.max(nextLength,prevLength);const iterations=2*maxLength;let i=0;yield prevValue;while(i<iterations){yield[...new Array(maxLength)].map((_,j)=>getChar(i,j,maxLength,prevValue,nextValue,chars)).join(\"\");i++;}yield nextValue;}const setValue=value=>{clearInterval(isCrypting);const values=calculateValues(value,lastValue);return new Promise(resolve=>{isCrypting=setInterval(()=>{var next=values.next();if(next.done){clearInterval(isCrypting);resolve(lastValue);}else{lastValue=next.value;callback(lastValue);}},interval);});};return setValue;};export function useDencrypt(v,o){let initialValue=\"\";let options={};if(typeof v===\"object\"){options=v;}else if(typeof v===\"string\"){initialValue=v;options=o?o:{};}const[result,setResult]=useState();const[setValue,setSetValue]=useState(()=>dencrypt({...options,initialValue,callback:setResult}));return[result,setValue];}\nexport const __FramerMetadata__ = {\"exports\":{\"DencryptInitialOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dencrypt\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DencryptDefaultOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useDencrypt\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"TextEncryptionEffect\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextEncryptionEffect.map"],"mappings":"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"}