UNPKG

vue-facing-decorator

Version:

Vue typescript class and decorator based component.

29 lines (21 loc) 872 B
import { ComponentBase } from './component' import { obtainSlot } from './slot' import type { VueCons } from './class' import { Base as Vue } from './class' import type { MergeIdentityType, IdentitySymbol } from './identity' type MixedClass<Mixins extends VueCons[], Base extends VueCons = VueCons> = Mixins extends [infer T extends VueCons, ...infer E extends VueCons[]] ? MixedClass<E, VueCons<InstanceType<Base> & InstanceType<T>, MergeIdentityType<InstanceType<T>[typeof IdentitySymbol], InstanceType<Base>[typeof IdentitySymbol]> > > : Base export function mixins<T extends VueCons[]>(...conses: T) { class MixinsClass extends Vue { } ComponentBase({ mixins: conses.map((cons => obtainSlot(cons.prototype).cachedVueComponent)) })(MixinsClass) return MixinsClass as any as MixedClass<T> }