{"version":3,"file":"AnimatedCodeBlock_1.Mhd5i9v7.mjs","names":["useMemo","useRef","useState","p"],"sources":["https:/framerusercontent.com/modules/peWCJdcsDY73xSiuWh1V/dqKM1hFH4s2qU7LfKwVr/AnimatedCodeBlock_1.js"],"sourcesContent":["// AnimatedCodeBlock — wrapped-lines aware + custom theme + loop toggle\n// - Lines wrap (no horizontal scrollbar). \"Lines Shown\" counts *visual rows*.\n// - Sliding window uses measured row-heights (hidden measurer + ResizeObserver).\n// - Optional custom theme: background, border, text.\n// - New: `loop` toggle; when off, plays once and stops at the end (no reset).\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useMemo,useRef}from\"react\";import{motion,useInView}from\"framer-motion\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// ---- mini highlighter -------------------------------------------------------\nconst syntaxHighlight=(code,language,theme,customTextColor,customLabelColor)=>{const colors=theme===\"dark\"?{keyword:\"#BC8DF3\",string:\"#94e9a1\",comment:\"#6A9955\",function:\"#94E9A1\",number:\"#94E9A1\",operator:\"#FF9E51\",default:\"#ffffff\",label:\"#FF9E51\"}:theme===\"light\"?{keyword:\"#0000FF\",string:\"#A31515\",comment:\"#008000\",function:\"#795E26\",number:\"#098658\",operator:\"#000000\",default:\"#000000\",label:\"#000000\"}:{keyword:customTextColor||\"#000000\",string:customTextColor||\"#000000\",comment:customTextColor||\"#000000\",function:customTextColor||\"#000000\",number:customTextColor||\"#000000\",operator:customTextColor||\"#000000\",default:customTextColor||\"#000000\",label:customLabelColor||customTextColor||\"#000000\"};const keywords={javascript:[\"import\",\"export\",\"function\",\"const\",\"let\",\"var\",\"return\",\"if\",\"else\",\"for\",\"while\",\"class\",\"extends\",\"async\",\"await\"],jsx:[\"import\",\"export\",\"function\",\"const\",\"let\",\"var\",\"return\",\"if\",\"else\",\"for\",\"while\",\"class\",\"extends\",\"async\",\"await\"],typescript:[\"import\",\"export\",\"function\",\"const\",\"let\",\"var\",\"return\",\"if\",\"else\",\"for\",\"while\",\"class\",\"extends\",\"interface\",\"type\",\"async\",\"await\"],python:[\"def\",\"class\",\"import\",\"from\",\"return\",\"if\",\"else\",\"elif\",\"for\",\"while\",\"try\",\"except\",\"with\",\"as\"],java:[\"public\",\"private\",\"protected\",\"class\",\"interface\",\"extends\",\"implements\",\"return\",\"if\",\"else\",\"for\",\"while\",\"try\",\"catch\"],css:[\"color\",\"background\",\"margin\",\"padding\",\"border\",\"font\",\"display\",\"position\",\"width\",\"height\"]};const escapeHtml=s=>s.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\");const langKeywords=keywords[language.toLowerCase()]||keywords.javascript;const tokens=[];let remaining=code;let pos=0;while(pos<code.length){let matched=false;// Try to match comment\nconst commentMatch=remaining.match(/^(\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/)/);if(commentMatch){tokens.push({type:\"comment\",value:commentMatch[0]});pos+=commentMatch[0].length;remaining=code.slice(pos);matched=true;continue;}// Try to match string\nconst stringMatch=remaining.match(/^((?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")|(?:'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|(?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`))/);if(stringMatch){tokens.push({type:\"string\",value:stringMatch[0]});pos+=stringMatch[0].length;remaining=code.slice(pos);matched=true;continue;}// Try to match number\nconst numberMatch=remaining.match(/^\\d+\\.?\\d*/);if(numberMatch){tokens.push({type:\"number\",value:numberMatch[0]});pos+=numberMatch[0].length;remaining=code.slice(pos);matched=true;continue;}// Try to match label (property name followed by colon)\nconst labelMatch=remaining.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\\s*:/);if(labelMatch){tokens.push({type:\"label\",value:labelMatch[1]});tokens.push({type:\"text\",value:labelMatch[0].slice(labelMatch[1].length)});pos+=labelMatch[0].length;remaining=code.slice(pos);matched=true;continue;}// Try to match keyword\nlet keywordMatched=false;for(const kw of langKeywords){const kwRegex=new RegExp(`^${kw}\\\\b`);if(kwRegex.test(remaining)){tokens.push({type:\"keyword\",value:kw});pos+=kw.length;remaining=code.slice(pos);keywordMatched=true;matched=true;break;}}if(keywordMatched)continue;// No special token matched, take one character as text\ntokens.push({type:\"text\",value:code[pos]});pos++;remaining=code.slice(pos);}// Convert tokens to HTML\nlet result=\"\";for(const token of tokens){const escaped=escapeHtml(token.value);switch(token.type){case\"keyword\":result+=`<span style=\"color:${colors.keyword}\">${escaped}</span>`;break;case\"string\":result+=`<span style=\"color:${colors.string}\">${escaped}</span>`;break;case\"comment\":result+=`<span style=\"color:${colors.comment}\">${escaped}</span>`;break;case\"number\":result+=`<span style=\"color:${colors.number}\">${escaped}</span>`;break;case\"label\":result+=`<span style=\"color:${colors.label}\">${escaped}</span>`;break;default:result+=escaped;}}return result;};/**\n * Enhanced animated code block (visual-row aware with wrapping)\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight fixed\n */export default function AnimatedCodeBlock(props){const{code=`import { motion } from \"framer-motion\";\n\nfunction Component() {\n  return (\n    <motion.div\n      transition={{ ease: \"linear\" }}\n      animate={{ rotate: 360, scale: 2 }}\n    />\n  );\n}\n\n// This component creates a sleek writing effect\n// Text flows from top to bottom smoothly\n// As new text appears at the bottom\n// Older text gradually fades away from the top\n// Creating a continuous scrolling effect\n// Perfect for displaying long content\n// Like JSON, code, or extensive text blocks\n// Features typewriter effect with character animation\n// Automatic line management with fade transitions`,language=\"jsx\",theme=\"dark\",showLineNumbers=true,characterDelay=30,font,padding=\"20px\",radius=\"8px\",animationType=\"typewriter\",linesShown=10,loop=true,customBackgroundColor=\"#1E1E1E\",customBorderColor=\"#333333\",customTextColor=\"#D4D4D4\"}=props;const isStatic=useIsStaticRenderer();// Split code preserving blank lines\nconst allLines=useMemo(()=>code.split(\"\\n\"),[code]);// Typography\nconst baseLineHeight=parseFloat(font?.lineHeight)||1.4;const fontSize=parseFloat(font?.fontSize)||14;const fixedLineHeight=Math.max(fontSize*baseLineHeight,20);const lineHeightPx=fixedLineHeight+\"px\";// Refs + measurement\nconst containerRef=useRef(null);const measurerRef=useRef(null);const[containerWidth,setContainerWidth]=useState(0);// Detect when component is in view\nconst isInView=useInView(containerRef,{once:true,amount:.3});useEffect(()=>{if(!containerRef.current)return;const ro=new window.ResizeObserver(entries=>{for(const e of entries)setContainerWidth(e.contentRect.width);});ro.observe(containerRef.current);setContainerWidth(containerRef.current.clientWidth);return()=>ro.disconnect();},[]);// How many visual rows does `text` occupy?\nconst measureRows=text=>{const measurer=measurerRef.current;if(!measurer)return 1;measurer.textContent=text.length?text:\" \";const h=measurer.scrollHeight;return Math.max(1,Math.round(h/fixedLineHeight));};// Pre-compute rows for complete lines\nconst rowsPerLine=useMemo(()=>{if(!containerWidth)return allLines.map(()=>1);return allLines.map(ln=>measureRows(ln));// eslint-disable-next-line react-hooks/exhaustive-deps\n},[allLines,containerWidth,fixedLineHeight,showLineNumbers]);// Animation state\nconst[currentLineIndex,setCurrentLineIndex]=useState(0);const[currentCharIndex,setCurrentCharIndex]=useState(0);const[loopCount,setLoopCount]=useState(0);useEffect(()=>{if(!isStatic){setCurrentLineIndex(0);setCurrentCharIndex(0);setLoopCount(0);}},[code,linesShown,isStatic]);// Start animation when in view\nuseEffect(()=>{if(isInView&&!isStatic){setCurrentLineIndex(0);setCurrentCharIndex(0);setLoopCount(0);}},[isInView,isStatic]);const currentLine=currentLineIndex<allLines.length?allLines[currentLineIndex]:\"\";const partialLine=currentLine.length>0?currentLine.slice(0,currentCharIndex):\"\";// Compute visible window using visual rows\nconst visible=useMemo(()=>{const out=[];let totalRows=0;// Start from line 0 and build downward\nfor(let abs=0;abs<=currentLineIndex&&totalRows<linesShown;abs++){if(abs<currentLineIndex){const text=allLines[abs]??\"\";const r=rowsPerLine[abs]||1;out.push({absIndex:abs,text});totalRows+=r;}else{// Current line being typed\nconst text=partialLine||\"\";const r=Math.max(1,measureRows(text));out.push({absIndex:abs,text,isPartial:true});totalRows+=r;}}return out;},[allLines,rowsPerLine,partialLine,currentLineIndex,linesShown,containerWidth,fixedLineHeight]);// Animation loop — plays through ALL lines, reset only if loop=true\nuseEffect(()=>{if(isStatic||!isInView)return;const atEnd=currentLineIndex>=allLines.length;if(atEnd){if(!loop)return;// stop here when not looping\nconst t=setTimeout(()=>{setCurrentLineIndex(0);setCurrentCharIndex(0);setLoopCount(p=>p+1);},1e3);return()=>clearTimeout(t);}const id=setInterval(()=>{if(currentLine.length===0){if(currentCharIndex===0)setCurrentCharIndex(1);else{setCurrentLineIndex(p=>p+1);setCurrentCharIndex(0);}return;}if(currentCharIndex>=currentLine.length){setCurrentLineIndex(p=>p+1);setCurrentCharIndex(0);}else{setCurrentCharIndex(p=>p+1);}},characterDelay);return()=>clearInterval(id);},[currentLineIndex,currentCharIndex,currentLine,characterDelay,isStatic,allLines.length,linesShown,loop,isInView]);const isTyping=currentLineIndex<allLines.length&&currentCharIndex>0;// Theme\nconst themeColors={dark:{background:\"linear-gradient(to bottom, #050505, #0d0d0d)\",text:\"#ffffff\",lineNumber:\"#858585\",border:\"#333333\",label:\"#FF9E51\"},light:{background:\"linear-gradient(to bottom, #050505, #0d0d0d)\",text:\"#000000\",lineNumber:\"#999999\",border:\"#E1E1E1\"},custom:{background:customBackgroundColor,text:customTextColor,lineNumber:customTextColor,border:customBorderColor}};const currentTheme=themeColors[theme];const normalizedLanguage=(language||\"javascript\").toLowerCase();// ---- Static mode ----------------------------------------------------------\nif(isStatic){let shown=[];let used=0;for(let i=0;i<allLines.length&&used<linesShown;i++){const r=rowsPerLine[i]||1;shown.push(allLines[i]);used+=r;}return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{...props.style,backgroundColor:currentTheme.background,color:currentTheme.text,border:\"none\",borderRadius:radius,padding:padding,overflow:\"hidden\",position:\"relative\",height:\"100%\",boxSizing:\"border-box\",fontFamily:font?.fontFamily||\"Monaco, Menlo, 'Ubuntu Mono', monospace\",fontSize:font?.fontSize||\"14px\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:measurerRef,style:{position:\"absolute\",visibility:\"hidden\",pointerEvents:\"none\",whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",overflowWrap:\"anywhere\",left:0,top:0,right:0,fontFamily:font?.fontFamily||\"Monaco, Menlo, 'Ubuntu Mono', monospace\",fontSize:font?.fontSize||\"14px\",lineHeight:lineHeightPx,padding:0,margin:0}}),/*#__PURE__*/_jsx(\"div\",{style:{height:\"100%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"flex-start\",overflowX:\"hidden\"},children:shown.map((line,i)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"flex-start\",minHeight:lineHeightPx,lineHeight:lineHeightPx},children:[showLineNumbers&&/*#__PURE__*/_jsx(\"span\",{style:{color:currentTheme.lineNumber,marginRight:\"16px\",minWidth:\"24px\",textAlign:\"right\",userSelect:\"none\",flexShrink:0},children:i+1}),/*#__PURE__*/_jsx(\"span\",{style:{whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",overflowWrap:\"anywhere\",flex:1},dangerouslySetInnerHTML:{__html:line.length?syntaxHighlight(line,normalizedLanguage,theme,customTextColor):\"&nbsp;\"}})]},\"static-\"+i))})]});}// ---- Animated mode --------------------------------------------------------\nreturn /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{...props.style,backgroundColor:currentTheme.background,color:currentTheme.text,border:\"none\",borderRadius:radius,padding:padding,overflow:\"hidden\",position:\"relative\",height:\"100%\",boxSizing:\"border-box\",fontFamily:font?.fontFamily||\"Monaco, Menlo, 'Ubuntu Mono', monospace\",fontSize:font?.fontSize||\"14px\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:measurerRef,style:{position:\"absolute\",visibility:\"hidden\",pointerEvents:\"none\",whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",overflowWrap:\"anywhere\",left:0,top:0,right:0,fontFamily:font?.fontFamily||\"Monaco, Menlo, 'Ubuntu Mono', monospace\",fontSize:font?.fontSize||\"14px\",lineHeight:lineHeightPx,padding:0,margin:0}}),/*#__PURE__*/_jsx(\"div\",{style:{height:\"100%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"flex-start\",overflowX:\"hidden\"},children:visible.map((row,i)=>{const isCurrentlyTyping=isTyping&&row.isPartial;const displayLineNumber=row.absIndex>=0?row.absIndex+1:\"\";const motionProps=animationType===\"typewriter\"?{animate:{opacity:1},transition:{opacity:{duration:.25,ease:\"easeInOut\"}}}:animationType===\"fade\"?{initial:{opacity:0},animate:{opacity:1},transition:{opacity:{duration:.4,ease:\"easeOut\"}}}:{initial:{x:-12,opacity:0},animate:{x:0,opacity:1},transition:{x:{duration:.25,ease:\"easeOut\"},opacity:{duration:.25,ease:\"easeInOut\"}}};return /*#__PURE__*/_jsxs(motion.div,{...motionProps,style:{display:\"flex\",alignItems:\"flex-start\",minHeight:lineHeightPx,lineHeight:lineHeightPx},children:[showLineNumbers&&/*#__PURE__*/_jsx(\"span\",{style:{color:currentTheme.lineNumber,marginRight:\"16px\",minWidth:\"24px\",textAlign:\"right\",userSelect:\"none\",flexShrink:0},children:displayLineNumber}),/*#__PURE__*/_jsxs(\"span\",{style:{whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",overflowWrap:\"anywhere\",flex:1,display:\"flex\",alignItems:\"center\"},children:[/*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:row.text.length?syntaxHighlight(row.text,normalizedLanguage,theme,customTextColor):\"&nbsp;\"}}),isCurrentlyTyping&&/*#__PURE__*/_jsx(motion.span,{animate:{opacity:[1,0]},transition:{duration:.8,repeat:Infinity,repeatType:\"reverse\"},style:{display:\"inline-block\",width:\"2px\",height:\"1em\",backgroundColor:currentTheme.text,marginLeft:\"2px\"}})]})]},String(loopCount)+\"-\"+String(row.absIndex)+\"-\"+String(i));})})]});}addPropertyControls(AnimatedCodeBlock,{code:{type:ControlType.String,title:\"Code\",defaultValue:`import { motion } from \"framer-motion\";`,displayTextArea:true},language:{type:ControlType.Enum,title:\"Language\",options:[\"javascript\",\"jsx\",\"typescript\",\"python\",\"java\",\"css\",\"html\"],optionTitles:[\"JavaScript\",\"JSX\",\"TypeScript\",\"Python\",\"Java\",\"CSS\",\"HTML\"],defaultValue:\"jsx\"},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"dark\",\"light\",\"custom\"],optionTitles:[\"Dark\",\"Light\",\"Custom\"],defaultValue:\"dark\"},customBackgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#1E1E1E\",hidden:p=>p.theme!==\"custom\"},customBorderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#333333\",hidden:p=>p.theme!==\"custom\"},customTextColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#D4D4D4\",hidden:p=>p.theme!==\"custom\"},customLabelColor:{type:ControlType.Color,title:\"Label\",defaultValue:\"#ffffff\",hidden:p=>p.theme!==\"custom\"},showLineNumbers:{type:ControlType.Boolean,title:\"Line Numbers\",defaultValue:true},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"14px\",letterSpacing:\"0em\",lineHeight:\"1.4em\"},controls:\"extended\",defaultFontType:\"monospace\"},animationType:{type:ControlType.Enum,title:\"Animation\",options:[\"typewriter\",\"fade\",\"slide\"],optionTitles:[\"Typewriter\",\"Fade\",\"Slide\"],defaultValue:\"typewriter\"},characterDelay:{type:ControlType.Number,title:\"Speed\",defaultValue:30,min:10,max:200,step:10,unit:\"ms\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"20px\"},radius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"8px\"},linesShown:{type:ControlType.Number,title:\"Lines Shown\",defaultValue:10,min:1,max:100,step:1,displayStepper:true},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedCodeBlock\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedCodeBlock_1.map"],"mappings":"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"}