@depup/testing-library__user-event 14.6.3-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +25 -0
  3. package/changes.json +5 -0
  4. package/dist/cjs/clipboard/copy.js +22 -0
  5. package/dist/cjs/clipboard/cut.js +22 -0
  6. package/dist/cjs/clipboard/index.js +11 -0
  7. package/dist/cjs/clipboard/paste.js +24 -0
  8. package/dist/cjs/convenience/click.js +35 -0
  9. package/dist/cjs/convenience/hover.js +19 -0
  10. package/dist/cjs/convenience/index.js +14 -0
  11. package/dist/cjs/convenience/tab.js +7 -0
  12. package/dist/cjs/document/UI.js +90 -0
  13. package/dist/cjs/document/copySelection.js +29 -0
  14. package/dist/cjs/document/getValueOrTextContent.js +18 -0
  15. package/dist/cjs/document/index.js +17 -0
  16. package/dist/cjs/document/interceptor.js +104 -0
  17. package/dist/cjs/document/patchFocus.js +106 -0
  18. package/dist/cjs/document/prepareDocument.js +58 -0
  19. package/dist/cjs/document/trackValue.js +57 -0
  20. package/dist/cjs/event/behavior/click.js +32 -0
  21. package/dist/cjs/event/behavior/cut.js +14 -0
  22. package/dist/cjs/event/behavior/index.js +13 -0
  23. package/dist/cjs/event/behavior/keydown.js +128 -0
  24. package/dist/cjs/event/behavior/keypress.js +51 -0
  25. package/dist/cjs/event/behavior/keyup.js +17 -0
  26. package/dist/cjs/event/behavior/paste.js +18 -0
  27. package/dist/cjs/event/behavior/registry.js +5 -0
  28. package/dist/cjs/event/createEvent.js +193 -0
  29. package/dist/cjs/event/dispatchEvent.js +54 -0
  30. package/dist/cjs/event/eventMap.js +281 -0
  31. package/dist/cjs/event/focus.js +34 -0
  32. package/dist/cjs/event/index.js +22 -0
  33. package/dist/cjs/event/input.js +158 -0
  34. package/dist/cjs/event/radio.js +27 -0
  35. package/dist/cjs/event/selection/getInputRange.js +18 -0
  36. package/dist/cjs/event/selection/getTargetTypeAndSelection.js +31 -0
  37. package/dist/cjs/event/selection/index.js +24 -0
  38. package/dist/cjs/event/selection/modifySelection.js +21 -0
  39. package/dist/cjs/event/selection/modifySelectionPerMouse.js +40 -0
  40. package/dist/cjs/event/selection/moveSelection.js +38 -0
  41. package/dist/cjs/event/selection/resolveCaretPosition.js +60 -0
  42. package/dist/cjs/event/selection/selectAll.js +38 -0
  43. package/dist/cjs/event/selection/setSelection.js +21 -0
  44. package/dist/cjs/event/selection/setSelectionPerMouse.js +79 -0
  45. package/dist/cjs/event/selection/setSelectionRange.js +31 -0
  46. package/dist/cjs/event/selection/updateSelectionOnFocus.js +40 -0
  47. package/dist/cjs/event/types.js +2 -0
  48. package/dist/cjs/event/wrapEvent.js +10 -0
  49. package/dist/cjs/index.js +12 -0
  50. package/dist/cjs/keyboard/index.js +40 -0
  51. package/dist/cjs/keyboard/keyMap.js +178 -0
  52. package/dist/cjs/keyboard/parseKeyDef.js +45 -0
  53. package/dist/cjs/options.js +14 -0
  54. package/dist/cjs/package.json +3 -0
  55. package/dist/cjs/pointer/index.js +74 -0
  56. package/dist/cjs/pointer/keyMap.js +33 -0
  57. package/dist/cjs/pointer/parseKeyDef.js +23 -0
  58. package/dist/cjs/setup/api.js +35 -0
  59. package/dist/cjs/setup/directApi.js +75 -0
  60. package/dist/cjs/setup/index.js +11 -0
  61. package/dist/cjs/setup/setup.js +125 -0
  62. package/dist/cjs/setup/wrapAsync.js +11 -0
  63. package/dist/cjs/system/index.js +42 -0
  64. package/dist/cjs/system/keyboard.js +165 -0
  65. package/dist/cjs/system/pointer/buttons.js +80 -0
  66. package/dist/cjs/system/pointer/device.js +32 -0
  67. package/dist/cjs/system/pointer/index.js +156 -0
  68. package/dist/cjs/system/pointer/mouse.js +204 -0
  69. package/dist/cjs/system/pointer/pointer.js +129 -0
  70. package/dist/cjs/system/pointer/shared.js +8 -0
  71. package/dist/cjs/utility/clear.js +32 -0
  72. package/dist/cjs/utility/index.js +14 -0
  73. package/dist/cjs/utility/selectOptions.js +114 -0
  74. package/dist/cjs/utility/type.js +23 -0
  75. package/dist/cjs/utility/upload.js +62 -0
  76. package/dist/cjs/utils/click/isClickableInput.js +20 -0
  77. package/dist/cjs/utils/dataTransfer/Blob.js +16 -0
  78. package/dist/cjs/utils/dataTransfer/Clipboard.js +174 -0
  79. package/dist/cjs/utils/dataTransfer/DataTransfer.js +134 -0
  80. package/dist/cjs/utils/dataTransfer/FileList.js +24 -0
  81. package/dist/cjs/utils/edit/isContentEditable.js +18 -0
  82. package/dist/cjs/utils/edit/isEditable.js +29 -0
  83. package/dist/cjs/utils/edit/maxLength.js +26 -0
  84. package/dist/cjs/utils/edit/setFiles.js +58 -0
  85. package/dist/cjs/utils/edit/timeValue.js +40 -0
  86. package/dist/cjs/utils/focus/cursor.js +126 -0
  87. package/dist/cjs/utils/focus/getActiveElement.js +25 -0
  88. package/dist/cjs/utils/focus/getTabDestination.js +80 -0
  89. package/dist/cjs/utils/focus/isFocusable.js +9 -0
  90. package/dist/cjs/utils/focus/selection.js +20 -0
  91. package/dist/cjs/utils/focus/selector.js +15 -0
  92. package/dist/cjs/utils/index.js +78 -0
  93. package/dist/cjs/utils/keyDef/readNextDescriptor.js +91 -0
  94. package/dist/cjs/utils/misc/cloneEvent.js +7 -0
  95. package/dist/cjs/utils/misc/findClosest.js +14 -0
  96. package/dist/cjs/utils/misc/getDocumentFromNode.js +10 -0
  97. package/dist/cjs/utils/misc/getTreeDiff.js +25 -0
  98. package/dist/cjs/utils/misc/getWindow.js +19 -0
  99. package/dist/cjs/utils/misc/isDescendantOrSelf.js +14 -0
  100. package/dist/cjs/utils/misc/isDisabled.js +33 -0
  101. package/dist/cjs/utils/misc/isElementType.js +20 -0
  102. package/dist/cjs/utils/misc/isVisible.js +19 -0
  103. package/dist/cjs/utils/misc/level.js +17 -0
  104. package/dist/cjs/utils/misc/wait.js +14 -0
  105. package/dist/cjs/utils/pointer/cssPointerEvents.js +102 -0
  106. package/dist/esm/clipboard/copy.js +20 -0
  107. package/dist/esm/clipboard/cut.js +20 -0
  108. package/dist/esm/clipboard/index.js +3 -0
  109. package/dist/esm/clipboard/paste.js +22 -0
  110. package/dist/esm/convenience/click.js +31 -0
  111. package/dist/esm/convenience/hover.js +16 -0
  112. package/dist/esm/convenience/index.js +3 -0
  113. package/dist/esm/convenience/tab.js +5 -0
  114. package/dist/esm/document/UI.js +77 -0
  115. package/dist/esm/document/copySelection.js +27 -0
  116. package/dist/esm/document/getValueOrTextContent.js +16 -0
  117. package/dist/esm/document/index.js +4 -0
  118. package/dist/esm/document/interceptor.js +99 -0
  119. package/dist/esm/document/patchFocus.js +103 -0
  120. package/dist/esm/document/prepareDocument.js +56 -0
  121. package/dist/esm/document/trackValue.js +53 -0
  122. package/dist/esm/event/behavior/click.js +30 -0
  123. package/dist/esm/event/behavior/cut.js +12 -0
  124. package/dist/esm/event/behavior/index.js +7 -0
  125. package/dist/esm/event/behavior/keydown.js +126 -0
  126. package/dist/esm/event/behavior/keypress.js +49 -0
  127. package/dist/esm/event/behavior/keyup.js +15 -0
  128. package/dist/esm/event/behavior/paste.js +16 -0
  129. package/dist/esm/event/behavior/registry.js +3 -0
  130. package/dist/esm/event/createEvent.js +191 -0
  131. package/dist/esm/event/dispatchEvent.js +50 -0
  132. package/dist/esm/event/eventMap.js +277 -0
  133. package/dist/esm/event/focus.js +31 -0
  134. package/dist/esm/event/index.js +7 -0
  135. package/dist/esm/event/input.js +156 -0
  136. package/dist/esm/event/radio.js +25 -0
  137. package/dist/esm/event/selection/getInputRange.js +16 -0
  138. package/dist/esm/event/selection/getTargetTypeAndSelection.js +29 -0
  139. package/dist/esm/event/selection/index.js +9 -0
  140. package/dist/esm/event/selection/modifySelection.js +19 -0
  141. package/dist/esm/event/selection/modifySelectionPerMouse.js +38 -0
  142. package/dist/esm/event/selection/moveSelection.js +36 -0
  143. package/dist/esm/event/selection/resolveCaretPosition.js +58 -0
  144. package/dist/esm/event/selection/selectAll.js +35 -0
  145. package/dist/esm/event/selection/setSelection.js +19 -0
  146. package/dist/esm/event/selection/setSelectionPerMouse.js +77 -0
  147. package/dist/esm/event/selection/setSelectionRange.js +29 -0
  148. package/dist/esm/event/selection/updateSelectionOnFocus.js +38 -0
  149. package/dist/esm/event/types.js +1 -0
  150. package/dist/esm/event/wrapEvent.js +8 -0
  151. package/dist/esm/index.js +2 -0
  152. package/dist/esm/keyboard/index.js +37 -0
  153. package/dist/esm/keyboard/keyMap.js +176 -0
  154. package/dist/esm/keyboard/parseKeyDef.js +43 -0
  155. package/dist/esm/options.js +12 -0
  156. package/dist/esm/package.json +3 -0
  157. package/dist/esm/pointer/index.js +72 -0
  158. package/dist/esm/pointer/keyMap.js +31 -0
  159. package/dist/esm/pointer/parseKeyDef.js +21 -0
  160. package/dist/esm/setup/api.js +33 -0
  161. package/dist/esm/setup/directApi.js +58 -0
  162. package/dist/esm/setup/index.js +9 -0
  163. package/dist/esm/setup/setup.js +119 -0
  164. package/dist/esm/setup/wrapAsync.js +9 -0
  165. package/dist/esm/system/index.js +40 -0
  166. package/dist/esm/system/keyboard.js +162 -0
  167. package/dist/esm/system/pointer/buttons.js +74 -0
  168. package/dist/esm/system/pointer/device.js +30 -0
  169. package/dist/esm/system/pointer/index.js +154 -0
  170. package/dist/esm/system/pointer/mouse.js +202 -0
  171. package/dist/esm/system/pointer/pointer.js +127 -0
  172. package/dist/esm/system/pointer/shared.js +6 -0
  173. package/dist/esm/utility/clear.js +30 -0
  174. package/dist/esm/utility/index.js +4 -0
  175. package/dist/esm/utility/selectOptions.js +111 -0
  176. package/dist/esm/utility/type.js +21 -0
  177. package/dist/esm/utility/upload.js +60 -0
  178. package/dist/esm/utils/click/isClickableInput.js +18 -0
  179. package/dist/esm/utils/dataTransfer/Blob.js +14 -0
  180. package/dist/esm/utils/dataTransfer/Clipboard.js +167 -0
  181. package/dist/esm/utils/dataTransfer/DataTransfer.js +131 -0
  182. package/dist/esm/utils/dataTransfer/FileList.js +22 -0
  183. package/dist/esm/utils/edit/isContentEditable.js +15 -0
  184. package/dist/esm/utils/edit/isEditable.js +26 -0
  185. package/dist/esm/utils/edit/maxLength.js +23 -0
  186. package/dist/esm/utils/edit/setFiles.js +56 -0
  187. package/dist/esm/utils/edit/timeValue.js +37 -0
  188. package/dist/esm/utils/focus/cursor.js +124 -0
  189. package/dist/esm/utils/focus/getActiveElement.js +22 -0
  190. package/dist/esm/utils/focus/getTabDestination.js +78 -0
  191. package/dist/esm/utils/focus/isFocusable.js +7 -0
  192. package/dist/esm/utils/focus/selection.js +17 -0
  193. package/dist/esm/utils/focus/selector.js +13 -0
  194. package/dist/esm/utils/index.js +29 -0
  195. package/dist/esm/utils/keyDef/readNextDescriptor.js +89 -0
  196. package/dist/esm/utils/misc/cloneEvent.js +5 -0
  197. package/dist/esm/utils/misc/findClosest.js +12 -0
  198. package/dist/esm/utils/misc/getDocumentFromNode.js +8 -0
  199. package/dist/esm/utils/misc/getTreeDiff.js +23 -0
  200. package/dist/esm/utils/misc/getWindow.js +17 -0
  201. package/dist/esm/utils/misc/isDescendantOrSelf.js +12 -0
  202. package/dist/esm/utils/misc/isDisabled.js +31 -0
  203. package/dist/esm/utils/misc/isElementType.js +18 -0
  204. package/dist/esm/utils/misc/isVisible.js +17 -0
  205. package/dist/esm/utils/misc/level.js +13 -0
  206. package/dist/esm/utils/misc/wait.js +12 -0
  207. package/dist/esm/utils/pointer/cssPointerEvents.js +99 -0
  208. package/dist/types/clipboard/copy.d.ts +2 -0
  209. package/dist/types/clipboard/cut.d.ts +2 -0
  210. package/dist/types/clipboard/index.d.ts +3 -0
  211. package/dist/types/clipboard/paste.d.ts +2 -0
  212. package/dist/types/convenience/click.d.ts +4 -0
  213. package/dist/types/convenience/hover.d.ts +3 -0
  214. package/dist/types/convenience/index.d.ts +3 -0
  215. package/dist/types/convenience/tab.d.ts +4 -0
  216. package/dist/types/document/UI.d.ts +42 -0
  217. package/dist/types/document/copySelection.d.ts +1 -0
  218. package/dist/types/document/getValueOrTextContent.d.ts +1 -0
  219. package/dist/types/document/index.d.ts +5 -0
  220. package/dist/types/document/interceptor.d.ts +19 -0
  221. package/dist/types/document/patchFocus.d.ts +9 -0
  222. package/dist/types/document/prepareDocument.d.ts +8 -0
  223. package/dist/types/document/trackValue.d.ts +17 -0
  224. package/dist/types/event/behavior/click.d.ts +1 -0
  225. package/dist/types/event/behavior/cut.d.ts +1 -0
  226. package/dist/types/event/behavior/index.d.ts +8 -0
  227. package/dist/types/event/behavior/keydown.d.ts +1 -0
  228. package/dist/types/event/behavior/keypress.d.ts +1 -0
  229. package/dist/types/event/behavior/keyup.d.ts +1 -0
  230. package/dist/types/event/behavior/paste.d.ts +1 -0
  231. package/dist/types/event/behavior/registry.d.ts +8 -0
  232. package/dist/types/event/createEvent.d.ts +2 -0
  233. package/dist/types/event/dispatchEvent.d.ts +5 -0
  234. package/dist/types/event/eventMap.d.ts +265 -0
  235. package/dist/types/event/focus.d.ts +5 -0
  236. package/dist/types/event/index.d.ts +7 -0
  237. package/dist/types/event/input.d.ts +2 -0
  238. package/dist/types/event/radio.d.ts +4 -0
  239. package/dist/types/event/selection/getInputRange.d.ts +5 -0
  240. package/dist/types/event/selection/getTargetTypeAndSelection.d.ts +10 -0
  241. package/dist/types/event/selection/index.d.ts +15 -0
  242. package/dist/types/event/selection/modifySelection.d.ts +8 -0
  243. package/dist/types/event/selection/modifySelectionPerMouse.d.ts +7 -0
  244. package/dist/types/event/selection/moveSelection.d.ts +4 -0
  245. package/dist/types/event/selection/resolveCaretPosition.d.ts +8 -0
  246. package/dist/types/event/selection/selectAll.d.ts +5 -0
  247. package/dist/types/event/selection/setSelection.d.ts +10 -0
  248. package/dist/types/event/selection/setSelectionPerMouse.d.ts +8 -0
  249. package/dist/types/event/selection/setSelectionRange.d.ts +6 -0
  250. package/dist/types/event/selection/updateSelectionOnFocus.d.ts +5 -0
  251. package/dist/types/event/types.d.ts +20 -0
  252. package/dist/types/event/wrapEvent.d.ts +1 -0
  253. package/dist/types/index.d.ts +6 -0
  254. package/dist/types/keyboard/index.d.ts +3 -0
  255. package/dist/types/keyboard/keyMap.d.ts +5 -0
  256. package/dist/types/keyboard/parseKeyDef.d.ts +17 -0
  257. package/dist/types/options.d.ts +115 -0
  258. package/dist/types/pointer/index.d.ts +28 -0
  259. package/dist/types/pointer/keyMap.d.ts +2 -0
  260. package/dist/types/pointer/parseKeyDef.d.ts +6 -0
  261. package/dist/types/setup/api.d.ts +23 -0
  262. package/dist/types/setup/directApi.d.ts +24 -0
  263. package/dist/types/setup/index.d.ts +22 -0
  264. package/dist/types/setup/setup.d.ts +44 -0
  265. package/dist/types/setup/wrapAsync.d.ts +4 -0
  266. package/dist/types/system/index.d.ts +10 -0
  267. package/dist/types/system/keyboard.d.ts +50 -0
  268. package/dist/types/system/pointer/buttons.d.ts +23 -0
  269. package/dist/types/system/pointer/device.d.ts +8 -0
  270. package/dist/types/system/pointer/index.d.ts +21 -0
  271. package/dist/types/system/pointer/mouse.d.ts +31 -0
  272. package/dist/types/system/pointer/pointer.d.ts +32 -0
  273. package/dist/types/system/pointer/shared.d.ts +20 -0
  274. package/dist/types/utility/clear.d.ts +2 -0
  275. package/dist/types/utility/index.d.ts +4 -0
  276. package/dist/types/utility/selectOptions.d.ts +3 -0
  277. package/dist/types/utility/type.d.ts +9 -0
  278. package/dist/types/utility/upload.d.ts +5 -0
  279. package/dist/types/utils/click/isClickableInput.d.ts +15 -0
  280. package/dist/types/utils/dataTransfer/Blob.d.ts +3 -0
  281. package/dist/types/utils/dataTransfer/Clipboard.d.ts +11 -0
  282. package/dist/types/utils/dataTransfer/DataTransfer.d.ts +2 -0
  283. package/dist/types/utils/dataTransfer/FileList.d.ts +1 -0
  284. package/dist/types/utils/edit/isContentEditable.d.ts +7 -0
  285. package/dist/types/utils/edit/isEditable.d.ts +24 -0
  286. package/dist/types/utils/edit/maxLength.d.ts +14 -0
  287. package/dist/types/utils/edit/setFiles.d.ts +12 -0
  288. package/dist/types/utils/edit/timeValue.d.ts +4 -0
  289. package/dist/types/utils/focus/cursor.d.ts +9 -0
  290. package/dist/types/utils/focus/getActiveElement.d.ts +2 -0
  291. package/dist/types/utils/focus/getTabDestination.d.ts +1 -0
  292. package/dist/types/utils/focus/isFocusable.d.ts +1 -0
  293. package/dist/types/utils/focus/selection.d.ts +8 -0
  294. package/dist/types/utils/focus/selector.d.ts +1 -0
  295. package/dist/types/utils/index.d.ts +29 -0
  296. package/dist/types/utils/keyDef/readNextDescriptor.d.ts +21 -0
  297. package/dist/types/utils/misc/cloneEvent.d.ts +1 -0
  298. package/dist/types/utils/misc/findClosest.d.ts +1 -0
  299. package/dist/types/utils/misc/getDocumentFromNode.d.ts +1 -0
  300. package/dist/types/utils/misc/getTreeDiff.d.ts +1 -0
  301. package/dist/types/utils/misc/getWindow.d.ts +1 -0
  302. package/dist/types/utils/misc/isDescendantOrSelf.d.ts +1 -0
  303. package/dist/types/utils/misc/isDisabled.d.ts +1 -0
  304. package/dist/types/utils/misc/isElementType.d.ts +5 -0
  305. package/dist/types/utils/misc/isVisible.d.ts +1 -0
  306. package/dist/types/utils/misc/level.d.ts +8 -0
  307. package/dist/types/utils/misc/wait.d.ts +2 -0
  308. package/dist/types/utils/pointer/cssPointerEvents.d.ts +19 -0
  309. package/package.json +131 -0
