import type { Select } from "hry-types/src/Object/_api"; import type { Detail, WMBaseEvent } from "../../../types/OfficialTypeAlias"; import type { ComponentDoc } from "../../DefineComponent/ReturnType/ComponentDoc"; import type { CustomEventsDoc } from "../CustomEvents/CustomEventsDoc"; import type { Bubbles, BubblesCaptureComposed, BubblesComposed, Capture, CaptureComposed, CustomEventsTags } from "../CustomEvents/CustomEventsTag"; type FilterNormalFields = Select">; type GetBubblesOrCaptureEventsFromCompDoc = TComponentDocTuple extends [infer Head extends ComponentDoc, ...infer Rest extends ComponentDoc[]] ? GetBubblesOrCaptureEventsFromCompDoc)> : Result; type _AddSuffixForKey = Value extends BubblesComposed ? `${key}_bubbles` | `${key}_bubbles_catch` : Value extends CaptureComposed ? `${key}_capture` | `${key}_capture_catch` : Value extends BubblesCaptureComposed ? `${key}_bubbles&capture` | `${key}_bubbles&capture_catch` : never; type TransformCustomEventsDocTypeToFunctionTypeAndAddSuffix = { [k in keyof T as _AddSuffixForKey>]?: (detail: Detail>) => void; }; type GetAllSubCustomEventsConstraint = {} extends TReceivedComponentDoc ? {} : TReceivedComponentDoc extends ComponentDoc[] ? TransformCustomEventsDocTypeToFunctionTypeAndAddSuffix> : ComponentDoc["customEvents"] & {}; export type EventsConstraint = {} extends TReceivedComponentDoc ? Record any> : TReceivedComponentDoc extends ComponentDoc ? { [k in keyof TReceivedComponentDoc["customEvents"]]?: (e: Exclude) => void; } : GetAllSubCustomEventsConstraint; export {};