UNPKG

@codelet/core

Version:
10 lines (9 loc) 1.82 kB
import type { Loose } from '@daysnap/types'; import type { BehaviorOptionsBase, IntersectionBehavior, OptionBehavior, UnwrapBehaviorsType } from './options'; import type { ComponentInstanceProperties, ComponentLifetimes, ComponentOtherOption, ComponentPropertyOption, DataOption, EnsureNonVoid, InstanceMethods, MethodOption, PropertyOptionToData } from './types'; export type ComponentOtherOptions = Partial<Omit<ComponentOtherOption, 'behaviors'>>; export type ComponentOptionsInstance<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}, PublicBehavior = IntersectionBehavior<Behavior>, PublicProperty extends ComponentPropertyOption = UnwrapBehaviorsType<PublicBehavior, 'Property'> & EnsureNonVoid<Property>, PublicData extends DataOption = UnwrapBehaviorsType<PublicBehavior, 'Data'> & EnsureNonVoid<Data> & PropertyOptionToData<PublicProperty>, PublicMethod extends MethodOption = UnwrapBehaviorsType<PublicBehavior, 'Method'> & EnsureNonVoid<Method>> = ComponentInstanceProperties & PublicMethod & { data: Loose<PublicData>; } & InstanceMethods<PublicData>; export type ComponentOptions<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}> = BehaviorOptionsBase<Data, Behavior, Method, Property> & ComponentOtherOptions & Partial<ComponentLifetimes> & ThisType<ComponentOptionsInstance<Data, Behavior, Method, Property>>; export declare function createComponent<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}>(options?: ComponentOptions<Data, Behavior, Method, Property>): string;