@@ -3,6 +3,20 @@ import type {pointerKey} from './pointer/types'
33import { defaultKeyMap as defaultKeyboardMap } from './keyboard/keyMap'
44import { defaultKeyMap as defaultPointerMap } from './pointer/keyMap'
55
6+ export enum PointerEventsCheckLevel {
7+ /**
8+ * Check pointer events on every user interaction that triggers a bunch of events.
9+ * E.g. once for releasing a mouse button even though this triggers `pointerup`, `mouseup`, `click`, etc...
10+ */
11+ EachTrigger = 4 ,
12+ /** Check each target once per call to pointer (related) API */
13+ EachApiCall = 2 ,
14+ /** Check each event target once */
15+ EachTarget = 1 ,
16+ /** No pointer events check */
17+ Never = 0 ,
18+ }
19+
620export interface Options {
721 /**
822 * When using `userEvent.upload`, automatically discard files
@@ -61,6 +75,17 @@ export interface Options {
6175 */
6276 pointerMap ?: pointerKey [ ]
6377
78+ /**
79+ * The pointer API includes a check if an element has or inherits `pointer-events: none`.
80+ * This check is known to be expensive and very expensive when checking deeply nested nodes.
81+ * This option determines how often the pointer related APIs perform the check.
82+ *
83+ * This is a binary flag option. You can combine multiple Levels.
84+ *
85+ * @default PointerEventsCheckLevel.EachCall
86+ */
87+ pointerEventsCheck ?: PointerEventsCheckLevel | number
88+
6489 /**
6590 * `userEvent.type` automatically releases any keys still pressed at the end of the call.
6691 * This option allows to opt out of this feature.
@@ -85,15 +110,6 @@ export interface Options {
85110 */
86111 skipHover ?: boolean
87112
88- /**
89- * Calling pointer related APIs on an element triggers a check if that element can receive pointer events.
90- * This check is known to be expensive.
91- * This option allows to skip the check.
92- *
93- * @default false
94- */
95- skipPointerEventsCheck ?: boolean
96-
97113 /**
98114 * Write selected data to Clipboard API when a `cut` or `copy` is triggered.
99115 *
@@ -116,10 +132,10 @@ export const defaultOptionsDirect: Required<Options> = {
116132 document : global . document ,
117133 keyboardMap : defaultKeyboardMap ,
118134 pointerMap : defaultPointerMap ,
135+ pointerEventsCheck : PointerEventsCheckLevel . EachApiCall ,
119136 skipAutoClose : false ,
120137 skipClick : false ,
121138 skipHover : false ,
122- skipPointerEventsCheck : false ,
123139 writeToClipboard : false ,
124140}
125141
0 commit comments