import type { VNode } from 'vue'; import type { AcceptableValue as _AcceptableValue } from 'reka-ui'; export type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P] | undefined; }; export type DynamicSlotsKeys = (Name extends string ? Suffix extends string ? Name | `${Name}-${Suffix}` : Name : never); export type DynamicSlots = { [K in DynamicSlotsKeys]?: (props: { item: Extract; } & ExtraProps) => VNode[]; }; export type GetObjectField = MaybeObject extends Record ? MaybeObject[Key] : never; export type AcceptableValue = Exclude<_AcceptableValue, Record> | boolean; export type ArrayOrNested = T[] | T[][]; export type NestedItem = T extends Array ? NestedItem : T; type AllKeys = T extends any ? keyof T : never; type NonCommonKeys = Exclude, keyof T>; type PickTypeOf = K extends AllKeys ? T extends { [k in K]?: any; } ? T[K] : undefined : never; export type MergeTypes = { [k in keyof T]: PickTypeOf; } & { [k in NonCommonKeys]?: PickTypeOf; }; type IsPrimitive = T extends (string | number | boolean | symbol | bigint | null | undefined) ? true : false; type IsPlainObject = IsPrimitive extends true ? false : T extends (readonly any[] | ((...args: any[]) => any) | Date | RegExp | Map | Set | WeakMap | WeakSet | Promise | Error) ? false : T extends object ? true : false; type DotPathKeys = IsPlainObject extends true ? { [K in keyof T & string]: IsPlainObject> extends true ? K | `${K}.${DotPathKeys>}` : K; }[keyof T & string] : never; type DotPathValue | (string & {})> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? DotPathValue, Rest> : never : P extends keyof T ? T[P] : never; export type GetItemKeys = NestedItem> = (keyof Extract & string) | DotPathKeys>; export type GetItemValue | undefined, O extends object | undefined = undefined, T extends NestedItem = NestedItem> = T extends object ? VK extends undefined ? T extends O ? never : T : VK extends DotPathKeys ? DotPathValue : never : T; export type GetModelValue | undefined, M extends boolean, O extends object | undefined = undefined> = M extends true ? GetItemValue[] : GetItemValue; export type GetModelValueEmits | undefined, M extends boolean, O extends object | undefined = undefined> = { /** Event handler called when the value changes. */ 'update:modelValue': [value: GetModelValue]; }; export type StringOrVNode = string | VNode | (() => VNode); export type EmitsToProps = { [K in keyof T as `on${Capitalize}`]: T[K] extends [...args: infer Args] ? (...args: Args) => void : never; }; export type NonUnion = [T] extends [infer U] ? _NonUnion : never; type _NonUnion = U extends any ? [T] extends [U] ? unknown : never : never; export {};