@@ -0,0 +1,99 @@
1
+ import { PointerEventsCheckLevel } from '../../options.js';
2
+ import { getWindow } from '../misc/getWindow.js';
3
+ import { isElementType } from '../misc/isElementType.js';
4
+ import { ApiLevel, getLevelRef } from '../misc/level.js';
5
+
6
+ function hasPointerEvents(instance, element) {
7
+ var _checkPointerEvents;
8
+ return ((_checkPointerEvents = checkPointerEvents(instance, element)) === null || _checkPointerEvents === void 0 ? void 0 : _checkPointerEvents.pointerEvents) !== 'none';
9
+ }
10
+ function closestPointerEventsDeclaration(element) {
11
+ const window = getWindow(element);
12
+ for(let el = element, tree = []; el === null || el === void 0 ? void 0 : el.ownerDocument; el = el.parentElement){
13
+ tree.push(el);
14
+ const pointerEvents = window.getComputedStyle(el).pointerEvents;
15
+ if (pointerEvents && ![
16
+ 'inherit',
17
+ 'unset'
18
+ ].includes(pointerEvents)) {
19
+ return {
20
+ pointerEvents,
21
+ tree
22
+ };
23
+ }
24
+ }
25
+ return undefined;
26
+ }
27
+ const PointerEventsCheck = Symbol('Last check for pointer-events');
28
+ function checkPointerEvents(instance, element) {
29
+ const lastCheck = element[PointerEventsCheck];
30
+ const needsCheck = instance.config.pointerEventsCheck !== PointerEventsCheckLevel.Never && (!lastCheck || hasBitFlag(instance.config.pointerEventsCheck, PointerEventsCheckLevel.EachApiCall) && lastCheck[ApiLevel.Call] !== getLevelRef(instance, ApiLevel.Call) || hasBitFlag(instance.config.pointerEventsCheck, PointerEventsCheckLevel.EachTrigger) && lastCheck[ApiLevel.Trigger] !== getLevelRef(instance, ApiLevel.Trigger));
31
+ if (!needsCheck) {
32
+ return lastCheck === null || lastCheck === void 0 ? void 0 : lastCheck.result;
33
+ }
34
+ const declaration = closestPointerEventsDeclaration(element);
35
+ element[PointerEventsCheck] = {
36
+ [ApiLevel.Call]: getLevelRef(instance, ApiLevel.Call),
37
+ [ApiLevel.Trigger]: getLevelRef(instance, ApiLevel.Trigger),
38
+ result: declaration
39
+ };
40
+ return declaration;
41
+ }
42
+ function assertPointerEvents(instance, element) {
43
+ const declaration = checkPointerEvents(instance, element);
44
+ if ((declaration === null || declaration === void 0 ? void 0 : declaration.pointerEvents) === 'none') {
45
+ throw new Error([
46
+ `Unable to perform pointer interaction as the element ${declaration.tree.length > 1 ? 'inherits' : 'has'} \`pointer-events: none\`:`,
47
+ '',
48
+ printTree(declaration.tree)
49
+ ].join('\n'));
50
+ }
51
+ }
52
+ function printTree(tree) {
53
+ return tree.reverse().map((el, i)=>[
54
+ ''.padEnd(i),
55
+ el.tagName,
56
+ el.id && `#${el.id}`,
57
+ el.hasAttribute('data-testid') && `(testId=${el.getAttribute('data-testid')})`,
58
+ getLabelDescr(el),
59
+ tree.length > 1 && i === 0 && ' <-- This element declared `pointer-events: none`',
60
+ tree.length > 1 && i === tree.length - 1 && ' <-- Asserted pointer events here'
61
+ ].filter(Boolean).join('')).join('\n');
62
+ }
63
+ function getLabelDescr(element) {
64
+ var _element_labels;
65
+ let label;
66
+ if (element.hasAttribute('aria-label')) {
67
+ label = element.getAttribute('aria-label');
68
+ } else if (element.hasAttribute('aria-labelledby')) {
69
+ var _element_ownerDocument_getElementById_textContent, _element_ownerDocument_getElementById;
70
+ label = (_element_ownerDocument_getElementById = element.ownerDocument.getElementById(element.getAttribute('aria-labelledby'))) === null || _element_ownerDocument_getElementById === void 0 ? void 0 : (_element_ownerDocument_getElementById_textContent = _element_ownerDocument_getElementById.textContent) === null || _element_ownerDocument_getElementById_textContent === void 0 ? void 0 : _element_ownerDocument_getElementById_textContent.trim();
71
+ } else if (isElementType(element, [
72
+ 'button',
73
+ 'input',
74
+ 'meter',
75
+ 'output',
76
+ 'progress',
77
+ 'select',
78
+ 'textarea'
79
+ ]) && ((_element_labels = element.labels) === null || _element_labels === void 0 ? void 0 : _element_labels.length)) {
80
+ label = Array.from(element.labels).map((el)=>{
81
+ var _el_textContent;
82
+ return (_el_textContent = el.textContent) === null || _el_textContent === void 0 ? void 0 : _el_textContent.trim();
83
+ }).join('|');
84
+ } else if (isElementType(element, 'button')) {
85
+ var _element_textContent;
86
+ label = (_element_textContent = element.textContent) === null || _element_textContent === void 0 ? void 0 : _element_textContent.trim();
87
+ }
88
+ label = label === null || label === void 0 ? void 0 : label.replace(/\n/g, ' ');
89
+ if (Number(label === null || label === void 0 ? void 0 : label.length) > 30) {
90
+ label = `${label === null || label === void 0 ? void 0 : label.substring(0, 29)}…`;
91
+ }
92
+ return label ? `(label=${label})` : '';
93
+ }
94
+ // With the eslint rule and prettier the bitwise operation isn't nice to read
95
+ function hasBitFlag(conf, flag) {
96
+ return (conf & flag) > 0;
97
+ }
98
+
99
+ export { assertPointerEvents, hasPointerEvents };
@@ -0,0 +1,2 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function copy(this: Instance): Promise<DataTransfer | undefined>;
@@ -0,0 +1,2 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function cut(this: Instance): Promise<DataTransfer | undefined>;
@@ -0,0 +1,3 @@
1
+ export * from './copy';
2
+ export * from './cut';
3
+ export * from './paste';
@@ -0,0 +1,2 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function paste(this: Instance, clipboardData?: DataTransfer | string): Promise<void>;
@@ -0,0 +1,4 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function click(this: Instance, element: Element): Promise<void>;
3
+ export declare function dblClick(this: Instance, element: Element): Promise<void>;
4
+ export declare function tripleClick(this: Instance, element: Element): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function hover(this: Instance, element: Element): Promise<void>;
3
+ export declare function unhover(this: Instance, element: Element): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export * from './click';
2
+ export * from './hover';
3
+ export * from './tab';
@@ -0,0 +1,4 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function tab(this: Instance, { shift, }?: {
3
+ shift?: boolean;
4
+ }): Promise<void>;
@@ -0,0 +1,42 @@
1
+ declare const UIValue: unique symbol;
2
+ declare const UISelection: unique symbol;
3
+ declare const InitialValue: unique symbol;
4
+ declare global {
5
+ interface Element {
6
+ [UIValue]?: string;
7
+ [InitialValue]?: string;
8
+ [UISelection]?: UISelection;
9
+ }
10
+ }
11
+ interface UISelection {
12
+ anchorOffset: number;
13
+ focusOffset: number;
14
+ }
15
+ export type UIValueString = string & {
16
+ [UIValue]: true;
17
+ };
18
+ export type UISelectionStart = number & {
19
+ [UISelection]: true;
20
+ };
21
+ export declare function isUIValue(value: string | UIValueString): value is UIValueString;
22
+ export declare function isUISelectionStart(start: number | UISelectionStart | null): start is UISelectionStart;
23
+ export declare function setUIValue(element: HTMLInputElement | HTMLTextAreaElement, value: string): void;
24
+ export declare function getUIValue(element: HTMLInputElement | HTMLTextAreaElement): string;
25
+ /** Flag the IDL value as clean. This does not change the value. */
26
+ export declare function setUIValueClean(element: HTMLInputElement | HTMLTextAreaElement): void;
27
+ export declare function clearInitialValue(element: HTMLInputElement | HTMLTextAreaElement): void;
28
+ export declare function getInitialValue(element: HTMLInputElement | HTMLTextAreaElement): string | undefined;
29
+ export declare function setUISelectionRaw(element: HTMLInputElement | HTMLTextAreaElement, selection: UISelection): void;
30
+ export declare function setUISelection(element: HTMLInputElement | HTMLTextAreaElement, { focusOffset: focusOffsetParam, anchorOffset: anchorOffsetParam, }: {
31
+ anchorOffset?: number;
32
+ focusOffset: number;
33
+ }, mode?: 'replace' | 'modify'): void;
34
+ export type UISelectionRange = UISelection & {
35
+ startOffset: number;
36
+ endOffset: number;
37
+ };
38
+ export declare function getUISelection(element: HTMLInputElement | HTMLTextAreaElement): UISelectionRange;
39
+ export declare function hasUISelection(element: HTMLInputElement | HTMLTextAreaElement): boolean;
40
+ /** Flag the IDL selection as clean. This does not change the selection. */
41
+ export declare function setUISelectionClean(element: HTMLInputElement | HTMLTextAreaElement): void;
42
+ export {};
@@ -0,0 +1 @@
1
+ export declare function copySelection(target: Element): DataTransfer;
@@ -0,0 +1 @@
1
+ export declare function getValueOrTextContent<T extends Element | null>(element: T): T extends HTMLInputElement | HTMLTextAreaElement ? string : string | null;
@@ -0,0 +1,5 @@
1
+ export { getUISelection, getUIValue, setUISelection, setUIValue, clearInitialValue, } from './UI';
2
+ export type { UISelectionRange } from './UI';
3
+ export { getValueOrTextContent } from './getValueOrTextContent';
4
+ export { copySelection } from './copySelection';
5
+ export { commitValueAfterInput } from './trackValue';
@@ -0,0 +1,19 @@
1
+ type anyFunc = (...a: any[]) => any;
2
+ type Params<Prop> = Prop extends anyFunc ? Parameters<Prop> : [Prop];
3
+ type ImplReturn<Prop> = Prop extends anyFunc ? Parameters<Prop> : Prop;
4
+ export declare function prepareInterceptor<ElementType extends Element, PropName extends keyof ElementType>(element: ElementType, propName: PropName, interceptorImpl: (this: ElementType, ...args: Params<ElementType[PropName]>) => {
5
+ /**
6
+ * React tracks the changes on element properties.
7
+ * This workaround tries to alter the DOM element without React noticing,
8
+ * so that it later picks up the change.
9
+ *
10
+ * @see https://github.com/facebook/react/blob/148f8e497c7d37a3c7ab99f01dec2692427272b1/packages/react-dom/src/client/inputValueTracking.js#L51-L104
11
+ */
12
+ applyNative?: boolean;
13
+ realArgs?: ImplReturn<ElementType[PropName]>;
14
+ then?: () => void;
15
+ }): void;
16
+ export declare function prepareValueInterceptor(element: HTMLInputElement | HTMLTextAreaElement): void;
17
+ export declare function prepareSelectionInterceptor(element: HTMLInputElement | HTMLTextAreaElement): void;
18
+ export declare function prepareRangeTextInterceptor(element: HTMLInputElement | HTMLTextAreaElement): void;
19
+ export {};
@@ -0,0 +1,9 @@
1
+ declare const patched: unique symbol;
2
+ declare global {
3
+ interface HTMLElement {
4
+ readonly [patched]?: Pick<HTMLElement, 'focus' | 'blur'>;
5
+ }
6
+ }
7
+ export declare function patchFocus(HTMLElement: typeof globalThis['HTMLElement']): void;
8
+ export declare function restoreFocus(HTMLElement: typeof globalThis['HTMLElement']): void;
9
+ export {};
@@ -0,0 +1,8 @@
1
+ declare const isPrepared: unique symbol;
2
+ declare global {
3
+ interface Node {
4
+ [isPrepared]?: typeof isPrepared;
5
+ }
6
+ }
7
+ export declare function prepareDocument(document: Document): void;
8
+ export {};
@@ -0,0 +1,17 @@
1
+ declare const TrackChanges: unique symbol;
2
+ declare global {
3
+ interface Window {
4
+ REACT_VERSION?: number;
5
+ }
6
+ interface Element {
7
+ [TrackChanges]?: {
8
+ previousValue?: string;
9
+ tracked?: string[];
10
+ nextValue?: string;
11
+ };
12
+ }
13
+ }
14
+ export declare function startTrackValue(element: HTMLInputElement | HTMLTextAreaElement): void;
15
+ export declare function trackOrSetValue(element: HTMLInputElement | HTMLTextAreaElement, v: string): void;
16
+ export declare function commitValueAfterInput(element: HTMLInputElement | HTMLTextAreaElement, cursorOffset: number): void;
17
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import './click';
2
+ import './cut';
3
+ import './keydown';
4
+ import './keypress';
5
+ import './keyup';
6
+ import './paste';
7
+ export { behavior } from './registry';
8
+ export type { BehaviorPlugin } from './registry';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { type Instance } from '../../setup';
2
+ import { EventType } from '../types';
3
+ export interface BehaviorPlugin<Type extends EventType> {
4
+ (event: DocumentEventMap[Type], target: Element, instance: Instance): void | (() => void);
5
+ }
6
+ export declare const behavior: {
7
+ [Type in EventType]?: BehaviorPlugin<Type>;
8
+ };
@@ -0,0 +1,2 @@
1
+ import { type EventType, type EventTypeInit, type FixedDocumentEventMap } from './types';
2
+ export declare function createEvent<K extends EventType>(type: K, target: Element, init?: EventTypeInit<K>): FixedDocumentEventMap[K];
@@ -0,0 +1,5 @@
1
+ import { type Instance } from '../setup';
2
+ import { EventType, EventTypeInit } from './types';
3
+ export declare function dispatchUIEvent<K extends EventType>(this: Instance, target: Element, type: K, init?: EventTypeInit<K>, preventDefault?: boolean): boolean;
4
+ export declare function dispatchEvent(this: Instance, target: Element, event: Event, preventDefault?: boolean): boolean;
5
+ export declare function dispatchDOMEvent<K extends EventType>(target: Element, type: K, init?: EventTypeInit<K>): void;
@@ -0,0 +1,265 @@
1
+ import { EventType } from './types';
2
+ export declare const eventMap: {
3
+ readonly auxclick: {
4
+ readonly EventType: "PointerEvent";
5
+ readonly defaultInit: {
6
+ readonly bubbles: true;
7
+ readonly cancelable: true;
8
+ readonly composed: true;
9
+ };
10
+ };
11
+ readonly beforeinput: {
12
+ readonly EventType: "InputEvent";
13
+ readonly defaultInit: {
14
+ readonly bubbles: true;
15
+ readonly cancelable: true;
16
+ readonly composed: true;
17
+ };
18
+ };
19
+ readonly blur: {
20
+ readonly EventType: "FocusEvent";
21
+ readonly defaultInit: {
22
+ readonly bubbles: false;
23
+ readonly cancelable: false;
24
+ readonly composed: true;
25
+ };
26
+ };
27
+ readonly click: {
28
+ readonly EventType: "PointerEvent";
29
+ readonly defaultInit: {
30
+ readonly bubbles: true;
31
+ readonly cancelable: true;
32
+ readonly composed: true;
33
+ };
34
+ };
35
+ readonly contextmenu: {
36
+ readonly EventType: "PointerEvent";
37
+ readonly defaultInit: {
38
+ readonly bubbles: true;
39
+ readonly cancelable: true;
40
+ readonly composed: true;
41
+ };
42
+ };
43
+ readonly copy: {
44
+ readonly EventType: "ClipboardEvent";
45
+ readonly defaultInit: {
46
+ readonly bubbles: true;
47
+ readonly cancelable: true;
48
+ readonly composed: true;
49
+ };
50
+ };
51
+ readonly change: {
52
+ readonly EventType: "Event";
53
+ readonly defaultInit: {
54
+ readonly bubbles: true;
55
+ readonly cancelable: false;
56
+ };
57
+ };
58
+ readonly cut: {
59
+ readonly EventType: "ClipboardEvent";
60
+ readonly defaultInit: {
61
+ readonly bubbles: true;
62
+ readonly cancelable: true;
63
+ readonly composed: true;
64
+ };
65
+ };
66
+ readonly dblclick: {
67
+ readonly EventType: "MouseEvent";
68
+ readonly defaultInit: {
69
+ readonly bubbles: true;
70
+ readonly cancelable: true;
71
+ readonly composed: true;
72
+ };
73
+ };
74
+ readonly focus: {
75
+ readonly EventType: "FocusEvent";
76
+ readonly defaultInit: {
77
+ readonly bubbles: false;
78
+ readonly cancelable: false;
79
+ readonly composed: true;
80
+ };
81
+ };
82
+ readonly focusin: {
83
+ readonly EventType: "FocusEvent";
84
+ readonly defaultInit: {
85
+ readonly bubbles: true;
86
+ readonly cancelable: false;
87
+ readonly composed: true;
88
+ };
89
+ };
90
+ readonly focusout: {
91
+ readonly EventType: "FocusEvent";
92
+ readonly defaultInit: {
93
+ readonly bubbles: true;
94
+ readonly cancelable: false;
95
+ readonly composed: true;
96
+ };
97
+ };
98
+ readonly keydown: {
99
+ readonly EventType: "KeyboardEvent";
100
+ readonly defaultInit: {
101
+ readonly bubbles: true;
102
+ readonly cancelable: true;
103
+ readonly composed: true;
104
+ };
105
+ };
106
+ readonly keypress: {
107
+ readonly EventType: "KeyboardEvent";
108
+ readonly defaultInit: {
109
+ readonly bubbles: true;
110
+ readonly cancelable: true;
111
+ readonly composed: true;
112
+ };
113
+ };
114
+ readonly keyup: {
115
+ readonly EventType: "KeyboardEvent";
116
+ readonly defaultInit: {
117
+ readonly bubbles: true;
118
+ readonly cancelable: true;
119
+ readonly composed: true;
120
+ };
121
+ };
122
+ readonly paste: {
123
+ readonly EventType: "ClipboardEvent";
124
+ readonly defaultInit: {
125
+ readonly bubbles: true;
126
+ readonly cancelable: true;
127
+ readonly composed: true;
128
+ };
129
+ };
130
+ readonly input: {
131
+ readonly EventType: "InputEvent";
132
+ readonly defaultInit: {
133
+ readonly bubbles: true;
134
+ readonly cancelable: false;
135
+ readonly composed: true;
136
+ };
137
+ };
138
+ readonly mousedown: {
139
+ readonly EventType: "MouseEvent";
140
+ readonly defaultInit: {
141
+ readonly bubbles: true;
142
+ readonly cancelable: true;
143
+ readonly composed: true;
144
+ };
145
+ };
146
+ readonly mouseenter: {
147
+ readonly EventType: "MouseEvent";
148
+ readonly defaultInit: {
149
+ readonly bubbles: false;
150
+ readonly cancelable: false;
151
+ readonly composed: true;
152
+ };
153
+ };
154
+ readonly mouseleave: {
155
+ readonly EventType: "MouseEvent";
156
+ readonly defaultInit: {
157
+ readonly bubbles: false;
158
+ readonly cancelable: false;
159
+ readonly composed: true;
160
+ };
161
+ };
162
+ readonly mousemove: {
163
+ readonly EventType: "MouseEvent";
164
+ readonly defaultInit: {
165
+ readonly bubbles: true;
166
+ readonly cancelable: true;
167
+ readonly composed: true;
168
+ };
169
+ };
170
+ readonly mouseout: {
171
+ readonly EventType: "MouseEvent";
172
+ readonly defaultInit: {
173
+ readonly bubbles: true;
174
+ readonly cancelable: true;
175
+ readonly composed: true;
176
+ };
177
+ };
178
+ readonly mouseover: {
179
+ readonly EventType: "MouseEvent";
180
+ readonly defaultInit: {
181
+ readonly bubbles: true;
182
+ readonly cancelable: true;
183
+ readonly composed: true;
184
+ };
185
+ };
186
+ readonly mouseup: {
187
+ readonly EventType: "MouseEvent";
188
+ readonly defaultInit: {
189
+ readonly bubbles: true;
190
+ readonly cancelable: true;
191
+ readonly composed: true;
192
+ };
193
+ };
194
+ readonly pointerover: {
195
+ readonly EventType: "PointerEvent";
196
+ readonly defaultInit: {
197
+ readonly bubbles: true;
198
+ readonly cancelable: true;
199
+ readonly composed: true;
200
+ };
201
+ };
202
+ readonly pointerenter: {
203
+ readonly EventType: "PointerEvent";
204
+ readonly defaultInit: {
205
+ readonly bubbles: false;
206
+ readonly cancelable: false;
207
+ };
208
+ };
209
+ readonly pointerdown: {
210
+ readonly EventType: "PointerEvent";
211
+ readonly defaultInit: {
212
+ readonly bubbles: true;
213
+ readonly cancelable: true;
214
+ readonly composed: true;
215
+ };
216
+ };
217
+ readonly pointermove: {
218
+ readonly EventType: "PointerEvent";
219
+ readonly defaultInit: {
220
+ readonly bubbles: true;
221
+ readonly cancelable: true;
222
+ readonly composed: true;
223
+ };
224
+ };
225
+ readonly pointerup: {
226
+ readonly EventType: "PointerEvent";
227
+ readonly defaultInit: {
228
+ readonly bubbles: true;
229
+ readonly cancelable: true;
230
+ readonly composed: true;
231
+ };
232
+ };
233
+ readonly pointercancel: {
234
+ readonly EventType: "PointerEvent";
235
+ readonly defaultInit: {
236
+ readonly bubbles: true;
237
+ readonly cancelable: false;
238
+ readonly composed: true;
239
+ };
240
+ };
241
+ readonly pointerout: {
242
+ readonly EventType: "PointerEvent";
243
+ readonly defaultInit: {
244
+ readonly bubbles: true;
245
+ readonly cancelable: true;
246
+ readonly composed: true;
247
+ };
248
+ };
249
+ readonly pointerleave: {
250
+ readonly EventType: "PointerEvent";
251
+ readonly defaultInit: {
252
+ readonly bubbles: false;
253
+ readonly cancelable: false;
254
+ };
255
+ };
256
+ readonly submit: {
257
+ readonly EventType: "Event";
258
+ readonly defaultInit: {
259
+ readonly bubbles: true;
260
+ readonly cancelable: true;
261
+ };
262
+ };
263
+ };
264
+ export declare function isMouseEvent(type: EventType): boolean;
265
+ export declare function isKeyboardEvent(type: EventType): boolean;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Focus closest focusable element.
3
+ */
4
+ export declare function focusElement(element: Element): void;
5
+ export declare function blurElement(element: Element): void;
@@ -0,0 +1,7 @@
1
+ import { EventType, PointerCoords } from './types';
2
+ export type { EventType, PointerCoords };
3
+ export { dispatchEvent, dispatchUIEvent, dispatchDOMEvent } from './dispatchEvent';
4
+ export { blurElement, focusElement } from './focus';
5
+ export { input } from './input';
6
+ export type { SelectionRange } from './selection';
7
+ export { isAllSelected, modifySelectionPerMouseMove, setSelectionPerMouseDown, selectAll, } from './selection';
@@ -0,0 +1,2 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function input(instance: Instance, element: Element, data: string, inputType?: string): void;
@@ -0,0 +1,4 @@
1
+ import { type Instance } from '../setup';
2
+ export declare function walkRadio(instance: Instance, el: HTMLInputElement & {
3
+ type: 'radio';
4
+ }, direction: -1 | 1): void;
@@ -0,0 +1,5 @@
1
+ import { UISelectionRange } from '../../document';
2
+ /**
3
+ * Get the range that would be overwritten by input.
4
+ */
5
+ export declare function getInputRange(focusNode: Node): UISelectionRange | Range | undefined;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Determine which selection logic and selection ranges to consider.
3
+ */
4
+ export declare function getTargetTypeAndSelection(node: Node): {
5
+ readonly type: "input";
6
+ readonly selection: import("../../document").UISelectionRange;
7
+ } | {
8
+ readonly type: "contenteditable" | "default";
9
+ readonly selection: Selection | null | undefined;
10
+ };
@@ -0,0 +1,15 @@
1
+ import { type EditableInputOrTextarea } from '../../utils';
2
+ export { getInputRange } from './getInputRange';
3
+ export { modifySelection } from './modifySelection';
4
+ export { moveSelection } from './moveSelection';
5
+ export { setSelectionPerMouseDown } from './setSelectionPerMouse';
6
+ export { modifySelectionPerMouseMove } from './modifySelectionPerMouse';
7
+ export { isAllSelected, selectAll } from './selectAll';
8
+ export { setSelectionRange } from './setSelectionRange';
9
+ export { setSelection } from './setSelection';
10
+ export { updateSelectionOnFocus } from './updateSelectionOnFocus';
11
+ export type SelectionRange = {
12
+ node: EditableInputOrTextarea;
13
+ start: number;
14
+ end: number;
15
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Extend/shrink the selection like with Shift+Arrows or Shift+Mouse
3
+ */
4
+ export declare function modifySelection({ focusNode, focusOffset, }: {
5
+ focusNode: Node;
6
+ /** DOM Offset */
7
+ focusOffset: number;
8
+ }): void;
@@ -0,0 +1,7 @@
1
+ import { type SelectionRange } from '.';
2
+ export declare function modifySelectionPerMouseMove(selectionRange: Range | SelectionRange, { document, target, node, offset, }: {
3
+ document: Document;
4
+ target: Element;
5
+ node?: Node;
6
+ offset?: number;
7
+ }): void;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Move the selection
3
+ */
4
+ export declare function moveSelection(node: Element, direction: -1 | 1): void;