import { BaseDrillDownComponentProps, BaseSheetComponentProps, Pagination, PartDrillDown, S2Options, TooltipContentType } from '../node_modules/@antv/s2/esm/index.d.ts'; import { UnionToIntersection } from '@vue/shared'; import { PaginationProps } from 'ant-design-vue'; import { PropType } from 'vue'; interface PropOption { type: PropType; default?: T; } interface RequiredPropOption { type?: PropType; required: true; } export type EmitFn any>, Event extends keyof Options = keyof Options> = Options extends Array ? (event: V, ...args: any[]) => void : Record extends Options ? (event: string, ...args: any[]) => void : UnionToIntersection<{ [key in Event]: Options[key] extends (...args: infer Args) => any ? (event: key, ...args: Args) => void : (event: key, ...args: any[]) => void; }[Event]>; type GetOptionalKeys = keyof { [K in keyof T as Pick extends Required> ? never : K]: K; }; type IsEmitKey = Exclude extends (...args: any) => any ? true : false; type TransformEmitKey = T extends `on${infer R}` ? Uncapitalize : T; type GetPropKeys = keyof { [K in keyof T as IsEmitKey extends true ? never : K]: K; }; type GetEmitKeys = keyof { [K in keyof T as IsEmitKey extends true ? TransformEmitKey : never]: K; }; export type GetInitProps> = { [K in keyof T as IsEmitKey extends true ? never : K]-?: K extends OptionalKeys ? PropOption> : RequiredPropOption>; }; type GetInitEmits = { [K in keyof T as IsEmitKey extends true ? TransformEmitKey : never]-?: T[K]; }; export type SheetComponentOptions = S2Options; export type SheetComponentProps = BaseSheetComponentProps & { showPagination?: boolean | { onShowSizeChange?: (pageSize: number) => void; onChange?: (current: number) => void; }; }; export type BaseSheetInitPropKeys = GetPropKeys; export type BaseSheetInitEmitKeys = GetEmitKeys; export type BaseSheetInitProps = GetInitProps; export type BaseSheetInitEmits = GetInitEmits; export type BaseDrillDownProps = GetInitProps; export type BaseDrillDownEmitKeys = GetEmitKeys; export type BaseDrillDownEmits = GetInitEmits; export {};