{"version":3,"file":"CodeViewer.BfIWszuD.mjs","names":["useState","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/8OVQJFkFaX2qiyigXbMm/tBGeDsjKvJyHqsXN8cdp/CodeViewer.js"],"sourcesContent":["// Build a reusable \"CodeViewer\" React component for Framer (TypeScript).\n// It must display code in a dark card with line numbers, syntax highlighting for JavaScript and TypeScript, rounded corners, and copy-to-clipboard. The inner area must be scrollable when content exceeds the component height and support soft-wrap toggling.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useState,useCallback,startTransition,useEffect}from\"react\";// Add syntax highlighting tokenizer\nconst tokenizeCode=(code,language)=>{const tokens=[];// Define token patterns with word boundaries where appropriate\nconst patterns={comment:/\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\//gm,string:/\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`/g,number:/\\b\\d+\\.?\\d*\\b/g,keyword:/\\b(const|let|var|function|class|if|else|for|while|return|import|export|from|default|async|await|try|catch|finally|throw|new|this|super|extends|implements|interface|type|enum|namespace|public|private|protected|static|readonly|abstract|declare|module|require|true|false|null|undefined|void|any|string|number|boolean|object|array)\\b/g};// Find all matches and sort by position\nconst allMatches=[];Object.entries(patterns).forEach(([type,pattern])=>{let match;const regex=new RegExp(pattern.source,pattern.flags);while((match=regex.exec(code))!==null){allMatches.push({type,match,index:match.index,end:match.index+match[0].length});}});// Sort matches by position and remove overlapping matches\nallMatches.sort((a,b)=>a.index-b.index);// Remove overlapping matches (keep the first one)\nconst filteredMatches=[];let lastEnd=0;for(const match of allMatches){if(match.index>=lastEnd){filteredMatches.push(match);lastEnd=match.end;}}// Process matches and create tokens\nlet lastIndex=0;filteredMatches.forEach(({type,match,index})=>{// Add any text before this match as plain text\nif(index>lastIndex){const plainText=code.slice(lastIndex,index);if(plainText){tokens.push({type:\"plain\",value:plainText});}}// Add the matched token\ntokens.push({type,value:match[0]});lastIndex=index+match[0].length;});// Add any remaining text\nif(lastIndex<code.length){tokens.push({type:\"plain\",value:code.slice(lastIndex)});}return tokens;};const getTokenColor=type=>{const colors={keyword:\"#c792ea\",string:\"#ecc48d\",number:\"#f78c6c\",boolean:\"#ffcb6b\",function:\"#82aaff\",property:\"#b2ccd6\",comment:\"#637777\",type:\"#addb67\",plain:\"#eaeaea\"};return colors[type]||colors.plain;};/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 300\n */export default function CodeViewer(props){const{code=`//initialize connection\n{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"1.0\",\n    \"capabilities\": {\n      \"tools\": true,\n      \"resources\": true\n    }\n  },\n  \"id\": 1\n}`,language=\"typescript\",showLineNumbers=true,wrap=false,fontSize=12,padding=16,showHeader=true,headerText=\"Code Viewer\",font}=props;const[copied,setCopied]=useState(false);const[isExpanded,setIsExpanded]=useState(false);const handleCopy=useCallback(async()=>{if(typeof window!==\"undefined\"&&navigator.clipboard){try{await navigator.clipboard.writeText(code);startTransition(()=>setCopied(true));setTimeout(()=>{startTransition(()=>setCopied(false));},2e3);}catch(err){console.error(\"Failed to copy code:\",err);}}},[code]);const handleExpand=useCallback(()=>{startTransition(()=>setIsExpanded(true));},[]);const handleClose=useCallback(()=>{startTransition(()=>setIsExpanded(false));},[]);// Handle escape key to close expanded view\nuseEffect(()=>{if(typeof window===\"undefined\")return;const handleKeyDown=e=>{if(e.key===\"Escape\"&&isExpanded){handleClose();}};if(isExpanded){window.addEventListener(\"keydown\",handleKeyDown);// Prevent background scrolling when popup is open\ndocument.body.style.overflow=\"hidden\";}else{// Restore background scrolling when popup is closed\ndocument.body.style.overflow=\"auto\";}return()=>{window.removeEventListener(\"keydown\",handleKeyDown);// Always restore scrolling on cleanup\ndocument.body.style.overflow=\"auto\";};},[isExpanded,handleClose]);const lines=code.split(\"\\n\");const lineCount=lines.length;// Tokenize the code for syntax highlighting\nconst tokens=tokenizeCode(code,language);const renderCodeContent=(isExpandedView=false)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",height:showHeader?\"calc(100% - 41px)\":\"100%\",overflow:\"hidden\",// Custom scrollbar styles\n    scrollbarWidth:\"thin\",scrollbarColor:\"#2a2b2e #141416\"},className:\"code-viewer-scroll\",children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .code-viewer-scroll::-webkit-scrollbar {\n                    width: 8px;\n                    height: 8px;\n                }\n                .code-viewer-scroll::-webkit-scrollbar-track {\n                    background: #141416;\n                    border-radius: 4px;\n                }\n                .code-viewer-scroll::-webkit-scrollbar-thumb {\n                    background: #2a2b2e;\n                    border-radius: 4px;\n                    border: 1px solid #141416;\n                }\n                .code-viewer-scroll::-webkit-scrollbar-thumb:hover {\n                    background: #3a3b3e;\n                }\n                .code-viewer-scroll::-webkit-scrollbar-corner {\n                    background: #141416;\n                }\n            `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",width:\"100%\",minHeight:\"100%\",overflow:\"auto\"},className:\"code-viewer-scroll\",onWheel:e=>{// Prevent event bubbling to parent when scrolling inside popup\n    if(isExpandedView){e.stopPropagation();}},children:[showLineNumbers&&/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:\"#141416\",borderRight:\"1px solid #2a2b2e\",padding:`${padding}px 12px`,paddingBottom:`${padding+40}px`,minWidth:\"40px\",textAlign:\"right\",fontSize:`${isExpandedView?fontSize+2:fontSize}px`,lineHeight:\"1.5\",color:\"#637777\",userSelect:\"none\",flexShrink:0,display:\"flex\",flexDirection:\"column\",minHeight:\"fit-content\"},children:Array.from({length:lineCount},(_,i)=>/*#__PURE__*/_jsx(\"div\",{style:{minHeight:\"1.5em\"},children:i+1},i+1))}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,padding:`${padding}px`,paddingBottom:`${padding+40}px`,fontSize:`${isExpandedView?fontSize+2:fontSize}px`,lineHeight:\"1.5\",color:\"#eaeaea\",whiteSpace:wrap?\"pre-wrap\":\"pre\",wordBreak:wrap?\"break-word\":\"normal\",display:\"flex\",flexDirection:\"column\",minHeight:\"fit-content\",...isExpandedView?{}:{cursor:\"pointer\"}},onClick:!isExpandedView?handleExpand:undefined,children:/*#__PURE__*/_jsx(\"pre\",{style:{margin:0,padding:0,fontSize:\"inherit\",lineHeight:\"inherit\",whiteSpace:\"inherit\",wordBreak:\"inherit\",flex:1,minHeight:\"fit-content\"},children:tokens.map((token,index)=>/*#__PURE__*/_jsx(\"span\",{style:{color:getTokenColor(token.type)},children:token.value},index))})})]})]});return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",backgroundColor:\"#0b0b0c\",border:\"1px solid #2a2b2e\",borderRadius:\"12px\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.15)\",overflow:\"hidden\",position:\"relative\",...font},children:[showHeader&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",padding:\"8px 16px\",backgroundColor:\"#141416\",borderBottom:\"1px solid #2a2b2e\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#eaeaea\",fontSize:\"12px\",opacity:.7},children:headerText}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:\"8px\",alignItems:\"center\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleExpand,style:{background:\"transparent\",border:\"1px solid #2a2b2e\",borderRadius:\"6px\",color:\"#eaeaea\",padding:\"4px 8px\",fontSize:\"11px\",cursor:\"pointer\",transition:\"all 0.2s ease\"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=\"#2a2b2e\";},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"transparent\";},children:\"Expand\"}),/*#__PURE__*/_jsx(\"button\",{onClick:handleCopy,style:{background:\"transparent\",border:\"1px solid #2a2b2e\",borderRadius:\"6px\",color:copied?\"#addb67\":\"#eaeaea\",padding:\"4px 8px\",fontSize:\"11px\",cursor:\"pointer\",transition:\"all 0.2s ease\"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=\"#2a2b2e\";},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"transparent\";},children:copied?\"Copied!\":\"Copy\"})]})]}),renderCodeContent(false)]}),isExpanded&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,backgroundColor:\"rgba(0, 0, 0, 0.8)\",zIndex:9999,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"20px\"},onClick:handleClose,children:/*#__PURE__*/_jsxs(\"div\",{style:{width:\"90vw\",height:\"90vh\",maxWidth:\"1200px\",backgroundColor:\"#0b0b0c\",border:\"1px solid #2a2b2e\",borderRadius:\"12px\",boxShadow:\"0 8px 32px rgba(0, 0, 0, 0.4)\",overflow:\"hidden\",position:\"relative\",...font},onClick:e=>e.stopPropagation(),children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",padding:\"12px 20px\",backgroundColor:\"#141416\",borderBottom:\"1px solid #2a2b2e\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#eaeaea\",fontSize:\"14px\",fontWeight:\"500\"},children:\"Code Expanded View\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:\"8px\",alignItems:\"center\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleCopy,style:{background:\"transparent\",border:\"1px solid #2a2b2e\",borderRadius:\"6px\",color:copied?\"#addb67\":\"#eaeaea\",padding:\"6px 12px\",fontSize:\"12px\",cursor:\"pointer\",transition:\"all 0.2s ease\"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=\"#2a2b2e\";},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"transparent\";},children:copied?\"Copied!\":\"Copy\"}),/*#__PURE__*/_jsx(\"button\",{onClick:handleClose,style:{background:\"transparent\",border:\"1px solid #2a2b2e\",borderRadius:\"6px\",color:\"#eaeaea\",padding:\"6px 12px\",fontSize:\"12px\",cursor:\"pointer\",transition:\"all 0.2s ease\"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=\"#2a2b2e\";},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"transparent\";},children:\"Close\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",height:\"calc(100% - 53px)\",overflow:\"hidden\",scrollbarWidth:\"thin\",scrollbarColor:\"#2a2b2e #141416\"},className:\"code-viewer-scroll\",children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                                .code-viewer-scroll::-webkit-scrollbar {\n                                    width: 8px;\n                                    height: 8px;\n                                }\n                                .code-viewer-scroll::-webkit-scrollbar-track {\n                                    background: #141416;\n                                    border-radius: 4px;\n                                }\n                                .code-viewer-scroll::-webkit-scrollbar-thumb {\n                                    background: #2a2b2e;\n                                    border-radius: 4px;\n                                    border: 1px solid #141416;\n                                }\n                                .code-viewer-scroll::-webkit-scrollbar-thumb:hover {\n                                    background: #3a3b3e;\n                                }\n                                .code-viewer-scroll::-webkit-scrollbar-corner {\n                                    background: #141416;\n                                }\n                            `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",width:\"100%\",minHeight:\"100%\",overflow:\"auto\"},className:\"code-viewer-scroll\",onWheel:e=>{e.stopPropagation();},children:[showLineNumbers&&/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:\"#141416\",borderRight:\"1px solid #2a2b2e\",padding:`${padding}px 12px`,paddingBottom:`${padding+120}px`,minWidth:\"40px\",textAlign:\"right\",fontSize:`${fontSize+2}px`,lineHeight:\"1.5\",color:\"#637777\",userSelect:\"none\",flexShrink:0,display:\"flex\",flexDirection:\"column\",minHeight:\"fit-content\"},children:Array.from({length:lineCount},(_,i)=>/*#__PURE__*/_jsx(\"div\",{style:{minHeight:\"1.5em\"},children:i+1},i+1))}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,padding:`${padding}px`,paddingBottom:`${padding+120}px`,fontSize:`${fontSize+2}px`,lineHeight:\"1.5\",color:\"#eaeaea\",whiteSpace:wrap?\"pre-wrap\":\"pre\",wordBreak:wrap?\"break-word\":\"normal\",display:\"flex\",flexDirection:\"column\",minHeight:\"fit-content\"},children:/*#__PURE__*/_jsx(\"pre\",{style:{margin:0,padding:0,fontSize:\"inherit\",lineHeight:\"inherit\",whiteSpace:\"inherit\",wordBreak:\"inherit\",flex:1,minHeight:\"fit-content\"},children:tokens.map((token,index)=>/*#__PURE__*/_jsx(\"span\",{style:{color:getTokenColor(token.type)},children:token.value},index))})})]})]})]})})]});}addPropertyControls(CodeViewer,{code:{type:ControlType.String,title:\"Code\",defaultValue:`//initialize connection\n{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"1.0\",\n    \"capabilities\": {\n      \"tools\": true,\n      \"resources\": true\n    }\n  },\n  \"id\": 1\n}`,displayTextArea:true},language:{type:ControlType.Enum,title:\"Language\",options:[\"javascript\",\"typescript\"],optionTitles:[\"JavaScript\",\"TypeScript\"],defaultValue:\"typescript\",displaySegmentedControl:true},showLineNumbers:{type:ControlType.Boolean,title:\"Line Numbers\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},wrap:{type:ControlType.Boolean,title:\"Soft Wrap\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},showHeader:{type:ControlType.Boolean,title:\"Show Header\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},headerText:{type:ControlType.String,title:\"Header Text\",defaultValue:\"Code Viewer\",hidden:({showHeader})=>!showHeader},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontFamily:\"geist-mono\"},controls:\"extended\",defaultFontType:\"monospace\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:12,min:8,max:24,step:1,unit:\"px\"},padding:{type:ControlType.Number,title:\"Padding\",defaultValue:16,min:8,max:32,step:2,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CodeViewer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"600\",\"framerIntrinsicHeight\":\"300\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CodeViewer.map"],"mappings":"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"}