@office-iss/react-native-win32 0.68.0 → 0.69.0-preview.3
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/.eslintrc.js +1 -0
- package/.flowconfig +1 -3
- package/CHANGELOG.json +386 -32
- package/CHANGELOG.md +166 -19
- package/IntegrationTests/BUCK +4 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.win32.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +6 -11
- package/Libraries/Animated/createAnimatedComponent.js +2 -2
- package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
- package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/Blob/URL.js +7 -1
- package/Libraries/Components/Button.js +3 -0
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
- package/Libraries/Components/Pressable/Pressable.js +3 -3
- package/Libraries/Components/Pressable/Pressable.win32.js +3 -3
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
- package/Libraries/Components/ScrollView/ScrollView.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
- package/Libraries/Components/Slider/Slider.js +0 -2
- package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
- package/Libraries/Components/StatusBar/StatusBar.js +6 -1
- package/Libraries/Components/Switch/Switch.js +11 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
- package/Libraries/Components/TextInput/TextInput.js +1 -8
- package/Libraries/Components/TextInput/TextInputState.js +10 -2
- package/Libraries/Components/TextInput/TextInputState.win32.js +10 -2
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
- package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +3 -1
- package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
- package/Libraries/Components/View/View.win32.js +33 -1
- package/Libraries/Components/View/ViewNativeComponent.js +68 -8
- package/Libraries/Components/View/ViewPropTypes.js +36 -4
- package/Libraries/Components/View/ViewPropTypes.win32.js +36 -4
- package/Libraries/Components/View/ViewWin32.Props.d.ts +1 -1
- package/Libraries/Components/View/ViewWin32.Props.js.map +1 -1
- package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +1 -1
- package/Libraries/Core/RawEventEmitter.js +38 -0
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/polyfillPromise.js +32 -0
- package/Libraries/Core/setUpReactDevTools.js +3 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
- package/Libraries/Events/CustomEvent.js +32 -0
- package/Libraries/Events/EventPolyfill.js +239 -0
- package/Libraries/Image/Image.android.js +0 -6
- package/Libraries/Image/Image.ios.js +0 -6
- package/Libraries/Image/Image.win32.js +2 -8
- package/Libraries/Image/ImageViewNativeComponent.js +18 -3
- package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
- package/Libraries/Image/resolveAssetSource.win32.js +1 -1
- package/Libraries/Inspector/Inspector.js +2 -4
- package/Libraries/Inspector/Inspector.win32.js +7 -9
- package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
- package/Libraries/Interaction/InteractionManager.js +1 -12
- package/Libraries/Interaction/TaskQueue.js +5 -4
- package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +27 -6
- package/Libraries/Lists/VirtualizedList.js +71 -55
- package/Libraries/Lists/VirtualizedListContext.js +7 -3
- package/Libraries/Lists/VirtualizedSectionList.js +2 -2
- package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
- package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
- package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
- package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
- package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +92 -43
- package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +16 -14
- package/Libraries/LogBox/Data/LogBoxData.js +2 -2
- package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBox.js +2 -21
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +334 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
- package/Libraries/NativeComponent/ViewConfig.js +4 -4
- package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
- package/Libraries/Network/FormData.js +7 -1
- package/Libraries/Network/RCTNetworking.win32.js +1 -1
- package/Libraries/Pressability/Pressability.js +115 -46
- package/Libraries/Pressability/Pressability.win32.js +174 -69
- package/Libraries/Pressability/PressabilityDebug.js +5 -9
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
- package/Libraries/ReactNative/PaperUIManager.win32.js +5 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
- package/Libraries/ReactNative/UIManager.js +2 -3
- package/Libraries/ReactNative/renderApplication.js +4 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
- package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
- package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
- package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
- package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
- package/Libraries/Text/Text.js +13 -7
- package/Libraries/Text/TextNativeComponent.js +2 -0
- package/Libraries/Text/TextNativeComponent.win32.js +2 -0
- package/Libraries/Text/TextProps.js +10 -0
- package/Libraries/Types/CoreEventTypes.js +13 -1
- package/Libraries/Types/CoreEventTypes.win32.js +26 -1
- package/Libraries/Utilities/Appearance.js +0 -8
- package/Libraries/Utilities/HMRClient.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
- package/Libraries/Utilities/codegenNativeComponent.js +16 -6
- package/Libraries/Utilities/stringifySafe.js +4 -1
- package/Libraries/Utilities/useColorScheme.js +9 -15
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
- package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
- package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
- package/flow/{use-subscription.js → use-sync-external-store.js} +4 -4
- package/index.js +30 -25
- package/index.win32.js +30 -25
- package/jest/preprocessor.js +24 -107
- package/jest/preprocessor_DO_NOT_USE.js +122 -0
- package/metro.config.js +3 -47
- package/overrides.json +39 -46
- package/package.json +32 -29
- package/rntypes/index.d.ts +19 -7
- package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +1 -1
- package/src/Libraries/Components/Touchable/TouchableWin32.Props.tsx +3 -1
- package/src/Libraries/Components/View/ViewWin32.Props.ts +1 -0
- package/src/Libraries/Lists/__tests__/__snapshots__/FlatList-test.js.snap +427 -0
- package/src/Libraries/Lists/__tests__/__snapshots__/SectionList-test.js.snap +391 -0
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizeUtils-test.js.snap +3 -0
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +4565 -0
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +1153 -0
- package/src/rntypes/index.d.ts +19 -7
- package/typings-index.js +5 -1
- package/typings-index.js.map +1 -1
- package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.js +0 -45
- package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
- package/Libraries/Components/View/ReactNativeViewViewConfig.win32.js +0 -401
- package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
- package/Libraries/ReactNative/UIManagerInjection.js +0 -15
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
- package/flow/Promise.js +0 -47
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
* @flow strict-local
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// https://dom.spec.whatwg.org/#dictdef-eventinit
|
|
12
|
+
type Event$Init = {
|
|
13
|
+
bubbles?: boolean,
|
|
14
|
+
cancelable?: boolean,
|
|
15
|
+
composed?: boolean,
|
|
16
|
+
/** Non-standard. See `composed` instead. */
|
|
17
|
+
scoped?: boolean,
|
|
18
|
+
...
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* This is a copy of the Event interface defined in Flow:
|
|
23
|
+
* https://github.com/facebook/flow/blob/741104e69c43057ebd32804dd6bcc1b5e97548ea/lib/dom.js
|
|
24
|
+
* which is itself a faithful interface of the W3 spec:
|
|
25
|
+
* https://dom.spec.whatwg.org/#interface-event
|
|
26
|
+
*
|
|
27
|
+
* Since Flow assumes that Event is provided and is on the global object,
|
|
28
|
+
* we must provide an implementation of Event for CustomEvent (and future
|
|
29
|
+
* alignment of React Native's event system with the W3 spec).
|
|
30
|
+
*/
|
|
31
|
+
interface IEvent {
|
|
32
|
+
constructor(type: string, eventInitDict?: Event$Init): void;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the type of event, e.g. "click", "hashchange", or "submit".
|
|
35
|
+
*/
|
|
36
|
+
+type: string;
|
|
37
|
+
/**
|
|
38
|
+
* Returns the object to which event is dispatched (its target).
|
|
39
|
+
*/
|
|
40
|
+
+target: EventTarget; // TODO: nullable
|
|
41
|
+
/** @deprecated */
|
|
42
|
+
+srcElement: Element; // TODO: nullable
|
|
43
|
+
/**
|
|
44
|
+
* Returns the object whose event listener's callback is currently being invoked.
|
|
45
|
+
*/
|
|
46
|
+
+currentTarget: EventTarget; // TODO: nullable
|
|
47
|
+
/**
|
|
48
|
+
* Returns the invocation target objects of event's path (objects on which
|
|
49
|
+
* listeners will be invoked), except for any nodes in shadow trees of which
|
|
50
|
+
* the shadow root's mode is "closed" that are not reachable from event's
|
|
51
|
+
* currentTarget.
|
|
52
|
+
*/
|
|
53
|
+
composedPath(): Array<EventTarget>;
|
|
54
|
+
|
|
55
|
+
+NONE: number;
|
|
56
|
+
+AT_TARGET: number;
|
|
57
|
+
+BUBBLING_PHASE: number;
|
|
58
|
+
+CAPTURING_PHASE: number;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET,
|
|
61
|
+
* and BUBBLING_PHASE.
|
|
62
|
+
*/
|
|
63
|
+
+eventPhase: number;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* When dispatched in a tree, invoking this method prevents event from reaching
|
|
67
|
+
* any objects other than the current object.
|
|
68
|
+
*/
|
|
69
|
+
stopPropagation(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Invoking this method prevents event from reaching any registered event
|
|
72
|
+
* listeners after the current one finishes running and, when dispatched in a
|
|
73
|
+
* tree, also prevents event from reaching any other objects.
|
|
74
|
+
*/
|
|
75
|
+
stopImmediatePropagation(): void;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Returns true or false depending on how event was initialized. True if
|
|
79
|
+
* event goes through its target's ancestors in reverse tree order, and
|
|
80
|
+
* false otherwise.
|
|
81
|
+
*/
|
|
82
|
+
+bubbles: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Returns true or false depending on how event was initialized. Its
|
|
85
|
+
* return value does not always carry meaning, but true can indicate
|
|
86
|
+
* that part of the operation during which event was dispatched, can
|
|
87
|
+
* be canceled by invoking the preventDefault() method.
|
|
88
|
+
*/
|
|
89
|
+
+cancelable: boolean;
|
|
90
|
+
// returnValue: boolean; // legacy, and some subclasses still define it as a string!
|
|
91
|
+
/**
|
|
92
|
+
* If invoked when the cancelable attribute value is true, and while
|
|
93
|
+
* executing a listener for the event with passive set to false, signals to
|
|
94
|
+
* the operation that caused event to be dispatched that it needs to be
|
|
95
|
+
* canceled.
|
|
96
|
+
*/
|
|
97
|
+
preventDefault(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Returns true if preventDefault() was invoked successfully to indicate
|
|
100
|
+
* cancelation, and false otherwise.
|
|
101
|
+
*/
|
|
102
|
+
+defaultPrevented: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Returns true or false depending on how event was initialized. True if
|
|
105
|
+
* event invokes listeners past a ShadowRoot node that is the root of its
|
|
106
|
+
* target, and false otherwise.
|
|
107
|
+
*/
|
|
108
|
+
+composed: boolean;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Returns true if event was dispatched by the user agent, and false otherwise.
|
|
112
|
+
*/
|
|
113
|
+
+isTrusted: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Returns the event's timestamp as the number of milliseconds measured relative
|
|
116
|
+
* to the time origin.
|
|
117
|
+
*/
|
|
118
|
+
+timeStamp: number;
|
|
119
|
+
|
|
120
|
+
/** Non-standard. See Event.prototype.composedPath */
|
|
121
|
+
+deepPath?: () => EventTarget[];
|
|
122
|
+
/** Non-standard. See Event.prototype.composed */
|
|
123
|
+
+scoped: boolean;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @deprecated
|
|
127
|
+
*/
|
|
128
|
+
initEvent(type: string, bubbles: boolean, cancelable: boolean): void;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
class EventPolyfill implements IEvent {
|
|
132
|
+
type: string;
|
|
133
|
+
bubbles: boolean;
|
|
134
|
+
cancelable: boolean;
|
|
135
|
+
composed: boolean;
|
|
136
|
+
// Non-standard. See `composed` instead.
|
|
137
|
+
scoped: boolean;
|
|
138
|
+
isTrusted: boolean;
|
|
139
|
+
defaultPrevented: boolean;
|
|
140
|
+
timeStamp: number;
|
|
141
|
+
|
|
142
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
|
|
143
|
+
NONE: number;
|
|
144
|
+
AT_TARGET: number;
|
|
145
|
+
BUBBLING_PHASE: number;
|
|
146
|
+
CAPTURING_PHASE: number;
|
|
147
|
+
|
|
148
|
+
eventPhase: number;
|
|
149
|
+
|
|
150
|
+
currentTarget: EventTarget; // TODO: nullable
|
|
151
|
+
target: EventTarget; // TODO: nullable
|
|
152
|
+
/** @deprecated */
|
|
153
|
+
srcElement: Element; // TODO: nullable
|
|
154
|
+
|
|
155
|
+
// React Native-specific: proxy data to a SyntheticEvent when
|
|
156
|
+
// certain methods are called.
|
|
157
|
+
// SyntheticEvent will also have a reference to this instance -
|
|
158
|
+
// it is circular - and both classes use this reference to keep
|
|
159
|
+
// data with the other in sync.
|
|
160
|
+
_syntheticEvent: mixed;
|
|
161
|
+
|
|
162
|
+
constructor(type: string, eventInitDict?: Event$Init): void {
|
|
163
|
+
this.type = type;
|
|
164
|
+
this.bubbles = !!(eventInitDict?.bubbles || false);
|
|
165
|
+
this.cancelable = !!(eventInitDict?.cancelable || false);
|
|
166
|
+
this.composed = !!(eventInitDict?.composed || false);
|
|
167
|
+
this.scoped = !!(eventInitDict?.scoped || false);
|
|
168
|
+
|
|
169
|
+
// TODO: somehow guarantee that only "private" instantiations of Event
|
|
170
|
+
// can set this to true
|
|
171
|
+
this.isTrusted = false;
|
|
172
|
+
|
|
173
|
+
// TODO: in the future we'll want to make sure this has the same
|
|
174
|
+
// time-basis as events originating from native
|
|
175
|
+
this.timeStamp = Date.now();
|
|
176
|
+
|
|
177
|
+
this.defaultPrevented = false;
|
|
178
|
+
|
|
179
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
|
|
180
|
+
this.NONE = 0;
|
|
181
|
+
this.AT_TARGET = 1;
|
|
182
|
+
this.BUBBLING_PHASE = 2;
|
|
183
|
+
this.CAPTURING_PHASE = 3;
|
|
184
|
+
this.eventPhase = this.NONE;
|
|
185
|
+
|
|
186
|
+
// $FlowFixMe
|
|
187
|
+
this.currentTarget = null;
|
|
188
|
+
// $FlowFixMe
|
|
189
|
+
this.target = null;
|
|
190
|
+
// $FlowFixMe
|
|
191
|
+
this.srcElement = null;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
composedPath(): Array<EventTarget> {
|
|
195
|
+
throw new Error('TODO: not yet implemented');
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
preventDefault(): void {
|
|
199
|
+
this.defaultPrevented = true;
|
|
200
|
+
|
|
201
|
+
if (this._syntheticEvent != null) {
|
|
202
|
+
// $FlowFixMe
|
|
203
|
+
this._syntheticEvent.preventDefault();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
initEvent(type: string, bubbles: boolean, cancelable: boolean): void {
|
|
208
|
+
throw new Error(
|
|
209
|
+
'TODO: not yet implemented. This method is also deprecated.',
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
stopImmediatePropagation(): void {
|
|
214
|
+
throw new Error('TODO: not yet implemented');
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
stopPropagation(): void {
|
|
218
|
+
if (this._syntheticEvent != null) {
|
|
219
|
+
// $FlowFixMe
|
|
220
|
+
this._syntheticEvent.stopPropagation();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
setSyntheticEvent(value: mixed): void {
|
|
225
|
+
this._syntheticEvent = value;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Assertion magic for polyfill follows.
|
|
230
|
+
declare var checkEvent: Event;
|
|
231
|
+
|
|
232
|
+
/*::
|
|
233
|
+
// This can be a strict mode error at runtime so put it in a Flow comment.
|
|
234
|
+
(checkEvent: IEvent);
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
global.Event = EventPolyfill;
|
|
238
|
+
|
|
239
|
+
export default EventPolyfill;
|
|
@@ -306,12 +306,6 @@ Image.queryCache = queryCache;
|
|
|
306
306
|
* comment and run Flow. */
|
|
307
307
|
Image.resolveAssetSource = resolveAssetSource;
|
|
308
308
|
|
|
309
|
-
/**
|
|
310
|
-
* Switch to `deprecated-react-native-prop-types` for compatibility with future
|
|
311
|
-
* releases. This is deprecated and will be removed in the future.
|
|
312
|
-
*/
|
|
313
|
-
Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
|
|
314
|
-
|
|
315
309
|
const styles = StyleSheet.create({
|
|
316
310
|
base: {
|
|
317
311
|
overflow: 'hidden',
|
|
@@ -232,12 +232,6 @@ Image.queryCache = queryCache;
|
|
|
232
232
|
* delete this comment and run Flow. */
|
|
233
233
|
Image.resolveAssetSource = resolveAssetSource;
|
|
234
234
|
|
|
235
|
-
/**
|
|
236
|
-
* Switch to `deprecated-react-native-prop-types` for compatibility with future
|
|
237
|
-
* releases. This is deprecated and will be removed in the future.
|
|
238
|
-
*/
|
|
239
|
-
Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
|
|
240
|
-
|
|
241
235
|
const styles = StyleSheet.create({
|
|
242
236
|
base: {
|
|
243
237
|
overflow: 'hidden',
|
|
@@ -164,7 +164,7 @@ let Image = (props: ImagePropsType, forwardedRef) => {
|
|
|
164
164
|
return (
|
|
165
165
|
// [Win32
|
|
166
166
|
<TextAncestor.Consumer>
|
|
167
|
-
{
|
|
167
|
+
{hasTextAncestor => {
|
|
168
168
|
invariant(
|
|
169
169
|
!hasTextAncestor,
|
|
170
170
|
'Nesting of <Image> within <Text> is not currently supported.',
|
|
@@ -173,7 +173,7 @@ let Image = (props: ImagePropsType, forwardedRef) => {
|
|
|
173
173
|
|
|
174
174
|
return (
|
|
175
175
|
<ImageAnalyticsTagContext.Consumer>
|
|
176
|
-
{
|
|
176
|
+
{analyticTag => {
|
|
177
177
|
return (
|
|
178
178
|
<ImageViewNativeComponent
|
|
179
179
|
{...props}
|
|
@@ -267,12 +267,6 @@ Image.queryCache = queryCache;
|
|
|
267
267
|
* delete this comment and run Flow. */
|
|
268
268
|
Image.resolveAssetSource = resolveAssetSource;
|
|
269
269
|
|
|
270
|
-
/**
|
|
271
|
-
* Switch to `deprecated-react-native-prop-types` for compatibility with future
|
|
272
|
-
* releases. This is deprecated and will be removed in the future.
|
|
273
|
-
*/
|
|
274
|
-
Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
|
|
275
|
-
|
|
276
270
|
const styles = StyleSheet.create({
|
|
277
271
|
base: {
|
|
278
272
|
overflow: 'hidden',
|
|
@@ -12,7 +12,11 @@ import type {ResolvedAssetSource} from './AssetSourceResolver';
|
|
|
12
12
|
import type {ImageProps} from './ImageProps';
|
|
13
13
|
import type {ViewProps} from '../Components/View/ViewPropTypes';
|
|
14
14
|
import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';
|
|
15
|
-
import
|
|
15
|
+
import {ConditionallyIgnoredEventHandlers} from '../NativeComponent/ViewConfigIgnore';
|
|
16
|
+
import type {
|
|
17
|
+
HostComponent,
|
|
18
|
+
PartialViewConfig,
|
|
19
|
+
} from '../Renderer/shims/ReactNativeTypes';
|
|
16
20
|
import type {
|
|
17
21
|
ColorValue,
|
|
18
22
|
DangerouslyImpreciseStyle,
|
|
@@ -37,7 +41,7 @@ type Props = $ReadOnly<{
|
|
|
37
41
|
loadingIndicatorSrc?: ?string,
|
|
38
42
|
}>;
|
|
39
43
|
|
|
40
|
-
const
|
|
44
|
+
export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
|
|
41
45
|
Platform.OS === 'android'
|
|
42
46
|
? {
|
|
43
47
|
uiViewClassName: 'RCTImageView',
|
|
@@ -125,10 +129,21 @@ const ImageViewViewConfig =
|
|
|
125
129
|
tintColor: {
|
|
126
130
|
process: require('../StyleSheet/processColor'),
|
|
127
131
|
},
|
|
132
|
+
...ConditionallyIgnoredEventHandlers({
|
|
133
|
+
onLoadStart: true,
|
|
134
|
+
onLoad: true,
|
|
135
|
+
onLoadEnd: true,
|
|
136
|
+
onProgress: true,
|
|
137
|
+
onError: true,
|
|
138
|
+
onPartialLoad: true,
|
|
139
|
+
}),
|
|
128
140
|
},
|
|
129
141
|
};
|
|
130
142
|
|
|
131
143
|
const ImageViewNativeComponent: HostComponent<Props> =
|
|
132
|
-
NativeComponentRegistry.get<Props>(
|
|
144
|
+
NativeComponentRegistry.get<Props>(
|
|
145
|
+
'RCTImageView',
|
|
146
|
+
() => __INTERNAL_VIEW_CONFIG,
|
|
147
|
+
);
|
|
133
148
|
|
|
134
149
|
export default ImageViewNativeComponent;
|
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import type {
|
|
13
|
+
import type {
|
|
14
|
+
HostComponent,
|
|
15
|
+
PartialViewConfig,
|
|
16
|
+
} from '../Renderer/shims/ReactNativeTypes';
|
|
14
17
|
import type {ViewProps} from '../Components/View/ViewPropTypes';
|
|
15
18
|
import type {ImageResizeMode} from './ImageResizeMode';
|
|
16
19
|
import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';
|
|
@@ -24,19 +27,24 @@ type NativeProps = $ReadOnly<{
|
|
|
24
27
|
headers?: ?{[string]: string},
|
|
25
28
|
}>;
|
|
26
29
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
process: require('../StyleSheet/processColor'),
|
|
37
|
-
},
|
|
38
|
-
headers: true,
|
|
30
|
+
export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
|
|
31
|
+
uiViewClassName: 'RCTTextInlineImage',
|
|
32
|
+
bubblingEventTypes: {},
|
|
33
|
+
directEventTypes: {},
|
|
34
|
+
validAttributes: {
|
|
35
|
+
resizeMode: true,
|
|
36
|
+
src: true,
|
|
37
|
+
tintColor: {
|
|
38
|
+
process: require('../StyleSheet/processColor'),
|
|
39
39
|
},
|
|
40
|
-
|
|
40
|
+
headers: true,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const TextInlineImage: HostComponent<NativeProps> =
|
|
45
|
+
NativeComponentRegistry.get<NativeProps>(
|
|
46
|
+
'RCTTextInlineImage',
|
|
47
|
+
() => __INTERNAL_VIEW_CONFIG,
|
|
48
|
+
);
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
export default TextInlineImage;
|
|
@@ -111,7 +111,7 @@ class AssetResolverLateScaleResolution {
|
|
|
111
111
|
|
|
112
112
|
// We should leave the resource scale out of the URI, and do that lookup on the native side.
|
|
113
113
|
// That way we can handle dynamic dpi changes and multimon scenarios better
|
|
114
|
-
resolveAssetSource.setCustomSourceTransformer(
|
|
114
|
+
resolveAssetSource.setCustomSourceTransformer(resolver => {
|
|
115
115
|
const lsrResolver = new AssetResolverLateScaleResolution(resolver);
|
|
116
116
|
return lsrResolver.defaultAsset();
|
|
117
117
|
});
|
|
@@ -19,6 +19,7 @@ const React = require('react');
|
|
|
19
19
|
const ReactNative = require('../Renderer/shims/ReactNative');
|
|
20
20
|
const StyleSheet = require('../StyleSheet/StyleSheet');
|
|
21
21
|
const View = require('../Components/View/View');
|
|
22
|
+
const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
|
|
22
23
|
|
|
23
24
|
const invariant = require('invariant');
|
|
24
25
|
|
|
@@ -47,10 +48,7 @@ const renderers = findRenderers();
|
|
|
47
48
|
// Required for React DevTools to view/edit React Native styles in Flipper.
|
|
48
49
|
// Flipper doesn't inject these values when initializing DevTools.
|
|
49
50
|
hook.resolveRNStyle = require('../StyleSheet/flattenStyle');
|
|
50
|
-
|
|
51
|
-
hook.nativeStyleEditorValidAttributes = Object.keys(
|
|
52
|
-
viewConfig.validAttributes.style,
|
|
53
|
-
);
|
|
51
|
+
hook.nativeStyleEditorValidAttributes = Object.keys(ReactNativeStyleAttributes);
|
|
54
52
|
|
|
55
53
|
function findRenderers(): $ReadOnlyArray<ReactRenderer> {
|
|
56
54
|
const allRenderers = Array.from(hook.renderers.values());
|
|
@@ -19,6 +19,7 @@ const React = require('react');
|
|
|
19
19
|
const ReactNative = require('../Renderer/shims/ReactNative');
|
|
20
20
|
const StyleSheet = require('../StyleSheet/StyleSheet');
|
|
21
21
|
const View = require('../Components/View/View');
|
|
22
|
+
const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
|
|
22
23
|
|
|
23
24
|
const invariant = require('invariant');
|
|
24
25
|
|
|
@@ -49,10 +50,7 @@ const renderers = findRenderers();
|
|
|
49
50
|
// Required for React DevTools to view/edit React Native styles in Flipper.
|
|
50
51
|
// Flipper doesn't inject these values when initializing DevTools.
|
|
51
52
|
hook.resolveRNStyle = require('../StyleSheet/flattenStyle');
|
|
52
|
-
|
|
53
|
-
hook.nativeStyleEditorValidAttributes = Object.keys(
|
|
54
|
-
viewConfig.validAttributes.style,
|
|
55
|
-
);
|
|
53
|
+
hook.nativeStyleEditorValidAttributes = Object.keys(ReactNativeStyleAttributes);
|
|
56
54
|
|
|
57
55
|
function findRenderers(): $ReadOnlyArray<ReactRenderer> {
|
|
58
56
|
const allRenderers = Array.from(hook.renderers.values());
|
|
@@ -77,7 +75,7 @@ function getInspectorDataForViewAtPoint(
|
|
|
77
75
|
inspectedView,
|
|
78
76
|
locationX,
|
|
79
77
|
locationY,
|
|
80
|
-
|
|
78
|
+
viewData => {
|
|
81
79
|
// Only return with non-empty view data since only one renderer will have this view.
|
|
82
80
|
if (viewData && viewData.hierarchy.length > 0) {
|
|
83
81
|
callback(viewData);
|
|
@@ -137,7 +135,7 @@ class Inspector extends React.Component<
|
|
|
137
135
|
|
|
138
136
|
componentWillUnmount() {
|
|
139
137
|
if (this._subs) {
|
|
140
|
-
this._subs.map(
|
|
138
|
+
this._subs.map(fn => fn());
|
|
141
139
|
}
|
|
142
140
|
hook.off('react-devtools', this._attachToDevtools);
|
|
143
141
|
this._setTouchedViewData = null;
|
|
@@ -222,7 +220,7 @@ class Inspector extends React.Component<
|
|
|
222
220
|
}
|
|
223
221
|
|
|
224
222
|
onTouchPoint(locationX: number, locationY: number) {
|
|
225
|
-
this._setTouchedViewData =
|
|
223
|
+
this._setTouchedViewData = viewData => {
|
|
226
224
|
const {
|
|
227
225
|
hierarchy,
|
|
228
226
|
props,
|
|
@@ -263,7 +261,7 @@ class Inspector extends React.Component<
|
|
|
263
261
|
this.state.inspectedView,
|
|
264
262
|
locationX,
|
|
265
263
|
locationY,
|
|
266
|
-
|
|
264
|
+
viewData => {
|
|
267
265
|
if (this._setTouchedViewData != null) {
|
|
268
266
|
this._setTouchedViewData(viewData);
|
|
269
267
|
this._setTouchedViewData = null;
|
|
@@ -290,7 +288,7 @@ class Inspector extends React.Component<
|
|
|
290
288
|
|
|
291
289
|
setTouchTargeting(val: boolean) {
|
|
292
290
|
PressabilityDebug.setEnabled(val);
|
|
293
|
-
this.props.onRequestRerenderApp(
|
|
291
|
+
this.props.onRequestRerenderApp(inspectedView => {
|
|
294
292
|
this.setState({inspectedView});
|
|
295
293
|
});
|
|
296
294
|
}
|
|
@@ -10,14 +10,15 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
import type {SpyData} from '../BatchedBridge/MessageQueue';
|
|
13
14
|
const JSEventLoopWatchdog = require('./JSEventLoopWatchdog');
|
|
14
|
-
const MessageQueue = require('../BatchedBridge/MessageQueue');
|
|
15
15
|
|
|
16
|
+
const MessageQueue = require('../BatchedBridge/MessageQueue');
|
|
16
17
|
const infoLog = require('../Utilities/infoLog');
|
|
17
18
|
|
|
18
19
|
const BridgeSpyStallHandler = {
|
|
19
20
|
register: function () {
|
|
20
|
-
let spyBuffer = [];
|
|
21
|
+
let spyBuffer: Array<SpyData> = [];
|
|
21
22
|
MessageQueue.spy(data => {
|
|
22
23
|
spyBuffer.push(data);
|
|
23
24
|
});
|
|
@@ -27,7 +28,7 @@ const BridgeSpyStallHandler = {
|
|
|
27
28
|
infoLog(
|
|
28
29
|
spyBuffer.length + ' bridge messages during stall: ',
|
|
29
30
|
spyBuffer.map(info => {
|
|
30
|
-
let args = '<args>';
|
|
31
|
+
let args: string | Array<?string> = '<args>';
|
|
31
32
|
try {
|
|
32
33
|
args = JSON.stringify(info.args);
|
|
33
34
|
} catch (e1) {
|
|
@@ -91,7 +91,6 @@ const InteractionManager = {
|
|
|
91
91
|
onFulfill?: ?(void) => ?(Promise<U> | U),
|
|
92
92
|
onReject?: ?(error: mixed) => ?(Promise<U> | U),
|
|
93
93
|
) => Promise<U>,
|
|
94
|
-
done: () => void,
|
|
95
94
|
cancel: () => void,
|
|
96
95
|
...
|
|
97
96
|
} {
|
|
@@ -110,16 +109,6 @@ const InteractionManager = {
|
|
|
110
109
|
return {
|
|
111
110
|
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
112
111
|
then: promise.then.bind(promise),
|
|
113
|
-
done: (...args) => {
|
|
114
|
-
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
115
|
-
if (promise.done) {
|
|
116
|
-
return promise.done(...args);
|
|
117
|
-
} else {
|
|
118
|
-
console.warn(
|
|
119
|
-
'Tried to call done when not supported by current Promise implementation.',
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
112
|
cancel: function () {
|
|
124
113
|
_taskQueue.cancelTasks(tasks);
|
|
125
114
|
},
|
|
@@ -165,7 +154,7 @@ const _interactionSet = new Set();
|
|
|
165
154
|
const _addInteractionSet = new Set();
|
|
166
155
|
const _deleteInteractionSet = new Set();
|
|
167
156
|
const _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});
|
|
168
|
-
let _nextUpdateHandle = 0;
|
|
157
|
+
let _nextUpdateHandle: $FlowFixMe | TimeoutID = 0;
|
|
169
158
|
let _inc = 0;
|
|
170
159
|
let _deadline = -1;
|
|
171
160
|
|
|
@@ -171,10 +171,11 @@ class TaskQueue {
|
|
|
171
171
|
this.hasTasksToProcess() && this._onMoreTasks();
|
|
172
172
|
})
|
|
173
173
|
.catch(ex => {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
setTimeout(() => {
|
|
175
|
+
ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;
|
|
176
|
+
throw ex;
|
|
177
|
+
}, 0);
|
|
178
|
+
});
|
|
178
179
|
}
|
|
179
180
|
}
|
|
180
181
|
|
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
} from '../Renderer/shims/ReactNativeTypes';
|
|
20
20
|
|
|
21
21
|
import Platform from '../Utilities/Platform';
|
|
22
|
+
import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
|
|
22
23
|
|
|
23
24
|
// Reexport type
|
|
24
25
|
export type LayoutAnimationConfig = LayoutAnimationConfig_;
|
|
@@ -26,6 +27,13 @@ export type LayoutAnimationConfig = LayoutAnimationConfig_;
|
|
|
26
27
|
type OnAnimationDidEndCallback = () => void;
|
|
27
28
|
type OnAnimationDidFailCallback = () => void;
|
|
28
29
|
|
|
30
|
+
let isLayoutAnimationEnabled: boolean =
|
|
31
|
+
ReactNativeFeatureFlags.isLayoutAnimationEnabled();
|
|
32
|
+
|
|
33
|
+
function setEnabled(value: boolean) {
|
|
34
|
+
isLayoutAnimationEnabled = isLayoutAnimationEnabled;
|
|
35
|
+
}
|
|
36
|
+
|
|
29
37
|
/**
|
|
30
38
|
* Configures the next commit to be animated.
|
|
31
39
|
*
|
|
@@ -43,6 +51,10 @@ function configureNext(
|
|
|
43
51
|
return;
|
|
44
52
|
}
|
|
45
53
|
|
|
54
|
+
if (!isLayoutAnimationEnabled) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
46
58
|
// Since LayoutAnimations may possibly be disabled for now on iOS (Fabric),
|
|
47
59
|
// or Android (non-Fabric) we race a setTimeout with animation completion,
|
|
48
60
|
// in case onComplete is never called
|
|
@@ -181,6 +193,7 @@ const LayoutAnimation = {
|
|
|
181
193
|
spring: (configureNext.bind(null, Presets.spring): (
|
|
182
194
|
onAnimationDidEnd?: OnAnimationDidEndCallback,
|
|
183
195
|
) => void),
|
|
196
|
+
setEnabled,
|
|
184
197
|
};
|
|
185
198
|
|
|
186
199
|
module.exports = LayoutAnimation;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @flow strict-local
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import type {EventSubscription} from '../vendor/emitter/EventEmitter';
|
|
12
12
|
import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
|
|
13
13
|
import InteractionManager from '../Interaction/InteractionManager';
|
|
14
14
|
import Platform from '../Utilities/Platform';
|