svelte-cross-frameworks
Version:
Wrapper for Svelte cross-frameworks
15 lines (10 loc) • 959 B
text/typescript
import * as React from 'react';
import { SvelteComponent } from 'svelte';
import * as Vue from 'vue';
type SveltePropsToProps<Props extends Record<string, any>, Events extends Record<string, any>> = Props & {
[evt in keyof Events as `on${Capitalize<evt & string>}`]?: Events[evt] extends infer P ? (payload: P) => void : never;
};
type SvelteComponentType<P extends Record<string, any> = any, E extends Record<string, any> = any> = typeof SvelteComponent<P, E>;
declare function createReactComponent<Component extends SvelteComponentType>(svelteComponent: Component): Component extends SvelteComponentType<infer P, infer E> ? React.ComponentType<SveltePropsToProps<P, E>> : never;
declare function createVueComponent<Component extends SvelteComponentType>(svelteComponent: Component): Component extends SvelteComponentType<infer P, infer E> ? Vue.DefineComponent<SveltePropsToProps<P, E>> : never;
export { createReactComponent, createVueComponent };