@cfcs/vue3
Version:
Write once, create framework components that supports React, Vue, Svelte, and more.
19 lines (18 loc) • 2.12 kB
TypeScript
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>;