{"version":3,"file":"TextChunkInView.BmJdYo9D.mjs","names":[],"sources":["https:/framerusercontent.com/modules/wrgUXCCLCDqaJNZkAvg1/RUc9BSOEvVzKfV3XaSsK/TextChunkInView.js"],"sourcesContent":["// Remake of TextChunkLLM with Framer in-view/scroll effect support and font style selection from Framer asset\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition}from\"react\";import{motion,useInView}from\"framer-motion\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";function splitTextIntoChunks(text,min,max){const words=text.trim().split(/\\s+/);const chunks=[];let i=0;while(i<words.length){const size=Math.floor(Math.random()*(max-min+1))+min;chunks.push(words.slice(i,i+size).join(\" \"));i+=size;}return chunks;}/**\n * TextChunkInView\n *\n * Remake of TextChunkLLM with Framer in-view/scroll effect support and font style selection from Framer asset\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function TextChunkInView(props){const{text=\"Texte \\xe0 chunker comme ChatGPT\",duration=5,delay=0,chunkMinWords=2,chunkMaxWords=4,showCursor=true,font={fontSize:18,variant:\"Regular\",letterSpacing:\"-0.01em\",lineHeight:\"1.6em\"},color=\"#ffffff\",textAlign=\"left\",style}=props;const ref=useRef(null);const isInView=useInView(ref,{once:true,margin:\"-10% 0px\"});const isStatic=useIsStaticRenderer();const[visibleChunks,setVisibleChunks]=useState(0);const[chunks,setChunks]=useState([]);const[cursorPhase,setCursorPhase]=useState(\"typing\");const[blinkCount,setBlinkCount]=useState(0);const[animationStarted,setAnimationStarted]=useState(false);useEffect(()=>{const cleanedText=text.replace(/\\n/g,\" \\n \");setChunks(splitTextIntoChunks(cleanedText,chunkMinWords,chunkMaxWords));setVisibleChunks(0);setCursorPhase(\"typing\");setBlinkCount(0);setAnimationStarted(false);},[text,chunkMinWords,chunkMaxWords]);useEffect(()=>{if(!isInView||isStatic||animationStarted)return;const delayTimeout=setTimeout(()=>{startTransition(()=>setAnimationStarted(true));},delay*1e3);return()=>clearTimeout(delayTimeout);},[isInView,isStatic,delay,animationStarted]);useEffect(()=>{if(!animationStarted||isStatic)return;if(visibleChunks>=chunks.length)return;const interval=setTimeout(()=>{startTransition(()=>setVisibleChunks(v=>v+1));},duration*1e3/(chunks.length||1));return()=>clearTimeout(interval);},[visibleChunks,chunks.length,duration,animationStarted,isStatic]);useEffect(()=>{if(visibleChunks<chunks.length&&showCursor){setCursorPhase(\"typing\");setBlinkCount(0);}},[visibleChunks,chunks.length,showCursor]);useEffect(()=>{if(visibleChunks===chunks.length&&showCursor){setCursorPhase(\"ending\");const endTimer=setInterval(()=>{setBlinkCount(prev=>{if(prev>=2){clearInterval(endTimer);setCursorPhase(\"done\");}return prev+1;});},600);return()=>clearInterval(endTimer);}},[visibleChunks,chunks.length,showCursor]);const showBlinkingCircle=cursorPhase===\"typing\";const showFinalTriangle=cursorPhase===\"ending\";return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:\"100%\",height:\"100%\",color,whiteSpace:\"pre-wrap\",textAlign,overflow:\"hidden\",wordBreak:\"break-word\",display:\"flex\",flexDirection:\"column\",alignItems:textAlign===\"center\"?\"center\":textAlign===\"right\"?\"flex-end\":\"flex-start\",justifyContent:\"flex-start\",...font,...style},children:/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",textAlign},children:[(isStatic||!isInView?chunks:chunks.slice(0,visibleChunks)).map((chunk,i)=>/*#__PURE__*/_jsx(motion.span,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.4,ease:\"easeOut\"},style:{display:\"inline\"},children:chunk===\"\\n\"?/*#__PURE__*/_jsx(\"br\",{}):chunk+\" \"},i)),showCursor&&(isInView||isStatic)&&visibleChunks<chunks.length&&/*#__PURE__*/_jsx(motion.span,{animate:{opacity:[0,1,0]},transition:{duration:1,repeat:Infinity},style:{display:\"inline-block\",marginLeft:\"0.2ch\",width:\"0.6em\",height:\"0.6em\",minWidth:\"0.6em\",verticalAlign:\"baseline\",transform:\"translateY(0.05em)\"},children:showBlinkingCircle?/*#__PURE__*/_jsx(\"span\",{style:{width:\"0.6em\",height:\"0.6em\",backgroundColor:color,borderRadius:\"50%\",display:\"inline-block\"}}):showFinalTriangle?/*#__PURE__*/_jsx(\"span\",{style:{width:0,height:0,borderLeft:\"0.4em solid transparent\",borderRight:\"0.4em solid transparent\",borderBottom:`0.6em solid ${color}`,display:\"inline-block\"}}):null},cursorPhase)]})});}addPropertyControls(TextChunkInView,{text:{type:ControlType.String,defaultValue:\"Texte \\xe0 chunker comme ChatGPT\",displayTextArea:true},duration:{type:ControlType.Number,defaultValue:5,min:1,max:30},delay:{type:ControlType.Number,defaultValue:0,min:0,max:30},chunkMinWords:{type:ControlType.Number,defaultValue:2,min:1,max:10},chunkMaxWords:{type:ControlType.Number,defaultValue:4,min:1,max:10},showCursor:{type:ControlType.Boolean,defaultValue:true},color:{type:ControlType.Color,defaultValue:\"#ffffff\"},font:{type:ControlType.Font,title:\"Font Style\",controls:\"extended\",defaultFontType:\"sans-serif\",displayTextAlignment:true,displayFontSize:true,defaultValue:{fontSize:18,variant:\"Regular\",letterSpacing:\"-0.01em\",lineHeight:\"1.6em\"}},textAlign:{type:ControlType.Enum,title:\"Alignement\",defaultValue:\"left\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Gauche\",\"Centre\",\"Droite\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextChunkInView\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextChunkInView.map"],"mappings":"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"}