@@ -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 }
0 commit comments