extremely wip tangled spa
1import hljs from "highlight.js"; 2import { createResource, For } from "solid-js"; 3import "../styles/fileviewer.css"; 4import "../util/highlight.js/index"; 5 6export function CodeBlock(props: { code: string; language: string }) { 7 const [codeBlock] = createResource( 8 () => props, 9 (props) => { 10 const highlit = hljs.getLanguage(props.language) 11 ? hljs.highlight(props.code, { language: props.language }).value 12 : props.code; 13 return ( 14 <For each={highlit.split("\n")}> 15 {(line, i) => ( 16 <span class="line-wrapper"> 17 <span class="line-number">{i() + 1}</span> 18 <span class="line-content" innerHTML={line}></span> 19 </span> 20 )} 21 </For> 22 ); 23 }, 24 ); 25 26 return ( 27 <pre> 28 <code class="flex flex-col text-wrap p-4">{codeBlock()}</code> 29 </pre> 30 ); 31}