@testing-library/react-native 14.0.0-beta.0 → 14.0.0-beta.1
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/README.md +22 -33
- package/build/event-builder/base.js.map +1 -0
- package/build/event-builder/common.d.ts +152 -0
- package/build/event-builder/common.js +80 -0
- package/build/event-builder/common.js.map +1 -0
- package/build/event-builder/index.d.ts +3 -0
- package/build/event-builder/index.js +39 -0
- package/build/event-builder/index.js.map +1 -0
- package/build/event-builder/scroll.d.ts +56 -0
- package/build/event-builder/scroll.js +51 -0
- package/build/event-builder/scroll.js.map +1 -0
- package/build/event-builder/text.d.ts +162 -0
- package/build/event-builder/text.js +113 -0
- package/build/event-builder/text.js.map +1 -0
- package/build/fire-event.d.ts +6 -5
- package/build/fire-event.js +47 -23
- package/build/fire-event.js.map +1 -1
- package/build/helpers/accessibility.d.ts +18 -15
- package/build/helpers/accessibility.js +64 -47
- package/build/helpers/accessibility.js.map +1 -1
- package/build/helpers/component-tree.d.ts +9 -9
- package/build/helpers/component-tree.js +17 -17
- package/build/helpers/component-tree.js.map +1 -1
- package/build/helpers/find-all.d.ts +2 -2
- package/build/helpers/find-all.js +1 -1
- package/build/helpers/find-all.js.map +1 -1
- package/build/helpers/format-element.d.ts +5 -5
- package/build/helpers/format-element.js +9 -9
- package/build/helpers/format-element.js.map +1 -1
- package/build/helpers/host-component-names.d.ts +13 -13
- package/build/helpers/host-component-names.js +18 -18
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/matchers/match-accessibility-state.d.ts +2 -2
- package/build/helpers/matchers/match-accessibility-state.js +6 -6
- package/build/helpers/matchers/match-accessibility-state.js.map +1 -1
- package/build/helpers/matchers/match-accessibility-value.d.ts +2 -2
- package/build/helpers/matchers/match-accessibility-value.js +2 -2
- package/build/helpers/matchers/match-accessibility-value.js.map +1 -1
- package/build/helpers/matchers/match-label-text.d.ts +2 -2
- package/build/helpers/matchers/match-label-text.js +2 -2
- package/build/helpers/matchers/match-label-text.js.map +1 -1
- package/build/helpers/matchers/match-text-content.d.ts +5 -5
- package/build/helpers/matchers/match-text-content.js +5 -5
- package/build/helpers/matchers/match-text-content.js.map +1 -1
- package/build/helpers/pointer-events.d.ts +2 -2
- package/build/helpers/pointer-events.js +4 -4
- package/build/helpers/pointer-events.js.map +1 -1
- package/build/helpers/text-content.d.ts +2 -2
- package/build/helpers/text-content.js +5 -5
- package/build/helpers/text-content.js.map +1 -1
- package/build/helpers/text-input.d.ts +3 -3
- package/build/helpers/text-input.js +6 -6
- package/build/helpers/text-input.js.map +1 -1
- package/build/matchers/to-be-busy.d.ts +2 -2
- package/build/matchers/to-be-busy.js +5 -5
- package/build/matchers/to-be-busy.js.map +1 -1
- package/build/matchers/to-be-checked.d.ts +2 -2
- package/build/matchers/to-be-checked.js +9 -9
- package/build/matchers/to-be-checked.js.map +1 -1
- package/build/matchers/to-be-disabled.d.ts +3 -3
- package/build/matchers/to-be-disabled.js +10 -10
- package/build/matchers/to-be-disabled.js.map +1 -1
- package/build/matchers/to-be-empty-element.d.ts +2 -2
- package/build/matchers/to-be-empty-element.js +4 -4
- package/build/matchers/to-be-empty-element.js.map +1 -1
- package/build/matchers/to-be-expanded.d.ts +3 -3
- package/build/matchers/to-be-expanded.js +10 -10
- package/build/matchers/to-be-expanded.js.map +1 -1
- package/build/matchers/to-be-on-the-screen.d.ts +2 -2
- package/build/matchers/to-be-on-the-screen.js +7 -7
- package/build/matchers/to-be-on-the-screen.js.map +1 -1
- package/build/matchers/to-be-partially-checked.d.ts +2 -2
- package/build/matchers/to-be-partially-checked.js +8 -8
- package/build/matchers/to-be-partially-checked.js.map +1 -1
- package/build/matchers/to-be-selected.d.ts +2 -2
- package/build/matchers/to-be-selected.js +4 -4
- package/build/matchers/to-be-selected.js.map +1 -1
- package/build/matchers/to-be-visible.d.ts +2 -2
- package/build/matchers/to-be-visible.js +12 -12
- package/build/matchers/to-be-visible.js.map +1 -1
- package/build/matchers/to-contain-element.d.ts +2 -2
- package/build/matchers/to-contain-element.js +6 -6
- package/build/matchers/to-contain-element.js.map +1 -1
- package/build/matchers/to-have-accessibility-value.d.ts +2 -2
- package/build/matchers/to-have-accessibility-value.js +6 -6
- package/build/matchers/to-have-accessibility-value.js.map +1 -1
- package/build/matchers/to-have-accessible-name.d.ts +2 -2
- package/build/matchers/to-have-accessible-name.js +5 -10
- package/build/matchers/to-have-accessible-name.js.map +1 -1
- package/build/matchers/to-have-display-value.d.ts +2 -2
- package/build/matchers/to-have-display-value.js +6 -6
- package/build/matchers/to-have-display-value.js.map +1 -1
- package/build/matchers/to-have-prop.d.ts +2 -2
- package/build/matchers/to-have-prop.js +6 -6
- package/build/matchers/to-have-prop.js.map +1 -1
- package/build/matchers/to-have-style.d.ts +2 -2
- package/build/matchers/to-have-style.js +5 -5
- package/build/matchers/to-have-style.js.map +1 -1
- package/build/matchers/to-have-text-content.d.ts +2 -2
- package/build/matchers/to-have-text-content.js +4 -4
- package/build/matchers/to-have-text-content.js.map +1 -1
- package/build/matchers/types.d.ts +20 -20
- package/build/matchers/types.js.map +1 -1
- package/build/matchers/utils.d.ts +4 -4
- package/build/matchers/utils.js +6 -6
- package/build/matchers/utils.js.map +1 -1
- package/build/native-state.d.ts +3 -3
- package/build/native-state.js +2 -2
- package/build/native-state.js.map +1 -1
- package/build/queries/display-value.d.ts +2 -2
- package/build/queries/display-value.js +12 -12
- package/build/queries/display-value.js.map +1 -1
- package/build/queries/hint-text.d.ts +2 -2
- package/build/queries/hint-text.js +11 -11
- package/build/queries/hint-text.js.map +1 -1
- package/build/queries/label-text.d.ts +2 -2
- package/build/queries/label-text.js +9 -9
- package/build/queries/label-text.js.map +1 -1
- package/build/queries/make-queries.d.ts +8 -8
- package/build/queries/make-queries.js +11 -11
- package/build/queries/make-queries.js.map +1 -1
- package/build/queries/placeholder-text.d.ts +2 -2
- package/build/queries/placeholder-text.js +11 -11
- package/build/queries/placeholder-text.js.map +1 -1
- package/build/queries/role.d.ts +2 -2
- package/build/queries/role.js +17 -27
- package/build/queries/role.js.map +1 -1
- package/build/queries/test-id.d.ts +2 -2
- package/build/queries/test-id.js +11 -11
- package/build/queries/test-id.js.map +1 -1
- package/build/queries/text.d.ts +2 -2
- package/build/queries/text.js +9 -9
- package/build/queries/text.js.map +1 -1
- package/build/render.d.ts +3 -4
- package/build/render.js +17 -3
- package/build/render.js.map +1 -1
- package/build/screen.js.map +1 -1
- package/build/test-utils/react-version-gates.d.ts +1 -0
- package/build/test-utils/react-version-gates.js +28 -0
- package/build/test-utils/react-version-gates.js.map +1 -0
- package/build/types.d.ts +7 -0
- package/build/types.js.map +1 -1
- package/build/user-event/clear.d.ts +2 -2
- package/build/user-event/clear.js +13 -13
- package/build/user-event/clear.js.map +1 -1
- package/build/user-event/index.d.ts +7 -7
- package/build/user-event/index.js +6 -6
- package/build/user-event/index.js.map +1 -1
- package/build/user-event/paste.d.ts +2 -2
- package/build/user-event/paste.js +18 -18
- package/build/user-event/paste.js.map +1 -1
- package/build/user-event/press/press.d.ts +3 -3
- package/build/user-event/press/press.js +35 -35
- package/build/user-event/press/press.js.map +1 -1
- package/build/user-event/scroll/scroll-to.d.ts +2 -2
- package/build/user-event/scroll/scroll-to.js +20 -20
- package/build/user-event/scroll/scroll-to.js.map +1 -1
- package/build/user-event/setup/setup.d.ts +11 -11
- package/build/user-event/setup/setup.js.map +1 -1
- package/build/user-event/type/type.d.ts +3 -3
- package/build/user-event/type/type.js +27 -28
- package/build/user-event/type/type.js.map +1 -1
- package/build/user-event/utils/dispatch-event.d.ts +3 -3
- package/build/user-event/utils/dispatch-event.js +4 -4
- package/build/user-event/utils/dispatch-event.js.map +1 -1
- package/build/user-event/utils/index.d.ts +0 -1
- package/build/user-event/utils/index.js +0 -11
- package/build/user-event/utils/index.js.map +1 -1
- package/build/within.d.ts +3 -3
- package/build/within.js +10 -10
- package/build/within.js.map +1 -1
- package/package.json +38 -27
- package/build/tsconfig.release.tsbuildinfo +0 -1
- package/build/user-event/event-builder/base.js.map +0 -1
- package/build/user-event/event-builder/common.d.ts +0 -155
- package/build/user-event/event-builder/common.js +0 -77
- package/build/user-event/event-builder/common.js.map +0 -1
- package/build/user-event/event-builder/index.d.ts +0 -318
- package/build/user-event/event-builder/index.js +0 -15
- package/build/user-event/event-builder/index.js.map +0 -1
- package/build/user-event/event-builder/scroll-view.d.ts +0 -58
- package/build/user-event/event-builder/scroll-view.js +0 -53
- package/build/user-event/event-builder/scroll-view.js.map +0 -1
- package/build/user-event/event-builder/text-input.d.ts +0 -165
- package/build/user-event/event-builder/text-input.js +0 -105
- package/build/user-event/event-builder/text-input.js.map +0 -1
- package/build/user-event/utils/text-range.d.ts +0 -4
- package/build/user-event/utils/text-range.js +0 -6
- package/build/user-event/utils/text-range.js.map +0 -1
- /package/build/{user-event/event-builder → event-builder}/base.d.ts +0 -0
- /package/build/{user-event/event-builder → event-builder}/base.js +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type { Size, TextRange } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Experimental values:
|
|
4
|
+
* - iOS: `{"eventCount": 4, "target": 75, "text": "Test"}`
|
|
5
|
+
* - Android: `{"eventCount": 6, "target": 53, "text": "Tes"}`
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildTextChangeEvent(text: string): {
|
|
8
|
+
nativeEvent: {
|
|
9
|
+
text: string;
|
|
10
|
+
target: number;
|
|
11
|
+
eventCount: number;
|
|
12
|
+
};
|
|
13
|
+
currentTarget?: unknown;
|
|
14
|
+
target?: unknown;
|
|
15
|
+
bubbles?: boolean | undefined;
|
|
16
|
+
cancelable?: boolean | undefined;
|
|
17
|
+
defaultPrevented?: boolean | undefined;
|
|
18
|
+
eventPhase?: number | undefined;
|
|
19
|
+
isTrusted?: boolean | undefined;
|
|
20
|
+
preventDefault?: (() => void) | undefined;
|
|
21
|
+
isDefaultPrevented?: (() => boolean) | undefined;
|
|
22
|
+
stopPropagation?: (() => void) | undefined;
|
|
23
|
+
isPropagationStopped?: (() => boolean) | undefined;
|
|
24
|
+
persist?: (() => void) | undefined;
|
|
25
|
+
timeStamp?: number | undefined;
|
|
26
|
+
type?: string | undefined;
|
|
27
|
+
isPersistent: () => boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Experimental values:
|
|
31
|
+
* - iOS: `{"eventCount": 3, "key": "a", "target": 75}`
|
|
32
|
+
* - Android: `{"key": "a"}`
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildKeyPressEvent(key: string): {
|
|
35
|
+
nativeEvent: {
|
|
36
|
+
key: string;
|
|
37
|
+
};
|
|
38
|
+
currentTarget?: unknown;
|
|
39
|
+
target?: unknown;
|
|
40
|
+
bubbles?: boolean | undefined;
|
|
41
|
+
cancelable?: boolean | undefined;
|
|
42
|
+
defaultPrevented?: boolean | undefined;
|
|
43
|
+
eventPhase?: number | undefined;
|
|
44
|
+
isTrusted?: boolean | undefined;
|
|
45
|
+
preventDefault?: (() => void) | undefined;
|
|
46
|
+
isDefaultPrevented?: (() => boolean) | undefined;
|
|
47
|
+
stopPropagation?: (() => void) | undefined;
|
|
48
|
+
isPropagationStopped?: (() => boolean) | undefined;
|
|
49
|
+
persist?: (() => void) | undefined;
|
|
50
|
+
timeStamp?: number | undefined;
|
|
51
|
+
type?: string | undefined;
|
|
52
|
+
isPersistent: () => boolean;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Experimental values:
|
|
56
|
+
* - iOS: `{"eventCount": 4, "target": 75, "text": "Test"}`
|
|
57
|
+
* - Android: `{"target": 53, "text": "Test"}`
|
|
58
|
+
*/
|
|
59
|
+
export declare function buildSubmitEditingEvent(text: string): {
|
|
60
|
+
nativeEvent: {
|
|
61
|
+
text: string;
|
|
62
|
+
target: number;
|
|
63
|
+
};
|
|
64
|
+
currentTarget?: unknown;
|
|
65
|
+
target?: unknown;
|
|
66
|
+
bubbles?: boolean | undefined;
|
|
67
|
+
cancelable?: boolean | undefined;
|
|
68
|
+
defaultPrevented?: boolean | undefined;
|
|
69
|
+
eventPhase?: number | undefined;
|
|
70
|
+
isTrusted?: boolean | undefined;
|
|
71
|
+
preventDefault?: (() => void) | undefined;
|
|
72
|
+
isDefaultPrevented?: (() => boolean) | undefined;
|
|
73
|
+
stopPropagation?: (() => void) | undefined;
|
|
74
|
+
isPropagationStopped?: (() => boolean) | undefined;
|
|
75
|
+
persist?: (() => void) | undefined;
|
|
76
|
+
timeStamp?: number | undefined;
|
|
77
|
+
type?: string | undefined;
|
|
78
|
+
isPersistent: () => boolean;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Experimental values:
|
|
82
|
+
* - iOS: `{"eventCount": 4, "target": 75, "text": "Test"}`
|
|
83
|
+
* - Android: `{"target": 53, "text": "Test"}`
|
|
84
|
+
*/
|
|
85
|
+
export declare function buildEndEditingEvent(text: string): {
|
|
86
|
+
nativeEvent: {
|
|
87
|
+
text: string;
|
|
88
|
+
target: number;
|
|
89
|
+
};
|
|
90
|
+
currentTarget?: unknown;
|
|
91
|
+
target?: unknown;
|
|
92
|
+
bubbles?: boolean | undefined;
|
|
93
|
+
cancelable?: boolean | undefined;
|
|
94
|
+
defaultPrevented?: boolean | undefined;
|
|
95
|
+
eventPhase?: number | undefined;
|
|
96
|
+
isTrusted?: boolean | undefined;
|
|
97
|
+
preventDefault?: (() => void) | undefined;
|
|
98
|
+
isDefaultPrevented?: (() => boolean) | undefined;
|
|
99
|
+
stopPropagation?: (() => void) | undefined;
|
|
100
|
+
isPropagationStopped?: (() => boolean) | undefined;
|
|
101
|
+
persist?: (() => void) | undefined;
|
|
102
|
+
timeStamp?: number | undefined;
|
|
103
|
+
type?: string | undefined;
|
|
104
|
+
isPersistent: () => boolean;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Experimental values:
|
|
108
|
+
* - iOS: `{"selection": {"end": 4, "start": 4}, "target": 75}`
|
|
109
|
+
* - Android: `{"selection": {"end": 4, "start": 4}}`
|
|
110
|
+
*/
|
|
111
|
+
export declare function buildTextSelectionChangeEvent({ start, end }: TextRange): {
|
|
112
|
+
nativeEvent: {
|
|
113
|
+
selection: {
|
|
114
|
+
start: number;
|
|
115
|
+
end: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
currentTarget?: unknown;
|
|
119
|
+
target?: unknown;
|
|
120
|
+
bubbles?: boolean | undefined;
|
|
121
|
+
cancelable?: boolean | undefined;
|
|
122
|
+
defaultPrevented?: boolean | undefined;
|
|
123
|
+
eventPhase?: number | undefined;
|
|
124
|
+
isTrusted?: boolean | undefined;
|
|
125
|
+
preventDefault?: (() => void) | undefined;
|
|
126
|
+
isDefaultPrevented?: (() => boolean) | undefined;
|
|
127
|
+
stopPropagation?: (() => void) | undefined;
|
|
128
|
+
isPropagationStopped?: (() => boolean) | undefined;
|
|
129
|
+
persist?: (() => void) | undefined;
|
|
130
|
+
timeStamp?: number | undefined;
|
|
131
|
+
type?: string | undefined;
|
|
132
|
+
isPersistent: () => boolean;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Experimental values:
|
|
136
|
+
* - iOS: `{"contentSize": {"height": 21.666666666666668, "width": 11.666666666666666}, "target": 75}`
|
|
137
|
+
* - Android: `{"contentSize": {"height": 61.45454406738281, "width": 352.7272644042969}, "target": 53}`
|
|
138
|
+
*/
|
|
139
|
+
export declare function buildContentSizeChangeEvent({ width, height }: Size): {
|
|
140
|
+
nativeEvent: {
|
|
141
|
+
contentSize: {
|
|
142
|
+
width: number;
|
|
143
|
+
height: number;
|
|
144
|
+
};
|
|
145
|
+
target: number;
|
|
146
|
+
};
|
|
147
|
+
currentTarget?: unknown;
|
|
148
|
+
target?: unknown;
|
|
149
|
+
bubbles?: boolean | undefined;
|
|
150
|
+
cancelable?: boolean | undefined;
|
|
151
|
+
defaultPrevented?: boolean | undefined;
|
|
152
|
+
eventPhase?: number | undefined;
|
|
153
|
+
isTrusted?: boolean | undefined;
|
|
154
|
+
preventDefault?: (() => void) | undefined;
|
|
155
|
+
isDefaultPrevented?: (() => boolean) | undefined;
|
|
156
|
+
stopPropagation?: (() => void) | undefined;
|
|
157
|
+
isPropagationStopped?: (() => boolean) | undefined;
|
|
158
|
+
persist?: (() => void) | undefined;
|
|
159
|
+
timeStamp?: number | undefined;
|
|
160
|
+
type?: string | undefined;
|
|
161
|
+
isPersistent: () => boolean;
|
|
162
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildContentSizeChangeEvent = buildContentSizeChangeEvent;
|
|
7
|
+
exports.buildEndEditingEvent = buildEndEditingEvent;
|
|
8
|
+
exports.buildKeyPressEvent = buildKeyPressEvent;
|
|
9
|
+
exports.buildSubmitEditingEvent = buildSubmitEditingEvent;
|
|
10
|
+
exports.buildTextChangeEvent = buildTextChangeEvent;
|
|
11
|
+
exports.buildTextSelectionChangeEvent = buildTextSelectionChangeEvent;
|
|
12
|
+
var _base = require("./base");
|
|
13
|
+
/**
|
|
14
|
+
* Experimental values:
|
|
15
|
+
* - iOS: `{"eventCount": 4, "target": 75, "text": "Test"}`
|
|
16
|
+
* - Android: `{"eventCount": 6, "target": 53, "text": "Tes"}`
|
|
17
|
+
*/
|
|
18
|
+
function buildTextChangeEvent(text) {
|
|
19
|
+
return {
|
|
20
|
+
...(0, _base.baseSyntheticEvent)(),
|
|
21
|
+
nativeEvent: {
|
|
22
|
+
text,
|
|
23
|
+
target: 0,
|
|
24
|
+
eventCount: 0
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Experimental values:
|
|
31
|
+
* - iOS: `{"eventCount": 3, "key": "a", "target": 75}`
|
|
32
|
+
* - Android: `{"key": "a"}`
|
|
33
|
+
*/
|
|
34
|
+
function buildKeyPressEvent(key) {
|
|
35
|
+
return {
|
|
36
|
+
...(0, _base.baseSyntheticEvent)(),
|
|
37
|
+
nativeEvent: {
|
|
38
|
+
key
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Experimental values:
|
|
45
|
+
* - iOS: `{"eventCount": 4, "target": 75, "text": "Test"}`
|
|
46
|
+
* - Android: `{"target": 53, "text": "Test"}`
|
|
47
|
+
*/
|
|
48
|
+
function buildSubmitEditingEvent(text) {
|
|
49
|
+
return {
|
|
50
|
+
...(0, _base.baseSyntheticEvent)(),
|
|
51
|
+
nativeEvent: {
|
|
52
|
+
text,
|
|
53
|
+
target: 0
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Experimental values:
|
|
60
|
+
* - iOS: `{"eventCount": 4, "target": 75, "text": "Test"}`
|
|
61
|
+
* - Android: `{"target": 53, "text": "Test"}`
|
|
62
|
+
*/
|
|
63
|
+
function buildEndEditingEvent(text) {
|
|
64
|
+
return {
|
|
65
|
+
...(0, _base.baseSyntheticEvent)(),
|
|
66
|
+
nativeEvent: {
|
|
67
|
+
text,
|
|
68
|
+
target: 0
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Experimental values:
|
|
75
|
+
* - iOS: `{"selection": {"end": 4, "start": 4}, "target": 75}`
|
|
76
|
+
* - Android: `{"selection": {"end": 4, "start": 4}}`
|
|
77
|
+
*/
|
|
78
|
+
function buildTextSelectionChangeEvent({
|
|
79
|
+
start,
|
|
80
|
+
end
|
|
81
|
+
}) {
|
|
82
|
+
return {
|
|
83
|
+
...(0, _base.baseSyntheticEvent)(),
|
|
84
|
+
nativeEvent: {
|
|
85
|
+
selection: {
|
|
86
|
+
start,
|
|
87
|
+
end
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Experimental values:
|
|
95
|
+
* - iOS: `{"contentSize": {"height": 21.666666666666668, "width": 11.666666666666666}, "target": 75}`
|
|
96
|
+
* - Android: `{"contentSize": {"height": 61.45454406738281, "width": 352.7272644042969}, "target": 53}`
|
|
97
|
+
*/
|
|
98
|
+
function buildContentSizeChangeEvent({
|
|
99
|
+
width,
|
|
100
|
+
height
|
|
101
|
+
}) {
|
|
102
|
+
return {
|
|
103
|
+
...(0, _base.baseSyntheticEvent)(),
|
|
104
|
+
nativeEvent: {
|
|
105
|
+
contentSize: {
|
|
106
|
+
width,
|
|
107
|
+
height
|
|
108
|
+
},
|
|
109
|
+
target: 0
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","names":["_base","require","buildTextChangeEvent","text","baseSyntheticEvent","nativeEvent","target","eventCount","buildKeyPressEvent","key","buildSubmitEditingEvent","buildEndEditingEvent","buildTextSelectionChangeEvent","start","end","selection","buildContentSizeChangeEvent","width","height","contentSize"],"sources":["../../src/event-builder/text.ts"],"sourcesContent":["import type { Size, TextRange } from '../types';\nimport { baseSyntheticEvent } from './base';\n\n/**\n * Experimental values:\n * - iOS: `{\"eventCount\": 4, \"target\": 75, \"text\": \"Test\"}`\n * - Android: `{\"eventCount\": 6, \"target\": 53, \"text\": \"Tes\"}`\n */\nexport function buildTextChangeEvent(text: string) {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { text, target: 0, eventCount: 0 },\n };\n}\n\n/**\n * Experimental values:\n * - iOS: `{\"eventCount\": 3, \"key\": \"a\", \"target\": 75}`\n * - Android: `{\"key\": \"a\"}`\n */\nexport function buildKeyPressEvent(key: string) {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { key },\n };\n}\n\n/**\n * Experimental values:\n * - iOS: `{\"eventCount\": 4, \"target\": 75, \"text\": \"Test\"}`\n * - Android: `{\"target\": 53, \"text\": \"Test\"}`\n */\nexport function buildSubmitEditingEvent(text: string) {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { text, target: 0 },\n };\n}\n\n/**\n * Experimental values:\n * - iOS: `{\"eventCount\": 4, \"target\": 75, \"text\": \"Test\"}`\n * - Android: `{\"target\": 53, \"text\": \"Test\"}`\n */\nexport function buildEndEditingEvent(text: string) {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { text, target: 0 },\n };\n}\n\n/**\n * Experimental values:\n * - iOS: `{\"selection\": {\"end\": 4, \"start\": 4}, \"target\": 75}`\n * - Android: `{\"selection\": {\"end\": 4, \"start\": 4}}`\n */\nexport function buildTextSelectionChangeEvent({ start, end }: TextRange) {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { selection: { start, end } },\n };\n}\n\n/**\n * Experimental values:\n * - iOS: `{\"contentSize\": {\"height\": 21.666666666666668, \"width\": 11.666666666666666}, \"target\": 75}`\n * - Android: `{\"contentSize\": {\"height\": 61.45454406738281, \"width\": 352.7272644042969}, \"target\": 53}`\n */\nexport function buildContentSizeChangeEvent({ width, height }: Size) {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { contentSize: { width, height }, target: 0 },\n };\n}\n"],"mappings":";;;;;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,IAAY,EAAE;EACjD,OAAO;IACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;IACvBC,WAAW,EAAE;MAAEF,IAAI;MAAEG,MAAM,EAAE,CAAC;MAAEC,UAAU,EAAE;IAAE;EAChD,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,GAAW,EAAE;EAC9C,OAAO;IACL,GAAG,IAAAL,wBAAkB,EAAC,CAAC;IACvBC,WAAW,EAAE;MAAEI;IAAI;EACrB,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,uBAAuBA,CAACP,IAAY,EAAE;EACpD,OAAO;IACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;IACvBC,WAAW,EAAE;MAAEF,IAAI;MAAEG,MAAM,EAAE;IAAE;EACjC,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASK,oBAAoBA,CAACR,IAAY,EAAE;EACjD,OAAO;IACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;IACvBC,WAAW,EAAE;MAAEF,IAAI;MAAEG,MAAM,EAAE;IAAE;EACjC,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASM,6BAA6BA,CAAC;EAAEC,KAAK;EAAEC;AAAe,CAAC,EAAE;EACvE,OAAO;IACL,GAAG,IAAAV,wBAAkB,EAAC,CAAC;IACvBC,WAAW,EAAE;MAAEU,SAAS,EAAE;QAAEF,KAAK;QAAEC;MAAI;IAAE;EAC3C,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,2BAA2BA,CAAC;EAAEC,KAAK;EAAEC;AAAa,CAAC,EAAE;EACnE,OAAO;IACL,GAAG,IAAAd,wBAAkB,EAAC,CAAC;IACvBC,WAAW,EAAE;MAAEc,WAAW,EAAE;QAAEF,KAAK;QAAEC;MAAO,CAAC;MAAEZ,MAAM,EAAE;IAAE;EAC3D,CAAC;AACH","ignoreList":[]}
|
package/build/fire-event.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { PressableProps, ScrollViewProps, TextInputProps, TextProps, ViewProps } from 'react-native';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TestInstance } from 'test-renderer';
|
|
3
3
|
import type { StringWithAutocomplete } from './types';
|
|
4
4
|
type EventNameExtractor<T> = keyof {
|
|
5
5
|
[K in keyof T as K extends `on${infer Rest}` ? Uncapitalize<Rest> : never]: T[K];
|
|
6
6
|
};
|
|
7
7
|
type EventName = StringWithAutocomplete<EventNameExtractor<ViewProps> | EventNameExtractor<TextProps> | EventNameExtractor<TextInputProps> | EventNameExtractor<PressableProps> | EventNameExtractor<ScrollViewProps>>;
|
|
8
|
-
declare function fireEvent(
|
|
8
|
+
declare function fireEvent(instance: TestInstance, eventName: EventName, ...data: unknown[]): Promise<undefined>;
|
|
9
9
|
declare namespace fireEvent {
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var scroll: (
|
|
10
|
+
var changeText: (instance: TestInstance, text: string) => Promise<undefined>;
|
|
11
|
+
var press: (instance: TestInstance, eventProps?: EventProps) => Promise<void>;
|
|
12
|
+
var scroll: (instance: TestInstance, eventProps?: EventProps) => Promise<void>;
|
|
13
13
|
}
|
|
14
|
+
type EventProps = Record<string, unknown>;
|
|
14
15
|
export { fireEvent };
|
package/build/fire-event.js
CHANGED
|
@@ -5,14 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.fireEvent = fireEvent;
|
|
7
7
|
var _act = require("./act");
|
|
8
|
+
var _eventBuilder = require("./event-builder");
|
|
8
9
|
var _eventHandler = require("./event-handler");
|
|
9
10
|
var _componentTree = require("./helpers/component-tree");
|
|
10
11
|
var _hostComponentNames = require("./helpers/host-component-names");
|
|
11
12
|
var _pointerEvents = require("./helpers/pointer-events");
|
|
12
13
|
var _textInput = require("./helpers/text-input");
|
|
13
14
|
var _nativeState = require("./native-state");
|
|
14
|
-
function isTouchResponder(
|
|
15
|
-
return Boolean(
|
|
15
|
+
function isTouchResponder(instance) {
|
|
16
|
+
return Boolean(instance.props.onStartShouldSetResponder) || (0, _hostComponentNames.isHostTextInput)(instance);
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
/**
|
|
@@ -30,11 +31,11 @@ const eventsAffectedByPointerEventsProp = new Set(['press', 'onPress']);
|
|
|
30
31
|
* so we need cover both forms.
|
|
31
32
|
*/
|
|
32
33
|
const textInputEventsIgnoringEditableProp = new Set(['contentSizeChange', 'onContentSizeChange', 'layout', 'onLayout', 'scroll', 'onScroll']);
|
|
33
|
-
function isEventEnabled(
|
|
34
|
+
function isEventEnabled(instance, eventName, nearestTouchResponder) {
|
|
34
35
|
if (nearestTouchResponder != null && (0, _hostComponentNames.isHostTextInput)(nearestTouchResponder)) {
|
|
35
36
|
return (0, _textInput.isEditableTextInput)(nearestTouchResponder) || textInputEventsIgnoringEditableProp.has(eventName);
|
|
36
37
|
}
|
|
37
|
-
if (eventsAffectedByPointerEventsProp.has(eventName) && !(0, _pointerEvents.isPointerEventEnabled)(
|
|
38
|
+
if (eventsAffectedByPointerEventsProp.has(eventName) && !(0, _pointerEvents.isPointerEventEnabled)(instance)) {
|
|
38
39
|
return false;
|
|
39
40
|
}
|
|
40
41
|
const touchStart = nearestTouchResponder?.props.onStartShouldSetResponder?.();
|
|
@@ -44,18 +45,18 @@ function isEventEnabled(element, eventName, nearestTouchResponder) {
|
|
|
44
45
|
}
|
|
45
46
|
return touchStart === undefined && touchMove === undefined;
|
|
46
47
|
}
|
|
47
|
-
function findEventHandler(
|
|
48
|
-
const touchResponder = isTouchResponder(
|
|
49
|
-
const handler = (0, _eventHandler.getEventHandlerFromProps)(
|
|
48
|
+
function findEventHandler(instance, eventName, nearestTouchResponder) {
|
|
49
|
+
const touchResponder = isTouchResponder(instance) ? instance : nearestTouchResponder;
|
|
50
|
+
const handler = (0, _eventHandler.getEventHandlerFromProps)(instance.props, eventName, {
|
|
50
51
|
loose: true
|
|
51
|
-
}) ?? findEventHandlerFromFiber(
|
|
52
|
-
if (handler && isEventEnabled(
|
|
52
|
+
}) ?? findEventHandlerFromFiber(instance.unstable_fiber, eventName);
|
|
53
|
+
if (handler && isEventEnabled(instance, eventName, touchResponder)) {
|
|
53
54
|
return handler;
|
|
54
55
|
}
|
|
55
|
-
if (
|
|
56
|
+
if (instance.parent === null) {
|
|
56
57
|
return null;
|
|
57
58
|
}
|
|
58
|
-
return findEventHandler(
|
|
59
|
+
return findEventHandler(instance.parent, eventName, touchResponder);
|
|
59
60
|
}
|
|
60
61
|
function findEventHandlerFromFiber(fiber, eventName) {
|
|
61
62
|
// Container fibers have memoizedProps set to null
|
|
@@ -78,12 +79,12 @@ function findEventHandlerFromFiber(fiber, eventName) {
|
|
|
78
79
|
|
|
79
80
|
// String union type of keys of T that start with on, stripped of 'on'
|
|
80
81
|
|
|
81
|
-
async function fireEvent(
|
|
82
|
-
if (!(0, _componentTree.
|
|
82
|
+
async function fireEvent(instance, eventName, ...data) {
|
|
83
|
+
if (!(0, _componentTree.isInstanceMounted)(instance)) {
|
|
83
84
|
return;
|
|
84
85
|
}
|
|
85
|
-
setNativeStateIfNeeded(
|
|
86
|
-
const handler = findEventHandler(
|
|
86
|
+
setNativeStateIfNeeded(instance, eventName, data[0]);
|
|
87
|
+
const handler = findEventHandler(instance, eventName);
|
|
87
88
|
if (!handler) {
|
|
88
89
|
return;
|
|
89
90
|
}
|
|
@@ -93,18 +94,30 @@ async function fireEvent(element, eventName, ...data) {
|
|
|
93
94
|
});
|
|
94
95
|
return returnValue;
|
|
95
96
|
}
|
|
96
|
-
fireEvent.
|
|
97
|
-
fireEvent.
|
|
98
|
-
|
|
97
|
+
fireEvent.changeText = async (instance, text) => await fireEvent(instance, 'changeText', text);
|
|
98
|
+
fireEvent.press = async (instance, eventProps) => {
|
|
99
|
+
const event = (0, _eventBuilder.buildTouchEvent)();
|
|
100
|
+
if (eventProps) {
|
|
101
|
+
mergeEventProps(event, eventProps);
|
|
102
|
+
}
|
|
103
|
+
await fireEvent(instance, 'press', event);
|
|
104
|
+
};
|
|
105
|
+
fireEvent.scroll = async (instance, eventProps) => {
|
|
106
|
+
const event = (0, _eventBuilder.buildScrollEvent)();
|
|
107
|
+
if (eventProps) {
|
|
108
|
+
mergeEventProps(event, eventProps);
|
|
109
|
+
}
|
|
110
|
+
await fireEvent(instance, 'scroll', event);
|
|
111
|
+
};
|
|
99
112
|
const scrollEventNames = new Set(['scroll', 'scrollBeginDrag', 'scrollEndDrag', 'momentumScrollBegin', 'momentumScrollEnd']);
|
|
100
|
-
function setNativeStateIfNeeded(
|
|
101
|
-
if (eventName === 'changeText' && typeof value === 'string' && (0, _textInput.isEditableTextInput)(
|
|
102
|
-
_nativeState.nativeState.
|
|
113
|
+
function setNativeStateIfNeeded(instance, eventName, value) {
|
|
114
|
+
if (eventName === 'changeText' && typeof value === 'string' && (0, _textInput.isEditableTextInput)(instance)) {
|
|
115
|
+
_nativeState.nativeState.valueForInstance.set(instance, value);
|
|
103
116
|
}
|
|
104
|
-
if (scrollEventNames.has(eventName) && (0, _hostComponentNames.isHostScrollView)(
|
|
117
|
+
if (scrollEventNames.has(eventName) && (0, _hostComponentNames.isHostScrollView)(instance)) {
|
|
105
118
|
const contentOffset = tryGetContentOffset(value);
|
|
106
119
|
if (contentOffset) {
|
|
107
|
-
_nativeState.nativeState.
|
|
120
|
+
_nativeState.nativeState.contentOffsetForInstance.set(instance, contentOffset);
|
|
108
121
|
}
|
|
109
122
|
}
|
|
110
123
|
}
|
|
@@ -125,4 +138,15 @@ function tryGetContentOffset(event) {
|
|
|
125
138
|
}
|
|
126
139
|
return null;
|
|
127
140
|
}
|
|
141
|
+
function mergeEventProps(target, source) {
|
|
142
|
+
for (const key of Object.keys(source)) {
|
|
143
|
+
const sourceValue = source[key];
|
|
144
|
+
const targetValue = target[key];
|
|
145
|
+
if (sourceValue != null && typeof sourceValue === 'object' && !Array.isArray(sourceValue) && targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {
|
|
146
|
+
mergeEventProps(targetValue, sourceValue);
|
|
147
|
+
} else {
|
|
148
|
+
target[key] = sourceValue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
128
152
|
//# sourceMappingURL=fire-event.js.map
|
package/build/fire-event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fire-event.js","names":["_act","require","_eventHandler","_componentTree","_hostComponentNames","_pointerEvents","_textInput","_nativeState","isTouchResponder","element","Boolean","props","onStartShouldSetResponder","isHostTextInput","eventsAffectedByPointerEventsProp","Set","textInputEventsIgnoringEditableProp","isEventEnabled","eventName","nearestTouchResponder","isEditableTextInput","has","isPointerEventEnabled","touchStart","touchMove","onMoveShouldSetResponder","undefined","findEventHandler","touchResponder","handler","getEventHandlerFromProps","loose","findEventHandlerFromFiber","unstable_fiber","parent","fiber","memoizedProps","return","type","fireEvent","data","isElementMounted","setNativeStateIfNeeded","returnValue","act","press","changeText","scroll","scrollEventNames","value","nativeState","valueForElement","set","isHostScrollView","contentOffset","tryGetContentOffset","contentOffsetForElement","event","nativeEvent","x","y","Number","isFinite"],"sources":["../src/fire-event.ts"],"sourcesContent":["import type {\n PressableProps,\n ScrollViewProps,\n TextInputProps,\n TextProps,\n ViewProps,\n} from 'react-native';\nimport type { Fiber, HostElement } from 'test-renderer';\n\nimport { act } from './act';\nimport type { EventHandler } from './event-handler';\nimport { getEventHandlerFromProps } from './event-handler';\nimport { isElementMounted } from './helpers/component-tree';\nimport { isHostScrollView, isHostTextInput } from './helpers/host-component-names';\nimport { isPointerEventEnabled } from './helpers/pointer-events';\nimport { isEditableTextInput } from './helpers/text-input';\nimport { nativeState } from './native-state';\nimport type { Point, StringWithAutocomplete } from './types';\n\nfunction isTouchResponder(element: HostElement) {\n return Boolean(element.props.onStartShouldSetResponder) || isHostTextInput(element);\n}\n\n/**\n * List of events affected by `pointerEvents` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst eventsAffectedByPointerEventsProp = new Set(['press', 'onPress']);\n\n/**\n * List of `TextInput` events not affected by `editable` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst textInputEventsIgnoringEditableProp = new Set([\n 'contentSizeChange',\n 'onContentSizeChange',\n 'layout',\n 'onLayout',\n 'scroll',\n 'onScroll',\n]);\n\nfunction isEventEnabled(\n element: HostElement,\n eventName: string,\n nearestTouchResponder?: HostElement,\n) {\n if (nearestTouchResponder != null && isHostTextInput(nearestTouchResponder)) {\n return (\n isEditableTextInput(nearestTouchResponder) ||\n textInputEventsIgnoringEditableProp.has(eventName)\n );\n }\n\n if (eventsAffectedByPointerEventsProp.has(eventName) && !isPointerEventEnabled(element)) {\n return false;\n }\n\n const touchStart = nearestTouchResponder?.props.onStartShouldSetResponder?.();\n const touchMove = nearestTouchResponder?.props.onMoveShouldSetResponder?.();\n if (touchStart || touchMove) {\n return true;\n }\n\n return touchStart === undefined && touchMove === undefined;\n}\n\nfunction findEventHandler(\n element: HostElement,\n eventName: string,\n nearestTouchResponder?: HostElement,\n): EventHandler | null {\n const touchResponder = isTouchResponder(element) ? element : nearestTouchResponder;\n\n const handler =\n getEventHandlerFromProps(element.props, eventName, { loose: true }) ??\n findEventHandlerFromFiber(element.unstable_fiber, eventName);\n if (handler && isEventEnabled(element, eventName, touchResponder)) {\n return handler;\n }\n\n if (element.parent === null) {\n return null;\n }\n\n return findEventHandler(element.parent, eventName, touchResponder);\n}\n\nfunction findEventHandlerFromFiber(fiber: Fiber | null, eventName: string): EventHandler | null {\n // Container fibers have memoizedProps set to null\n if (!fiber?.memoizedProps) {\n return null;\n }\n\n const handler = getEventHandlerFromProps(fiber.memoizedProps, eventName, { loose: true });\n if (handler) {\n return handler;\n }\n\n // No parent fiber or we reached another host element\n if (fiber.return === null || typeof fiber.return.type === 'string') {\n return null;\n }\n\n return findEventHandlerFromFiber(fiber.return, eventName);\n}\n\n// String union type of keys of T that start with on, stripped of 'on'\ntype EventNameExtractor<T> = keyof {\n [K in keyof T as K extends `on${infer Rest}` ? Uncapitalize<Rest> : never]: T[K];\n};\n\ntype EventName = StringWithAutocomplete<\n | EventNameExtractor<ViewProps>\n | EventNameExtractor<TextProps>\n | EventNameExtractor<TextInputProps>\n | EventNameExtractor<PressableProps>\n | EventNameExtractor<ScrollViewProps>\n>;\n\nasync function fireEvent(element: HostElement, eventName: EventName, ...data: unknown[]) {\n if (!isElementMounted(element)) {\n return;\n }\n\n setNativeStateIfNeeded(element, eventName, data[0]);\n\n const handler = findEventHandler(element, eventName);\n if (!handler) {\n return;\n }\n\n let returnValue;\n await act(() => {\n returnValue = handler(...data);\n });\n\n return returnValue;\n}\n\nfireEvent.press = async (element: HostElement, ...data: unknown[]) =>\n await fireEvent(element, 'press', ...data);\n\nfireEvent.changeText = async (element: HostElement, ...data: unknown[]) =>\n await fireEvent(element, 'changeText', ...data);\n\nfireEvent.scroll = async (element: HostElement, ...data: unknown[]) =>\n await fireEvent(element, 'scroll', ...data);\n\nexport { fireEvent };\n\nconst scrollEventNames = new Set([\n 'scroll',\n 'scrollBeginDrag',\n 'scrollEndDrag',\n 'momentumScrollBegin',\n 'momentumScrollEnd',\n]);\n\nfunction setNativeStateIfNeeded(element: HostElement, eventName: string, value: unknown) {\n if (eventName === 'changeText' && typeof value === 'string' && isEditableTextInput(element)) {\n nativeState.valueForElement.set(element, value);\n }\n\n if (scrollEventNames.has(eventName) && isHostScrollView(element)) {\n const contentOffset = tryGetContentOffset(value);\n if (contentOffset) {\n nativeState.contentOffsetForElement.set(element, contentOffset);\n }\n }\n}\n\nfunction tryGetContentOffset(event: unknown): Point | null {\n try {\n // @ts-expect-error: try to extract contentOffset from the event value\n const contentOffset = event?.nativeEvent?.contentOffset;\n const x = contentOffset?.x;\n const y = contentOffset?.y;\n\n if (typeof x === 'number' || typeof y === 'number') {\n return {\n x: Number.isFinite(x) ? x : 0,\n y: Number.isFinite(y) ? y : 0,\n };\n }\n } catch {\n // Do nothing\n }\n\n return null;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fire-event.js","names":["_act","require","_eventBuilder","_eventHandler","_componentTree","_hostComponentNames","_pointerEvents","_textInput","_nativeState","isTouchResponder","instance","Boolean","props","onStartShouldSetResponder","isHostTextInput","eventsAffectedByPointerEventsProp","Set","textInputEventsIgnoringEditableProp","isEventEnabled","eventName","nearestTouchResponder","isEditableTextInput","has","isPointerEventEnabled","touchStart","touchMove","onMoveShouldSetResponder","undefined","findEventHandler","touchResponder","handler","getEventHandlerFromProps","loose","findEventHandlerFromFiber","unstable_fiber","parent","fiber","memoizedProps","return","type","fireEvent","data","isInstanceMounted","setNativeStateIfNeeded","returnValue","act","changeText","text","press","eventProps","event","buildTouchEvent","mergeEventProps","scroll","buildScrollEvent","scrollEventNames","value","nativeState","valueForInstance","set","isHostScrollView","contentOffset","tryGetContentOffset","contentOffsetForInstance","nativeEvent","x","y","Number","isFinite","target","source","key","Object","keys","sourceValue","targetValue","Array","isArray"],"sources":["../src/fire-event.ts"],"sourcesContent":["import type {\n PressableProps,\n ScrollViewProps,\n TextInputProps,\n TextProps,\n ViewProps,\n} from 'react-native';\nimport type { Fiber, TestInstance } from 'test-renderer';\n\nimport { act } from './act';\nimport { buildScrollEvent, buildTouchEvent } from './event-builder';\nimport type { EventHandler } from './event-handler';\nimport { getEventHandlerFromProps } from './event-handler';\nimport { isInstanceMounted } from './helpers/component-tree';\nimport { isHostScrollView, isHostTextInput } from './helpers/host-component-names';\nimport { isPointerEventEnabled } from './helpers/pointer-events';\nimport { isEditableTextInput } from './helpers/text-input';\nimport { nativeState } from './native-state';\nimport type { Point, StringWithAutocomplete } from './types';\n\nfunction isTouchResponder(instance: TestInstance) {\n return Boolean(instance.props.onStartShouldSetResponder) || isHostTextInput(instance);\n}\n\n/**\n * List of events affected by `pointerEvents` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst eventsAffectedByPointerEventsProp = new Set(['press', 'onPress']);\n\n/**\n * List of `TextInput` events not affected by `editable` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst textInputEventsIgnoringEditableProp = new Set([\n 'contentSizeChange',\n 'onContentSizeChange',\n 'layout',\n 'onLayout',\n 'scroll',\n 'onScroll',\n]);\n\nfunction isEventEnabled(\n instance: TestInstance,\n eventName: string,\n nearestTouchResponder?: TestInstance,\n) {\n if (nearestTouchResponder != null && isHostTextInput(nearestTouchResponder)) {\n return (\n isEditableTextInput(nearestTouchResponder) ||\n textInputEventsIgnoringEditableProp.has(eventName)\n );\n }\n\n if (eventsAffectedByPointerEventsProp.has(eventName) && !isPointerEventEnabled(instance)) {\n return false;\n }\n\n const touchStart = nearestTouchResponder?.props.onStartShouldSetResponder?.();\n const touchMove = nearestTouchResponder?.props.onMoveShouldSetResponder?.();\n if (touchStart || touchMove) {\n return true;\n }\n\n return touchStart === undefined && touchMove === undefined;\n}\n\nfunction findEventHandler(\n instance: TestInstance,\n eventName: string,\n nearestTouchResponder?: TestInstance,\n): EventHandler | null {\n const touchResponder = isTouchResponder(instance) ? instance : nearestTouchResponder;\n\n const handler =\n getEventHandlerFromProps(instance.props, eventName, { loose: true }) ??\n findEventHandlerFromFiber(instance.unstable_fiber, eventName);\n if (handler && isEventEnabled(instance, eventName, touchResponder)) {\n return handler;\n }\n\n if (instance.parent === null) {\n return null;\n }\n\n return findEventHandler(instance.parent, eventName, touchResponder);\n}\n\nfunction findEventHandlerFromFiber(fiber: Fiber | null, eventName: string): EventHandler | null {\n // Container fibers have memoizedProps set to null\n if (!fiber?.memoizedProps) {\n return null;\n }\n\n const handler = getEventHandlerFromProps(fiber.memoizedProps, eventName, { loose: true });\n if (handler) {\n return handler;\n }\n\n // No parent fiber or we reached another host element\n if (fiber.return === null || typeof fiber.return.type === 'string') {\n return null;\n }\n\n return findEventHandlerFromFiber(fiber.return, eventName);\n}\n\n// String union type of keys of T that start with on, stripped of 'on'\ntype EventNameExtractor<T> = keyof {\n [K in keyof T as K extends `on${infer Rest}` ? Uncapitalize<Rest> : never]: T[K];\n};\n\ntype EventName = StringWithAutocomplete<\n | EventNameExtractor<ViewProps>\n | EventNameExtractor<TextProps>\n | EventNameExtractor<TextInputProps>\n | EventNameExtractor<PressableProps>\n | EventNameExtractor<ScrollViewProps>\n>;\n\nasync function fireEvent(instance: TestInstance, eventName: EventName, ...data: unknown[]) {\n if (!isInstanceMounted(instance)) {\n return;\n }\n\n setNativeStateIfNeeded(instance, eventName, data[0]);\n\n const handler = findEventHandler(instance, eventName);\n if (!handler) {\n return;\n }\n\n let returnValue;\n await act(() => {\n returnValue = handler(...data);\n });\n\n return returnValue;\n}\n\ntype EventProps = Record<string, unknown>;\n\nfireEvent.changeText = async (instance: TestInstance, text: string) =>\n await fireEvent(instance, 'changeText', text);\n\nfireEvent.press = async (instance: TestInstance, eventProps?: EventProps) => {\n const event = buildTouchEvent();\n if (eventProps) {\n mergeEventProps(event, eventProps);\n }\n\n await fireEvent(instance, 'press', event);\n};\n\nfireEvent.scroll = async (instance: TestInstance, eventProps?: EventProps) => {\n const event = buildScrollEvent();\n if (eventProps) {\n mergeEventProps(event, eventProps);\n }\n\n await fireEvent(instance, 'scroll', event);\n};\n\nexport { fireEvent };\n\nconst scrollEventNames = new Set([\n 'scroll',\n 'scrollBeginDrag',\n 'scrollEndDrag',\n 'momentumScrollBegin',\n 'momentumScrollEnd',\n]);\n\nfunction setNativeStateIfNeeded(instance: TestInstance, eventName: string, value: unknown) {\n if (eventName === 'changeText' && typeof value === 'string' && isEditableTextInput(instance)) {\n nativeState.valueForInstance.set(instance, value);\n }\n\n if (scrollEventNames.has(eventName) && isHostScrollView(instance)) {\n const contentOffset = tryGetContentOffset(value);\n if (contentOffset) {\n nativeState.contentOffsetForInstance.set(instance, contentOffset);\n }\n }\n}\n\nfunction tryGetContentOffset(event: unknown): Point | null {\n try {\n // @ts-expect-error: try to extract contentOffset from the event value\n const contentOffset = event?.nativeEvent?.contentOffset;\n const x = contentOffset?.x;\n const y = contentOffset?.y;\n\n if (typeof x === 'number' || typeof y === 'number') {\n return {\n x: Number.isFinite(x) ? x : 0,\n y: Number.isFinite(y) ? y : 0,\n };\n }\n } catch {\n // Do nothing\n }\n\n return null;\n}\n\nfunction mergeEventProps(target: Record<string, unknown>, source: Record<string, unknown>) {\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n const targetValue = target[key];\n if (\n sourceValue != null &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n targetValue &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue)\n ) {\n mergeEventProps(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>,\n );\n } else {\n target[key] = sourceValue;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { AccessibilityRole, AccessibilityState, AccessibilityValue, Role } from 'react-native';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TestInstance } from 'test-renderer';
|
|
3
3
|
type IsInaccessibleOptions = {
|
|
4
|
-
cache?: WeakMap<
|
|
4
|
+
cache?: WeakMap<TestInstance, boolean>;
|
|
5
5
|
};
|
|
6
6
|
export declare const accessibilityStateKeys: (keyof AccessibilityState)[];
|
|
7
7
|
export declare const accessibilityValueKeys: (keyof AccessibilityValue)[];
|
|
8
|
-
export declare function isHiddenFromAccessibility(
|
|
8
|
+
export declare function isHiddenFromAccessibility(instance: TestInstance | null, { cache }?: IsInaccessibleOptions): boolean;
|
|
9
9
|
/** RTL-compatibility alias for `isHiddenFromAccessibility` */
|
|
10
10
|
export declare const isInaccessible: typeof isHiddenFromAccessibility;
|
|
11
|
-
export declare function isAccessibilityElement(
|
|
11
|
+
export declare function isAccessibilityElement(instance: TestInstance | null): boolean;
|
|
12
12
|
/**
|
|
13
13
|
* Returns the accessibility role for given element. It will return explicit
|
|
14
14
|
* role from either `role` or `accessibilityRole` props if set.
|
|
@@ -19,10 +19,10 @@ export declare function isAccessibilityElement(element: HostElement | null): boo
|
|
|
19
19
|
*
|
|
20
20
|
* In all other cases this functions returns `none`.
|
|
21
21
|
*
|
|
22
|
-
* @param
|
|
22
|
+
* @param instance
|
|
23
23
|
* @returns
|
|
24
24
|
*/
|
|
25
|
-
export declare function getRole(
|
|
25
|
+
export declare function getRole(instance: TestInstance): Role | AccessibilityRole;
|
|
26
26
|
/**
|
|
27
27
|
* There are some duplications between (ARIA) `Role` and `AccessibilityRole` types.
|
|
28
28
|
* Resolve them by using ARIA `Role` type where possible.
|
|
@@ -31,15 +31,18 @@ export declare function getRole(element: HostElement): Role | AccessibilityRole;
|
|
|
31
31
|
* @returns Normalized role
|
|
32
32
|
*/
|
|
33
33
|
export declare function normalizeRole(role: string): Role | AccessibilityRole;
|
|
34
|
-
export declare function computeAriaModal(
|
|
35
|
-
export declare function computeAriaLabel(
|
|
36
|
-
export declare function computeAriaBusy({ props }:
|
|
37
|
-
export declare function computeAriaChecked(
|
|
38
|
-
export declare function computeAriaDisabled(
|
|
39
|
-
export declare function computeAriaExpanded({ props }:
|
|
40
|
-
export declare function computeAriaSelected({ props }:
|
|
41
|
-
export declare function computeAriaValue(
|
|
42
|
-
|
|
34
|
+
export declare function computeAriaModal(instance: TestInstance): boolean | undefined;
|
|
35
|
+
export declare function computeAriaLabel(instance: TestInstance): string | undefined;
|
|
36
|
+
export declare function computeAriaBusy({ props }: TestInstance): boolean;
|
|
37
|
+
export declare function computeAriaChecked(instance: TestInstance): AccessibilityState['checked'];
|
|
38
|
+
export declare function computeAriaDisabled(instance: TestInstance): boolean;
|
|
39
|
+
export declare function computeAriaExpanded({ props }: TestInstance): boolean | undefined;
|
|
40
|
+
export declare function computeAriaSelected({ props }: TestInstance): boolean;
|
|
41
|
+
export declare function computeAriaValue(instance: TestInstance): AccessibilityValue;
|
|
42
|
+
type ComputeAccessibleNameOptions = {
|
|
43
|
+
root?: boolean;
|
|
44
|
+
};
|
|
45
|
+
export declare function computeAccessibleName(instance: TestInstance, options?: ComputeAccessibleNameOptions): string | undefined;
|
|
43
46
|
type RoleSupportMap = Partial<Record<Role | AccessibilityRole, true>>;
|
|
44
47
|
export declare const rolesSupportingCheckedState: RoleSupportMap;
|
|
45
48
|
export {};
|