import { ReservedProps } from 'vue'; import EventEmitter from 'eventemitter3'; import { BezierProps, CirclesProps, CommentProps, ConatinerCustomProps, ContainerProps, CustomProps, EllipseProps, ImageProps, LineProps, PathProps, QuadraticProps, RectProps, RectRProps, ShaderProps, TextProps } from './props'; import { ERenderItemEvent } from '@motajs/render'; export type WrapEventEmitterEvents = T extends string | symbol ? T : { [P in keyof T]: T[P] extends any[] ? (...args: T[P]) => void : (...args: any[]) => void; }; type MappingEvent = { [P in keyof WrapEventEmitterEvents as P extends string ? `on${Capitalize

}` : never]?: WrapEventEmitterEvents[P]; }; export type TagDefine = T & MappingEvent & ReservedProps; declare module 'vue/jsx-runtime' { namespace JSX { export interface IntrinsicElements { container: TagDefine; 'container-custom': TagDefine< ConatinerCustomProps, ERenderItemEvent >; shader: TagDefine; text: TagDefine; image: TagDefine; comment: TagDefine; custom: TagDefine; 'g-rect': TagDefine; 'g-circle': TagDefine; 'g-ellipse': TagDefine; 'g-line': TagDefine; 'g-bezier': TagDefine; 'g-quad': TagDefine; 'g-path': TagDefine; 'g-rectr': TagDefine; } } }