import type { HTMLAttributes, PropType, VNode } from 'vue'; import type { ComponentPublicInstance, VNodeRef } from "vue"; export type VueJsxNodeSingle = VNode | string | boolean | number; export type VueJsxNode = VNode | string | boolean | number | JSX.Element | Element | VueJsxNode[]; export type VueHTMLAttributes = HTMLAttributes & { key?: string | number | symbol; ref?: VNodeRef; ref_for?: boolean; ref_key?: string; } & { checked?: boolean; disabled?: boolean; type?: string; }; export type RefElement = Element | ComponentPublicInstance | null; export type RemoveIndexSignature = { [K in keyof T as K extends `${infer _}` ? K : never]: T[K]; }; export type IsOptional = {} extends Pick ? true : false; export type CombineProps = { [K in keyof Required]: IsOptional extends true ? ({ type: PropType; default?: any; required?: false; } | PropType) : ({ type: PropType; default?: any; required: true; }); };