UNPKG

@threlte/theatre

Version:

Threlte Components for Theatre, an animation library with a professional motion design toolset

31 lines (30 loc) 1.35 kB
import type { Snippet } from 'svelte'; import type { ConditionalKeys, Primitive } from 'type-fest'; import type { Transformer } from '../transfomers/types.js'; type OmittedPropKeys = 'type' | 'args' | 'attach' | 'manual' | 'makeDefault' | 'id' | 'children' | `is${string}` | 'parent' | 'uuid' | 'name'; type AnyClass = new (...args: any) => any; type AnyFn = (...args: any) => any; type MaybeInstance<Type> = Type extends AnyClass ? InstanceType<Type> : Type; type InstanceProps<Type> = Partial<Omit<MaybeInstance<Type> extends Primitive ? Record<string, unknown> : { [K in keyof MaybeInstance<Type>]?: MaybeInstance<Type>[K] extends { set: (...args: any[]) => any; } ? Parameters<MaybeInstance<Type>[K]['set']> | Parameters<MaybeInstance<Type>[K]['set']>[0] : MaybeInstance<Type>[K] extends AnyFn ? never : MaybeInstance<Type>[K]; }, ConditionalKeys<MaybeInstance<Type>, AnyFn> | OmittedPropKeys>>; type ObjectProp<T> = { type?: T; }; export type ComplexProp = { transformer?: Transformer; label?: string; key?: string; }; export type AnyProp = string | boolean | ComplexProp; type AnyProps<T> = { [P in keyof InstanceProps<T>]?: AnyProp; }; export type SyncProps<T> = AnyProps<T> & ObjectProp<T> & Record<string, AnyProp | T> & { children?: Snippet<[{ capture: () => void; }]>; }; export {};