import type { BaseTransitionProps, SlotsType } from 'vue'; /** * https://stackoverflow.com/a/59187769 * Extract the type of an element of an array/tuple without performing indexing */ export type ElementOf = T extends Array ? E : T extends ReadonlyArray ? F : never; /** * https://github.com/Microsoft/TypeScript/issues/29729 */ export type LiteralUnion = T | (string & {}); export type Data = Record; export type Key = string | number; export type getContainerFunc = () => HTMLElement; export type RawValue = string | number; export interface LabeledValue { key?: string; value: RawValue; label?: any; } export type SelectValue = RawValue | RawValue[] | LabeledValue | LabeledValue[] | undefined; export type Recordable = Record; export type CustomSlotsType = SlotsType; export interface AdjustOverflow { adjustX?: 0 | 1; adjustY?: 0 | 1; } export interface PlacementsConfig { arrowWidth?: number; horizontalArrowShift?: number; verticalArrowShift?: number; arrowPointAtCenter?: boolean; autoAdjustOverflow?: boolean | AdjustOverflow; } export interface CSSMotionProps extends Partial> { name?: string; css?: boolean; }