import React from 'react' ; import * as Vue from 'vue' ; const defaultPassProps = < T = any > ( props ) : T => props ; export default < TProps = any > ( Component , { passProps = defaultPassProps } = { } ) => { return ( props ) => { const el = React . useRef ( null ) ; React . useEffect ( ( ) => { if ( Vue . createApp ) { const app = Vue . createApp ( { render : ( ) => Vue . h ( Component , ( passProps && passProps ( props ) ) || { } ) } ) ; app . mount ( el . current ) ; return ( ) => app . unmount ( ) ; } else if ( Vue . default ) { const app = new Vue . default ( { el : el . current , render : h => h ( Component , { props : passProps ? passProps ( props ) : { } } ) } ) ; return ( ) => app . $destroy ( ) ; } } ) ; return React . createElement ( 'div' , null , React . createElement ( 'div' , { ref : el } ) ) ; } ; } ;