UNPKG

@cfcs/vue3

Version:

Write once, create framework components that supports React, Vue, Svelte, and more.

19 lines (18 loc) 2.12 kB
import { ReactiveAdapterParam, ReactiveEventParameters, ReactiveState, ReactiveSubscribe } from "@cfcs/core"; import { Ref } from "vue"; export declare type ReactiveEvents<Events extends Record<string, any>> = { [K in keyof Events as `on${Capitalize<string & K>}`]: (callback: ((...args: ReactiveEventParameters<Events, K & string>) => void)) => void; }; export declare type ReactiveResult<Instance extends ReactiveSubscribe<Record<string, any>>, State extends Record<string, any> = ReactiveState<Instance>, Methods extends keyof Partial<Instance> = any, Events extends Record<string, any> = {}> = { [key in keyof State]: Ref<State[key]>; } & { [key in Methods]: Instance[key]; } & ReactiveEvents<Events>; export declare type ReactiveLegacyResult<Instance extends ReactiveSubscribe<Record<string, any>>, State extends Record<string, any> = ReactiveState<Instance>, Methods extends keyof Partial<Instance> = any, Events extends Record<string, any> = {}> = State & { [key in Methods]: Instance[key]; } & ReactiveEvents<Events>; export declare type ReactiveLegacyAdapterResult<Adapter extends ReactiveAdapterParam<any, any, any, any, any>> = Adapter extends ReactiveAdapterParam<infer Instance, infer State, infer Methods, any, infer Events> ? ReactiveLegacyResult<Instance, State, Methods, Events> : {}; export declare type ReactiveAdapterResult<Adapter extends ReactiveAdapterParam<any, any, any, any, any>> = Adapter extends ReactiveAdapterParam<infer Instance, infer State, infer Methods, any, infer Events> ? VueReactiveResult<Instance, State, Methods, Events> : {}; export declare type VueReactiveEvents<Events extends Record<string, any>> = ReactiveEvents<Events>; export declare type VueReactiveResult<Instance extends ReactiveSubscribe<Record<string, any>>, State extends Record<string, any> = ReactiveState<Instance>, Methods extends keyof Partial<Instance> = any, Events extends Record<string, any> = {}> = ReactiveResult<Instance, State, Methods, Events>; export declare type VueReactiveAdapterResult<Adapter extends ReactiveAdapterParam<any, any, any, any, any>> = ReactiveAdapterResult<Adapter>;