11import React from 'react' ;
2- import {
3- // eslint-disable-next-line react/no-deprecated
4- hydrate as hydrateComponent ,
5- // eslint-disable-next-line react/no-deprecated
6- render as renderComponent ,
7- } from 'react-dom' ;
8-
9- function querySelector ( selector : string ) : Element | DocumentFragment | null {
2+ import { hydrateRoot , createRoot } from 'react-dom/client' ;
3+
4+ function querySelector ( selector : string ) : Element | null {
105 if ( typeof document !== 'undefined' ) {
116 return document . querySelector ( selector ) ;
127 }
@@ -18,20 +13,19 @@ function querySelector(selector: string): Element | DocumentFragment | null {
1813 *
1914 * @param {Any } component of any kind
2015 */
21- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22- export function createRender < P extends object > ( component : any ) {
23- return (
24- props : P ,
25- container ?: Element | DocumentFragment | null ,
26- callback ?: ( ) => void ,
27- ) => {
16+ export function createRender <
17+ Props extends Parameters < typeof React . createElement > [ 1 ] ,
18+ > ( component : Parameters < typeof React . createElement > [ 0 ] ) {
19+ return ( props : Props , container ?: Element | DocumentFragment | null ) => {
2820 container = container ?? querySelector ( 'asyncapi' ) ;
21+
2922 if ( container === null ) {
3023 return ;
3124 }
3225
33- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
34- renderComponent ( React . createElement ( component , props ) , container , callback ) ;
26+ const root = createRoot ( container ) ;
27+
28+ root . render ( React . createElement ( component , props ) ) ;
3529 } ;
3630}
3731
@@ -40,23 +34,16 @@ export function createRender<P extends object>(component: any) {
4034 *
4135 * @param {Any } component of any kind
4236 */
43- // eslint-disable-next-line @typescript-eslint/no-explicit-any
44- export function createHydrate < P extends object > ( component : any ) {
45- return (
46- props : P ,
47- container ?: Element | DocumentFragment | null ,
48- callback ?: ( ) => void ,
49- ) => {
37+ export function createHydrate <
38+ Props extends Parameters < typeof React . createElement > [ 1 ] ,
39+ > ( component : Parameters < typeof React . createElement > [ 0 ] ) {
40+ return ( props : Props , container ?: Element | Document | null ) => {
5041 container = container ?? querySelector ( 'asyncapi' ) ;
42+
5143 if ( container === null ) {
5244 return ;
5345 }
5446
55- hydrateComponent (
56- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
57- React . createElement ( component , props ) ,
58- container ,
59- callback ,
60- ) ;
47+ hydrateRoot ( container , React . createElement ( component , props ) ) ;
6148 } ;
6249}
0 commit comments