{"version":3,"file":"MarkdownViewer.L0Wsfi4c.mjs","names":["useMemo"],"sources":["https:/framerusercontent.com/modules/snvpQKllo0wasuhf3T5x/NA1rIPMsQ0SoTLMYWEm8/MarkdownViewer.js"],"sourcesContent":["// Markdown viewer component with syntax highlighting and customizable styling\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function MarkdownViewer(props){const{content=\"# Welcome to Markdown\\n\\nThis is a **bold** text and this is *italic*.\\n\\n## Code Example\\n\\n```javascript\\nconst hello = 'world';\\nconsole.log(hello);\\n```\\n\\n> This is a blockquote\\n\\n- List item 1\\n- List item 2\\n- List item 3\\n\\n[Link example](https://framer.com)\",backgroundColor,textColor,headingColor,linkColor,codeBackgroundColor,codeTextColor,blockquoteColor,borderColor,font,headingFont,codeFont,maxWidth,padding,lineHeight}=props;const parsedContent=useMemo(()=>{return parseMarkdown(content);},[content]);const containerStyle={...props.style,backgroundColor,color:textColor,padding:`${padding}px`,maxWidth:maxWidth>0?`${maxWidth}px`:\"100%\",width:\"100%\",boxSizing:\"border-box\",overflow:\"auto\",...font,lineHeight:`${lineHeight}em`};const renderElement=(element,index)=>{switch(element.type){case\"h1\":return /*#__PURE__*/_jsx(\"h1\",{style:{...headingFont,color:headingColor,marginTop:index===0?0:\"1.5em\",marginBottom:\"0.5em\",fontSize:\"2em\",fontWeight:\"bold\"},children:element.content},index);case\"h2\":return /*#__PURE__*/_jsx(\"h2\",{style:{...headingFont,color:headingColor,marginTop:\"1.3em\",marginBottom:\"0.5em\",fontSize:\"1.5em\",fontWeight:\"bold\"},children:element.content},index);case\"h3\":return /*#__PURE__*/_jsx(\"h3\",{style:{...headingFont,color:headingColor,marginTop:\"1.2em\",marginBottom:\"0.5em\",fontSize:\"1.25em\",fontWeight:\"bold\"},children:element.content},index);case\"p\":return /*#__PURE__*/_jsx(\"p\",{style:{marginTop:\"0.5em\",marginBottom:\"0.5em\",lineHeight:`${lineHeight}em`},children:renderInlineContent(element.content)},index);case\"blockquote\":return /*#__PURE__*/_jsx(\"blockquote\",{style:{borderLeft:`4px solid ${borderColor}`,paddingLeft:\"16px\",margin:\"1em 0\",color:blockquoteColor,fontStyle:\"italic\"},children:renderInlineContent(element.content)},index);case\"code-block\":return /*#__PURE__*/_jsx(\"pre\",{style:{backgroundColor:codeBackgroundColor,color:codeTextColor,padding:\"16px\",borderRadius:\"8px\",overflow:\"auto\",margin:\"1em 0\",...codeFont},children:/*#__PURE__*/_jsx(\"code\",{children:element.content})},index);case\"ul\":return /*#__PURE__*/_jsx(\"ul\",{style:{margin:\"0.5em 0\",paddingLeft:\"20px\"},children:element.items.map((item,itemIndex)=>/*#__PURE__*/_jsx(\"li\",{style:{marginBottom:\"0.25em\"},children:renderInlineContent(item)},itemIndex))},index);case\"ol\":return /*#__PURE__*/_jsx(\"ol\",{style:{margin:\"0.5em 0\",paddingLeft:\"20px\"},children:element.items.map((item,itemIndex)=>/*#__PURE__*/_jsx(\"li\",{style:{marginBottom:\"0.25em\"},children:renderInlineContent(item)},itemIndex))},index);case\"hr\":return /*#__PURE__*/_jsx(\"hr\",{style:{border:\"none\",borderTop:`1px solid ${borderColor}`,margin:\"2em 0\"}},index);default:return null;}};const renderInlineContent=content=>{// Handle inline formatting\nconst parts=content.split(/(\\*\\*.*?\\*\\*|\\*.*?\\*|`.*?`|\\[.*?\\]\\(.*?\\))/g);return parts.map((part,index)=>{if(part.startsWith(\"**\")&&part.endsWith(\"**\")){return /*#__PURE__*/_jsx(\"strong\",{children:part.slice(2,-2)},index);}if(part.startsWith(\"*\")&&part.endsWith(\"*\")&&!part.startsWith(\"**\")){return /*#__PURE__*/_jsx(\"em\",{children:part.slice(1,-1)},index);}if(part.startsWith(\"`\")&&part.endsWith(\"`\")){return /*#__PURE__*/_jsx(\"code\",{style:{backgroundColor:codeBackgroundColor,color:codeTextColor,padding:\"2px 4px\",borderRadius:\"4px\",...codeFont,fontSize:\"0.9em\"},children:part.slice(1,-1)},index);}if(part.match(/\\[.*?\\]\\(.*?\\)/)){const linkMatch=part.match(/\\[(.*?)\\]\\((.*?)\\)/);if(linkMatch){return /*#__PURE__*/_jsx(\"a\",{href:linkMatch[2],style:{color:linkColor,textDecoration:\"underline\"},children:linkMatch[1]},index);}}return part;});};return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:parsedContent.map(renderElement)});}function parseMarkdown(content){const lines=content.split(\"\\n\");const elements=[];let i=0;while(i<lines.length){const line=lines[i].trim();if(line===\"\"){i++;continue;}// Headers\nif(line.startsWith(\"# \")){elements.push({type:\"h1\",content:line.slice(2)});}else if(line.startsWith(\"## \")){elements.push({type:\"h2\",content:line.slice(3)});}else if(line.startsWith(\"### \")){elements.push({type:\"h3\",content:line.slice(4)});}else if(line.startsWith(\"```\")){const codeLines=[];i++;while(i<lines.length&&!lines[i].trim().startsWith(\"```\")){codeLines.push(lines[i]);i++;}elements.push({type:\"code-block\",content:codeLines.join(\"\\n\")});}else if(line.startsWith(\"> \")){elements.push({type:\"blockquote\",content:line.slice(2)});}else if(line.startsWith(\"- \")||line.startsWith(\"* \")){const items=[];while(i<lines.length&&(lines[i].trim().startsWith(\"- \")||lines[i].trim().startsWith(\"* \"))){items.push(lines[i].trim().slice(2));i++;}i--// Adjust for the extra increment\n;elements.push({type:\"ul\",items});}else if(line.match(/^\\d+\\. /)){const items=[];while(i<lines.length&&lines[i].trim().match(/^\\d+\\. /)){items.push(lines[i].trim().replace(/^\\d+\\. /,\"\"));i++;}i--// Adjust for the extra increment\n;elements.push({type:\"ol\",items});}else if(line===\"---\"||line===\"***\"){elements.push({type:\"hr\"});}else{elements.push({type:\"p\",content:line});}i++;}return elements;}addPropertyControls(MarkdownViewer,{content:{type:ControlType.String,title:\"Markdown Content\",displayTextArea:true,defaultValue:\"# Welcome to Markdown\\n\\nThis is a **bold** text and this is *italic*.\\n\\n## Code Example\\n\\n```javascript\\nconst hello = 'world';\\nconsole.log(hello);\\n```\\n\\n> This is a blockquote\\n\\n- List item 1\\n- List item 2\\n- List item 3\\n\\n[Link example](https://framer.com)\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},headingColor:{type:ControlType.Color,title:\"Heading Color\",defaultValue:\"#000000\"},linkColor:{type:ControlType.Color,title:\"Link Color\",defaultValue:\"#0066FF\"},codeBackgroundColor:{type:ControlType.Color,title:\"Code Background\",defaultValue:\"#F5F5F5\"},codeTextColor:{type:ControlType.Color,title:\"Code Text\",defaultValue:\"#000000\"},blockquoteColor:{type:ControlType.Color,title:\"Blockquote Color\",defaultValue:\"#666666\"},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"#CCCCCC\"},font:{type:ControlType.Font,title:\"Body Font\",defaultValue:{fontSize:\"15px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.3em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},headingFont:{type:ControlType.Font,title:\"Heading Font\",defaultValue:{fontSize:\"32px\",variant:\"Semibold\",letterSpacing:\"-0.03em\",lineHeight:\"1em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},codeFont:{type:ControlType.Font,title:\"Code Font\",defaultValue:{fontSize:\"14px\",variant:\"Medium\",letterSpacing:\"0em\",lineHeight:\"1.4em\"},controls:\"extended\",defaultFontType:\"monospace\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:0,min:0,max:1200,step:10,unit:\"px\"},padding:{type:ControlType.Number,title:\"Padding\",defaultValue:20,min:0,max:60,step:1,unit:\"px\"},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:1.6,min:1,max:3,step:.1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MarkdownViewer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MarkdownViewer.map"],"mappings":"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"}