@@ -21,32 +21,38 @@ export interface ShikiMagicMoveRendererProps {
2121 * A wrapper component to `MagicMoveRenderer`
2222 */
2323export function ShikiMagicMoveRenderer ( props : ShikiMagicMoveRendererProps ) {
24- let container : HTMLPreElement
25- let renderer : Renderer
24+ // eslint-disable-next-line no-undef-init, prefer-const
25+ let container : HTMLPreElement | undefined = undefined
26+ // eslint-disable-next-line no-undef-init
27+ let renderer : Renderer | undefined = undefined
2628 const [ isMounted , setIsMounted ] = createSignal ( false )
2729
2830 createEffect ( ( ) => {
29- if ( ! container ) return
30- if ( ! isMounted ( ) ) {
31+ if ( container !== undefined && ! isMounted ( ) ) {
3132 // Remove previous content
32- container . innerHTML = ''
33+ ; ( container as HTMLPreElement ) . innerHTML = ''
3334 setIsMounted ( true )
3435 renderer = new Renderer ( container )
3536 }
3637 } )
3738
3839 createEffect ( ( ) => {
3940 async function render ( ) {
40- if ( ! renderer ) return
41+ if ( ! renderer ) {
42+ return
43+ }
4144
4245 Object . assign ( renderer . options , props . options )
4346
4447 if ( props . animate === undefined || props . animate === true ) {
45- if ( props . previous ) renderer . replace ( props . previous )
48+ if ( props . previous ) {
49+ renderer . replace ( props . previous )
50+ }
4651
4752 props . onStart ?.( )
4853 await renderer . render ( props . tokens )
4954 props . onEnd ?.( )
55+ // eslint-disable-next-line style/brace-style
5056 } else {
5157 renderer . replace ( props . tokens )
5258 }
@@ -57,7 +63,6 @@ export function ShikiMagicMoveRenderer(props: ShikiMagicMoveRendererProps) {
5763
5864 return (
5965 < pre
60- // @ts -expect-error - TS doesn't know that `container` is a ref
6166 ref = { container }
6267 class = { `shiki-magic-move-container ${ props . class || '' } ` . trim ( ) }
6368 style = { props . style }
@@ -68,7 +73,7 @@ export function ShikiMagicMoveRenderer(props: ShikiMagicMoveRendererProps) {
6873 < div >
6974 { isMounted ( )
7075 ? undefined
71- : props . tokens ?. tokens . map ( token => {
76+ : props . tokens ?. tokens . map ( ( token ) => {
7277 if ( token . content === '\n' ) return < br />
7378
7479 return (
@@ -77,7 +82,9 @@ export function ShikiMagicMoveRenderer(props: ShikiMagicMoveRendererProps) {
7782 ...normalizeCSSProperties ( token . htmlStyle ) ,
7883 color : token . color ,
7984 } }
80- class = { [ 'shiki-magic-move-item' , token . htmlClass ] . filter ( Boolean ) . join ( ' ' ) }
85+ class = { [ 'shiki-magic-move-item' , token . htmlClass ]
86+ . filter ( Boolean )
87+ . join ( ' ' ) }
8188 >
8289 { token . content }
8390 </ span >
0 commit comments