/** * Constants for every `reason` string carried on Base UI change-event details. * Mirrors the React Base UI `REASONS` namespace. */ export declare const REASONS: { readonly none: "none"; readonly triggerPress: "trigger-press"; readonly triggerHover: "trigger-hover"; readonly triggerFocus: "trigger-focus"; readonly outsidePress: "outside-press"; readonly itemPress: "item-press"; readonly closePress: "close-press"; readonly linkPress: "link-press"; readonly clearPress: "clear-press"; readonly chipRemovePress: "chip-remove-press"; readonly trackPress: "track-press"; readonly incrementPress: "increment-press"; readonly decrementPress: "decrement-press"; readonly inputChange: "input-change"; readonly inputClear: "input-clear"; readonly inputBlur: "input-blur"; readonly inputPaste: "input-paste"; readonly inputPress: "input-press"; readonly focusOut: "focus-out"; readonly escapeKey: "escape-key"; readonly closeWatcher: "close-watcher"; readonly listNavigation: "list-navigation"; readonly keyboard: "keyboard"; readonly pointer: "pointer"; readonly drag: "drag"; readonly swipe: "swipe"; readonly wheel: "wheel"; readonly scrub: "scrub"; readonly cancelOpen: "cancel-open"; readonly siblingOpen: "sibling-open"; readonly disabled: "disabled"; readonly imperativeAction: "imperative-action"; readonly windowResize: "window-resize"; }; export type BaseUIEventReasons = typeof REASONS; export type BaseUIEventReason = BaseUIEventReasons[keyof BaseUIEventReasons]; interface ReasonToEventMap { [REASONS.none]: Event; [REASONS.triggerPress]: MouseEvent | PointerEvent | TouchEvent | KeyboardEvent; [REASONS.triggerHover]: MouseEvent; [REASONS.triggerFocus]: FocusEvent; [REASONS.outsidePress]: MouseEvent | PointerEvent | TouchEvent; [REASONS.itemPress]: MouseEvent | KeyboardEvent | PointerEvent; [REASONS.closePress]: MouseEvent | KeyboardEvent | PointerEvent; [REASONS.linkPress]: MouseEvent | PointerEvent; [REASONS.clearPress]: PointerEvent | MouseEvent | KeyboardEvent; [REASONS.chipRemovePress]: PointerEvent | MouseEvent | KeyboardEvent; [REASONS.trackPress]: PointerEvent | MouseEvent | TouchEvent; [REASONS.incrementPress]: PointerEvent | MouseEvent | TouchEvent; [REASONS.decrementPress]: PointerEvent | MouseEvent | TouchEvent; [REASONS.inputChange]: InputEvent | Event; [REASONS.inputClear]: InputEvent | FocusEvent | Event; [REASONS.inputBlur]: FocusEvent; [REASONS.inputPaste]: ClipboardEvent; [REASONS.inputPress]: MouseEvent | PointerEvent | TouchEvent | KeyboardEvent; [REASONS.focusOut]: FocusEvent | KeyboardEvent; [REASONS.escapeKey]: KeyboardEvent; [REASONS.closeWatcher]: Event; [REASONS.listNavigation]: KeyboardEvent; [REASONS.keyboard]: KeyboardEvent; [REASONS.pointer]: PointerEvent; [REASONS.drag]: PointerEvent | TouchEvent; [REASONS.swipe]: PointerEvent | TouchEvent; [REASONS.wheel]: WheelEvent; [REASONS.scrub]: PointerEvent; [REASONS.cancelOpen]: MouseEvent; [REASONS.siblingOpen]: Event; [REASONS.disabled]: Event; [REASONS.imperativeAction]: Event; [REASONS.windowResize]: UIEvent; } /** * Maps a change `reason` string to its corresponding native event type. */ export type ReasonToEvent = Reason extends keyof ReasonToEventMap ? ReasonToEventMap[Reason] : Event; type BaseUIChangeEventDetail = { /** Reason the event fired. */ reason: Reason; /** Underlying native event. */ event: ReasonToEvent; /** Prevent Base UI's internal handling of the event. */ cancel: () => void; /** * Allow event propagation in cases where Base UI would otherwise stop it. */ allowPropagation: () => void; /** `true` once `cancel()` has been called. */ readonly isCanceled: boolean; /** `true` once `allowPropagation()` has been called. */ readonly isPropagationAllowed: boolean; /** The element that triggered the event, if any. */ trigger: Element | undefined; } & Custom; /** * The "details" object passed as the second argument of every `onXChange` * callback in Base UI. */ export type BaseUIChangeEventDetails = Reason extends string ? BaseUIChangeEventDetail : never; type BaseUIGenericEventDetail = { reason: Reason; event: ReasonToEvent; } & Custom; export type BaseUIGenericEventDetails = Reason extends string ? BaseUIGenericEventDetail : never; /** * Create a change-event details object with `cancel`/`allowPropagation` * utilities and their read-only observers. * * Plain value factory — not reactive, safe to call in event handlers. */ export declare function createChangeEventDetails(reason: Reason, event?: ReasonToEvent, trigger?: HTMLElement, customProperties?: Custom): BaseUIChangeEventDetails; /** * Create a "generic" (non-cancelable) event details object. Useful for * notification-style events where the consumer cannot influence the flow. */ export declare function createGenericEventDetails(reason: Reason, event?: ReasonToEvent, customProperties?: Custom): BaseUIGenericEventDetails; export {}; //# sourceMappingURL=change-event-details.d.ts.map