UNPKG

@base-ui-components/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

52 lines (48 loc) 1.25 kB
import { EMPTY_OBJECT } from "./constants.js"; import { REASONS } from "./reasons.js"; /** * Maps a change `reason` string to the corresponding native event type. */ /** * Details of custom change events emitted by Base UI components. */ /** * Details of custom generic events emitted by Base UI components. */ /** * Creates a Base UI event details object with the given reason and utilities * for preventing Base UI's internal event handling. */ export function createChangeEventDetails(reason, event, trigger, customProperties) { let canceled = false; let allowPropagation = false; const custom = customProperties ?? EMPTY_OBJECT; const details = { reason, event: event ?? new Event('base-ui'), cancel() { canceled = true; }, allowPropagation() { allowPropagation = true; }, get isCanceled() { return canceled; }, get isPropagationAllowed() { return allowPropagation; }, trigger, ...custom }; return details; } export function createGenericEventDetails(reason, event, customProperties) { const custom = customProperties ?? EMPTY_OBJECT; const details = { reason, event: event ?? new Event('base-ui'), ...custom }; return details; }