@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,334 @@
|
|
|
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
|
+
import {
|
|
12
|
+
DynamicallyInjectedByGestureHandler,
|
|
13
|
+
ConditionallyIgnoredEventHandlers,
|
|
14
|
+
} from './ViewConfigIgnore';
|
|
15
|
+
import ReactNativeStyleAttributes from '../Components/View/ReactNativeStyleAttributes';
|
|
16
|
+
import type {PartialViewConfigWithoutName} from './PlatformBaseViewConfig';
|
|
17
|
+
|
|
18
|
+
const bubblingEventTypes = {
|
|
19
|
+
// Generic Events
|
|
20
|
+
topPress: {
|
|
21
|
+
phasedRegistrationNames: {
|
|
22
|
+
bubbled: 'onPress',
|
|
23
|
+
captured: 'onPressCapture',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
topChange: {
|
|
27
|
+
phasedRegistrationNames: {
|
|
28
|
+
bubbled: 'onChange',
|
|
29
|
+
captured: 'onChangeCapture',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
topFocus: {
|
|
33
|
+
phasedRegistrationNames: {
|
|
34
|
+
bubbled: 'onFocus',
|
|
35
|
+
captured: 'onFocusCapture',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
topBlur: {
|
|
39
|
+
phasedRegistrationNames: {
|
|
40
|
+
bubbled: 'onBlur',
|
|
41
|
+
captured: 'onBlurCapture',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
topSubmitEditing: {
|
|
45
|
+
phasedRegistrationNames: {
|
|
46
|
+
bubbled: 'onSubmitEditing',
|
|
47
|
+
captured: 'onSubmitEditingCapture',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
topEndEditing: {
|
|
51
|
+
phasedRegistrationNames: {
|
|
52
|
+
bubbled: 'onEndEditing',
|
|
53
|
+
captured: 'onEndEditingCapture',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
topKeyPress: {
|
|
57
|
+
phasedRegistrationNames: {
|
|
58
|
+
bubbled: 'onKeyPress',
|
|
59
|
+
captured: 'onKeyPressCapture',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
// Touch Events
|
|
64
|
+
topTouchStart: {
|
|
65
|
+
phasedRegistrationNames: {
|
|
66
|
+
bubbled: 'onTouchStart',
|
|
67
|
+
captured: 'onTouchStartCapture',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
topTouchMove: {
|
|
71
|
+
phasedRegistrationNames: {
|
|
72
|
+
bubbled: 'onTouchMove',
|
|
73
|
+
captured: 'onTouchMoveCapture',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
topTouchCancel: {
|
|
77
|
+
phasedRegistrationNames: {
|
|
78
|
+
bubbled: 'onTouchCancel',
|
|
79
|
+
captured: 'onTouchCancelCapture',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
topTouchEnd: {
|
|
83
|
+
phasedRegistrationNames: {
|
|
84
|
+
bubbled: 'onTouchEnd',
|
|
85
|
+
captured: 'onTouchEndCapture',
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
// Experimental/Work in Progress Pointer Events (not yet ready for use)
|
|
90
|
+
topPointerCancel: {
|
|
91
|
+
phasedRegistrationNames: {
|
|
92
|
+
captured: 'onPointerCancelCapture',
|
|
93
|
+
bubbled: 'onPointerCancel',
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
topPointerDown: {
|
|
97
|
+
phasedRegistrationNames: {
|
|
98
|
+
captured: 'onPointerDownCapture',
|
|
99
|
+
bubbled: 'onPointerDown',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
topPointerMove2: {
|
|
103
|
+
phasedRegistrationNames: {
|
|
104
|
+
captured: 'onPointerMove2Capture',
|
|
105
|
+
bubbled: 'onPointerMove2',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
topPointerUp: {
|
|
109
|
+
phasedRegistrationNames: {
|
|
110
|
+
captured: 'onPointerUpCapture',
|
|
111
|
+
bubbled: 'onPointerUp',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
topPointerEnter2: {
|
|
115
|
+
phasedRegistrationNames: {
|
|
116
|
+
captured: 'onPointerEnter2Capture',
|
|
117
|
+
bubbled: 'onPointerEnter2',
|
|
118
|
+
skipBubbling: true,
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
topPointerLeave2: {
|
|
122
|
+
phasedRegistrationNames: {
|
|
123
|
+
captured: 'onPointerLeave2Capture',
|
|
124
|
+
bubbled: 'onPointerLeave2',
|
|
125
|
+
skipBubbling: true,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const directEventTypes = {
|
|
131
|
+
topAccessibilityAction: {
|
|
132
|
+
registrationName: 'onAccessibilityAction',
|
|
133
|
+
},
|
|
134
|
+
topAccessibilityTap: {
|
|
135
|
+
registrationName: 'onAccessibilityTap',
|
|
136
|
+
},
|
|
137
|
+
topMagicTap: {
|
|
138
|
+
registrationName: 'onMagicTap',
|
|
139
|
+
},
|
|
140
|
+
topAccessibilityEscape: {
|
|
141
|
+
registrationName: 'onAccessibilityEscape',
|
|
142
|
+
},
|
|
143
|
+
topLayout: {
|
|
144
|
+
registrationName: 'onLayout',
|
|
145
|
+
},
|
|
146
|
+
onGestureHandlerEvent: DynamicallyInjectedByGestureHandler({
|
|
147
|
+
registrationName: 'onGestureHandlerEvent',
|
|
148
|
+
}),
|
|
149
|
+
onGestureHandlerStateChange: DynamicallyInjectedByGestureHandler({
|
|
150
|
+
registrationName: 'onGestureHandlerStateChange',
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const validAttributesForNonEventProps = {
|
|
155
|
+
// View Props
|
|
156
|
+
accessible: true,
|
|
157
|
+
accessibilityActions: true,
|
|
158
|
+
accessibilityLabel: true,
|
|
159
|
+
accessibilityHint: true,
|
|
160
|
+
accessibilityLanguage: true,
|
|
161
|
+
accessibilityValue: true,
|
|
162
|
+
accessibilityViewIsModal: true,
|
|
163
|
+
accessibilityElementsHidden: true,
|
|
164
|
+
accessibilityIgnoresInvertColors: true,
|
|
165
|
+
testID: true,
|
|
166
|
+
backgroundColor: {process: require('../StyleSheet/processColor')},
|
|
167
|
+
backfaceVisibility: true,
|
|
168
|
+
opacity: true,
|
|
169
|
+
shadowColor: {process: require('../StyleSheet/processColor')},
|
|
170
|
+
shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
|
|
171
|
+
shadowOpacity: true,
|
|
172
|
+
shadowRadius: true,
|
|
173
|
+
needsOffscreenAlphaCompositing: true,
|
|
174
|
+
overflow: true,
|
|
175
|
+
shouldRasterizeIOS: true,
|
|
176
|
+
transform: {diff: require('../Utilities/differ/matricesDiffer')},
|
|
177
|
+
accessibilityRole: true,
|
|
178
|
+
accessibilityState: true,
|
|
179
|
+
nativeID: true,
|
|
180
|
+
pointerEvents: true,
|
|
181
|
+
removeClippedSubviews: true,
|
|
182
|
+
borderRadius: true,
|
|
183
|
+
borderColor: {process: require('../StyleSheet/processColor')},
|
|
184
|
+
borderWidth: true,
|
|
185
|
+
borderStyle: true,
|
|
186
|
+
hitSlop: {diff: require('../Utilities/differ/insetsDiffer')},
|
|
187
|
+
collapsable: true,
|
|
188
|
+
|
|
189
|
+
borderTopWidth: true,
|
|
190
|
+
borderTopColor: {process: require('../StyleSheet/processColor')},
|
|
191
|
+
borderRightWidth: true,
|
|
192
|
+
borderRightColor: {process: require('../StyleSheet/processColor')},
|
|
193
|
+
borderBottomWidth: true,
|
|
194
|
+
borderBottomColor: {process: require('../StyleSheet/processColor')},
|
|
195
|
+
borderLeftWidth: true,
|
|
196
|
+
borderLeftColor: {process: require('../StyleSheet/processColor')},
|
|
197
|
+
borderStartWidth: true,
|
|
198
|
+
borderStartColor: {process: require('../StyleSheet/processColor')},
|
|
199
|
+
borderEndWidth: true,
|
|
200
|
+
borderEndColor: {process: require('../StyleSheet/processColor')},
|
|
201
|
+
|
|
202
|
+
borderTopLeftRadius: true,
|
|
203
|
+
borderTopRightRadius: true,
|
|
204
|
+
borderTopStartRadius: true,
|
|
205
|
+
borderTopEndRadius: true,
|
|
206
|
+
borderBottomLeftRadius: true,
|
|
207
|
+
borderBottomRightRadius: true,
|
|
208
|
+
borderBottomStartRadius: true,
|
|
209
|
+
borderBottomEndRadius: true,
|
|
210
|
+
display: true,
|
|
211
|
+
zIndex: true,
|
|
212
|
+
|
|
213
|
+
// ShadowView properties
|
|
214
|
+
top: true,
|
|
215
|
+
right: true,
|
|
216
|
+
start: true,
|
|
217
|
+
end: true,
|
|
218
|
+
bottom: true,
|
|
219
|
+
left: true,
|
|
220
|
+
|
|
221
|
+
width: true,
|
|
222
|
+
height: true,
|
|
223
|
+
|
|
224
|
+
minWidth: true,
|
|
225
|
+
maxWidth: true,
|
|
226
|
+
minHeight: true,
|
|
227
|
+
maxHeight: true,
|
|
228
|
+
|
|
229
|
+
// Also declared as ViewProps
|
|
230
|
+
// borderTopWidth: true,
|
|
231
|
+
// borderRightWidth: true,
|
|
232
|
+
// borderBottomWidth: true,
|
|
233
|
+
// borderLeftWidth: true,
|
|
234
|
+
// borderStartWidth: true,
|
|
235
|
+
// borderEndWidth: true,
|
|
236
|
+
// borderWidth: true,
|
|
237
|
+
|
|
238
|
+
marginTop: true,
|
|
239
|
+
marginRight: true,
|
|
240
|
+
marginBottom: true,
|
|
241
|
+
marginLeft: true,
|
|
242
|
+
marginStart: true,
|
|
243
|
+
marginEnd: true,
|
|
244
|
+
marginVertical: true,
|
|
245
|
+
marginHorizontal: true,
|
|
246
|
+
margin: true,
|
|
247
|
+
|
|
248
|
+
paddingTop: true,
|
|
249
|
+
paddingRight: true,
|
|
250
|
+
paddingBottom: true,
|
|
251
|
+
paddingLeft: true,
|
|
252
|
+
paddingStart: true,
|
|
253
|
+
paddingEnd: true,
|
|
254
|
+
paddingVertical: true,
|
|
255
|
+
paddingHorizontal: true,
|
|
256
|
+
padding: true,
|
|
257
|
+
|
|
258
|
+
flex: true,
|
|
259
|
+
flexGrow: true,
|
|
260
|
+
flexShrink: true,
|
|
261
|
+
flexBasis: true,
|
|
262
|
+
flexDirection: true,
|
|
263
|
+
flexWrap: true,
|
|
264
|
+
justifyContent: true,
|
|
265
|
+
alignItems: true,
|
|
266
|
+
alignSelf: true,
|
|
267
|
+
alignContent: true,
|
|
268
|
+
position: true,
|
|
269
|
+
aspectRatio: true,
|
|
270
|
+
|
|
271
|
+
// Also declared as ViewProps
|
|
272
|
+
// overflow: true,
|
|
273
|
+
// display: true,
|
|
274
|
+
|
|
275
|
+
direction: true,
|
|
276
|
+
|
|
277
|
+
style: ReactNativeStyleAttributes,
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
// Props for bubbling and direct events
|
|
281
|
+
const validAttributesForEventProps = ConditionallyIgnoredEventHandlers({
|
|
282
|
+
onLayout: true,
|
|
283
|
+
onMagicTap: true,
|
|
284
|
+
|
|
285
|
+
// Accessibility
|
|
286
|
+
onAccessibilityAction: true,
|
|
287
|
+
onAccessibilityEscape: true,
|
|
288
|
+
onAccessibilityTap: true,
|
|
289
|
+
|
|
290
|
+
// PanResponder handlers
|
|
291
|
+
onMoveShouldSetResponder: true,
|
|
292
|
+
onMoveShouldSetResponderCapture: true,
|
|
293
|
+
onStartShouldSetResponder: true,
|
|
294
|
+
onStartShouldSetResponderCapture: true,
|
|
295
|
+
onResponderGrant: true,
|
|
296
|
+
onResponderReject: true,
|
|
297
|
+
onResponderStart: true,
|
|
298
|
+
onResponderEnd: true,
|
|
299
|
+
onResponderRelease: true,
|
|
300
|
+
onResponderMove: true,
|
|
301
|
+
onResponderTerminate: true,
|
|
302
|
+
onResponderTerminationRequest: true,
|
|
303
|
+
onShouldBlockNativeResponder: true,
|
|
304
|
+
|
|
305
|
+
// Touch events
|
|
306
|
+
onTouchStart: true,
|
|
307
|
+
onTouchMove: true,
|
|
308
|
+
onTouchEnd: true,
|
|
309
|
+
onTouchCancel: true,
|
|
310
|
+
|
|
311
|
+
// Pointer events
|
|
312
|
+
onPointerUp: true,
|
|
313
|
+
onPointerDown: true,
|
|
314
|
+
onPointerCancel: true,
|
|
315
|
+
onPointerEnter2: true,
|
|
316
|
+
onPointerMove2: true,
|
|
317
|
+
onPointerLeave2: true,
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* On iOS, view managers define all of a component's props.
|
|
322
|
+
* All view managers extend RCTViewManager, and RCTViewManager declares these props.
|
|
323
|
+
*/
|
|
324
|
+
const PlatformBaseViewConfigWindows: PartialViewConfigWithoutName = {
|
|
325
|
+
bubblingEventTypes,
|
|
326
|
+
directEventTypes,
|
|
327
|
+
validAttributes: {
|
|
328
|
+
...validAttributesForNonEventProps,
|
|
329
|
+
...validAttributesForEventProps,
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
// [Windows
|
|
333
|
+
export default PlatformBaseViewConfigWindows;
|
|
334
|
+
// Windows]
|
|
@@ -23,8 +23,6 @@ import * as React from 'react';
|
|
|
23
23
|
|
|
24
24
|
let getRuntimeConfig;
|
|
25
25
|
|
|
26
|
-
let componentNameToExists: Map<string, boolean> = new Map();
|
|
27
|
-
|
|
28
26
|
/**
|
|
29
27
|
* Configures a function that is called to determine whether a given component
|
|
30
28
|
* should be registered using reflection of the native component at runtime.
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
import type {PartialViewConfig} from '../Renderer/shims/ReactNativeTypes';
|
|
12
|
+
import BaseViewConfig from './BaseViewConfig';
|
|
13
|
+
|
|
14
|
+
export type PartialViewConfigWithoutName = $Rest<
|
|
15
|
+
PartialViewConfig,
|
|
16
|
+
{uiViewClassName: string},
|
|
17
|
+
>;
|
|
18
|
+
|
|
19
|
+
const PlatformBaseViewConfig: PartialViewConfigWithoutName = BaseViewConfig;
|
|
20
|
+
|
|
21
|
+
// In Wilde/FB4A, use RNHostComponentListRoute in Bridge mode to verify
|
|
22
|
+
// whether the JS props defined here match the native props defined
|
|
23
|
+
// in RCTViewManagers in iOS, and ViewManagers in Android.
|
|
24
|
+
export default PlatformBaseViewConfig;
|
|
@@ -9,12 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import {type ViewConfig} from '../Renderer/shims/ReactNativeTypes';
|
|
12
|
-
|
|
13
|
-
import getNativeComponentAttributes from '../ReactNative/getNativeComponentAttributes';
|
|
14
|
-
// $FlowFixMe[nonstrict-import]
|
|
15
|
-
import {createViewConfig} from './ViewConfig';
|
|
12
|
+
import {isIgnored} from './ViewConfigIgnore';
|
|
16
13
|
|
|
17
|
-
type Difference =
|
|
14
|
+
export type Difference =
|
|
18
15
|
| {
|
|
19
16
|
type: 'missing',
|
|
20
17
|
path: Array<string>,
|
|
@@ -32,7 +29,7 @@ type Difference =
|
|
|
32
29
|
staticValue: mixed,
|
|
33
30
|
};
|
|
34
31
|
|
|
35
|
-
type ValidationResult = ValidResult | InvalidResult;
|
|
32
|
+
export type ValidationResult = ValidResult | InvalidResult;
|
|
36
33
|
type ValidResult = {
|
|
37
34
|
type: 'valid',
|
|
38
35
|
};
|
|
@@ -41,41 +38,6 @@ type InvalidResult = {
|
|
|
41
38
|
differences: Array<Difference>,
|
|
42
39
|
};
|
|
43
40
|
|
|
44
|
-
type ViewConfigValidationResult = {
|
|
45
|
-
componentName: string,
|
|
46
|
-
nativeViewConfig?: ?ViewConfig,
|
|
47
|
-
staticViewConfig?: ?ViewConfig,
|
|
48
|
-
validationResult?: ?ValidationResult,
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// e.g. require('MyNativeComponent') where MyNativeComponent.js exports a HostComponent
|
|
52
|
-
type JSModule = $FlowFixMe;
|
|
53
|
-
|
|
54
|
-
export function validateStaticViewConfigs(
|
|
55
|
-
nativeComponent: JSModule,
|
|
56
|
-
): ViewConfigValidationResult {
|
|
57
|
-
const nativeViewConfig = getNativeComponentAttributes(
|
|
58
|
-
nativeComponent.default || nativeComponent,
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
const generatedPartialViewConfig = nativeComponent.__INTERNAL_VIEW_CONFIG;
|
|
62
|
-
const staticViewConfig: ?ViewConfig =
|
|
63
|
-
generatedPartialViewConfig && createViewConfig(generatedPartialViewConfig);
|
|
64
|
-
|
|
65
|
-
const componentName: string = nativeComponent.default || nativeComponent;
|
|
66
|
-
const validationResult: ?ValidationResult =
|
|
67
|
-
nativeViewConfig &&
|
|
68
|
-
staticViewConfig &&
|
|
69
|
-
validate(componentName, nativeViewConfig, staticViewConfig);
|
|
70
|
-
|
|
71
|
-
return {
|
|
72
|
-
componentName,
|
|
73
|
-
nativeViewConfig,
|
|
74
|
-
staticViewConfig,
|
|
75
|
-
validationResult,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
41
|
/**
|
|
80
42
|
* During the migration from native view configs to static view configs, this is
|
|
81
43
|
* used to validate that the two are equivalent.
|
|
@@ -183,7 +145,10 @@ function accumulateDifferences(
|
|
|
183
145
|
}
|
|
184
146
|
|
|
185
147
|
for (const staticKey in staticObject) {
|
|
186
|
-
if (
|
|
148
|
+
if (
|
|
149
|
+
!nativeObject.hasOwnProperty(staticKey) &&
|
|
150
|
+
!isIgnored(staticObject[staticKey])
|
|
151
|
+
) {
|
|
187
152
|
differences.push({
|
|
188
153
|
path: [...path, staticKey],
|
|
189
154
|
type: 'unexpected',
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import ReactNativeViewViewConfig from '../Components/View/ReactNativeViewViewConfig';
|
|
12
11
|
import type {
|
|
13
12
|
PartialViewConfig,
|
|
14
13
|
ViewConfig,
|
|
15
14
|
} from '../Renderer/shims/ReactNativeTypes';
|
|
15
|
+
import PlatformBaseViewConfig from './PlatformBaseViewConfig';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Creates a complete `ViewConfig` from a `PartialViewConfig`.
|
|
@@ -24,16 +24,16 @@ export function createViewConfig(
|
|
|
24
24
|
uiViewClassName: partialViewConfig.uiViewClassName,
|
|
25
25
|
Commands: {},
|
|
26
26
|
bubblingEventTypes: composeIndexers(
|
|
27
|
-
|
|
27
|
+
PlatformBaseViewConfig.bubblingEventTypes,
|
|
28
28
|
partialViewConfig.bubblingEventTypes,
|
|
29
29
|
),
|
|
30
30
|
directEventTypes: composeIndexers(
|
|
31
|
-
|
|
31
|
+
PlatformBaseViewConfig.directEventTypes,
|
|
32
32
|
partialViewConfig.directEventTypes,
|
|
33
33
|
),
|
|
34
34
|
validAttributes: composeIndexers(
|
|
35
35
|
// $FlowFixMe[incompatible-call] `style` property confuses Flow.
|
|
36
|
-
|
|
36
|
+
PlatformBaseViewConfig.validAttributes,
|
|
37
37
|
// $FlowFixMe[incompatible-call] `style` property confuses Flow.
|
|
38
38
|
partialViewConfig.validAttributes,
|
|
39
39
|
),
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import Platform from '../Utilities/Platform';
|
|
12
|
+
|
|
13
|
+
const ignoredViewConfigProps = new WeakSet<{...}>();
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Decorates ViewConfig values that are dynamically injected by the library,
|
|
17
|
+
* react-native-gesture-handler. (T45765076)
|
|
18
|
+
*/
|
|
19
|
+
export function DynamicallyInjectedByGestureHandler<T: {...}>(object: T): T {
|
|
20
|
+
ignoredViewConfigProps.add(object);
|
|
21
|
+
return object;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* On iOS, ViewManager event declarations generate {eventName}: true entries
|
|
26
|
+
* in ViewConfig valueAttributes. These entries aren't generated for Android.
|
|
27
|
+
* This annotation allows Static ViewConfigs to insert these entries into
|
|
28
|
+
* iOS but not Android.
|
|
29
|
+
*
|
|
30
|
+
* In the future, we want to remove this platform-inconsistency. We want
|
|
31
|
+
* to set RN$ViewConfigEventValidAttributesDisabled = true server-side,
|
|
32
|
+
* so that iOS does not generate validAttributes from event props in iOS RCTViewManager,
|
|
33
|
+
* since Android does not generate validAttributes from events props in Android ViewManager.
|
|
34
|
+
*
|
|
35
|
+
* TODO(T110872225): Remove this logic, after achieving platform-consistency
|
|
36
|
+
*/
|
|
37
|
+
export function ConditionallyIgnoredEventHandlers<T: {[name: string]: true}>(
|
|
38
|
+
value: T,
|
|
39
|
+
): T | void {
|
|
40
|
+
if (
|
|
41
|
+
Platform.OS === 'ios' &&
|
|
42
|
+
!(global.RN$ViewConfigEventValidAttributesDisabled === true)
|
|
43
|
+
) {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function isIgnored(value: mixed): boolean {
|
|
50
|
+
if (typeof value === 'object' && value != null) {
|
|
51
|
+
return ignoredViewConfigProps.has(value);
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
@@ -64,6 +64,12 @@ class FormData {
|
|
|
64
64
|
this._parts.push([key, value]);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
getAll(key: string): Array<FormDataValue> {
|
|
68
|
+
return this._parts
|
|
69
|
+
.filter(([name]) => name === key)
|
|
70
|
+
.map(([, value]) => value);
|
|
71
|
+
}
|
|
72
|
+
|
|
67
73
|
getParts(): Array<FormDataPart> {
|
|
68
74
|
return this._parts.map(([name, value]) => {
|
|
69
75
|
const contentDisposition = 'form-data; name="' + name + '"';
|
|
@@ -74,7 +80,7 @@ class FormData {
|
|
|
74
80
|
// an object with a `uri` attribute. Optionally, it can also
|
|
75
81
|
// have a `name` and `type` attribute to specify filename and
|
|
76
82
|
// content type (cf. web Blob interface.)
|
|
77
|
-
if (typeof value === 'object' && value) {
|
|
83
|
+
if (typeof value === 'object' && !Array.isArray(value) && value) {
|
|
78
84
|
if (typeof value.name === 'string') {
|
|
79
85
|
headers['content-disposition'] += '; filename="' + value.name + '"';
|
|
80
86
|
}
|
|
@@ -60,7 +60,7 @@ class RCTNetworking extends NativeEventEmitter<$FlowFixMe> {
|
|
|
60
60
|
) {
|
|
61
61
|
const body = convertRequestBody(data);
|
|
62
62
|
if (body && body.formData) {
|
|
63
|
-
body.formData = body.formData.map(
|
|
63
|
+
body.formData = body.formData.map(part => ({
|
|
64
64
|
...part,
|
|
65
65
|
headers: convertHeadersMapToArray(part.headers),
|
|
66
66
|
}));
|