@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.
- package/LICENSE +20 -0
- package/README.md +25 -0
- package/changes.json +5 -0
- package/dist/cjs/clipboard/copy.js +22 -0
- package/dist/cjs/clipboard/cut.js +22 -0
- package/dist/cjs/clipboard/index.js +11 -0
- package/dist/cjs/clipboard/paste.js +24 -0
- package/dist/cjs/convenience/click.js +35 -0
- package/dist/cjs/convenience/hover.js +19 -0
- package/dist/cjs/convenience/index.js +14 -0
- package/dist/cjs/convenience/tab.js +7 -0
- package/dist/cjs/document/UI.js +90 -0
- package/dist/cjs/document/copySelection.js +29 -0
- package/dist/cjs/document/getValueOrTextContent.js +18 -0
- package/dist/cjs/document/index.js +17 -0
- package/dist/cjs/document/interceptor.js +104 -0
- package/dist/cjs/document/patchFocus.js +106 -0
- package/dist/cjs/document/prepareDocument.js +58 -0
- package/dist/cjs/document/trackValue.js +57 -0
- package/dist/cjs/event/behavior/click.js +32 -0
- package/dist/cjs/event/behavior/cut.js +14 -0
- package/dist/cjs/event/behavior/index.js +13 -0
- package/dist/cjs/event/behavior/keydown.js +128 -0
- package/dist/cjs/event/behavior/keypress.js +51 -0
- package/dist/cjs/event/behavior/keyup.js +17 -0
- package/dist/cjs/event/behavior/paste.js +18 -0
- package/dist/cjs/event/behavior/registry.js +5 -0
- package/dist/cjs/event/createEvent.js +193 -0
- package/dist/cjs/event/dispatchEvent.js +54 -0
- package/dist/cjs/event/eventMap.js +281 -0
- package/dist/cjs/event/focus.js +34 -0
- package/dist/cjs/event/index.js +22 -0
- package/dist/cjs/event/input.js +158 -0
- package/dist/cjs/event/radio.js +27 -0
- package/dist/cjs/event/selection/getInputRange.js +18 -0
- package/dist/cjs/event/selection/getTargetTypeAndSelection.js +31 -0
- package/dist/cjs/event/selection/index.js +24 -0
- package/dist/cjs/event/selection/modifySelection.js +21 -0
- package/dist/cjs/event/selection/modifySelectionPerMouse.js +40 -0
- package/dist/cjs/event/selection/moveSelection.js +38 -0
- package/dist/cjs/event/selection/resolveCaretPosition.js +60 -0
- package/dist/cjs/event/selection/selectAll.js +38 -0
- package/dist/cjs/event/selection/setSelection.js +21 -0
- package/dist/cjs/event/selection/setSelectionPerMouse.js +79 -0
- package/dist/cjs/event/selection/setSelectionRange.js +31 -0
- package/dist/cjs/event/selection/updateSelectionOnFocus.js +40 -0
- package/dist/cjs/event/types.js +2 -0
- package/dist/cjs/event/wrapEvent.js +10 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/keyboard/index.js +40 -0
- package/dist/cjs/keyboard/keyMap.js +178 -0
- package/dist/cjs/keyboard/parseKeyDef.js +45 -0
- package/dist/cjs/options.js +14 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/pointer/index.js +74 -0
- package/dist/cjs/pointer/keyMap.js +33 -0
- package/dist/cjs/pointer/parseKeyDef.js +23 -0
- package/dist/cjs/setup/api.js +35 -0
- package/dist/cjs/setup/directApi.js +75 -0
- package/dist/cjs/setup/index.js +11 -0
- package/dist/cjs/setup/setup.js +125 -0
- package/dist/cjs/setup/wrapAsync.js +11 -0
- package/dist/cjs/system/index.js +42 -0
- package/dist/cjs/system/keyboard.js +165 -0
- package/dist/cjs/system/pointer/buttons.js +80 -0
- package/dist/cjs/system/pointer/device.js +32 -0
- package/dist/cjs/system/pointer/index.js +156 -0
- package/dist/cjs/system/pointer/mouse.js +204 -0
- package/dist/cjs/system/pointer/pointer.js +129 -0
- package/dist/cjs/system/pointer/shared.js +8 -0
- package/dist/cjs/utility/clear.js +32 -0
- package/dist/cjs/utility/index.js +14 -0
- package/dist/cjs/utility/selectOptions.js +114 -0
- package/dist/cjs/utility/type.js +23 -0
- package/dist/cjs/utility/upload.js +62 -0
- package/dist/cjs/utils/click/isClickableInput.js +20 -0
- package/dist/cjs/utils/dataTransfer/Blob.js +16 -0
- package/dist/cjs/utils/dataTransfer/Clipboard.js +174 -0
- package/dist/cjs/utils/dataTransfer/DataTransfer.js +134 -0
- package/dist/cjs/utils/dataTransfer/FileList.js +24 -0
- package/dist/cjs/utils/edit/isContentEditable.js +18 -0
- package/dist/cjs/utils/edit/isEditable.js +29 -0
- package/dist/cjs/utils/edit/maxLength.js +26 -0
- package/dist/cjs/utils/edit/setFiles.js +58 -0
- package/dist/cjs/utils/edit/timeValue.js +40 -0
- package/dist/cjs/utils/focus/cursor.js +126 -0
- package/dist/cjs/utils/focus/getActiveElement.js +25 -0
- package/dist/cjs/utils/focus/getTabDestination.js +80 -0
- package/dist/cjs/utils/focus/isFocusable.js +9 -0
- package/dist/cjs/utils/focus/selection.js +20 -0
- package/dist/cjs/utils/focus/selector.js +15 -0
- package/dist/cjs/utils/index.js +78 -0
- package/dist/cjs/utils/keyDef/readNextDescriptor.js +91 -0
- package/dist/cjs/utils/misc/cloneEvent.js +7 -0
- package/dist/cjs/utils/misc/findClosest.js +14 -0
- package/dist/cjs/utils/misc/getDocumentFromNode.js +10 -0
- package/dist/cjs/utils/misc/getTreeDiff.js +25 -0
- package/dist/cjs/utils/misc/getWindow.js +19 -0
- package/dist/cjs/utils/misc/isDescendantOrSelf.js +14 -0
- package/dist/cjs/utils/misc/isDisabled.js +33 -0
- package/dist/cjs/utils/misc/isElementType.js +20 -0
- package/dist/cjs/utils/misc/isVisible.js +19 -0
- package/dist/cjs/utils/misc/level.js +17 -0
- package/dist/cjs/utils/misc/wait.js +14 -0
- package/dist/cjs/utils/pointer/cssPointerEvents.js +102 -0
- package/dist/esm/clipboard/copy.js +20 -0
- package/dist/esm/clipboard/cut.js +20 -0
- package/dist/esm/clipboard/index.js +3 -0
- package/dist/esm/clipboard/paste.js +22 -0
- package/dist/esm/convenience/click.js +31 -0
- package/dist/esm/convenience/hover.js +16 -0
- package/dist/esm/convenience/index.js +3 -0
- package/dist/esm/convenience/tab.js +5 -0
- package/dist/esm/document/UI.js +77 -0
- package/dist/esm/document/copySelection.js +27 -0
- package/dist/esm/document/getValueOrTextContent.js +16 -0
- package/dist/esm/document/index.js +4 -0
- package/dist/esm/document/interceptor.js +99 -0
- package/dist/esm/document/patchFocus.js +103 -0
- package/dist/esm/document/prepareDocument.js +56 -0
- package/dist/esm/document/trackValue.js +53 -0
- package/dist/esm/event/behavior/click.js +30 -0
- package/dist/esm/event/behavior/cut.js +12 -0
- package/dist/esm/event/behavior/index.js +7 -0
- package/dist/esm/event/behavior/keydown.js +126 -0
- package/dist/esm/event/behavior/keypress.js +49 -0
- package/dist/esm/event/behavior/keyup.js +15 -0
- package/dist/esm/event/behavior/paste.js +16 -0
- package/dist/esm/event/behavior/registry.js +3 -0
- package/dist/esm/event/createEvent.js +191 -0
- package/dist/esm/event/dispatchEvent.js +50 -0
- package/dist/esm/event/eventMap.js +277 -0
- package/dist/esm/event/focus.js +31 -0
- package/dist/esm/event/index.js +7 -0
- package/dist/esm/event/input.js +156 -0
- package/dist/esm/event/radio.js +25 -0
- package/dist/esm/event/selection/getInputRange.js +16 -0
- package/dist/esm/event/selection/getTargetTypeAndSelection.js +29 -0
- package/dist/esm/event/selection/index.js +9 -0
- package/dist/esm/event/selection/modifySelection.js +19 -0
- package/dist/esm/event/selection/modifySelectionPerMouse.js +38 -0
- package/dist/esm/event/selection/moveSelection.js +36 -0
- package/dist/esm/event/selection/resolveCaretPosition.js +58 -0
- package/dist/esm/event/selection/selectAll.js +35 -0
- package/dist/esm/event/selection/setSelection.js +19 -0
- package/dist/esm/event/selection/setSelectionPerMouse.js +77 -0
- package/dist/esm/event/selection/setSelectionRange.js +29 -0
- package/dist/esm/event/selection/updateSelectionOnFocus.js +38 -0
- package/dist/esm/event/types.js +1 -0
- package/dist/esm/event/wrapEvent.js +8 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/keyboard/index.js +37 -0
- package/dist/esm/keyboard/keyMap.js +176 -0
- package/dist/esm/keyboard/parseKeyDef.js +43 -0
- package/dist/esm/options.js +12 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/pointer/index.js +72 -0
- package/dist/esm/pointer/keyMap.js +31 -0
- package/dist/esm/pointer/parseKeyDef.js +21 -0
- package/dist/esm/setup/api.js +33 -0
- package/dist/esm/setup/directApi.js +58 -0
- package/dist/esm/setup/index.js +9 -0
- package/dist/esm/setup/setup.js +119 -0
- package/dist/esm/setup/wrapAsync.js +9 -0
- package/dist/esm/system/index.js +40 -0
- package/dist/esm/system/keyboard.js +162 -0
- package/dist/esm/system/pointer/buttons.js +74 -0
- package/dist/esm/system/pointer/device.js +30 -0
- package/dist/esm/system/pointer/index.js +154 -0
- package/dist/esm/system/pointer/mouse.js +202 -0
- package/dist/esm/system/pointer/pointer.js +127 -0
- package/dist/esm/system/pointer/shared.js +6 -0
- package/dist/esm/utility/clear.js +30 -0
- package/dist/esm/utility/index.js +4 -0
- package/dist/esm/utility/selectOptions.js +111 -0
- package/dist/esm/utility/type.js +21 -0
- package/dist/esm/utility/upload.js +60 -0
- package/dist/esm/utils/click/isClickableInput.js +18 -0
- package/dist/esm/utils/dataTransfer/Blob.js +14 -0
- package/dist/esm/utils/dataTransfer/Clipboard.js +167 -0
- package/dist/esm/utils/dataTransfer/DataTransfer.js +131 -0
- package/dist/esm/utils/dataTransfer/FileList.js +22 -0
- package/dist/esm/utils/edit/isContentEditable.js +15 -0
- package/dist/esm/utils/edit/isEditable.js +26 -0
- package/dist/esm/utils/edit/maxLength.js +23 -0
- package/dist/esm/utils/edit/setFiles.js +56 -0
- package/dist/esm/utils/edit/timeValue.js +37 -0
- package/dist/esm/utils/focus/cursor.js +124 -0
- package/dist/esm/utils/focus/getActiveElement.js +22 -0
- package/dist/esm/utils/focus/getTabDestination.js +78 -0
- package/dist/esm/utils/focus/isFocusable.js +7 -0
- package/dist/esm/utils/focus/selection.js +17 -0
- package/dist/esm/utils/focus/selector.js +13 -0
- package/dist/esm/utils/index.js +29 -0
- package/dist/esm/utils/keyDef/readNextDescriptor.js +89 -0
- package/dist/esm/utils/misc/cloneEvent.js +5 -0
- package/dist/esm/utils/misc/findClosest.js +12 -0
- package/dist/esm/utils/misc/getDocumentFromNode.js +8 -0
- package/dist/esm/utils/misc/getTreeDiff.js +23 -0
- package/dist/esm/utils/misc/getWindow.js +17 -0
- package/dist/esm/utils/misc/isDescendantOrSelf.js +12 -0
- package/dist/esm/utils/misc/isDisabled.js +31 -0
- package/dist/esm/utils/misc/isElementType.js +18 -0
- package/dist/esm/utils/misc/isVisible.js +17 -0
- package/dist/esm/utils/misc/level.js +13 -0
- package/dist/esm/utils/misc/wait.js +12 -0
- package/dist/esm/utils/pointer/cssPointerEvents.js +99 -0
- package/dist/types/clipboard/copy.d.ts +2 -0
- package/dist/types/clipboard/cut.d.ts +2 -0
- package/dist/types/clipboard/index.d.ts +3 -0
- package/dist/types/clipboard/paste.d.ts +2 -0
- package/dist/types/convenience/click.d.ts +4 -0
- package/dist/types/convenience/hover.d.ts +3 -0
- package/dist/types/convenience/index.d.ts +3 -0
- package/dist/types/convenience/tab.d.ts +4 -0
- package/dist/types/document/UI.d.ts +42 -0
- package/dist/types/document/copySelection.d.ts +1 -0
- package/dist/types/document/getValueOrTextContent.d.ts +1 -0
- package/dist/types/document/index.d.ts +5 -0
- package/dist/types/document/interceptor.d.ts +19 -0
- package/dist/types/document/patchFocus.d.ts +9 -0
- package/dist/types/document/prepareDocument.d.ts +8 -0
- package/dist/types/document/trackValue.d.ts +17 -0
- package/dist/types/event/behavior/click.d.ts +1 -0
- package/dist/types/event/behavior/cut.d.ts +1 -0
- package/dist/types/event/behavior/index.d.ts +8 -0
- package/dist/types/event/behavior/keydown.d.ts +1 -0
- package/dist/types/event/behavior/keypress.d.ts +1 -0
- package/dist/types/event/behavior/keyup.d.ts +1 -0
- package/dist/types/event/behavior/paste.d.ts +1 -0
- package/dist/types/event/behavior/registry.d.ts +8 -0
- package/dist/types/event/createEvent.d.ts +2 -0
- package/dist/types/event/dispatchEvent.d.ts +5 -0
- package/dist/types/event/eventMap.d.ts +265 -0
- package/dist/types/event/focus.d.ts +5 -0
- package/dist/types/event/index.d.ts +7 -0
- package/dist/types/event/input.d.ts +2 -0
- package/dist/types/event/radio.d.ts +4 -0
- package/dist/types/event/selection/getInputRange.d.ts +5 -0
- package/dist/types/event/selection/getTargetTypeAndSelection.d.ts +10 -0
- package/dist/types/event/selection/index.d.ts +15 -0
- package/dist/types/event/selection/modifySelection.d.ts +8 -0
- package/dist/types/event/selection/modifySelectionPerMouse.d.ts +7 -0
- package/dist/types/event/selection/moveSelection.d.ts +4 -0
- package/dist/types/event/selection/resolveCaretPosition.d.ts +8 -0
- package/dist/types/event/selection/selectAll.d.ts +5 -0
- package/dist/types/event/selection/setSelection.d.ts +10 -0
- package/dist/types/event/selection/setSelectionPerMouse.d.ts +8 -0
- package/dist/types/event/selection/setSelectionRange.d.ts +6 -0
- package/dist/types/event/selection/updateSelectionOnFocus.d.ts +5 -0
- package/dist/types/event/types.d.ts +20 -0
- package/dist/types/event/wrapEvent.d.ts +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/keyboard/index.d.ts +3 -0
- package/dist/types/keyboard/keyMap.d.ts +5 -0
- package/dist/types/keyboard/parseKeyDef.d.ts +17 -0
- package/dist/types/options.d.ts +115 -0
- package/dist/types/pointer/index.d.ts +28 -0
- package/dist/types/pointer/keyMap.d.ts +2 -0
- package/dist/types/pointer/parseKeyDef.d.ts +6 -0
- package/dist/types/setup/api.d.ts +23 -0
- package/dist/types/setup/directApi.d.ts +24 -0
- package/dist/types/setup/index.d.ts +22 -0
- package/dist/types/setup/setup.d.ts +44 -0
- package/dist/types/setup/wrapAsync.d.ts +4 -0
- package/dist/types/system/index.d.ts +10 -0
- package/dist/types/system/keyboard.d.ts +50 -0
- package/dist/types/system/pointer/buttons.d.ts +23 -0
- package/dist/types/system/pointer/device.d.ts +8 -0
- package/dist/types/system/pointer/index.d.ts +21 -0
- package/dist/types/system/pointer/mouse.d.ts +31 -0
- package/dist/types/system/pointer/pointer.d.ts +32 -0
- package/dist/types/system/pointer/shared.d.ts +20 -0
- package/dist/types/utility/clear.d.ts +2 -0
- package/dist/types/utility/index.d.ts +4 -0
- package/dist/types/utility/selectOptions.d.ts +3 -0
- package/dist/types/utility/type.d.ts +9 -0
- package/dist/types/utility/upload.d.ts +5 -0
- package/dist/types/utils/click/isClickableInput.d.ts +15 -0
- package/dist/types/utils/dataTransfer/Blob.d.ts +3 -0
- package/dist/types/utils/dataTransfer/Clipboard.d.ts +11 -0
- package/dist/types/utils/dataTransfer/DataTransfer.d.ts +2 -0
- package/dist/types/utils/dataTransfer/FileList.d.ts +1 -0
- package/dist/types/utils/edit/isContentEditable.d.ts +7 -0
- package/dist/types/utils/edit/isEditable.d.ts +24 -0
- package/dist/types/utils/edit/maxLength.d.ts +14 -0
- package/dist/types/utils/edit/setFiles.d.ts +12 -0
- package/dist/types/utils/edit/timeValue.d.ts +4 -0
- package/dist/types/utils/focus/cursor.d.ts +9 -0
- package/dist/types/utils/focus/getActiveElement.d.ts +2 -0
- package/dist/types/utils/focus/getTabDestination.d.ts +1 -0
- package/dist/types/utils/focus/isFocusable.d.ts +1 -0
- package/dist/types/utils/focus/selection.d.ts +8 -0
- package/dist/types/utils/focus/selector.d.ts +1 -0
- package/dist/types/utils/index.d.ts +29 -0
- package/dist/types/utils/keyDef/readNextDescriptor.d.ts +21 -0
- package/dist/types/utils/misc/cloneEvent.d.ts +1 -0
- package/dist/types/utils/misc/findClosest.d.ts +1 -0
- package/dist/types/utils/misc/getDocumentFromNode.d.ts +1 -0
- package/dist/types/utils/misc/getTreeDiff.d.ts +1 -0
- package/dist/types/utils/misc/getWindow.d.ts +1 -0
- package/dist/types/utils/misc/isDescendantOrSelf.d.ts +1 -0
- package/dist/types/utils/misc/isDisabled.d.ts +1 -0
- package/dist/types/utils/misc/isElementType.d.ts +5 -0
- package/dist/types/utils/misc/isVisible.d.ts +1 -0
- package/dist/types/utils/misc/level.d.ts +8 -0
- package/dist/types/utils/misc/wait.d.ts +2 -0
- package/dist/types/utils/pointer/cssPointerEvents.d.ts +19 -0
- package/package.json +131 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../utils/dataTransfer/Clipboard.js');
|
|
4
|
+
var getWindow = require('../utils/misc/getWindow.js');
|
|
5
|
+
var UI = require('./UI.js');
|
|
6
|
+
|
|
7
|
+
const TrackChanges = Symbol('Track programmatic changes for React workaround');
|
|
8
|
+
// When the input event happens in the browser, React executes all event handlers
|
|
9
|
+
// and if they change state of a controlled value, nothing happens.
|
|
10
|
+
// But when we trigger the event handlers in test environment with React@17,
|
|
11
|
+
// the changes are rolled back before the state update is applied.
|
|
12
|
+
// This results in a reset cursor.
|
|
13
|
+
// There might be a better way to work around if we figure out
|
|
14
|
+
// why the batched update is executed differently in our test environment.
|
|
15
|
+
function isReact17Element(element) {
|
|
16
|
+
return Object.getOwnPropertyNames(element).some((k)=>k.startsWith('__react')) && getWindow.getWindow(element).REACT_VERSION === 17;
|
|
17
|
+
}
|
|
18
|
+
function startTrackValue(element) {
|
|
19
|
+
if (!isReact17Element(element)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
element[TrackChanges] = {
|
|
23
|
+
previousValue: String(element.value),
|
|
24
|
+
tracked: []
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function trackOrSetValue(element, v) {
|
|
28
|
+
var _element_TrackChanges_tracked, _element_TrackChanges;
|
|
29
|
+
(_element_TrackChanges = element[TrackChanges]) === null || _element_TrackChanges === void 0 ? void 0 : (_element_TrackChanges_tracked = _element_TrackChanges.tracked) === null || _element_TrackChanges_tracked === void 0 ? void 0 : _element_TrackChanges_tracked.push(v);
|
|
30
|
+
if (!element[TrackChanges]) {
|
|
31
|
+
UI.setUIValueClean(element);
|
|
32
|
+
UI.setUISelection(element, {
|
|
33
|
+
focusOffset: v.length
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function commitValueAfterInput(element, cursorOffset) {
|
|
38
|
+
var _changes_tracked;
|
|
39
|
+
const changes = element[TrackChanges];
|
|
40
|
+
element[TrackChanges] = undefined;
|
|
41
|
+
if (!(changes === null || changes === void 0 ? void 0 : (_changes_tracked = changes.tracked) === null || _changes_tracked === void 0 ? void 0 : _changes_tracked.length)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const isJustReactStateUpdate = changes.tracked.length === 2 && changes.tracked[0] === changes.previousValue && changes.tracked[1] === element.value;
|
|
45
|
+
if (!isJustReactStateUpdate) {
|
|
46
|
+
UI.setUIValueClean(element);
|
|
47
|
+
}
|
|
48
|
+
if (UI.hasUISelection(element)) {
|
|
49
|
+
UI.setUISelection(element, {
|
|
50
|
+
focusOffset: isJustReactStateUpdate ? cursorOffset : element.value.length
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
exports.commitValueAfterInput = commitValueAfterInput;
|
|
56
|
+
exports.startTrackValue = startTrackValue;
|
|
57
|
+
exports.trackOrSetValue = trackOrSetValue;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isElementType = require('../../utils/misc/isElementType.js');
|
|
4
|
+
require('../../utils/dataTransfer/Clipboard.js');
|
|
5
|
+
var getWindow = require('../../utils/misc/getWindow.js');
|
|
6
|
+
var isFocusable = require('../../utils/focus/isFocusable.js');
|
|
7
|
+
var cloneEvent = require('../../utils/misc/cloneEvent.js');
|
|
8
|
+
var focus = require('../focus.js');
|
|
9
|
+
var registry = require('./registry.js');
|
|
10
|
+
|
|
11
|
+
registry.behavior.click = (event, target, instance)=>{
|
|
12
|
+
const context = target.closest('button,input,label,select,textarea');
|
|
13
|
+
const control = context && isElementType.isElementType(context, 'label') && context.control;
|
|
14
|
+
if (control && control !== target) {
|
|
15
|
+
return ()=>{
|
|
16
|
+
if (isFocusable.isFocusable(control)) {
|
|
17
|
+
focus.focusElement(control);
|
|
18
|
+
instance.dispatchEvent(control, cloneEvent.cloneEvent(event));
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
} else if (isElementType.isElementType(target, 'input', {
|
|
22
|
+
type: 'file'
|
|
23
|
+
})) {
|
|
24
|
+
return ()=>{
|
|
25
|
+
// blur fires when the file selector pops up
|
|
26
|
+
focus.blurElement(target);
|
|
27
|
+
target.dispatchEvent(new (getWindow.getWindow(target)).Event('fileDialog'));
|
|
28
|
+
// focus fires after the file selector has been closed
|
|
29
|
+
focus.focusElement(target);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../utils/dataTransfer/Clipboard.js');
|
|
4
|
+
var isEditable = require('../../utils/edit/isEditable.js');
|
|
5
|
+
var input = require('../input.js');
|
|
6
|
+
var registry = require('./registry.js');
|
|
7
|
+
|
|
8
|
+
registry.behavior.cut = (event, target, instance)=>{
|
|
9
|
+
return ()=>{
|
|
10
|
+
if (isEditable.isEditable(target)) {
|
|
11
|
+
input.input(instance, target, '', 'deleteByCut');
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('./click.js');
|
|
4
|
+
require('./cut.js');
|
|
5
|
+
require('./keydown.js');
|
|
6
|
+
require('./keypress.js');
|
|
7
|
+
require('./keyup.js');
|
|
8
|
+
require('./paste.js');
|
|
9
|
+
var registry = require('./registry.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.behavior = registry.behavior;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var UI = require('../../document/UI.js');
|
|
4
|
+
var getValueOrTextContent = require('../../document/getValueOrTextContent.js');
|
|
5
|
+
var isElementType = require('../../utils/misc/isElementType.js');
|
|
6
|
+
require('../../utils/dataTransfer/Clipboard.js');
|
|
7
|
+
var isContentEditable = require('../../utils/edit/isContentEditable.js');
|
|
8
|
+
var isEditable = require('../../utils/edit/isEditable.js');
|
|
9
|
+
var getTabDestination = require('../../utils/focus/getTabDestination.js');
|
|
10
|
+
var selection = require('../../utils/focus/selection.js');
|
|
11
|
+
var focus = require('../focus.js');
|
|
12
|
+
var input = require('../input.js');
|
|
13
|
+
var moveSelection = require('../selection/moveSelection.js');
|
|
14
|
+
var selectAll = require('../selection/selectAll.js');
|
|
15
|
+
var setSelectionRange = require('../selection/setSelectionRange.js');
|
|
16
|
+
var radio = require('../radio.js');
|
|
17
|
+
var registry = require('./registry.js');
|
|
18
|
+
|
|
19
|
+
registry.behavior.keydown = (event, target, instance)=>{
|
|
20
|
+
var _ref;
|
|
21
|
+
var _keydownBehavior_event_key;
|
|
22
|
+
return (_ref = (_keydownBehavior_event_key = keydownBehavior[event.key]) === null || _keydownBehavior_event_key === void 0 ? void 0 : _keydownBehavior_event_key.call(keydownBehavior, event, target, instance)) !== null && _ref !== void 0 ? _ref : combinationBehavior(event, target, instance);
|
|
23
|
+
};
|
|
24
|
+
const keydownBehavior = {
|
|
25
|
+
ArrowDown: (event, target, instance)=>{
|
|
26
|
+
/* istanbul ignore else */ if (isElementType.isElementType(target, 'input', {
|
|
27
|
+
type: 'radio'
|
|
28
|
+
})) {
|
|
29
|
+
return ()=>radio.walkRadio(instance, target, 1);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
ArrowLeft: (event, target, instance)=>{
|
|
33
|
+
if (isElementType.isElementType(target, 'input', {
|
|
34
|
+
type: 'radio'
|
|
35
|
+
})) {
|
|
36
|
+
return ()=>radio.walkRadio(instance, target, -1);
|
|
37
|
+
}
|
|
38
|
+
return ()=>moveSelection.moveSelection(target, -1);
|
|
39
|
+
},
|
|
40
|
+
ArrowRight: (event, target, instance)=>{
|
|
41
|
+
if (isElementType.isElementType(target, 'input', {
|
|
42
|
+
type: 'radio'
|
|
43
|
+
})) {
|
|
44
|
+
return ()=>radio.walkRadio(instance, target, 1);
|
|
45
|
+
}
|
|
46
|
+
return ()=>moveSelection.moveSelection(target, 1);
|
|
47
|
+
},
|
|
48
|
+
ArrowUp: (event, target, instance)=>{
|
|
49
|
+
/* istanbul ignore else */ if (isElementType.isElementType(target, 'input', {
|
|
50
|
+
type: 'radio'
|
|
51
|
+
})) {
|
|
52
|
+
return ()=>radio.walkRadio(instance, target, -1);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
Backspace: (event, target, instance)=>{
|
|
56
|
+
if (isEditable.isEditable(target)) {
|
|
57
|
+
return ()=>{
|
|
58
|
+
input.input(instance, target, '', 'deleteContentBackward');
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
Delete: (event, target, instance)=>{
|
|
63
|
+
if (isEditable.isEditable(target)) {
|
|
64
|
+
return ()=>{
|
|
65
|
+
input.input(instance, target, '', 'deleteContentForward');
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
End: (event, target)=>{
|
|
70
|
+
if (isElementType.isElementType(target, [
|
|
71
|
+
'input',
|
|
72
|
+
'textarea'
|
|
73
|
+
]) || isContentEditable.isContentEditable(target)) {
|
|
74
|
+
return ()=>{
|
|
75
|
+
var _ref;
|
|
76
|
+
var _getValueOrTextContent;
|
|
77
|
+
const newPos = (_ref = (_getValueOrTextContent = getValueOrTextContent.getValueOrTextContent(target)) === null || _getValueOrTextContent === void 0 ? void 0 : _getValueOrTextContent.length) !== null && _ref !== void 0 ? _ref : /* istanbul ignore next */ 0;
|
|
78
|
+
setSelectionRange.setSelectionRange(target, newPos, newPos);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
Home: (event, target)=>{
|
|
83
|
+
if (isElementType.isElementType(target, [
|
|
84
|
+
'input',
|
|
85
|
+
'textarea'
|
|
86
|
+
]) || isContentEditable.isContentEditable(target)) {
|
|
87
|
+
return ()=>{
|
|
88
|
+
setSelectionRange.setSelectionRange(target, 0, 0);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
PageDown: (event, target)=>{
|
|
93
|
+
if (isElementType.isElementType(target, [
|
|
94
|
+
'input'
|
|
95
|
+
])) {
|
|
96
|
+
return ()=>{
|
|
97
|
+
const newPos = UI.getUIValue(target).length;
|
|
98
|
+
setSelectionRange.setSelectionRange(target, newPos, newPos);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
PageUp: (event, target)=>{
|
|
103
|
+
if (isElementType.isElementType(target, [
|
|
104
|
+
'input'
|
|
105
|
+
])) {
|
|
106
|
+
return ()=>{
|
|
107
|
+
setSelectionRange.setSelectionRange(target, 0, 0);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
Tab: (event, target, instance)=>{
|
|
112
|
+
return ()=>{
|
|
113
|
+
const dest = getTabDestination.getTabDestination(target, instance.system.keyboard.modifiers.Shift);
|
|
114
|
+
focus.focusElement(dest);
|
|
115
|
+
if (selection.hasOwnSelection(dest)) {
|
|
116
|
+
UI.setUISelection(dest, {
|
|
117
|
+
anchorOffset: 0,
|
|
118
|
+
focusOffset: dest.value.length
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const combinationBehavior = (event, target, instance)=>{
|
|
125
|
+
if (event.code === 'KeyA' && instance.system.keyboard.modifiers.Control) {
|
|
126
|
+
return ()=>selectAll.selectAll(target);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isElementType = require('../../utils/misc/isElementType.js');
|
|
4
|
+
require('../../utils/dataTransfer/Clipboard.js');
|
|
5
|
+
var isContentEditable = require('../../utils/edit/isContentEditable.js');
|
|
6
|
+
var isEditable = require('../../utils/edit/isEditable.js');
|
|
7
|
+
var input = require('../input.js');
|
|
8
|
+
var registry = require('./registry.js');
|
|
9
|
+
|
|
10
|
+
registry.behavior.keypress = (event, target, instance)=>{
|
|
11
|
+
if (event.key === 'Enter') {
|
|
12
|
+
if (isElementType.isElementType(target, 'button') || isElementType.isElementType(target, 'input') && ClickInputOnEnter.includes(target.type) || isElementType.isElementType(target, 'a') && Boolean(target.href)) {
|
|
13
|
+
return ()=>{
|
|
14
|
+
instance.dispatchUIEvent(target, 'click');
|
|
15
|
+
};
|
|
16
|
+
} else if (isElementType.isElementType(target, 'input')) {
|
|
17
|
+
const form = target.form;
|
|
18
|
+
const submit = form === null || form === void 0 ? void 0 : form.querySelector('input[type="submit"], button:not([type]), button[type="submit"]');
|
|
19
|
+
if (submit) {
|
|
20
|
+
return ()=>instance.dispatchUIEvent(submit, 'click');
|
|
21
|
+
} else if (form && SubmitSingleInputOnEnter.includes(target.type) && form.querySelectorAll('input').length === 1) {
|
|
22
|
+
return ()=>instance.dispatchUIEvent(form, 'submit');
|
|
23
|
+
} else {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (isEditable.isEditable(target)) {
|
|
29
|
+
const inputType = event.key === 'Enter' ? isContentEditable.isContentEditable(target) && !instance.system.keyboard.modifiers.Shift ? 'insertParagraph' : 'insertLineBreak' : 'insertText';
|
|
30
|
+
const inputData = event.key === 'Enter' ? '\n' : event.key;
|
|
31
|
+
return ()=>input.input(instance, target, inputData, inputType);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const ClickInputOnEnter = [
|
|
35
|
+
'button',
|
|
36
|
+
'color',
|
|
37
|
+
'file',
|
|
38
|
+
'image',
|
|
39
|
+
'reset',
|
|
40
|
+
'submit'
|
|
41
|
+
];
|
|
42
|
+
const SubmitSingleInputOnEnter = [
|
|
43
|
+
'email',
|
|
44
|
+
'month',
|
|
45
|
+
'password',
|
|
46
|
+
'search',
|
|
47
|
+
'tel',
|
|
48
|
+
'text',
|
|
49
|
+
'url',
|
|
50
|
+
'week'
|
|
51
|
+
];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isClickableInput = require('../../utils/click/isClickableInput.js');
|
|
4
|
+
require('../../utils/dataTransfer/Clipboard.js');
|
|
5
|
+
var registry = require('./registry.js');
|
|
6
|
+
|
|
7
|
+
registry.behavior.keyup = (event, target, instance)=>{
|
|
8
|
+
var _keyupBehavior_event_key;
|
|
9
|
+
return (_keyupBehavior_event_key = keyupBehavior[event.key]) === null || _keyupBehavior_event_key === void 0 ? void 0 : _keyupBehavior_event_key.call(keyupBehavior, event, target, instance);
|
|
10
|
+
};
|
|
11
|
+
const keyupBehavior = {
|
|
12
|
+
' ': (event, target, instance)=>{
|
|
13
|
+
if (isClickableInput.isClickableInput(target)) {
|
|
14
|
+
return ()=>instance.dispatchUIEvent(target, 'click');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../utils/dataTransfer/Clipboard.js');
|
|
4
|
+
var isEditable = require('../../utils/edit/isEditable.js');
|
|
5
|
+
var input = require('../input.js');
|
|
6
|
+
var registry = require('./registry.js');
|
|
7
|
+
|
|
8
|
+
registry.behavior.paste = (event, target, instance)=>{
|
|
9
|
+
if (isEditable.isEditable(target)) {
|
|
10
|
+
return ()=>{
|
|
11
|
+
var _event_clipboardData;
|
|
12
|
+
const insertData = (_event_clipboardData = event.clipboardData) === null || _event_clipboardData === void 0 ? void 0 : _event_clipboardData.getData('text');
|
|
13
|
+
if (insertData) {
|
|
14
|
+
input.input(instance, target, insertData, 'insertFromPaste');
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../utils/dataTransfer/Clipboard.js');
|
|
4
|
+
var getWindow = require('../utils/misc/getWindow.js');
|
|
5
|
+
var eventMap = require('./eventMap.js');
|
|
6
|
+
|
|
7
|
+
const eventInitializer = {
|
|
8
|
+
ClipboardEvent: [
|
|
9
|
+
initClipboardEvent
|
|
10
|
+
],
|
|
11
|
+
Event: [],
|
|
12
|
+
FocusEvent: [
|
|
13
|
+
initUIEvent,
|
|
14
|
+
initFocusEvent
|
|
15
|
+
],
|
|
16
|
+
InputEvent: [
|
|
17
|
+
initUIEvent,
|
|
18
|
+
initInputEvent
|
|
19
|
+
],
|
|
20
|
+
MouseEvent: [
|
|
21
|
+
initUIEvent,
|
|
22
|
+
initUIEventModifiers,
|
|
23
|
+
initMouseEvent
|
|
24
|
+
],
|
|
25
|
+
PointerEvent: [
|
|
26
|
+
initUIEvent,
|
|
27
|
+
initUIEventModifiers,
|
|
28
|
+
initMouseEvent,
|
|
29
|
+
initPointerEvent
|
|
30
|
+
],
|
|
31
|
+
KeyboardEvent: [
|
|
32
|
+
initUIEvent,
|
|
33
|
+
initUIEventModifiers,
|
|
34
|
+
initKeyboardEvent
|
|
35
|
+
]
|
|
36
|
+
};
|
|
37
|
+
function createEvent(type, target, init) {
|
|
38
|
+
const window = getWindow.getWindow(target);
|
|
39
|
+
const { EventType, defaultInit } = eventMap.eventMap[type];
|
|
40
|
+
const event = new (getEventConstructors(window))[EventType](type, defaultInit);
|
|
41
|
+
eventInitializer[EventType].forEach((f)=>f(event, init !== null && init !== void 0 ? init : {}));
|
|
42
|
+
return event;
|
|
43
|
+
}
|
|
44
|
+
/* istanbul ignore next */ function getEventConstructors(window) {
|
|
45
|
+
var _window_Event, _window_AnimationEvent, _window_ClipboardEvent, _window_PopStateEvent, _window_ProgressEvent, _window_TransitionEvent, _window_UIEvent, _window_CompositionEvent, _window_FocusEvent, _window_InputEvent, _window_KeyboardEvent, _window_MouseEvent, _window_DragEvent, _window_PointerEvent, _window_TouchEvent;
|
|
46
|
+
const Event = (_window_Event = window.Event) !== null && _window_Event !== void 0 ? _window_Event : class Event {
|
|
47
|
+
};
|
|
48
|
+
const AnimationEvent = (_window_AnimationEvent = window.AnimationEvent) !== null && _window_AnimationEvent !== void 0 ? _window_AnimationEvent : class AnimationEvent extends Event {
|
|
49
|
+
};
|
|
50
|
+
const ClipboardEvent = (_window_ClipboardEvent = window.ClipboardEvent) !== null && _window_ClipboardEvent !== void 0 ? _window_ClipboardEvent : class ClipboardEvent extends Event {
|
|
51
|
+
};
|
|
52
|
+
const PopStateEvent = (_window_PopStateEvent = window.PopStateEvent) !== null && _window_PopStateEvent !== void 0 ? _window_PopStateEvent : class PopStateEvent extends Event {
|
|
53
|
+
};
|
|
54
|
+
const ProgressEvent = (_window_ProgressEvent = window.ProgressEvent) !== null && _window_ProgressEvent !== void 0 ? _window_ProgressEvent : class ProgressEvent extends Event {
|
|
55
|
+
};
|
|
56
|
+
const TransitionEvent = (_window_TransitionEvent = window.TransitionEvent) !== null && _window_TransitionEvent !== void 0 ? _window_TransitionEvent : class TransitionEvent extends Event {
|
|
57
|
+
};
|
|
58
|
+
const UIEvent = (_window_UIEvent = window.UIEvent) !== null && _window_UIEvent !== void 0 ? _window_UIEvent : class UIEvent extends Event {
|
|
59
|
+
};
|
|
60
|
+
const CompositionEvent = (_window_CompositionEvent = window.CompositionEvent) !== null && _window_CompositionEvent !== void 0 ? _window_CompositionEvent : class CompositionEvent extends UIEvent {
|
|
61
|
+
};
|
|
62
|
+
const FocusEvent = (_window_FocusEvent = window.FocusEvent) !== null && _window_FocusEvent !== void 0 ? _window_FocusEvent : class FocusEvent extends UIEvent {
|
|
63
|
+
};
|
|
64
|
+
const InputEvent = (_window_InputEvent = window.InputEvent) !== null && _window_InputEvent !== void 0 ? _window_InputEvent : class InputEvent extends UIEvent {
|
|
65
|
+
};
|
|
66
|
+
const KeyboardEvent = (_window_KeyboardEvent = window.KeyboardEvent) !== null && _window_KeyboardEvent !== void 0 ? _window_KeyboardEvent : class KeyboardEvent extends UIEvent {
|
|
67
|
+
};
|
|
68
|
+
const MouseEvent = (_window_MouseEvent = window.MouseEvent) !== null && _window_MouseEvent !== void 0 ? _window_MouseEvent : class MouseEvent extends UIEvent {
|
|
69
|
+
};
|
|
70
|
+
const DragEvent = (_window_DragEvent = window.DragEvent) !== null && _window_DragEvent !== void 0 ? _window_DragEvent : class DragEvent extends MouseEvent {
|
|
71
|
+
};
|
|
72
|
+
const PointerEvent = (_window_PointerEvent = window.PointerEvent) !== null && _window_PointerEvent !== void 0 ? _window_PointerEvent : class PointerEvent extends MouseEvent {
|
|
73
|
+
};
|
|
74
|
+
const TouchEvent = (_window_TouchEvent = window.TouchEvent) !== null && _window_TouchEvent !== void 0 ? _window_TouchEvent : class TouchEvent extends UIEvent {
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
Event,
|
|
78
|
+
AnimationEvent,
|
|
79
|
+
ClipboardEvent,
|
|
80
|
+
PopStateEvent,
|
|
81
|
+
ProgressEvent,
|
|
82
|
+
TransitionEvent,
|
|
83
|
+
UIEvent,
|
|
84
|
+
CompositionEvent,
|
|
85
|
+
FocusEvent,
|
|
86
|
+
InputEvent,
|
|
87
|
+
KeyboardEvent,
|
|
88
|
+
MouseEvent,
|
|
89
|
+
DragEvent,
|
|
90
|
+
PointerEvent,
|
|
91
|
+
TouchEvent
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function assignProps(obj, props) {
|
|
95
|
+
for (const [key, value] of Object.entries(props)){
|
|
96
|
+
Object.defineProperty(obj, key, {
|
|
97
|
+
get: ()=>value !== null && value !== void 0 ? value : null
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function sanitizeNumber(n) {
|
|
102
|
+
return Number(n !== null && n !== void 0 ? n : 0);
|
|
103
|
+
}
|
|
104
|
+
function initClipboardEvent(event, { clipboardData }) {
|
|
105
|
+
assignProps(event, {
|
|
106
|
+
clipboardData
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function initFocusEvent(event, { relatedTarget }) {
|
|
110
|
+
assignProps(event, {
|
|
111
|
+
relatedTarget
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function initInputEvent(event, { data, inputType, isComposing }) {
|
|
115
|
+
assignProps(event, {
|
|
116
|
+
data,
|
|
117
|
+
isComposing: Boolean(isComposing),
|
|
118
|
+
inputType: String(inputType)
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function initUIEvent(event, { view, detail }) {
|
|
122
|
+
assignProps(event, {
|
|
123
|
+
view,
|
|
124
|
+
detail: sanitizeNumber(detail !== null && detail !== void 0 ? detail : 0)
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function initUIEventModifiers(event, { altKey, ctrlKey, metaKey, shiftKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierNumLock, modifierScrollLock, modifierSymbol, modifierSymbolLock }) {
|
|
128
|
+
assignProps(event, {
|
|
129
|
+
altKey: Boolean(altKey),
|
|
130
|
+
ctrlKey: Boolean(ctrlKey),
|
|
131
|
+
metaKey: Boolean(metaKey),
|
|
132
|
+
shiftKey: Boolean(shiftKey),
|
|
133
|
+
getModifierState (k) {
|
|
134
|
+
return Boolean({
|
|
135
|
+
Alt: altKey,
|
|
136
|
+
AltGraph: modifierAltGraph,
|
|
137
|
+
CapsLock: modifierCapsLock,
|
|
138
|
+
Control: ctrlKey,
|
|
139
|
+
Fn: modifierFn,
|
|
140
|
+
FnLock: modifierFnLock,
|
|
141
|
+
Meta: metaKey,
|
|
142
|
+
NumLock: modifierNumLock,
|
|
143
|
+
ScrollLock: modifierScrollLock,
|
|
144
|
+
Shift: shiftKey,
|
|
145
|
+
Symbol: modifierSymbol,
|
|
146
|
+
SymbolLock: modifierSymbolLock
|
|
147
|
+
}[k]);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function initKeyboardEvent(event, { key, code, location, repeat, isComposing, charCode }) {
|
|
152
|
+
assignProps(event, {
|
|
153
|
+
key: String(key),
|
|
154
|
+
code: String(code),
|
|
155
|
+
location: sanitizeNumber(location),
|
|
156
|
+
repeat: Boolean(repeat),
|
|
157
|
+
isComposing: Boolean(isComposing),
|
|
158
|
+
charCode
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function initMouseEvent(event, { x, y, screenX, screenY, clientX = x, clientY = y, button, buttons, relatedTarget, offsetX, offsetY, pageX, pageY }) {
|
|
162
|
+
assignProps(event, {
|
|
163
|
+
screenX: sanitizeNumber(screenX),
|
|
164
|
+
screenY: sanitizeNumber(screenY),
|
|
165
|
+
clientX: sanitizeNumber(clientX),
|
|
166
|
+
x: sanitizeNumber(clientX),
|
|
167
|
+
clientY: sanitizeNumber(clientY),
|
|
168
|
+
y: sanitizeNumber(clientY),
|
|
169
|
+
button: sanitizeNumber(button),
|
|
170
|
+
buttons: sanitizeNumber(buttons),
|
|
171
|
+
relatedTarget,
|
|
172
|
+
offsetX: sanitizeNumber(offsetX),
|
|
173
|
+
offsetY: sanitizeNumber(offsetY),
|
|
174
|
+
pageX: sanitizeNumber(pageX),
|
|
175
|
+
pageY: sanitizeNumber(pageY)
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function initPointerEvent(event, { pointerId, width, height, pressure, tangentialPressure, tiltX, tiltY, twist, pointerType, isPrimary, buttons }) {
|
|
179
|
+
assignProps(event, {
|
|
180
|
+
pointerId: sanitizeNumber(pointerId),
|
|
181
|
+
width: sanitizeNumber(width !== null && width !== void 0 ? width : 1),
|
|
182
|
+
height: sanitizeNumber(height !== null && height !== void 0 ? height : 1),
|
|
183
|
+
pressure: sanitizeNumber(pressure !== null && pressure !== void 0 ? pressure : buttons ? 0.5 : 0),
|
|
184
|
+
tangentialPressure: sanitizeNumber(tangentialPressure),
|
|
185
|
+
tiltX: sanitizeNumber(tiltX),
|
|
186
|
+
tiltY: sanitizeNumber(tiltY),
|
|
187
|
+
twist: sanitizeNumber(twist),
|
|
188
|
+
pointerType: String(pointerType),
|
|
189
|
+
isPrimary: Boolean(isPrimary)
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
exports.createEvent = createEvent;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('./behavior/click.js');
|
|
4
|
+
require('./behavior/cut.js');
|
|
5
|
+
require('./behavior/keydown.js');
|
|
6
|
+
require('./behavior/keypress.js');
|
|
7
|
+
require('./behavior/keyup.js');
|
|
8
|
+
require('./behavior/paste.js');
|
|
9
|
+
var registry = require('./behavior/registry.js');
|
|
10
|
+
var wrapEvent = require('./wrapEvent.js');
|
|
11
|
+
var eventMap = require('./eventMap.js');
|
|
12
|
+
var createEvent = require('./createEvent.js');
|
|
13
|
+
|
|
14
|
+
function dispatchUIEvent(target, type, init, preventDefault = false) {
|
|
15
|
+
if (eventMap.isMouseEvent(type) || eventMap.isKeyboardEvent(type)) {
|
|
16
|
+
init = {
|
|
17
|
+
...init,
|
|
18
|
+
...this.system.getUIEventModifiers()
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const event = createEvent.createEvent(type, target, init);
|
|
22
|
+
return dispatchEvent.call(this, target, event, preventDefault);
|
|
23
|
+
}
|
|
24
|
+
function dispatchEvent(target, event, preventDefault = false) {
|
|
25
|
+
var _behavior_type;
|
|
26
|
+
const type = event.type;
|
|
27
|
+
const behaviorImplementation = preventDefault ? ()=>{} : (_behavior_type = registry.behavior[type]) === null || _behavior_type === void 0 ? void 0 : _behavior_type.call(registry.behavior, event, target, this);
|
|
28
|
+
if (behaviorImplementation) {
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
let defaultPrevented = false;
|
|
31
|
+
Object.defineProperty(event, 'defaultPrevented', {
|
|
32
|
+
get: ()=>defaultPrevented
|
|
33
|
+
});
|
|
34
|
+
Object.defineProperty(event, 'preventDefault', {
|
|
35
|
+
value: ()=>{
|
|
36
|
+
defaultPrevented = event.cancelable;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
wrapEvent.wrapEvent(()=>target.dispatchEvent(event));
|
|
40
|
+
if (!defaultPrevented) {
|
|
41
|
+
behaviorImplementation();
|
|
42
|
+
}
|
|
43
|
+
return !defaultPrevented;
|
|
44
|
+
}
|
|
45
|
+
return wrapEvent.wrapEvent(()=>target.dispatchEvent(event));
|
|
46
|
+
}
|
|
47
|
+
function dispatchDOMEvent(target, type, init) {
|
|
48
|
+
const event = createEvent.createEvent(type, target, init);
|
|
49
|
+
wrapEvent.wrapEvent(()=>target.dispatchEvent(event));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
exports.dispatchDOMEvent = dispatchDOMEvent;
|
|
53
|
+
exports.dispatchEvent = dispatchEvent;
|
|
54
|
+
exports.dispatchUIEvent = dispatchUIEvent;
|