11type Props < T > = Partial < Omit < T , "style" | "dataset" | "classList" > > & {
2- style ?: Partial < CSSStyleDeclaration >
3- dataset ?: Record < string , string | number >
2+ style ?: Extract < Partial < CSSStyleDeclaration > , string >
3+ dataset ?: Record < string , string | number | boolean >
44 txt ?: string
55}
66type E = HTMLElementTagNameMap & Record < string , HTMLElement >
@@ -12,12 +12,10 @@ export const Render = <T extends keyof E>(tagName: T) => (p: Props<E[T]> = {}, .
1212 const { style = { } , dataset = { } , ..._p } = props
1313 const children = c . filter ( ( c ) => c ) as NNode [ ]
1414 const render = ( ( element ?: E [ T ] ) => ( ) => {
15- if ( element ) {
16- return element
17- }
15+ if ( element ) return element
1816 const e = ( element = document . createElement ( tagName ) )
19- Object . entries ( _p ) . forEach ( ( [ k , v ] ) => ( e [ k ] = v ) )
20- Object . entries ( style ) . forEach ( ( [ k , v ] ) => ( e . style [ k ] = v ) )
17+ Object . entries ( _p ) . forEach ( ( [ k , v ] ) => ( ( < any > e ) [ k ] = v ) )
18+ Object . entries ( style ) . forEach ( ( [ k , v ] ) => ( ( < any > e . style ) [ k ] = v ) )
2119 Object . entries ( dataset ) . forEach ( ( [ k , v ] ) => ( e . dataset [ k ] = v as string ) )
2220 children . forEach ( ( child ) => e . append ( child ( ) ) )
2321 return e
@@ -29,10 +27,10 @@ const patchProps = (prev: NNode, next: NNode) => {
2927 const e = prev ( )
3028 const { style : pStyle = { } , dataset : pData = { } , ...pProps } = prev . props
3129 const { style : nStyle = { } , dataset : nData = { } , ...nProps } = next . props
32- Object . entries ( pProps ) . forEach ( ( [ k ] ) => nProps [ k ] === undefined && ( e [ k ] = undefined ) )
33- Object . entries ( nProps ) . forEach ( ( [ k , v ] ) => pProps [ k ] !== v && ( e [ k ] = v ) )
34- Object . entries ( pStyle ) . forEach ( ( [ k ] ) => nStyle [ k ] === undefined && e . style . removeProperty ( k ) )
35- Object . entries ( nStyle ) . forEach ( ( [ k , v ] ) => pStyle [ k ] !== v && ( e . style [ k ] = v ) )
30+ Object . entries ( pProps ) . forEach ( ( [ k ] ) => ( < any > nProps ) [ k ] === undefined && ( ( < any > e ) [ k ] = undefined ) )
31+ Object . entries ( nProps ) . forEach ( ( [ k , v ] ) => ( < any > pProps ) [ k ] !== v && ( ( < any > e ) [ k ] = v ) )
32+ Object . entries ( pStyle ) . forEach ( ( [ k ] ) => ( < any > nStyle ) [ k ] === undefined && e . style . removeProperty ( k ) )
33+ Object . entries ( nStyle ) . forEach ( ( [ k , v ] ) => ( < any > pStyle ) [ k ] !== v && ( ( < any > e . style ) [ k ] = v ) )
3634 Object . entries ( pData ) . forEach ( ( [ k ] ) => nData [ k ] === undefined && Reflect . deleteProperty ( e . dataset , k ) )
3735 Object . entries ( nData ) . forEach ( ( [ k , v ] ) => pData [ k ] !== v && ( e . dataset [ k ] = v as string ) )
3836}
@@ -54,7 +52,7 @@ const reconciliate = (prev: NNode, next: NNode): NNode => {
5452export const NewRNode = ( element : HTMLElement , props : Record < string , unknown > = { } , ...children : MaybeNNode [ ] ) : NNode =>
5553 Object . assign ( ( ) => element , { tagName : element . tagName , props, children : children . filter ( ( c ) => c ) as NNode [ ] } )
5654
57- export const NewMountPoint = ( root : HTMLElement | ShadowRoot ) => {
58- let prev = NewRNode ( root as any )
55+ export const NewMountPoint = ( root : HTMLElement ) => {
56+ let prev = NewRNode ( root )
5957 return ( ...children : MaybeNNode [ ] ) => ( prev = reconciliate ( prev , NewRNode ( root as any , { } , ...children ) ) )
6058}
0 commit comments