@office-iss/react-native-win32 0.0.0-canary.310 → 0.0.0-canary.312
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/.eslintignore +1 -0
- package/.flowconfig +1 -5
- package/CHANGELOG.json +90 -0
- package/CHANGELOG.md +22 -1
- package/IntegrationTests/IntegrationTestHarnessTest.js +1 -1
- package/IntegrationTests/LayoutEventsTest.js +1 -1
- package/IntegrationTests/TimersTest.js +1 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
- package/Libraries/Animated/Animated.d.ts +8 -1
- package/Libraries/Animated/AnimatedEvent.js +4 -4
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/animations/Animation.js +3 -3
- package/Libraries/Animated/animations/DecayAnimation.js +4 -4
- package/Libraries/Animated/animations/SpringAnimation.js +5 -5
- package/Libraries/Animated/animations/TimingAnimation.js +5 -5
- package/Libraries/Animated/createAnimatedComponent.js +7 -7
- package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
- package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
- package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
- package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
- package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
- package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
- package/Libraries/Animated/useAnimatedColor.js +25 -0
- package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
- package/Libraries/Animated/useAnimatedValueXY.js +26 -0
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/BatchedBridge/MessageQueue.js +3 -3
- package/Libraries/BatchedBridge/NativeModules.js +4 -4
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +23 -25
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +27 -29
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
- package/Libraries/Components/Button.js +2 -2
- package/Libraries/Components/Button.win32.js +2 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
- package/Libraries/Components/EnterString.win32.js +2 -2
- package/Libraries/Components/EnterString.win32.js.map +1 -1
- package/Libraries/Components/Keyboard/Keyboard.js +6 -6
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
- package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
- package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
- package/Libraries/Components/Pressable/Pressable.js +3 -3
- package/Libraries/Components/Pressable/Pressable.win32.js +3 -3
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
- package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
- package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
- package/Libraries/Components/ScrollView/ScrollView.js +19 -9
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +8 -8
- package/Libraries/Components/Switch/Switch.js +3 -3
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
- package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
- package/Libraries/Components/TextInput/TextInput.flow.win32.js +23 -22
- package/Libraries/Components/TextInput/TextInput.js +8 -4
- package/Libraries/Components/TextInput/TextInput.win32.js +3 -4
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +2 -2
- package/Libraries/Components/Touchable/Touchable.win32.js +2 -2
- package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
- package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
- package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +7 -7
- package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
- package/Libraries/Components/Touchable/TouchableWin32.js +1 -1
- package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
- package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
- package/Libraries/Components/View/ViewAccessibility.js +7 -7
- package/Libraries/Components/View/ViewAccessibility.win32.js +7 -7
- package/Libraries/Components/View/ViewPropTypes.js +14 -14
- package/Libraries/Components/View/ViewPropTypes.win32.js +16 -16
- package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/ExtendedError.js +3 -3
- package/Libraries/Core/RawEventEmitter.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/Timers/JSTimers.js +3 -2
- package/Libraries/Core/setUpDeveloperTools.js +1 -1
- package/Libraries/Core/setUpErrorHandling.js +4 -2
- package/Libraries/Core/setUpSegmentFetcher.js +1 -1
- package/Libraries/Debugging/DebuggingOverlay.js +2 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
- package/Libraries/Image/AssetSourceResolver.js +1 -1
- package/Libraries/Image/Image.android.js +172 -306
- package/Libraries/Image/ImageProps.js +9 -11
- package/Libraries/Image/ImageSource.js +2 -2
- package/Libraries/Image/ImageSourceUtils.js +8 -4
- package/Libraries/Image/ImageTypes.flow.js +2 -2
- package/Libraries/Image/ImageViewNativeComponent.js +7 -16
- package/Libraries/Image/nativeImageSource.js +1 -1
- package/Libraries/Interaction/InteractionManager.js +5 -4
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +3 -3
- package/Libraries/Lists/SectionList.js +1 -1
- package/Libraries/Lists/SectionListModern.js +2 -2
- package/Libraries/LogBox/Data/LogBoxData.js +38 -24
- package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
- package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
- package/Libraries/LogBox/LogBox.js +42 -19
- package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
- package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +6 -9
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +15 -16
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +11 -13
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +3 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
- package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
- package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
- package/Libraries/Modal/Modal.js +3 -3
- package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +16 -16
- package/Libraries/Network/RCTNetworking.android.js +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.win32.js +1 -1
- package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
- package/Libraries/Pressability/Pressability.js +5 -5
- package/Libraries/Pressability/Pressability.win32.js +5 -5
- package/Libraries/Pressability/PressabilityDebug.js +1 -1
- package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
- package/Libraries/ReactNative/AppContainer-dev.js +18 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
- package/Libraries/ReactNative/FabricUIManager.js +1 -1
- package/Libraries/ReactNative/RendererImplementation.js +4 -4
- package/Libraries/ReactNative/UIManagerProperties.js +1 -1
- package/Libraries/Renderer/shims/ReactFabric.js +1 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +1 -3
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
- package/Libraries/StyleSheet/PointPropType.js +1 -1
- package/Libraries/StyleSheet/Rect.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
- package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
- package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
- package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
- package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
- package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
- package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
- package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
- package/Libraries/StyleSheet/processBoxShadow.js +44 -4
- package/Libraries/StyleSheet/processColorArray.js +2 -2
- package/Libraries/StyleSheet/processFilter.js +2 -2
- package/Libraries/Text/Text.js +295 -627
- package/Libraries/Text/Text.win32.js +360 -744
- package/Libraries/Text/TextNativeComponent.js +14 -7
- package/Libraries/Text/TextNativeComponent.win32.js +14 -7
- package/Libraries/Text/TextProps.js +4 -4
- package/Libraries/Text/TextProps.win32.js +4 -4
- package/Libraries/Types/CodegenTypes.js +1 -1
- package/Libraries/Types/CoreEventTypes.js +21 -21
- package/Libraries/Types/CoreEventTypes.win32.js +22 -21
- package/Libraries/Types/ReactDevToolsTypes.js +2 -2
- package/Libraries/Utilities/Appearance.js +6 -1
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/Dimensions.win32.js +1 -1
- package/Libraries/Utilities/HMRClient.js +4 -4
- package/Libraries/Utilities/IPerformanceLogger.js +4 -4
- package/Libraries/Utilities/codegenNativeCommands.js +4 -4
- package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
- package/Libraries/Utilities/codegenNativeComponent.js +2 -2
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +3 -3
- package/Libraries/Utilities/useMergeRefs.js +2 -2
- package/Libraries/vendor/core/ErrorUtils.js +4 -4
- package/Libraries/vendor/emitter/EventEmitter.js +16 -20
- package/flow/bom.js.flow +18 -17
- package/flow/dom.js.flow +12 -5
- package/flow/global.js +1 -1
- package/index.js +9 -0
- package/index.win32.js +9 -0
- package/index.win32.js.flow +8 -1
- package/jest/RefreshControlMock.js +2 -2
- package/jest/assetFileTransformer.js +8 -3
- package/jest/mockComponent.js +3 -4
- package/jest/mockNativeComponent.js +1 -1
- package/jest/mocks/ActivityIndicator.js +2 -2
- package/jest/mocks/Image.js +2 -2
- package/jest/mocks/Modal.js +2 -2
- package/jest/mocks/RefreshControl.js +3 -3
- package/jest/mocks/RendererProxy.js +2 -2
- package/jest/mocks/ScrollView.js +5 -5
- package/jest/mocks/Text.js +2 -2
- package/jest/mocks/TextInput.js +2 -2
- package/jest/mocks/View.js +2 -2
- package/jest/mocks/ViewNativeComponent.js +1 -1
- package/jest/mocks/requireNativeComponent.js +1 -1
- package/jest/mocks/useColorScheme.js +1 -1
- package/jest/setup.js +68 -31
- package/overrides.json +30 -36
- package/package.json +21 -18
- package/src/private/animated/NativeAnimatedHelper.js +2 -2
- package/src/private/animated/NativeAnimatedHelper.win32.js +2 -2
- package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
- package/src/private/components/virtualview/VirtualView.js +14 -21
- package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
- package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
- package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
- package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
- package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
- package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
- package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
- package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
- package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
- package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
- package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
- package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
- package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +48 -65
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -10
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
- package/src/private/styles/composeStyles.js +1 -1
- package/src/private/utilities/toError.js +27 -0
- package/src/private/utilities/toExtendedError.js +30 -0
- package/src/private/webapis/dom/events/Event.js +1 -1
- package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
- package/src/private/webapis/dom/events/EventTarget.js +3 -3
- package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
- package/src/private/webapis/geometry/DOMRectList.js +2 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
- package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
- package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
- package/src/private/webapis/performance/LongTasks.js +3 -3
- package/src/private/webapis/performance/Performance.js +4 -4
- package/src/private/webapis/performance/PerformanceEntry.js +1 -1
- package/src/private/webapis/performance/PerformanceObserver.js +2 -2
- package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
- package/src/private/webapis/structuredClone/structuredClone.js +2 -2
- package/src/types/globals.d.ts +4 -4
- package/src-win/Libraries/Components/EnterString.win32.tsx +2 -2
- package/src-win/Libraries/Components/Touchable/TouchableWin32.tsx +14 -14
- package/src-win/index.win32.js.flow +8 -1
- package/types/index.d.ts +2 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +0 -94
- package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
|
@@ -13,23 +13,23 @@ import type AnimatedNode from '../../Animated/nodes/AnimatedNode';
|
|
|
13
13
|
// Helper types to enforce that a single key is used in a transform object
|
|
14
14
|
// after generating a TypeScript definition file from the Flow types.
|
|
15
15
|
// $FlowExpectedError[unclear-type]
|
|
16
|
-
type KeysOfUnion<T> = T extends any ?
|
|
16
|
+
type KeysOfUnion<T> = T extends any ? keyof T : empty;
|
|
17
17
|
// $FlowExpectedError[unclear-type]
|
|
18
18
|
type ValueOfUnion<T, K> = T extends any
|
|
19
|
-
? K extends
|
|
19
|
+
? K extends keyof T
|
|
20
20
|
? T[K]
|
|
21
21
|
: empty
|
|
22
22
|
: empty;
|
|
23
23
|
type MergeUnion<T> = {
|
|
24
24
|
[K in KeysOfUnion<T>]?: ValueOfUnion<T, K>,
|
|
25
25
|
};
|
|
26
|
-
type MaximumOneOf<T: {...}> =
|
|
26
|
+
type MaximumOneOf<T: {...}> = Values<{
|
|
27
27
|
[K in keyof T]: $Exact<{
|
|
28
28
|
[P in keyof T]?: P extends K ? T[P] : empty,
|
|
29
29
|
}>,
|
|
30
30
|
}>;
|
|
31
31
|
|
|
32
|
-
export type ____TransformStyle_Internal =
|
|
32
|
+
export type ____TransformStyle_Internal = Readonly<{
|
|
33
33
|
/**
|
|
34
34
|
* `transform` accepts an array of transformation objects. Each object specifies
|
|
35
35
|
* the property that will be transformed as the key, and the value to use in the
|
|
@@ -47,8 +47,8 @@ export type ____TransformStyle_Internal = $ReadOnly<{
|
|
|
47
47
|
* `transform([{ skewX: '45deg' }])`
|
|
48
48
|
*/
|
|
49
49
|
transform?:
|
|
50
|
-
|
|
|
51
|
-
|
|
50
|
+
| ReadonlyArray<
|
|
51
|
+
Readonly<
|
|
52
52
|
MaximumOneOf<
|
|
53
53
|
MergeUnion<
|
|
54
54
|
| {+perspective: number | AnimatedNode}
|
|
@@ -73,7 +73,7 @@ export type ____TransformStyle_Internal = $ReadOnly<{
|
|
|
73
73
|
| {+skewY: string | AnimatedNode}
|
|
74
74
|
// TODO: what is the actual type it expects?
|
|
75
75
|
| {
|
|
76
|
-
+matrix:
|
|
76
|
+
+matrix: ReadonlyArray<number | AnimatedNode> | AnimatedNode,
|
|
77
77
|
},
|
|
78
78
|
>,
|
|
79
79
|
>,
|
|
@@ -37,7 +37,7 @@ type LinearGradientDirection =
|
|
|
37
37
|
type LinearGradientBackgroundImage = {
|
|
38
38
|
type: 'linear-gradient',
|
|
39
39
|
direction: LinearGradientDirection,
|
|
40
|
-
colorStops:
|
|
40
|
+
colorStops: ReadonlyArray<{
|
|
41
41
|
color: ColorStopColor,
|
|
42
42
|
position: ColorStopPosition,
|
|
43
43
|
}>,
|
|
@@ -57,7 +57,7 @@ type RadialGradientBackgroundImage = {
|
|
|
57
57
|
shape: RadialGradientShape,
|
|
58
58
|
size: RadialGradientSize,
|
|
59
59
|
position: RadialGradientPosition,
|
|
60
|
-
colorStops:
|
|
60
|
+
colorStops: ReadonlyArray<{
|
|
61
61
|
color: ColorStopColor,
|
|
62
62
|
position: ColorStopPosition,
|
|
63
63
|
}>,
|
|
@@ -73,9 +73,9 @@ type ParsedBackgroundImageValue =
|
|
|
73
73
|
| RadialGradientBackgroundImage;
|
|
74
74
|
|
|
75
75
|
export default function processBackgroundImage(
|
|
76
|
-
backgroundImage: ?(
|
|
77
|
-
):
|
|
78
|
-
let result:
|
|
76
|
+
backgroundImage: ?(ReadonlyArray<BackgroundImageValue> | string),
|
|
77
|
+
): ReadonlyArray<ParsedBackgroundImageValue> {
|
|
78
|
+
let result: ReadonlyArray<ParsedBackgroundImageValue> = [];
|
|
79
79
|
if (backgroundImage == null) {
|
|
80
80
|
return result;
|
|
81
81
|
}
|
|
@@ -183,7 +183,7 @@ export default function processBackgroundImage(
|
|
|
183
183
|
return result;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
function processColorStops(bgImage: BackgroundImageValue):
|
|
186
|
+
function processColorStops(bgImage: BackgroundImageValue): ReadonlyArray<{
|
|
187
187
|
color: ColorStopColor,
|
|
188
188
|
position: ColorStopPosition,
|
|
189
189
|
}> | null {
|
|
@@ -249,7 +249,7 @@ function processColorStops(bgImage: BackgroundImageValue): $ReadOnlyArray<{
|
|
|
249
249
|
|
|
250
250
|
function parseBackgroundImageCSSString(
|
|
251
251
|
cssString: string,
|
|
252
|
-
):
|
|
252
|
+
): ReadonlyArray<ParsedBackgroundImageValue> {
|
|
253
253
|
const gradients = [];
|
|
254
254
|
const bgImageStrings = splitGradients(cssString);
|
|
255
255
|
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
import type {BackgroundPositionValue} from './StyleSheetTypes';
|
|
13
13
|
|
|
14
14
|
export default function processBackgroundPosition(
|
|
15
|
-
backgroundPosition: ?(
|
|
16
|
-
):
|
|
17
|
-
let result:
|
|
15
|
+
backgroundPosition: ?(ReadonlyArray<BackgroundPositionValue> | string),
|
|
16
|
+
): ReadonlyArray<BackgroundPositionValue> {
|
|
17
|
+
let result: ReadonlyArray<BackgroundPositionValue> = [];
|
|
18
18
|
|
|
19
19
|
if (backgroundPosition == null) {
|
|
20
20
|
return [];
|
|
@@ -33,7 +33,7 @@ export default function processBackgroundPosition(
|
|
|
33
33
|
// https://www.w3.org/TR/css-backgrounds-3/#typedef-bg-position
|
|
34
34
|
const parseBackgroundPositionCSSString = (
|
|
35
35
|
backgroundPosition: string,
|
|
36
|
-
):
|
|
36
|
+
): ReadonlyArray<BackgroundPositionValue> => {
|
|
37
37
|
const result: Array<BackgroundPositionValue> = [];
|
|
38
38
|
const positions = backgroundPosition.split(',').map(s => s.trim());
|
|
39
39
|
|
|
@@ -27,9 +27,9 @@ function isBackgroundRepeatKeyword(
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export default function processBackgroundRepeat(
|
|
30
|
-
backgroundRepeat: ?(
|
|
31
|
-
):
|
|
32
|
-
let result:
|
|
30
|
+
backgroundRepeat: ?(ReadonlyArray<BackgroundRepeatValue> | string),
|
|
31
|
+
): ReadonlyArray<BackgroundRepeatValue> {
|
|
32
|
+
let result: ReadonlyArray<BackgroundRepeatValue> = [];
|
|
33
33
|
if (backgroundRepeat == null) {
|
|
34
34
|
return [];
|
|
35
35
|
}
|
|
@@ -50,7 +50,7 @@ export default function processBackgroundRepeat(
|
|
|
50
50
|
// https://www.w3.org/TR/css-backgrounds-3/#typedef-repeat-style
|
|
51
51
|
function parseBackgroundRepeatCSSString(
|
|
52
52
|
backgroundRepeat: string,
|
|
53
|
-
):
|
|
53
|
+
): ReadonlyArray<BackgroundRepeatValue> {
|
|
54
54
|
const result: Array<BackgroundRepeatValue> = [];
|
|
55
55
|
const bgRepeatArray = backgroundRepeat.split(',').map(s => s.trim());
|
|
56
56
|
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
import type {BackgroundSizeValue} from './StyleSheetTypes';
|
|
14
14
|
|
|
15
15
|
export default function processBackgroundSize(
|
|
16
|
-
backgroundSize: ?(
|
|
17
|
-
):
|
|
18
|
-
let result:
|
|
16
|
+
backgroundSize: ?(ReadonlyArray<BackgroundSizeValue> | string),
|
|
17
|
+
): ReadonlyArray<BackgroundSizeValue> {
|
|
18
|
+
let result: ReadonlyArray<BackgroundSizeValue> = [];
|
|
19
19
|
|
|
20
20
|
if (backgroundSize == null) {
|
|
21
21
|
// If the size is invalid, return an empty array and do not apply any background size. Same as web.
|
|
@@ -34,7 +34,7 @@ export default function processBackgroundSize(
|
|
|
34
34
|
// <bg-size> = [ <length-percentage [0,∞]> | auto ]{1,2} | cover | contain
|
|
35
35
|
function parseBackgroundSizeCSSString(
|
|
36
36
|
backgroundSize: string,
|
|
37
|
-
):
|
|
37
|
+
): ReadonlyArray<BackgroundSizeValue> {
|
|
38
38
|
const result: Array<BackgroundSizeValue> = [];
|
|
39
39
|
const sizes = backgroundSize.split(',').map(s => s.trim());
|
|
40
40
|
|
|
@@ -11,8 +11,15 @@
|
|
|
11
11
|
import type {ProcessedColorValue} from './processColor';
|
|
12
12
|
import type {BoxShadowValue} from './StyleSheetTypes';
|
|
13
13
|
|
|
14
|
+
import {enableOptimizedBoxShadowParsing} from '../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
14
15
|
import processColor from './processColor';
|
|
15
16
|
|
|
17
|
+
// Pre-compiled regex patterns for performance - avoids regex compilation on each call
|
|
18
|
+
const COMMA_SPLIT_REGEX = /,(?![^()]*\))/;
|
|
19
|
+
const WHITESPACE_SPLIT_REGEX = /\s+(?![^(]*\))/;
|
|
20
|
+
const LENGTH_PARSE_REGEX = /^([+-]?\d*\.?\d+)(px)?$/;
|
|
21
|
+
const NEWLINE_REGEX = /\n/g;
|
|
22
|
+
|
|
16
23
|
export type ParsedBoxShadow = {
|
|
17
24
|
offsetX: number,
|
|
18
25
|
offsetY: number,
|
|
@@ -23,7 +30,7 @@ export type ParsedBoxShadow = {
|
|
|
23
30
|
};
|
|
24
31
|
|
|
25
32
|
export default function processBoxShadow(
|
|
26
|
-
rawBoxShadows: ?(
|
|
33
|
+
rawBoxShadows: ?(ReadonlyArray<BoxShadowValue> | string),
|
|
27
34
|
): Array<ParsedBoxShadow> {
|
|
28
35
|
const result: Array<ParsedBoxShadow> = [];
|
|
29
36
|
if (rawBoxShadows == null) {
|
|
@@ -32,7 +39,12 @@ export default function processBoxShadow(
|
|
|
32
39
|
|
|
33
40
|
const boxShadowList =
|
|
34
41
|
typeof rawBoxShadows === 'string'
|
|
35
|
-
? parseBoxShadowString(
|
|
42
|
+
? parseBoxShadowString(
|
|
43
|
+
rawBoxShadows.replace(
|
|
44
|
+
enableOptimizedBoxShadowParsing() ? NEWLINE_REGEX : /\n/g,
|
|
45
|
+
' ',
|
|
46
|
+
),
|
|
47
|
+
)
|
|
36
48
|
: rawBoxShadows;
|
|
37
49
|
|
|
38
50
|
for (const rawBoxShadow of boxShadowList) {
|
|
@@ -109,7 +121,9 @@ function parseBoxShadowString(rawBoxShadows: string): Array<BoxShadowValue> {
|
|
|
109
121
|
let result: Array<BoxShadowValue> = [];
|
|
110
122
|
|
|
111
123
|
for (const rawBoxShadow of rawBoxShadows
|
|
112
|
-
.split(
|
|
124
|
+
.split(
|
|
125
|
+
enableOptimizedBoxShadowParsing() ? COMMA_SPLIT_REGEX : /,(?![^()]*\))/,
|
|
126
|
+
) // split by comma that is not in parenthesis
|
|
113
127
|
.map(bS => bS.trim())
|
|
114
128
|
.filter(bS => bS !== '')) {
|
|
115
129
|
const boxShadow: BoxShadowValue = {
|
|
@@ -123,7 +137,11 @@ function parseBoxShadowString(rawBoxShadows: string): Array<BoxShadowValue> {
|
|
|
123
137
|
let lengthCount = 0;
|
|
124
138
|
|
|
125
139
|
// split rawBoxShadow string by all whitespaces that are not in parenthesis
|
|
126
|
-
const args = rawBoxShadow.split(
|
|
140
|
+
const args = rawBoxShadow.split(
|
|
141
|
+
enableOptimizedBoxShadowParsing()
|
|
142
|
+
? WHITESPACE_SPLIT_REGEX
|
|
143
|
+
: /\s+(?![^(]*\))/,
|
|
144
|
+
);
|
|
127
145
|
for (const arg of args) {
|
|
128
146
|
const processedColor = processColor(arg);
|
|
129
147
|
if (processedColor != null) {
|
|
@@ -192,6 +210,28 @@ function parseBoxShadowString(rawBoxShadows: string): Array<BoxShadowValue> {
|
|
|
192
210
|
}
|
|
193
211
|
|
|
194
212
|
function parseLength(length: string): ?number {
|
|
213
|
+
if (enableOptimizedBoxShadowParsing()) {
|
|
214
|
+
// Use pre-compiled regex for performance
|
|
215
|
+
const match = LENGTH_PARSE_REGEX.exec(length);
|
|
216
|
+
|
|
217
|
+
if (!match) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const value = parseFloat(match[1]);
|
|
222
|
+
if (Number.isNaN(value)) {
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// match[2] is 'px' or undefined
|
|
227
|
+
// If no unit and value is not 0, return null
|
|
228
|
+
if (match[2] == null && value !== 0) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return value;
|
|
233
|
+
}
|
|
234
|
+
|
|
195
235
|
// matches on args with units like "1.5 5% -80deg"
|
|
196
236
|
const argsWithUnitsRegex = /([+-]?\d*(\.\d+)?)([\w\W]+)?/g;
|
|
197
237
|
const match = argsWithUnitsRegex.exec(length);
|
|
@@ -17,8 +17,8 @@ import processColor, {type ProcessedColorValue} from './processColor';
|
|
|
17
17
|
const TRANSPARENT = 0; // rgba(0, 0, 0, 0)
|
|
18
18
|
|
|
19
19
|
function processColorArray(
|
|
20
|
-
colors:
|
|
21
|
-
):
|
|
20
|
+
colors: ?ReadonlyArray<ColorValue>,
|
|
21
|
+
): ?ReadonlyArray<ProcessedColorValue> {
|
|
22
22
|
return colors == null ? null : colors.map(processColorElement);
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -35,8 +35,8 @@ type ParsedDropShadow = {
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
export default function processFilter(
|
|
38
|
-
filter: ?(
|
|
39
|
-
):
|
|
38
|
+
filter: ?(ReadonlyArray<FilterFunction> | string),
|
|
39
|
+
): ReadonlyArray<ParsedFilter> {
|
|
40
40
|
let result: Array<ParsedFilter> = [];
|
|
41
41
|
if (filter == null) {
|
|
42
42
|
return result;
|