@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,281 @@
1
+ 'use strict';
2
+
3
+ const eventMap = {
4
+ auxclick: {
5
+ EventType: 'PointerEvent',
6
+ defaultInit: {
7
+ bubbles: true,
8
+ cancelable: true,
9
+ composed: true
10
+ }
11
+ },
12
+ beforeinput: {
13
+ EventType: 'InputEvent',
14
+ defaultInit: {
15
+ bubbles: true,
16
+ cancelable: true,
17
+ composed: true
18
+ }
19
+ },
20
+ blur: {
21
+ EventType: 'FocusEvent',
22
+ defaultInit: {
23
+ bubbles: false,
24
+ cancelable: false,
25
+ composed: true
26
+ }
27
+ },
28
+ click: {
29
+ EventType: 'PointerEvent',
30
+ defaultInit: {
31
+ bubbles: true,
32
+ cancelable: true,
33
+ composed: true
34
+ }
35
+ },
36
+ contextmenu: {
37
+ EventType: 'PointerEvent',
38
+ defaultInit: {
39
+ bubbles: true,
40
+ cancelable: true,
41
+ composed: true
42
+ }
43
+ },
44
+ copy: {
45
+ EventType: 'ClipboardEvent',
46
+ defaultInit: {
47
+ bubbles: true,
48
+ cancelable: true,
49
+ composed: true
50
+ }
51
+ },
52
+ change: {
53
+ EventType: 'Event',
54
+ defaultInit: {
55
+ bubbles: true,
56
+ cancelable: false
57
+ }
58
+ },
59
+ cut: {
60
+ EventType: 'ClipboardEvent',
61
+ defaultInit: {
62
+ bubbles: true,
63
+ cancelable: true,
64
+ composed: true
65
+ }
66
+ },
67
+ dblclick: {
68
+ EventType: 'MouseEvent',
69
+ defaultInit: {
70
+ bubbles: true,
71
+ cancelable: true,
72
+ composed: true
73
+ }
74
+ },
75
+ focus: {
76
+ EventType: 'FocusEvent',
77
+ defaultInit: {
78
+ bubbles: false,
79
+ cancelable: false,
80
+ composed: true
81
+ }
82
+ },
83
+ focusin: {
84
+ EventType: 'FocusEvent',
85
+ defaultInit: {
86
+ bubbles: true,
87
+ cancelable: false,
88
+ composed: true
89
+ }
90
+ },
91
+ focusout: {
92
+ EventType: 'FocusEvent',
93
+ defaultInit: {
94
+ bubbles: true,
95
+ cancelable: false,
96
+ composed: true
97
+ }
98
+ },
99
+ keydown: {
100
+ EventType: 'KeyboardEvent',
101
+ defaultInit: {
102
+ bubbles: true,
103
+ cancelable: true,
104
+ composed: true
105
+ }
106
+ },
107
+ keypress: {
108
+ EventType: 'KeyboardEvent',
109
+ defaultInit: {
110
+ bubbles: true,
111
+ cancelable: true,
112
+ composed: true
113
+ }
114
+ },
115
+ keyup: {
116
+ EventType: 'KeyboardEvent',
117
+ defaultInit: {
118
+ bubbles: true,
119
+ cancelable: true,
120
+ composed: true
121
+ }
122
+ },
123
+ paste: {
124
+ EventType: 'ClipboardEvent',
125
+ defaultInit: {
126
+ bubbles: true,
127
+ cancelable: true,
128
+ composed: true
129
+ }
130
+ },
131
+ input: {
132
+ EventType: 'InputEvent',
133
+ defaultInit: {
134
+ bubbles: true,
135
+ cancelable: false,
136
+ composed: true
137
+ }
138
+ },
139
+ mousedown: {
140
+ EventType: 'MouseEvent',
141
+ defaultInit: {
142
+ bubbles: true,
143
+ cancelable: true,
144
+ composed: true
145
+ }
146
+ },
147
+ mouseenter: {
148
+ EventType: 'MouseEvent',
149
+ defaultInit: {
150
+ bubbles: false,
151
+ cancelable: false,
152
+ composed: true
153
+ }
154
+ },
155
+ mouseleave: {
156
+ EventType: 'MouseEvent',
157
+ defaultInit: {
158
+ bubbles: false,
159
+ cancelable: false,
160
+ composed: true
161
+ }
162
+ },
163
+ mousemove: {
164
+ EventType: 'MouseEvent',
165
+ defaultInit: {
166
+ bubbles: true,
167
+ cancelable: true,
168
+ composed: true
169
+ }
170
+ },
171
+ mouseout: {
172
+ EventType: 'MouseEvent',
173
+ defaultInit: {
174
+ bubbles: true,
175
+ cancelable: true,
176
+ composed: true
177
+ }
178
+ },
179
+ mouseover: {
180
+ EventType: 'MouseEvent',
181
+ defaultInit: {
182
+ bubbles: true,
183
+ cancelable: true,
184
+ composed: true
185
+ }
186
+ },
187
+ mouseup: {
188
+ EventType: 'MouseEvent',
189
+ defaultInit: {
190
+ bubbles: true,
191
+ cancelable: true,
192
+ composed: true
193
+ }
194
+ },
195
+ pointerover: {
196
+ EventType: 'PointerEvent',
197
+ defaultInit: {
198
+ bubbles: true,
199
+ cancelable: true,
200
+ composed: true
201
+ }
202
+ },
203
+ pointerenter: {
204
+ EventType: 'PointerEvent',
205
+ defaultInit: {
206
+ bubbles: false,
207
+ cancelable: false
208
+ }
209
+ },
210
+ pointerdown: {
211
+ EventType: 'PointerEvent',
212
+ defaultInit: {
213
+ bubbles: true,
214
+ cancelable: true,
215
+ composed: true
216
+ }
217
+ },
218
+ pointermove: {
219
+ EventType: 'PointerEvent',
220
+ defaultInit: {
221
+ bubbles: true,
222
+ cancelable: true,
223
+ composed: true
224
+ }
225
+ },
226
+ pointerup: {
227
+ EventType: 'PointerEvent',
228
+ defaultInit: {
229
+ bubbles: true,
230
+ cancelable: true,
231
+ composed: true
232
+ }
233
+ },
234
+ pointercancel: {
235
+ EventType: 'PointerEvent',
236
+ defaultInit: {
237
+ bubbles: true,
238
+ cancelable: false,
239
+ composed: true
240
+ }
241
+ },
242
+ pointerout: {
243
+ EventType: 'PointerEvent',
244
+ defaultInit: {
245
+ bubbles: true,
246
+ cancelable: true,
247
+ composed: true
248
+ }
249
+ },
250
+ pointerleave: {
251
+ EventType: 'PointerEvent',
252
+ defaultInit: {
253
+ bubbles: false,
254
+ cancelable: false
255
+ }
256
+ },
257
+ submit: {
258
+ EventType: 'Event',
259
+ defaultInit: {
260
+ bubbles: true,
261
+ cancelable: true
262
+ }
263
+ }
264
+ };
265
+ function getEventClass(type) {
266
+ return eventMap[type].EventType;
267
+ }
268
+ const mouseEvents = [
269
+ 'MouseEvent',
270
+ 'PointerEvent'
271
+ ];
272
+ function isMouseEvent(type) {
273
+ return mouseEvents.includes(getEventClass(type));
274
+ }
275
+ function isKeyboardEvent(type) {
276
+ return getEventClass(type) === 'KeyboardEvent';
277
+ }
278
+
279
+ exports.eventMap = eventMap;
280
+ exports.isKeyboardEvent = isKeyboardEvent;
281
+ exports.isMouseEvent = isMouseEvent;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ require('../utils/dataTransfer/Clipboard.js');
4
+ var getActiveElement = require('../utils/focus/getActiveElement.js');
5
+ var isFocusable = require('../utils/focus/isFocusable.js');
6
+ var findClosest = require('../utils/misc/findClosest.js');
7
+ var updateSelectionOnFocus = require('./selection/updateSelectionOnFocus.js');
8
+ var wrapEvent = require('./wrapEvent.js');
9
+
10
+ // Browsers do not dispatch FocusEvent if the document does not have focus.
11
+ // TODO: simulate FocusEvent in browsers
12
+ /**
13
+ * Focus closest focusable element.
14
+ */ function focusElement(element) {
15
+ const target = findClosest.findClosest(element, isFocusable.isFocusable);
16
+ const activeElement = getActiveElement.getActiveElement(element.ownerDocument);
17
+ if ((target !== null && target !== void 0 ? target : element.ownerDocument.body) === activeElement) {
18
+ return;
19
+ } else if (target) {
20
+ wrapEvent.wrapEvent(()=>target.focus());
21
+ } else {
22
+ wrapEvent.wrapEvent(()=>activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur());
23
+ }
24
+ updateSelectionOnFocus.updateSelectionOnFocus(target !== null && target !== void 0 ? target : element.ownerDocument.body);
25
+ }
26
+ function blurElement(element) {
27
+ if (!isFocusable.isFocusable(element)) return;
28
+ const wasActive = getActiveElement.getActiveElement(element.ownerDocument) === element;
29
+ if (!wasActive) return;
30
+ wrapEvent.wrapEvent(()=>element.blur());
31
+ }
32
+
33
+ exports.blurElement = blurElement;
34
+ exports.focusElement = focusElement;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var dispatchEvent = require('./dispatchEvent.js');
4
+ var focus = require('./focus.js');
5
+ var input = require('./input.js');
6
+ require('../utils/dataTransfer/Clipboard.js');
7
+ var setSelectionPerMouse = require('./selection/setSelectionPerMouse.js');
8
+ var modifySelectionPerMouse = require('./selection/modifySelectionPerMouse.js');
9
+ var selectAll = require('./selection/selectAll.js');
10
+
11
+
12
+
13
+ exports.dispatchDOMEvent = dispatchEvent.dispatchDOMEvent;
14
+ exports.dispatchEvent = dispatchEvent.dispatchEvent;
15
+ exports.dispatchUIEvent = dispatchEvent.dispatchUIEvent;
16
+ exports.blurElement = focus.blurElement;
17
+ exports.focusElement = focus.focusElement;
18
+ exports.input = input.input;
19
+ exports.setSelectionPerMouseDown = setSelectionPerMouse.setSelectionPerMouseDown;
20
+ exports.modifySelectionPerMouseMove = modifySelectionPerMouse.modifySelectionPerMouseMove;
21
+ exports.isAllSelected = selectAll.isAllSelected;
22
+ exports.selectAll = selectAll.selectAll;
@@ -0,0 +1,158 @@
1
+ 'use strict';
2
+
3
+ var UI = require('../document/UI.js');
4
+ var isElementType = require('../utils/misc/isElementType.js');
5
+ require('../utils/dataTransfer/Clipboard.js');
6
+ var timeValue = require('../utils/edit/timeValue.js');
7
+ var maxLength = require('../utils/edit/maxLength.js');
8
+ var cursor = require('../utils/focus/cursor.js');
9
+ var trackValue = require('../document/trackValue.js');
10
+ var getInputRange = require('./selection/getInputRange.js');
11
+ var setSelection = require('./selection/setSelection.js');
12
+
13
+ function isDateOrTime(element) {
14
+ return isElementType.isElementType(element, 'input') && [
15
+ 'date',
16
+ 'time'
17
+ ].includes(element.type);
18
+ }
19
+ function input(instance, element, data, inputType = 'insertText') {
20
+ const inputRange = getInputRange.getInputRange(element);
21
+ /* istanbul ignore if */ if (!inputRange) {
22
+ return;
23
+ }
24
+ // There is no `beforeinput` event on `date` and `time` input
25
+ if (!isDateOrTime(element)) {
26
+ const unprevented = instance.dispatchUIEvent(element, 'beforeinput', {
27
+ inputType,
28
+ data
29
+ });
30
+ if (!unprevented) {
31
+ return;
32
+ }
33
+ }
34
+ if ('startContainer' in inputRange) {
35
+ editContenteditable(instance, element, inputRange, data, inputType);
36
+ } else {
37
+ editInputElement(instance, element, inputRange, data, inputType);
38
+ }
39
+ }
40
+ function editContenteditable(instance, element, inputRange, data, inputType) {
41
+ let del = false;
42
+ if (!inputRange.collapsed) {
43
+ del = true;
44
+ inputRange.deleteContents();
45
+ } else if ([
46
+ 'deleteContentBackward',
47
+ 'deleteContentForward'
48
+ ].includes(inputType)) {
49
+ const nextPosition = cursor.getNextCursorPosition(inputRange.startContainer, inputRange.startOffset, inputType === 'deleteContentBackward' ? -1 : 1, inputType);
50
+ if (nextPosition) {
51
+ del = true;
52
+ const delRange = inputRange.cloneRange();
53
+ if (delRange.comparePoint(nextPosition.node, nextPosition.offset) < 0) {
54
+ delRange.setStart(nextPosition.node, nextPosition.offset);
55
+ } else {
56
+ delRange.setEnd(nextPosition.node, nextPosition.offset);
57
+ }
58
+ delRange.deleteContents();
59
+ }
60
+ }
61
+ if (data) {
62
+ if (inputRange.endContainer.nodeType === 3) {
63
+ const offset = inputRange.endOffset;
64
+ inputRange.endContainer.insertData(offset, data);
65
+ inputRange.setStart(inputRange.endContainer, offset + data.length);
66
+ inputRange.setEnd(inputRange.endContainer, offset + data.length);
67
+ } else {
68
+ const text = element.ownerDocument.createTextNode(data);
69
+ inputRange.insertNode(text);
70
+ inputRange.setStart(text, data.length);
71
+ inputRange.setEnd(text, data.length);
72
+ }
73
+ }
74
+ if (del || data) {
75
+ instance.dispatchUIEvent(element, 'input', {
76
+ inputType
77
+ });
78
+ }
79
+ }
80
+ function editInputElement(instance, element, inputRange, data, inputType) {
81
+ let dataToInsert = data;
82
+ if (maxLength.supportsMaxLength(element)) {
83
+ const maxLength$1 = maxLength.getMaxLength(element);
84
+ if (maxLength$1 !== undefined && data.length > 0) {
85
+ const selectionLength = inputRange.endOffset - inputRange.startOffset;
86
+ const spaceUntilMaxLength = maxLength$1 - element.value.length + selectionLength;
87
+ if (spaceUntilMaxLength > 0) {
88
+ dataToInsert = data.substring(0, spaceUntilMaxLength);
89
+ } else {
90
+ return;
91
+ }
92
+ }
93
+ }
94
+ const { newValue, newOffset, oldValue } = calculateNewValue(dataToInsert, element, inputRange, inputType);
95
+ if (newValue === oldValue && newOffset === inputRange.startOffset && newOffset === inputRange.endOffset) {
96
+ return;
97
+ }
98
+ if (isElementType.isElementType(element, 'input', {
99
+ type: 'number'
100
+ }) && !isValidNumberInput(newValue)) {
101
+ return;
102
+ }
103
+ UI.setUIValue(element, newValue);
104
+ setSelection.setSelection({
105
+ focusNode: element,
106
+ anchorOffset: newOffset,
107
+ focusOffset: newOffset
108
+ });
109
+ if (isDateOrTime(element)) {
110
+ if (timeValue.isValidDateOrTimeValue(element, newValue)) {
111
+ commitInput(instance, element, newOffset, {});
112
+ instance.dispatchUIEvent(element, 'change');
113
+ UI.clearInitialValue(element);
114
+ }
115
+ } else {
116
+ commitInput(instance, element, newOffset, {
117
+ data,
118
+ inputType
119
+ });
120
+ }
121
+ }
122
+ function calculateNewValue(inputData, node, { startOffset, endOffset }, inputType) {
123
+ const value = UI.getUIValue(node);
124
+ const prologEnd = Math.max(0, startOffset === endOffset && inputType === 'deleteContentBackward' ? startOffset - 1 : startOffset);
125
+ const prolog = value.substring(0, prologEnd);
126
+ const epilogStart = Math.min(value.length, startOffset === endOffset && inputType === 'deleteContentForward' ? startOffset + 1 : endOffset);
127
+ const epilog = value.substring(epilogStart, value.length);
128
+ let newValue = `${prolog}${inputData}${epilog}`;
129
+ let newOffset = prologEnd + inputData.length;
130
+ if (isElementType.isElementType(node, 'input', {
131
+ type: 'time'
132
+ })) {
133
+ const builtValue = timeValue.buildTimeValue(newValue);
134
+ if (builtValue !== '' && timeValue.isValidDateOrTimeValue(node, builtValue)) {
135
+ newValue = builtValue;
136
+ newOffset = builtValue.length;
137
+ }
138
+ }
139
+ return {
140
+ oldValue: value,
141
+ newValue,
142
+ newOffset
143
+ };
144
+ }
145
+ function commitInput(instance, element, newOffset, inputInit) {
146
+ instance.dispatchUIEvent(element, 'input', inputInit);
147
+ trackValue.commitValueAfterInput(element, newOffset);
148
+ }
149
+ function isValidNumberInput(value) {
150
+ var _value_match, _value_match1;
151
+ // the browser allows some invalid input but not others
152
+ // it allows up to two '-' at any place before any 'e' or one directly following 'e'
153
+ // it allows one '.' at any place before e
154
+ const valueParts = value.split('e', 2);
155
+ return !(/[^\d.\-e]/.test(value) || Number((_value_match = value.match(/-/g)) === null || _value_match === void 0 ? void 0 : _value_match.length) > 2 || Number((_value_match1 = value.match(/\./g)) === null || _value_match1 === void 0 ? void 0 : _value_match1.length) > 1 || valueParts[1] && !/^-?\d*$/.test(valueParts[1]));
156
+ }
157
+
158
+ exports.input = input;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ require('../utils/dataTransfer/Clipboard.js');
4
+ var isDisabled = require('../utils/misc/isDisabled.js');
5
+ var getWindow = require('../utils/misc/getWindow.js');
6
+ var focus = require('./focus.js');
7
+
8
+ function walkRadio(instance, el, direction) {
9
+ const window = getWindow.getWindow(el);
10
+ const group = Array.from(el.ownerDocument.querySelectorAll(el.name ? `input[type="radio"][name="${window.CSS.escape(el.name)}"]` : `input[type="radio"][name=""], input[type="radio"]:not([name])`));
11
+ for(let i = group.findIndex((e)=>e === el) + direction;; i += direction){
12
+ if (!group[i]) {
13
+ i = direction > 0 ? 0 : group.length - 1;
14
+ }
15
+ if (group[i] === el) {
16
+ return;
17
+ }
18
+ if (isDisabled.isDisabled(group[i])) {
19
+ continue;
20
+ }
21
+ focus.focusElement(group[i]);
22
+ instance.dispatchUIEvent(group[i], 'click');
23
+ return;
24
+ }
25
+ }
26
+
27
+ exports.walkRadio = walkRadio;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var getTargetTypeAndSelection = require('./getTargetTypeAndSelection.js');
4
+
5
+ /**
6
+ * Get the range that would be overwritten by input.
7
+ */ function getInputRange(focusNode) {
8
+ const typeAndSelection = getTargetTypeAndSelection.getTargetTypeAndSelection(focusNode);
9
+ if (typeAndSelection.type === 'input') {
10
+ return typeAndSelection.selection;
11
+ } else if (typeAndSelection.type === 'contenteditable') {
12
+ var _typeAndSelection_selection;
13
+ // Multi-range on contenteditable edits the first selection instead of the last
14
+ return (_typeAndSelection_selection = typeAndSelection.selection) === null || _typeAndSelection_selection === void 0 ? void 0 : _typeAndSelection_selection.getRangeAt(0);
15
+ }
16
+ }
17
+
18
+ exports.getInputRange = getInputRange;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var UI = require('../../document/UI.js');
4
+ require('../../utils/dataTransfer/Clipboard.js');
5
+ var isContentEditable = require('../../utils/edit/isContentEditable.js');
6
+ var selection = require('../../utils/focus/selection.js');
7
+
8
+ /**
9
+ * Determine which selection logic and selection ranges to consider.
10
+ */ function getTargetTypeAndSelection(node) {
11
+ const element = getElement(node);
12
+ if (element && selection.hasOwnSelection(element)) {
13
+ return {
14
+ type: 'input',
15
+ selection: UI.getUISelection(element)
16
+ };
17
+ }
18
+ const selection$1 = element === null || element === void 0 ? void 0 : element.ownerDocument.getSelection();
19
+ // It is possible to extend a single-range selection into a contenteditable.
20
+ // This results in the range acting like a range outside of contenteditable.
21
+ const isCE = isContentEditable.getContentEditable(node) && (selection$1 === null || selection$1 === void 0 ? void 0 : selection$1.anchorNode) && isContentEditable.getContentEditable(selection$1.anchorNode);
22
+ return {
23
+ type: isCE ? 'contenteditable' : 'default',
24
+ selection: selection$1
25
+ };
26
+ }
27
+ function getElement(node) {
28
+ return node.nodeType === 1 ? node : node.parentElement;
29
+ }
30
+
31
+ exports.getTargetTypeAndSelection = getTargetTypeAndSelection;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var getInputRange = require('./getInputRange.js');
4
+ var modifySelection = require('./modifySelection.js');
5
+ var moveSelection = require('./moveSelection.js');
6
+ var setSelectionPerMouse = require('./setSelectionPerMouse.js');
7
+ var modifySelectionPerMouse = require('./modifySelectionPerMouse.js');
8
+ var selectAll = require('./selectAll.js');
9
+ var setSelectionRange = require('./setSelectionRange.js');
10
+ var setSelection = require('./setSelection.js');
11
+ var updateSelectionOnFocus = require('./updateSelectionOnFocus.js');
12
+
13
+
14
+
15
+ exports.getInputRange = getInputRange.getInputRange;
16
+ exports.modifySelection = modifySelection.modifySelection;
17
+ exports.moveSelection = moveSelection.moveSelection;
18
+ exports.setSelectionPerMouseDown = setSelectionPerMouse.setSelectionPerMouseDown;
19
+ exports.modifySelectionPerMouseMove = modifySelectionPerMouse.modifySelectionPerMouseMove;
20
+ exports.isAllSelected = selectAll.isAllSelected;
21
+ exports.selectAll = selectAll.selectAll;
22
+ exports.setSelectionRange = setSelectionRange.setSelectionRange;
23
+ exports.setSelection = setSelection.setSelection;
24
+ exports.updateSelectionOnFocus = updateSelectionOnFocus.updateSelectionOnFocus;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var UI = require('../../document/UI.js');
4
+ require('../../utils/dataTransfer/Clipboard.js');
5
+ var getTargetTypeAndSelection = require('./getTargetTypeAndSelection.js');
6
+
7
+ /**
8
+ * Extend/shrink the selection like with Shift+Arrows or Shift+Mouse
9
+ */ function modifySelection({ focusNode, focusOffset }) {
10
+ var _focusNode_ownerDocument_getSelection, _focusNode_ownerDocument;
11
+ const typeAndSelection = getTargetTypeAndSelection.getTargetTypeAndSelection(focusNode);
12
+ if (typeAndSelection.type === 'input') {
13
+ return UI.setUISelection(focusNode, {
14
+ anchorOffset: typeAndSelection.selection.anchorOffset,
15
+ focusOffset
16
+ }, 'modify');
17
+ }
18
+ (_focusNode_ownerDocument = focusNode.ownerDocument) === null || _focusNode_ownerDocument === void 0 ? void 0 : (_focusNode_ownerDocument_getSelection = _focusNode_ownerDocument.getSelection()) === null || _focusNode_ownerDocument_getSelection === void 0 ? void 0 : _focusNode_ownerDocument_getSelection.extend(focusNode, focusOffset);
19
+ }
20
+
21
+ exports.modifySelection = modifySelection;
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var UI = require('../../document/UI.js');
4
+ require('../../utils/dataTransfer/Clipboard.js');
5
+ var resolveCaretPosition = require('./resolveCaretPosition.js');
6
+
7
+ function modifySelectionPerMouseMove(selectionRange, { document, target, node, offset }) {
8
+ const selectionFocus = resolveCaretPosition.resolveCaretPosition({
9
+ target,
10
+ node,
11
+ offset
12
+ });
13
+ if ('node' in selectionRange) {
14
+ // When the mouse is dragged outside of an input/textarea,
15
+ // the selection is extended to the beginning or end of the input
16
+ // depending on pointer position.
17
+ // TODO: extend selection according to pointer position
18
+ /* istanbul ignore else */ if (selectionFocus.node === selectionRange.node) {
19
+ const anchorOffset = selectionFocus.offset < selectionRange.start ? selectionRange.end : selectionRange.start;
20
+ const focusOffset = selectionFocus.offset > selectionRange.end || selectionFocus.offset < selectionRange.start ? selectionFocus.offset : selectionRange.end;
21
+ UI.setUISelection(selectionRange.node, {
22
+ anchorOffset,
23
+ focusOffset
24
+ });
25
+ }
26
+ } else {
27
+ const range = selectionRange.cloneRange();
28
+ const cmp = range.comparePoint(selectionFocus.node, selectionFocus.offset);
29
+ if (cmp < 0) {
30
+ range.setStart(selectionFocus.node, selectionFocus.offset);
31
+ } else if (cmp > 0) {
32
+ range.setEnd(selectionFocus.node, selectionFocus.offset);
33
+ }
34
+ const selection = document.getSelection();
35
+ selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
36
+ selection === null || selection === void 0 ? void 0 : selection.addRange(range.cloneRange());
37
+ }
38
+ }
39
+
40
+ exports.modifySelectionPerMouseMove = modifySelectionPerMouseMove;