1- import { createMemo , createSignal , onMount , sharedConfig , splitProps , untrack } from "solid-js" ;
2- import { isServer } from "solid-js/web" ;
3- import type { Component , ComponentProps , JSX , Setter } from "solid-js" ;
1+ import {
2+ createMemo ,
3+ createSignal ,
4+ onMount ,
5+ sharedConfig ,
6+ splitProps ,
7+ untrack ,
8+ } from 'solid-js'
9+ import { isServer } from 'solid-js/web'
10+ import type { Component , ComponentProps , JSX , Setter } from 'solid-js'
411
512/**
613 *
@@ -9,35 +16,39 @@ import type { Component, ComponentProps, JSX, Setter } from "solid-js";
916// not using Suspense
1017export default function clientOnly < T extends Component < any > > (
1118 fn : ( ) => Promise < {
12- default : T ;
19+ default : T
1320 } > ,
14- options : { lazy ?: boolean } = { }
21+ options : { lazy ?: boolean } = { } ,
1522) {
16- if ( isServer ) return ( props : ComponentProps < T > & { fallback ?: JSX . Element } ) => props . fallback ;
23+ if ( isServer )
24+ return ( props : ComponentProps < T > & { fallback ?: JSX . Element } ) =>
25+ props . fallback
1726
18- const [ comp , setComp ] = createSignal < T > ( ) ;
19- ! options . lazy && load ( fn , setComp ) ;
27+ const [ comp , setComp ] = createSignal < T > ( )
28+ ! options . lazy && load ( fn , setComp )
2029 return ( props : ComponentProps < T > ) => {
21- let Comp : T | undefined ;
22- let m : boolean ;
23- const [ , rest ] = splitProps ( props , [ " fallback" ] ) ;
24- options . lazy && load ( fn , setComp ) ;
25- if ( ( Comp = comp ( ) ) && ! sharedConfig . context ) return Comp ( rest ) ;
26- const [ mounted , setMounted ] = createSignal ( ! sharedConfig . context ) ;
27- onMount ( ( ) => setMounted ( true ) ) ;
30+ let Comp : T | undefined
31+ let m : boolean
32+ const [ , rest ] = splitProps ( props , [ ' fallback' ] )
33+ options . lazy && load ( fn , setComp )
34+ if ( ( Comp = comp ( ) ) && ! sharedConfig . context ) return Comp ( rest )
35+ const [ mounted , setMounted ] = createSignal ( ! sharedConfig . context )
36+ onMount ( ( ) => setMounted ( true ) )
2837 return createMemo (
2938 ( ) => (
30- ( Comp = comp ( ) ) , ( m = mounted ( ) ) , untrack ( ( ) => ( Comp && m ? Comp ( rest ) : props . fallback ) )
31- )
32- ) ;
33- } ;
39+ ( Comp = comp ( ) ) ,
40+ ( m = mounted ( ) ) ,
41+ untrack ( ( ) => ( Comp && m ? Comp ( rest ) : props . fallback ) )
42+ ) ,
43+ )
44+ }
3445}
3546
3647function load < T > (
3748 fn : ( ) => Promise < {
38- default : T ;
49+ default : T
3950 } > ,
40- setComp : Setter < T >
51+ setComp : Setter < T > ,
4152) {
42- fn ( ) . then ( m => setComp ( ( ) => m . default ) ) ;
43- }
53+ fn ( ) . then ( ( m ) => setComp ( ( ) => m . default ) )
54+ }
0 commit comments