Integrate RN Nightly Build 1/11 (#11133)

* integrate 01/11/23

* Change files

* remove DatePicker

* bump hermes version

* fix playground runtime

* Change files

* fix textinput example and flow
This commit is contained in:
Tatiana Kapos 2023-01-27 16:07:39 -08:00 коммит произвёл GitHub
Родитель 69ef712106
Коммит 43490514c8
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
64 изменённых файлов: 361 добавлений и 510 удалений

Просмотреть файл

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 01/11/23",
"packageName": "@office-iss/react-native-win32",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

Просмотреть файл

@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "integrate 01/11/23",
"packageName": "@react-native-windows/automation-channel",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

Просмотреть файл

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 01/11/23",
"packageName": "@react-native-windows/telemetry",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

Просмотреть файл

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 01/11/23",
"packageName": "react-native-windows",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

Просмотреть файл

@ -5,7 +5,7 @@
"excludePatterns": [
"src/js/examples-win32/**"
],
"baseVersion": "0.0.0-20221228-2020-ad953f6f4",
"baseVersion": "0.0.0-20230111-2023-573734f4e",
"overrides": [
{
"type": "patch",

Просмотреть файл

@ -18,7 +18,7 @@
"peerDependencies": {
"@office-iss/react-native-win32": "^0.0.0-canary.178",
"react": "18.0.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4"
"react-native": "0.0.0-20230111-2023-573734f4e"
},
"devDependencies": {
"@office-iss/react-native-win32": "^0.0.0-canary.178",
@ -29,7 +29,7 @@
"@types/node": "^14.14.22",
"eslint": "^8.19.0",
"just-scripts": "^1.3.3",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-platform-override": "^1.9.0",
"typescript": "^4.4.4"
},

Просмотреть файл

@ -7,7 +7,7 @@
"**/__snapshots__/**",
"src/rntypes/**"
],
"baseVersion": "0.0.0-20221228-2020-ad953f6f4",
"baseVersion": "0.0.0-20230111-2023-573734f4e",
"overrides": [
{
"type": "derived",
@ -19,7 +19,7 @@
"type": "derived",
"file": "src/index.win32.js",
"baseFile": "index.js",
"baseHash": "7da90f6b0172d5a9c302184c7247680804c328b7"
"baseHash": "70bbf5c1d4a00ae247ab2dfb811db3deee2f584c"
},
{
"type": "platform",
@ -35,7 +35,7 @@
"type": "derived",
"file": "src/Libraries/Animated/NativeAnimatedHelper.win32.js",
"baseFile": "Libraries/Animated/NativeAnimatedHelper.js",
"baseHash": "dffef42e9c8a4a5e9849892b7de7a3141c5e96bd",
"baseHash": "70731169e44a70b01e7191f35b3894b9d72e68a7",
"issue": 11041
},
{
@ -66,13 +66,6 @@
"type": "platform",
"file": "src/Libraries/Components/Button/ButtonWin32.tsx"
},
{
"type": "copy",
"file": "src/Libraries/Components/DatePicker/DatePickerIOS.win32.js",
"baseFile": "Libraries/Components/DatePicker/DatePickerIOS.android.js",
"baseHash": "cd7c18ed335735df871f69424d498b82b920a298",
"issue": 4378
},
{
"type": "copy",
"file": "src/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js",
@ -282,13 +275,13 @@
"type": "patch",
"file": "src/Libraries/Inspector/Inspector.win32.js",
"baseFile": "Libraries/Inspector/Inspector.js",
"baseHash": "012b5d37e2c8803715cde491bd6376dd44604886"
"baseHash": "49413d7b12477405e583062a1ab7e50e8ea0fefc"
},
{
"type": "patch",
"file": "src/Libraries/Inspector/InspectorOverlay.win32.js",
"baseFile": "Libraries/Inspector/InspectorOverlay.js",
"baseHash": "8e651cd19c7df62ddac099802abacf73f5f430dd"
"baseHash": "0c8c439f7a26ce8de799de20629fbf855c1ec416"
},
{
"type": "derived",
@ -327,13 +320,13 @@
"type": "derived",
"file": "src/Libraries/NativeComponent/BaseViewConfig.win32.js",
"baseFile": "Libraries/NativeComponent/BaseViewConfig.ios.js",
"baseHash": "991726f54a5cd6887db874c10f5ad3d2e90d5210"
"baseHash": "3c1918ff2ab3e43b4900e9b1e8549537d273d575"
},
{
"type": "derived",
"file": "src/Libraries/Network/RCTNetworking.win32.js",
"baseFile": "Libraries/Network/RCTNetworking.android.js",
"baseHash": "8177420114e343900c5242c18e875588430c6928",
"baseHash": "67d0d4757fcd7a1c2c0f6de642f713f0fa300e28",
"issue": 4318
},
{
@ -410,7 +403,7 @@
"type": "patch",
"file": "src/Libraries/StyleSheet/StyleSheet.win32.js",
"baseFile": "Libraries/StyleSheet/StyleSheet.js",
"baseHash": "b3075a13a629f20b347a9d9bca13df99c556fc93"
"baseHash": "3890079b44726e5c6d01b3067360cdfa1960e7e8"
},
{
"type": "derived",
@ -443,7 +436,7 @@
"type": "derived",
"file": "src/Libraries/Utilities/Dimensions.win32.js",
"baseFile": "Libraries/Utilities/Dimensions.js",
"baseHash": "229c098c2540cd0cb003976a22c1028ca76f0f98"
"baseHash": "c37d2da5361a472af0c97e7c7a3ceba573b73d73"
},
{
"type": "platform",

Просмотреть файл

@ -82,13 +82,13 @@
"just-scripts": "^1.3.3",
"prettier": "^2.4.1",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-platform-override": "^1.9.0",
"typescript": "^4.4.4"
},
"peerDependencies": {
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4"
"react-native": "0.0.0-20230111-2023-573734f4e"
},
"beachball": {
"defaultNpmTag": "canary",

Просмотреть файл

@ -393,11 +393,15 @@ const SUPPORTED_STYLES = {
borderBottomLeftRadius: true,
borderBottomRightRadius: true,
borderBottomStartRadius: true,
borderEndEndRadius: true,
borderEndStartRadius: true,
borderRadius: true,
borderTopEndRadius: true,
borderTopLeftRadius: true,
borderTopRightRadius: true,
borderTopStartRadius: true,
borderStartEndRadius: true,
borderStartStartRadius: true,
elevation: true,
opacity: true,
transform: true,

Просмотреть файл

@ -1,47 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
'use strict';
import type {DatePickerIOSType} from './DatePickerIOS.flow';
import StyleSheet from '../../StyleSheet/StyleSheet';
import Text from '../../Text/Text';
import View from '../View/View';
import * as React from 'react';
class DummyDatePickerIOS extends React.Component {
render() {
return (
<View style={[styles.dummyDatePickerIOS, this.props.style]}>
<Text style={styles.datePickerText}>
DatePickerIOS is not supported on this platform!
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
dummyDatePickerIOS: {
height: 100,
width: 300,
backgroundColor: '#ffbcbc',
borderWidth: 1,
borderColor: 'red',
alignItems: 'center',
justifyContent: 'center',
margin: 10,
},
datePickerText: {
color: '#333333',
margin: 20,
},
});
module.exports = (DummyDatePickerIOS: DatePickerIOSType);

Просмотреть файл

@ -12,12 +12,14 @@
import type {TouchedViewDataAtPoint} from '../Renderer/shims/ReactNativeTypes';
import type {HostRef} from './getInspectorDataForViewAtPoint';
// import Dimensions from '../Utilities/Dimensions'; [win32]
const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
const PressabilityDebug = require('../Pressability/PressabilityDebug');
const ReactNative = require('../Renderer/shims/ReactNative');
const {findNodeHandle} = require('../ReactNative/RendererProxy');
const StyleSheet = require('../StyleSheet/StyleSheet');
//const Dimensions = require('../Utilities/Dimensions');
const Platform = require('../Utilities/Platform');
const View = require('../Components/View/View');
const getInspectorDataForViewAtPoint = require('./getInspectorDataForViewAtPoint');

Просмотреть файл

@ -13,9 +13,10 @@
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {PressEvent} from '../Types/CoreEventTypes';
// import Dimensions from '../Utilities/Dimensions'; [Win32]
const View = require('../Components/View/View');
const StyleSheet = require('../StyleSheet/StyleSheet');
// const Dimensions = require('../Utilities/Dimensions'); [Win32]
const ElementBox = require('./ElementBox');
const React = require('react');

Просмотреть файл

@ -176,10 +176,10 @@ const validAttributesForNonEventProps = {
accessibilityElementsHidden: true,
accessibilityIgnoresInvertColors: true,
testID: true,
backgroundColor: {process: require('../StyleSheet/processColor')},
backgroundColor: {process: require('../StyleSheet/processColor').default},
backfaceVisibility: true,
opacity: true,
shadowColor: {process: require('../StyleSheet/processColor')},
shadowColor: {process: require('../StyleSheet/processColor').default},
shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
shadowOpacity: true,
shadowRadius: true,
@ -193,7 +193,7 @@ const validAttributesForNonEventProps = {
pointerEvents: true,
removeClippedSubviews: true,
borderRadius: true,
borderColor: {process: require('../StyleSheet/processColor')},
borderColor: {process: require('../StyleSheet/processColor').default},
borderCurve: true,
borderWidth: true,
borderStyle: true,
@ -201,17 +201,17 @@ const validAttributesForNonEventProps = {
collapsable: true,
borderTopWidth: true,
borderTopColor: {process: require('../StyleSheet/processColor')},
borderTopColor: {process: require('../StyleSheet/processColor').default},
borderRightWidth: true,
borderRightColor: {process: require('../StyleSheet/processColor')},
borderRightColor: {process: require('../StyleSheet/processColor').default},
borderBottomWidth: true,
borderBottomColor: {process: require('../StyleSheet/processColor')},
borderBottomColor: {process: require('../StyleSheet/processColor').default},
borderLeftWidth: true,
borderLeftColor: {process: require('../StyleSheet/processColor')},
borderLeftColor: {process: require('../StyleSheet/processColor').default},
borderStartWidth: true,
borderStartColor: {process: require('../StyleSheet/processColor')},
borderStartColor: {process: require('../StyleSheet/processColor').default},
borderEndWidth: true,
borderEndColor: {process: require('../StyleSheet/processColor')},
borderEndColor: {process: require('../StyleSheet/processColor').default},
borderTopLeftRadius: true,
borderTopRightRadius: true,
@ -221,6 +221,10 @@ const validAttributesForNonEventProps = {
borderBottomRightRadius: true,
borderBottomStartRadius: true,
borderBottomEndRadius: true,
borderEndEndRadius: true,
borderEndStartRadius: true,
borderStartEndRadius: true,
borderStartStartRadius: true,
display: true,
zIndex: true,

Просмотреть файл

@ -127,4 +127,4 @@ const RCTNetworking = {
},
};
module.exports = RCTNetworking;
export default RCTNetworking;

Просмотреть файл

@ -23,8 +23,9 @@ import type {
____ViewStyleProp_Internal,
} from './StyleSheetTypes';
import PixelRatio from '../Utilities/PixelRatio';
const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
const PixelRatio = require('../Utilities/PixelRatio');
const Platform = require('../Utilities/Platform'); // [Win32]
const flatten = require('./flattenStyle');

Просмотреть файл

@ -128,4 +128,4 @@ if (!initialDims) {
Dimensions.set(initialDims);
module.exports = Dimensions;
export default Dimensions;

Просмотреть файл

@ -14,7 +14,6 @@
import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo';
import typeof ActivityIndicator from './Libraries/Components/ActivityIndicator/ActivityIndicator';
import typeof Button from './Libraries/Components/Button';
import typeof DatePickerIOS from './Libraries/Components/DatePicker/DatePickerIOS';
import typeof DrawerLayoutAndroid from './Libraries/Components/DrawerAndroid/DrawerLayoutAndroid';
import typeof FlatList from './Libraries/Lists/FlatList';
import typeof Image from './Libraries/Image/Image';
@ -112,22 +111,13 @@ module.exports = {
.default;
},
get ActivityIndicator(): ActivityIndicator {
return require('./Libraries/Components/ActivityIndicator/ActivityIndicator');
return require('./Libraries/Components/ActivityIndicator/ActivityIndicator')
.default;
},
get Button(): Button {
return require('./Libraries/Components/Button');
},
// $FlowFixMe[value-as-type]
get DatePickerIOS(): DatePickerIOS {
warnOnce(
'DatePickerIOS-merged',
'DatePickerIOS has been merged with DatePickerAndroid and will be removed in a future release. ' +
"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. " +
'See https://github.com/react-native-datetimepicker/datetimepicker',
);
return require('./Libraries/Components/DatePicker/DatePickerIOS');
},
// $FlowFixMe[value-as-type]
get DrawerLayoutAndroid(): DrawerLayoutAndroid {
return require('./Libraries/Components/DrawerAndroid/DrawerLayoutAndroid');
},
@ -264,7 +254,7 @@ module.exports = {
return require('./Libraries/Utilities/DevSettings');
},
get Dimensions(): Dimensions {
return require('./Libraries/Utilities/Dimensions');
return require('./Libraries/Utilities/Dimensions').default;
},
get Easing(): Easing {
return require('./Libraries/Animated/Easing').default;
@ -291,7 +281,7 @@ module.exports = {
return require('./Libraries/Linking/Linking');
},
get LogBox(): LogBox {
return require('./Libraries/LogBox/LogBox');
return require('./Libraries/LogBox/LogBox').default;
},
get NativeDialogManagerAndroid(): NativeDialogManagerAndroid {
return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid')
@ -301,7 +291,7 @@ module.exports = {
return require('./Libraries/EventEmitter/NativeEventEmitter').default;
},
get Networking(): Networking {
return require('./Libraries/Network/RCTNetworking');
return require('./Libraries/Network/RCTNetworking').default;
},
get PanResponder(): PanResponder {
return require('./Libraries/Interaction/PanResponder');
@ -310,7 +300,7 @@ module.exports = {
return require('./Libraries/PermissionsAndroid/PermissionsAndroid');
},
get PixelRatio(): PixelRatio {
return require('./Libraries/Utilities/PixelRatio');
return require('./Libraries/Utilities/PixelRatio').default;
},
get PushNotificationIOS(): PushNotificationIOS {
warnOnce(
@ -361,7 +351,7 @@ module.exports = {
return require('./Libraries/Utilities/useWindowDimensions').default;
},
get UTFSequence(): UTFSequence {
return require('./Libraries/UTFSequence');
return require('./Libraries/UTFSequence').default;
},
get Vibration(): Vibration {
return require('./Libraries/Vibration/Vibration');
@ -392,12 +382,12 @@ module.exports = {
.PlatformColor;
},
get processColor(): processColor {
return require('./Libraries/StyleSheet/processColor');
return require('./Libraries/StyleSheet/processColor').default;
},
get requireNativeComponent(): <T>(
uiViewClassName: string,
) => HostComponent<T> {
return require('./Libraries/ReactNative/requireNativeComponent');
return require('./Libraries/ReactNative/requireNativeComponent').default;
},
get RootTagContext(): RootTagContext {
return require('./Libraries/ReactNative/RootTag').RootTagContext;
@ -812,4 +802,19 @@ if (__DEV__) {
);
},
});
/* $FlowFixMe[prop-missing] This is intentional: Flow will error when
* attempting to access DatePickerIOS. */
/* $FlowFixMe[invalid-export] This is intentional: Flow will error when
* attempting to access DatePickerIOS. */
Object.defineProperty(module.exports, 'DatePickerIOS', {
configurable: true,
get() {
invariant(
false,
'DatePickerIOS has been removed from react-native core. ' +
"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. " +
'See https://github.com/react-native-datetimepicker/datetimepicker',
);
},
});
}

Просмотреть файл

@ -31,7 +31,7 @@
"just-scripts": "^1.3.2",
"prettier": "^2.4.1",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-windows": "^0.0.0-canary.608",
"typescript": "^4.4.4"
},
@ -42,4 +42,4 @@
"engines": {
"node": ">= 14"
}
}
}

Просмотреть файл

@ -2,5 +2,5 @@
<packages>
<package id="Microsoft.Windows.CppWinRT" version="2.0.210312.4" targetFramework="native"/>
<package id="Microsoft.UI.Xaml" version="2.6.0" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2212.14001-38bb8586" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2301.11001-9f4d8943" targetFramework="native"/>
</packages>

Просмотреть файл

@ -5,7 +5,7 @@
"excludePatterns": [
"src/js/examples-win/**"
],
"baseVersion": "0.0.0-20221228-2020-ad953f6f4",
"baseVersion": "0.0.0-20230111-2023-573734f4e",
"overrides": [
{
"type": "patch",
@ -45,7 +45,7 @@
"type": "patch",
"file": "src/js/examples/TextInput/TextInputExample.windows.js",
"baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.android.js",
"baseHash": "2f5fadc6a4d691e56e2c87a05c61c525311333c8",
"baseHash": "83f515b9ce6b0ec2a311b4d976275ce99749b200",
"issue": 5688
},
{

Просмотреть файл

@ -17,7 +17,7 @@
"peerDependencies": {
"@react-native-picker/picker": "2.2.0",
"react": "18.0.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-windows": "^0.0.0-canary.608",
"react-native-xaml": "^0.0.50"
},
@ -30,7 +30,7 @@
"@types/node": "^14.14.22",
"eslint": "^8.19.0",
"just-scripts": "^1.3.3",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-platform-override": "^1.9.0",
"react-native-windows": "^0.0.0-canary.608",
"typescript": "^4.4.4"
@ -38,4 +38,4 @@
"engines": {
"node": ">= 14"
}
}
}

Просмотреть файл

@ -12,17 +12,10 @@
const React = require('react');
const {
Text,
TextInput,
View,
StyleSheet,
Slider,
Switch,
} = require('react-native');
const {useState} = React;
const {Text, TextInput, View, StyleSheet, Switch} = require('react-native');
const TextInputSharedExamples = require('./TextInputSharedExamples');
const {useState} = React;
import type {RNTesterModuleExample} from '../../types/RNTesterTypes';
@ -58,8 +51,8 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found
* when making Flow check .android.js files. */
this.state = {
width: 100,
multiline: true,
fullWidth: true,
text: '',
contentSize: {
width: 0,
@ -86,16 +79,16 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
const {style, multiline, ...props} = this.props;
return (
<View>
<Text>Width:</Text>
<Slider
value={100}
minimumValue={0}
maximumValue={100}
step={10}
<Text>Full width:</Text>
<Switch
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
onValueChange={value => this.setState({width: value})}
value={this.state.fullWidth}
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
onValueChange={value => this.setState({fullWidth: value})}
/>
<Text>Multiline:</Text>
<Switch
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
@ -105,6 +98,7 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
* found when making Flow check .android.js files. */
onValueChange={value => this.setState({multiline: value})}
/>
<Text>TextInput:</Text>
{/* $FlowFixMe(>=0.122.0 site=react_native_android_fb) This comment
* suppresses an error found when Flow v0.122.0 was deployed. To see
@ -115,7 +109,7 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
multiline={this.state.multiline}
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
style={[style, {width: this.state.width + '%'}]}
style={[style, {width: this.state.fullWidth ? '100%' : '50%'}]}
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
onChangeText={value => this.setState({text: value})}

Просмотреть файл

@ -1,5 +1,5 @@
{
"baseVersion": "0.0.0-20221228-2020-ad953f6f4",
"baseVersion": "0.0.0-20230111-2023-573734f4e",
"overrides": [
{
"type": "copy",

Просмотреть файл

@ -26,7 +26,6 @@ const {
TouchableWithoutFeedback,
Alert,
StyleSheet,
Slider,
Platform,
Switch,
ScrollView,
@ -1026,38 +1025,6 @@ class AccessibilityActionsExample extends React.Component<{}> {
}
}
function SliderAccessibilityExample(): React.Node {
return (
<View>
<RNTesterBlock
title="Disabled Slider via disabled"
description="Verify with TalkBack/VoiceOver announces Slider as disabled">
<Slider value={25} maximumValue={100} minimumValue={0} disabled />
</RNTesterBlock>
<RNTesterBlock
title="Disabled Slider via accessibilityState"
description="Verify with TalkBack/VoiceOver announces Slider as disabled">
<Slider
value={75}
maximumValue={100}
minimumValue={0}
accessibilityState={{disabled: true}}
/>
</RNTesterBlock>
<RNTesterBlock
title="Selected Slider"
description="Verify with TalkBack/VoiceOver announces Slider as selected">
<Slider
value={75}
maximumValue={100}
minimumValue={0}
accessibilityState={{selected: true}}
/>
</RNTesterBlock>
</View>
);
}
type FakeSliderExampleState = {
current: number,
textualValue: 'center' | 'left' | 'right',
@ -1663,12 +1630,6 @@ exports.examples = [
return <AccessibilityActionsExample />;
},
},
{
title: 'Slider Accessibility Examples',
render(): React.Element<typeof SliderAccessibilityExample> {
return <SliderAccessibilityExample />;
},
},
{
title: 'Fake Slider Example',
render(): React.Element<typeof FakeSliderExample> {

Просмотреть файл

@ -110,11 +110,17 @@ export default (BaseFlatListExample: React.AbstractComponent<
FlatList<string>,
>);
const ITEM_INNER_HEIGHT = 70;
const ITEM_MARGIN = 8;
export const ITEM_HEIGHT: number = ITEM_INNER_HEIGHT + ITEM_MARGIN * 2;
const styles = StyleSheet.create({
item: {
backgroundColor: 'pink',
padding: 20,
marginVertical: 8,
paddingHorizontal: 20,
height: ITEM_INNER_HEIGHT,
marginVertical: ITEM_MARGIN,
justifyContent: 'center',
},
header: {
fontSize: 32,

Просмотреть файл

@ -0,0 +1,54 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
import type {RNTesterModuleExample} from '../../types/RNTesterTypes';
import BaseFlatListExample, {ITEM_HEIGHT} from './BaseFlatListExample';
import * as React from 'react';
import {FlatList} from 'react-native';
export function FlatList_onStartReached(): React.Node {
const [output, setOutput] = React.useState('');
const exampleProps = {
onStartReached: (info: {distanceFromStart: number, ...}) =>
setOutput('onStartReached'),
onStartReachedThreshold: 0,
initialScrollIndex: 5,
getItemLayout: (data: any, index: number) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
}),
};
const ref = React.useRef<?FlatList<string>>(null);
const onTest = () => {
ref.current?.scrollToOffset({offset: 0});
};
return (
<BaseFlatListExample
ref={ref}
exampleProps={exampleProps}
testOutput={output}
onTest={onTest}
/>
);
}
export default ({
title: 'onStartReached',
name: 'onStartReached',
description:
'Scroll to start of list or tap Test button to see `onStartReached` triggered.',
render: function (): React.Element<typeof FlatList_onStartReached> {
return <FlatList_onStartReached />;
},
}: RNTesterModuleExample);

Просмотреть файл

@ -10,6 +10,7 @@
import type {RNTesterModule} from '../../types/RNTesterTypes';
import BasicExample from './FlatList-basic';
import OnStartReachedExample from './FlatList-onStartReached';
import OnEndReachedExample from './FlatList-onEndReached';
import ContentInsetExample from './FlatList-contentInset';
import InvertedExample from './FlatList-inverted';
@ -28,6 +29,7 @@ export default ({
showIndividualExamples: true,
examples: [
BasicExample,
OnStartReachedExample,
OnEndReachedExample,
ContentInsetExample,
InvertedExample,

Просмотреть файл

@ -23,11 +23,8 @@ const {
Animated,
StyleSheet,
TouchableWithoutFeedback,
Slider,
} = require('react-native');
const AnimatedSlider = Animated.createAnimatedComponent(Slider);
class Tester extends React.Component<$FlowFixMeProps, $FlowFixMeState> {
state: any | {js: AnimatedValue, native: AnimatedValue} = {
native: new Animated.Value(0),
@ -237,13 +234,6 @@ class EventExample extends React.Component<{...}, $FlowFixMeState> {
<Text>Scroll me sideways!</Text>
</View>
</Animated.ScrollView>
<AnimatedSlider
maximumValue={200}
onValueChange={Animated.event(
[{nativeEvent: {value: this.state.anim}}],
{useNativeDriver: true},
)}
/>
</View>
);
}
@ -637,16 +627,6 @@ exports.examples = [
);
},
},
{
title: 'Drive custom property (tap to animate)',
render: function (): React.Node {
return (
<Tester type="timing" config={{duration: 1000}}>
{anim => <AnimatedSlider style={{}} value={anim} />}
</Tester>
);
},
},
{
title: 'Animated value listener',
render: function (): React.Node {

Просмотреть файл

@ -509,6 +509,35 @@ const BorderRadiiExample = withRTLState(({isRTL, setRTL}) => {
);
});
const LogicalBorderRadiiExample = withRTLState(({isRTL, setRTL}) => {
return (
<View>
<Text style={styles.bold}>Styles</Text>
<Text>borderStartStartRadius: 10,</Text>
<Text>borderStartEndRadius: 20,</Text>
<Text>borderEndStartRadius: 30,</Text>
<Text>borderEndEndRadius: 40</Text>
<Text />
<Text style={styles.bold}>Demo: </Text>
<View style={directionStyle(isRTL)}>
<View
style={{
borderWidth: 10,
borderStartStartRadius: 10,
borderStartEndRadius: 20,
borderEndStartRadius: 30,
borderEndEndRadius: 40,
padding: 10,
}}>
<View>
<RTLToggler setRTL={setRTL} isRTL={isRTL} />
</View>
</View>
</View>
</View>
);
});
const BorderExample = withRTLState(({isRTL, setRTL}) => {
return (
<View>
@ -771,6 +800,12 @@ exports.examples = [
return <BorderRadiiExample />;
},
},
{
title: 'Logical Border Radii Start/End',
render: function (): React.Element<any> {
return <LogicalBorderRadiiExample />;
},
},
{
title: 'Border',
render: function (): React.Element<any> {

Просмотреть файл

@ -12,14 +12,7 @@
const React = require('react');
const {
Text,
TextInput,
View,
StyleSheet,
Slider,
Switch,
} = require('react-native');
const {Text, TextInput, View, StyleSheet, Switch} = require('react-native');
const TextInputSharedExamples = require('./TextInputSharedExamples.js');
@ -57,8 +50,8 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found
* when making Flow check .android.js files. */
this.state = {
width: 100,
multiline: true,
fullWidth: true,
text: '',
contentSize: {
width: 0,
@ -85,16 +78,16 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
const {style, multiline, ...props} = this.props;
return (
<View>
<Text>Width:</Text>
<Slider
value={100}
minimumValue={0}
maximumValue={100}
step={10}
<Text>Full width:</Text>
<Switch
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
onValueChange={value => this.setState({width: value})}
value={this.state.fullWidth}
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
onValueChange={value => this.setState({fullWidth: value})}
/>
<Text>Multiline:</Text>
<Switch
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
@ -104,6 +97,7 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
* found when making Flow check .android.js files. */
onValueChange={value => this.setState({multiline: value})}
/>
<Text>TextInput:</Text>
{/* $FlowFixMe(>=0.122.0 site=react_native_android_fb) This comment
* suppresses an error found when Flow v0.122.0 was deployed. To see
@ -114,7 +108,7 @@ class AutogrowingTextInputExample extends React.Component<{...}> {
multiline={this.state.multiline}
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
style={[style, {width: this.state.width + '%'}]}
style={[style, {width: this.state.fullWidth ? '100%' : '50%'}]}
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was
* found when making Flow check .android.js files. */
onChangeText={value => this.setState({text: value})}

Просмотреть файл

@ -19,7 +19,6 @@ const {
TextInput,
View,
StyleSheet,
Slider,
Switch,
Alert,
} = require('react-native');
@ -214,8 +213,8 @@ class AutogrowingTextInputExample extends React.Component<
super(props);
this.state = {
width: 100,
multiline: true,
fullWidth: true,
text: '',
contentSize: {
width: 0,
@ -234,24 +233,23 @@ class AutogrowingTextInputExample extends React.Component<
const {style, multiline, ...props} = this.props;
return (
<View>
<Text>Width:</Text>
<Slider
value={100}
minimumValue={0}
maximumValue={100}
step={10}
onValueChange={value => this.setState({width: value})}
<Text>Full width:</Text>
<Switch
value={this.state.fullWidth}
onValueChange={value => this.setState({fullWidth: value})}
/>
<Text>Multiline:</Text>
<Switch
value={this.state.multiline}
onValueChange={value => this.setState({multiline: value})}
/>
<Text>TextInput:</Text>
<TextInput
value="prop"
multiline={this.state.multiline}
style={[style, {width: this.state.width + '%'}]}
style={[style, {width: this.state.fullWidth ? '100%' : '50%'}]}
onChangeText={value => this.setState({text: value})}
onContentSizeChange={event =>
this.setState({contentSize: event.nativeEvent.contentSize})

Просмотреть файл

@ -1,11 +1,11 @@
{
"baseVersion": "0.0.0-20221228-2020-ad953f6f4",
"baseVersion": "0.0.0-20230111-2023-573734f4e",
"overrides": [
{
"type": "copy",
"directory": "js",
"baseDirectory": "packages/rn-tester/js",
"baseHash": "0508e6d276b3e80e27d1bd581e4e96018f5abc04",
"baseHash": "d23735f077eb8ae1a014db303a131068624a9199",
"issue": 4054
},
{

Просмотреть файл

@ -19,7 +19,7 @@
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-windows": "^0.0.0-canary.608",
"react-native-xaml": "^0.0.70"
},
@ -53,4 +53,4 @@
"engines": {
"node": ">= 14"
}
}
}

Просмотреть файл

@ -72,7 +72,7 @@
},
"ReactNative.Hermes.Windows": {
"type": "Transitive",
"resolved": "0.0.0-2212.14001-38bb8586",
"resolved": "0.0.0-2301.11001-9f4d8943",
"contentHash": "b6GLQSLaffgxAXwoTrxfj73W5cxlPxmNlQoVmyAnucXPCwV7HiL0rZsqGpBf+r2rdubUS35patY/c+8RiBR4+Q=="
},
"runtime.win10-arm.Microsoft.Net.Native.Compiler": {
@ -170,7 +170,7 @@
"Microsoft.UI.Xaml": "[2.7.0, )",
"Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
"ReactCommon": "[1.0.0, )",
"ReactNative.Hermes.Windows": "[0.0.0-2212.14001-38bb8586, )",
"ReactNative.Hermes.Windows": "[0.0.0-2301.11001-9f4d8943, )",
"boost": "[1.76.0, )"
}
},

Просмотреть файл

@ -16,7 +16,7 @@
"@typescript-eslint/parser": "^5.21.0",
"chai": "^4.2.0",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-windows": "^0.0.0-canary.608"
},
"devDependencies": {
@ -48,4 +48,4 @@
"engines": {
"node": ">= 14"
}
}
}

Просмотреть файл

@ -65,7 +65,7 @@
},
"ReactNative.Hermes.Windows": {
"type": "Transitive",
"resolved": "0.0.0-2212.14001-38bb8586",
"resolved": "0.0.0-2301.11001-9f4d8943",
"contentHash": "/RxDNnNA6w42Kz7cEep5wc6j8cmE4jepbjm5ElWXYWPHg4xu5D0AIj6RQ+WW2DxUHaDhbm6pjtS7MJSWagdi+g=="
},
"runtime.win10-arm.Microsoft.Net.Native.Compiler": {
@ -156,7 +156,7 @@
"Microsoft.UI.Xaml": "[2.7.0, )",
"Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
"ReactCommon": "[1.0.0, )",
"ReactNative.Hermes.Windows": "[0.0.0-2212.14001-38bb8586, )",
"ReactNative.Hermes.Windows": "[0.0.0-2301.11001-9f4d8943, )",
"boost": "[1.76.0, )"
}
},

Просмотреть файл

@ -15,7 +15,7 @@
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-windows": "^0.0.0-canary.608"
},
"devDependencies": {
@ -36,4 +36,4 @@
"engines": {
"node": ">= 14"
}
}
}

Просмотреть файл

@ -9,5 +9,5 @@
<package id="Microsoft.UI.Xaml" version="2.7.0-prerelease.210913003" targetFramework="native"/>
<package id="Microsoft.VCRTForwarders.140" version="1.0.2-rc" targetFramework="native"/>
<package id="Microsoft.Windows.CppWinRT" version="2.0.210312.4" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2212.14001-38bb8586" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2301.11001-9f4d8943" targetFramework="native"/>
</packages>

Просмотреть файл

@ -9,5 +9,5 @@
<package id="Microsoft.UI.Xaml" version="2.7.0-prerelease.210913003" targetFramework="native"/>
<package id="Microsoft.VCRTForwarders.140" version="1.0.2-rc" targetFramework="native"/>
<package id="Microsoft.Windows.CppWinRT" version="2.0.210312.4" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2212.14001-38bb8586" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2301.11001-9f4d8943" targetFramework="native"/>
</packages>

Просмотреть файл

@ -3,5 +3,5 @@
<package id="Microsoft.Windows.CppWinRT" version="2.0.210312.4" targetFramework="native"/>
<package id="Microsoft.UI.Xaml" version="2.7.0" targetFramework="native"/>
<package id="Microsoft.WinUI" version="3.0.0-preview4.210210.4" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2212.14001-38bb8586" targetFramework="native"/>
<package id="ReactNative.Hermes.Windows" version="0.0.0-2301.11001-9f4d8943" targetFramework="native"/>
</packages>

Просмотреть файл

@ -15,7 +15,7 @@
"@typescript-eslint/eslint-plugin": "^5.30.5",
"@typescript-eslint/parser": "^5.30.5",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-windows": "^0.0.0-canary.608"
},
"devDependencies": {
@ -45,4 +45,4 @@
"engines": {
"node": ">= 14"
}
}
}

Просмотреть файл

@ -100,7 +100,7 @@
},
"ReactNative.Hermes.Windows": {
"type": "Transitive",
"resolved": "0.0.0-2212.14001-38bb8586",
"resolved": "0.0.0-2301.11001-9f4d8943",
"contentHash": "XL7czD9ZzeuXq+t/1vmbOSC3GYkdhxAAKmfiFuH1NdxLvwtJKOBeN7ep9ihA7n1K/cZubCBYmiuSAJByP/BY7g=="
},
"runtime.win10-arm.Microsoft.Net.Native.Compiler": {
@ -310,7 +310,7 @@
"Microsoft.UI.Xaml": "[2.7.0, )",
"Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
"ReactCommon": "[1.0.0, )",
"ReactNative.Hermes.Windows": "[0.0.0-2212.14001-38bb8586, )",
"ReactNative.Hermes.Windows": "[0.0.0-2301.11001-9f4d8943, )",
"boost": "[1.76.0, )"
}
},

Просмотреть файл

@ -100,7 +100,7 @@
},
"ReactNative.Hermes.Windows": {
"type": "Transitive",
"resolved": "0.0.0-2212.14001-38bb8586",
"resolved": "0.0.0-2301.11001-9f4d8943",
"contentHash": "XL7czD9ZzeuXq+t/1vmbOSC3GYkdhxAAKmfiFuH1NdxLvwtJKOBeN7ep9ihA7n1K/cZubCBYmiuSAJByP/BY7g=="
},
"runtime.win10-arm.Microsoft.Net.Native.Compiler": {
@ -310,7 +310,7 @@
"Microsoft.UI.Xaml": "[2.7.0, )",
"Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
"ReactCommon": "[1.0.0, )",
"ReactNative.Hermes.Windows": "[0.0.0-2212.14001-38bb8586, )",
"ReactNative.Hermes.Windows": "[0.0.0-2301.11001-9f4d8943, )",
"boost": "[1.76.0, )"
}
},

Просмотреть файл

@ -85,7 +85,7 @@
},
"ReactNative.Hermes.Windows": {
"type": "Transitive",
"resolved": "0.0.0-2212.14001-38bb8586",
"resolved": "0.0.0-2301.11001-9f4d8943",
"contentHash": "XL7czD9ZzeuXq+t/1vmbOSC3GYkdhxAAKmfiFuH1NdxLvwtJKOBeN7ep9ihA7n1K/cZubCBYmiuSAJByP/BY7g=="
},
"runtime.win10-arm.Microsoft.Net.Native.Compiler": {
@ -176,7 +176,7 @@
"Microsoft.UI.Xaml": "[2.7.0, )",
"Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
"ReactCommon": "[1.0.0, )",
"ReactNative.Hermes.Windows": "[0.0.0-2212.14001-38bb8586, )",
"ReactNative.Hermes.Windows": "[0.0.0-2301.11001-9f4d8943, )",
"boost": "[1.76.0, )"
}
},

Просмотреть файл

@ -14,7 +14,7 @@
<!-- Enabling this will (1) Include hermes glues in the Microsoft.ReactNative binaries AND (2) Make hermes the default engine -->
<UseHermes Condition="'$(UseHermes)' == ''">false</UseHermes>
<!-- This will be true if (1) the client want to use hermes by setting UseHermes to true OR (2) We are building for UWP where dynamic switching is enabled -->
<HermesVersion Condition="'$(HermesVersion)' == ''">0.0.0-2212.14001-38bb8586</HermesVersion>
<HermesVersion Condition="'$(HermesVersion)' == ''">0.0.0-2301.11001-9f4d8943</HermesVersion>
<HermesPackage Condition="'$(HermesPackage)' == '' And Exists('$(PkgReactNative_Hermes_Windows)')">$(PkgReactNative_Hermes_Windows)</HermesPackage>
<HermesPackage Condition="'$(HermesPackage)' == ''">$(NuGetPackageRoot)\ReactNative.Hermes.Windows\$(HermesVersion)</HermesPackage>
<EnableHermesInspectorInReleaseFlavor Condition="'$(EnableHermesInspectorInReleaseFlavor)' == ''">false</EnableHermesInspectorInReleaseFlavor>

Просмотреть файл

@ -1595,13 +1595,21 @@ static void YGNodeAbsoluteLayoutChild(
depth,
generationCount);
auto trailingMarginOuterSize =
YGConfigIsExperimentalFeatureEnabled(
node->getConfig(),
YGExperimentalFeatureFixAbsoluteTrailingColumnMargin)
? isMainAxisRow ? height : width
: width;
if (child->isTrailingPosDefined(mainAxis) &&
!child->isLeadingPositionDefined(mainAxis)) {
child->setLayoutPosition(
node->getLayout().measuredDimensions[dim[mainAxis]] -
child->getLayout().measuredDimensions[dim[mainAxis]] -
node->getTrailingBorder(mainAxis) -
child->getTrailingMargin(mainAxis, width).unwrap() -
child->getTrailingMargin(mainAxis, trailingMarginOuterSize)
.unwrap() -
child->getTrailingPosition(mainAxis, isMainAxisRow ? width : height)
.unwrap(),
leading[mainAxis]);
@ -1620,6 +1628,22 @@ static void YGNodeAbsoluteLayoutChild(
(node->getLayout().measuredDimensions[dim[mainAxis]] -
child->getLayout().measuredDimensions[dim[mainAxis]]),
leading[mainAxis]);
} else if (
YGConfigIsExperimentalFeatureEnabled(
node->getConfig(),
YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge) &&
child->isLeadingPositionDefined(mainAxis)) {
child->setLayoutPosition(
child->getLeadingPosition(
mainAxis, node->getLayout().measuredDimensions[dim[mainAxis]])
.unwrap() +
node->getLeadingBorder(mainAxis) +
child
->getLeadingMargin(
mainAxis,
node->getLayout().measuredDimensions[dim[mainAxis]])
.unwrap(),
leading[mainAxis]);
}
if (child->isTrailingPosDefined(crossAxis) &&
@ -1628,7 +1652,8 @@ static void YGNodeAbsoluteLayoutChild(
node->getLayout().measuredDimensions[dim[crossAxis]] -
child->getLayout().measuredDimensions[dim[crossAxis]] -
node->getTrailingBorder(crossAxis) -
child->getTrailingMargin(crossAxis, width).unwrap() -
child->getTrailingMargin(crossAxis, trailingMarginOuterSize)
.unwrap() -
child
->getTrailingPosition(crossAxis, isMainAxisRow ? height : width)
.unwrap(),
@ -1650,6 +1675,23 @@ static void YGNodeAbsoluteLayoutChild(
(node->getLayout().measuredDimensions[dim[crossAxis]] -
child->getLayout().measuredDimensions[dim[crossAxis]]),
leading[crossAxis]);
} else if (
YGConfigIsExperimentalFeatureEnabled(
node->getConfig(),
YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge) &&
child->isLeadingPositionDefined(crossAxis)) {
child->setLayoutPosition(
child->getLeadingPosition(
crossAxis,
node->getLayout().measuredDimensions[dim[crossAxis]])
.unwrap() +
node->getLeadingBorder(crossAxis) +
child
->getLeadingMargin(
crossAxis,
node->getLayout().measuredDimensions[dim[crossAxis]])
.unwrap(),
leading[crossAxis]);
}
}
@ -3569,9 +3611,17 @@ static void YGNodelayoutImpl(
YGNodeAbsoluteLayoutChild(
node,
child,
availableInnerWidth,
YGConfigIsExperimentalFeatureEnabled(
node->getConfig(),
YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge)
? node->getLayout().measuredDimensions[YGDimensionWidth]
: availableInnerWidth,
isMainAxisRow ? measureModeMainDim : measureModeCrossDim,
availableInnerHeight,
YGConfigIsExperimentalFeatureEnabled(
node->getConfig(),
YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge)
? node->getLayout().measuredDimensions[YGDimensionHeight]
: availableInnerHeight,
direction,
config,
layoutMarkerData,

Просмотреть файл

@ -200,6 +200,7 @@
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\EventEmitter.cpp" DisableSpecificWarnings="4244;%(DisableSpecificWarnings)" />
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\EventListener.cpp" DisableSpecificWarnings="4244;%(DisableSpecificWarnings)" />
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\EventTarget.cpp" />
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\EventLogger.cpp" />
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\EventQueue.cpp" />
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\EventQueueProcessor.cpp" />
<ClCompile Include="$(ReactNativeDir)\ReactCommon\react\renderer\core\LayoutableShadowNode.cpp" />

Просмотреть файл

@ -17,7 +17,6 @@ namespace facebook {
namespace react {
using ActivityIndicatorViewComponentDescriptor = ConcreteComponentDescriptor<ActivityIndicatorViewShadowNode>;
using DatePickerComponentDescriptor = ConcreteComponentDescriptor<DatePickerShadowNode>;
using AndroidDrawerLayoutComponentDescriptor = ConcreteComponentDescriptor<AndroidDrawerLayoutShadowNode>;
using AndroidSwipeRefreshLayoutComponentDescriptor = ConcreteComponentDescriptor<AndroidSwipeRefreshLayoutShadowNode>;
using PullToRefreshViewComponentDescriptor = ConcreteComponentDescriptor<PullToRefreshViewShadowNode>;

Просмотреть файл

@ -42,13 +42,6 @@ void ModalHostViewEventEmitter::onOrientationChange(OnOrientationChange event) c
});
}
void DatePickerEventEmitter::onChange(OnChange event) const {
dispatchEvent("change", [event=std::move(event)](jsi::Runtime &runtime) {
auto payload = jsi::Object(runtime);
payload.setProperty(runtime, "timestamp", event.timestamp);
return payload;
});
}
void AndroidDrawerLayoutEventEmitter::onDrawerSlide(OnDrawerSlide event) const {
dispatchEvent("drawerSlide", [event=std::move(event)](jsi::Runtime &runtime) {
auto payload = jsi::Object(runtime);

Просмотреть файл

@ -62,16 +62,6 @@ class JSI_EXPORT ActivityIndicatorViewEventEmitter : public ViewEventEmitter {
};
class JSI_EXPORT DatePickerEventEmitter : public ViewEventEmitter {
public:
using ViewEventEmitter::ViewEventEmitter;
struct OnChange {
Float timestamp;
};
void onChange(OnChange value) const;
};
class JSI_EXPORT AndroidDrawerLayoutEventEmitter : public ViewEventEmitter {
public:

Просмотреть файл

@ -41,21 +41,6 @@ ActivityIndicatorViewProps::ActivityIndicatorViewProps(
color(convertRawProp(context, rawProps, "color", sourceProps.color, {})),
size(convertRawProp(context, rawProps, "size", sourceProps.size, {ActivityIndicatorViewSize::Small}))
{}
DatePickerProps::DatePickerProps(
const PropsParserContext &context,
const DatePickerProps &sourceProps,
const RawProps &rawProps): ViewProps(context, sourceProps, rawProps),
date(convertRawProp(context, rawProps, "date", sourceProps.date, {0.0})),
initialDate(convertRawProp(context, rawProps, "initialDate", sourceProps.initialDate, {0.0})),
locale(convertRawProp(context, rawProps, "locale", sourceProps.locale, {})),
maximumDate(convertRawProp(context, rawProps, "maximumDate", sourceProps.maximumDate, {0.0})),
minimumDate(convertRawProp(context, rawProps, "minimumDate", sourceProps.minimumDate, {0.0})),
minuteInterval(convertRawProp(context, rawProps, "minuteInterval", sourceProps.minuteInterval, {DatePickerMinuteInterval::MinuteInterval1})),
mode(convertRawProp(context, rawProps, "mode", sourceProps.mode, {DatePickerMode::Date})),
timeZoneOffsetInMinutes(convertRawProp(context, rawProps, "timeZoneOffsetInMinutes", sourceProps.timeZoneOffsetInMinutes, {0.0})),
pickerStyle(convertRawProp(context, rawProps, "pickerStyle", sourceProps.pickerStyle, {DatePickerPickerStyle::Spinner}))
{}
AndroidDrawerLayoutProps::AndroidDrawerLayoutProps(
const PropsParserContext &context,
const AndroidDrawerLayoutProps &sourceProps,

Просмотреть файл

@ -183,117 +183,6 @@ class JSI_EXPORT ActivityIndicatorViewProps final : public ViewProps {
ActivityIndicatorViewSize size{ActivityIndicatorViewSize::Small};
};
enum class DatePickerMinuteInterval { MinuteInterval1 = 1, MinuteInterval2 = 2, MinuteInterval3 = 3, MinuteInterval4 = 4, MinuteInterval5 = 5, MinuteInterval6 = 6, MinuteInterval10 = 10, MinuteInterval12 = 12, MinuteInterval15 = 15, MinuteInterval20 = 20, MinuteInterval30 = 30 };
static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, DatePickerMinuteInterval &result) {
assert(value.hasType<int>());
auto integerValue = (int)value;
switch (integerValue) {
case 1:
result = DatePickerMinuteInterval::MinuteInterval1;
return;
case 2:
result = DatePickerMinuteInterval::MinuteInterval2;
return;
case 3:
result = DatePickerMinuteInterval::MinuteInterval3;
return;
case 4:
result = DatePickerMinuteInterval::MinuteInterval4;
return;
case 5:
result = DatePickerMinuteInterval::MinuteInterval5;
return;
case 6:
result = DatePickerMinuteInterval::MinuteInterval6;
return;
case 10:
result = DatePickerMinuteInterval::MinuteInterval10;
return;
case 12:
result = DatePickerMinuteInterval::MinuteInterval12;
return;
case 15:
result = DatePickerMinuteInterval::MinuteInterval15;
return;
case 20:
result = DatePickerMinuteInterval::MinuteInterval20;
return;
case 30:
result = DatePickerMinuteInterval::MinuteInterval30;
return;
}
abort();
}
static inline std::string toString(const DatePickerMinuteInterval &value) {
switch (value) {
case DatePickerMinuteInterval::MinuteInterval1: return "1";
case DatePickerMinuteInterval::MinuteInterval2: return "2";
case DatePickerMinuteInterval::MinuteInterval3: return "3";
case DatePickerMinuteInterval::MinuteInterval4: return "4";
case DatePickerMinuteInterval::MinuteInterval5: return "5";
case DatePickerMinuteInterval::MinuteInterval6: return "6";
case DatePickerMinuteInterval::MinuteInterval10: return "10";
case DatePickerMinuteInterval::MinuteInterval12: return "12";
case DatePickerMinuteInterval::MinuteInterval15: return "15";
case DatePickerMinuteInterval::MinuteInterval20: return "20";
case DatePickerMinuteInterval::MinuteInterval30: return "30";
}
}
enum class DatePickerMode { Date, Time, Datetime };
static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, DatePickerMode &result) {
auto string = (std::string)value;
if (string == "date") { result = DatePickerMode::Date; return; }
if (string == "time") { result = DatePickerMode::Time; return; }
if (string == "datetime") { result = DatePickerMode::Datetime; return; }
abort();
}
static inline std::string toString(const DatePickerMode &value) {
switch (value) {
case DatePickerMode::Date: return "date";
case DatePickerMode::Time: return "time";
case DatePickerMode::Datetime: return "datetime";
}
}
enum class DatePickerPickerStyle { Compact, Spinner, Inline };
static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, DatePickerPickerStyle &result) {
auto string = (std::string)value;
if (string == "compact") { result = DatePickerPickerStyle::Compact; return; }
if (string == "spinner") { result = DatePickerPickerStyle::Spinner; return; }
if (string == "inline") { result = DatePickerPickerStyle::Inline; return; }
abort();
}
static inline std::string toString(const DatePickerPickerStyle &value) {
switch (value) {
case DatePickerPickerStyle::Compact: return "compact";
case DatePickerPickerStyle::Spinner: return "spinner";
case DatePickerPickerStyle::Inline: return "inline";
}
}
class JSI_EXPORT DatePickerProps final : public ViewProps {
public:
DatePickerProps() = default;
DatePickerProps(const PropsParserContext& context, const DatePickerProps &sourceProps, const RawProps &rawProps);
#pragma mark - Props
Float date{0.0};
Float initialDate{0.0};
std::string locale{};
Float maximumDate{0.0};
Float minimumDate{0.0};
DatePickerMinuteInterval minuteInterval{DatePickerMinuteInterval::MinuteInterval1};
DatePickerMode mode{DatePickerMode::Date};
Float timeZoneOffsetInMinutes{0.0};
DatePickerPickerStyle pickerStyle{DatePickerPickerStyle::Spinner};
};
enum class AndroidDrawerLayoutKeyboardDismissMode { None, OnDrag };
static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AndroidDrawerLayoutKeyboardDismissMode &result) {

Просмотреть файл

@ -14,7 +14,6 @@ namespace facebook {
namespace react {
extern const char ActivityIndicatorViewComponentName[] = "ActivityIndicatorView";
extern const char DatePickerComponentName[] = "DatePicker";
extern const char AndroidDrawerLayoutComponentName[] = "AndroidDrawerLayout";
extern const char AndroidSwipeRefreshLayoutComponentName[] = "AndroidSwipeRefreshLayout";
extern const char PullToRefreshViewComponentName[] = "PullToRefreshView";

Просмотреть файл

@ -30,17 +30,6 @@ using ActivityIndicatorViewShadowNode = ConcreteViewShadowNode<
ActivityIndicatorViewEventEmitter,
ActivityIndicatorViewState>;
JSI_EXPORT extern const char DatePickerComponentName[];
/*
* `ShadowNode` for <DatePicker> component.
*/
using DatePickerShadowNode = ConcreteViewShadowNode<
DatePickerComponentName,
DatePickerProps,
DatePickerEventEmitter,
DatePickerState>;
JSI_EXPORT extern const char AndroidDrawerLayoutComponentName[];
/*

Просмотреть файл

@ -32,21 +32,6 @@ public:
#endif
};
class DatePickerState {
public:
DatePickerState() = default;
#ifdef ANDROID
DatePickerState(DatePickerState const &previousState, folly::dynamic data){};
folly::dynamic getDynamic() const {
return {};
};
MapBuffer getMapBuffer() const {
return MapBufferBuilder::EMPTY();
};
#endif
};
class AndroidDrawerLayoutState {
public:
AndroidDrawerLayoutState() = default;

Просмотреть файл

@ -8,7 +8,7 @@
"**/__snapshots__/**",
"src/rntypes/**"
],
"baseVersion": "0.0.0-20221228-2020-ad953f6f4",
"baseVersion": "0.0.0-20230111-2023-573734f4e",
"overrides": [
{
"type": "derived",
@ -84,7 +84,7 @@
"type": "patch",
"file": "ReactCommon/Yoga.cpp",
"baseFile": "ReactCommon/yoga/yoga/Yoga.cpp",
"baseHash": "f9bff8771c1f5f87f67c71a9fd5be43f9f043ec7",
"baseHash": "f70626842ace0ea83be9d7692e587b6864557a7a",
"issue": 3994
},
{
@ -98,7 +98,7 @@
"type": "patch",
"file": "src/babel-plugin-codegen/GenerateViewConfigJs.js",
"baseFile": "packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js",
"baseHash": "9a5a7e8ab112e03b54953607953a09b8b372a1de",
"baseHash": "e3862539d6cba81a9bc8fb02e17c4145542a90df",
"issue": 5430
},
{
@ -119,7 +119,7 @@
"type": "derived",
"file": "src/index.windows.js",
"baseFile": "index.js",
"baseHash": "7da90f6b0172d5a9c302184c7247680804c328b7"
"baseHash": "70bbf5c1d4a00ae247ab2dfb811db3deee2f584c"
},
{
"type": "platform",
@ -205,12 +205,6 @@
"baseFile": "Libraries/Components/Button.js",
"baseHash": "31731fd48736bfcd3c36eb60a242b187236e124b"
},
{
"type": "copy",
"file": "src/Libraries/Components/DatePicker/DatePickerIOS.windows.js",
"baseFile": "Libraries/Components/DatePicker/DatePickerIOS.android.js",
"baseHash": "cd7c18ed335735df871f69424d498b82b920a298"
},
{
"type": "derived",
"file": "src/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.windows.js",
@ -404,7 +398,7 @@
"type": "derived",
"file": "src/Libraries/NativeComponent/BaseViewConfig.windows.js",
"baseFile": "Libraries/NativeComponent/BaseViewConfig.ios.js",
"baseHash": "991726f54a5cd6887db874c10f5ad3d2e90d5210"
"baseHash": "3c1918ff2ab3e43b4900e9b1e8549537d273d575"
},
{
"type": "platform",

Просмотреть файл

@ -78,14 +78,14 @@
"metro-config": "0.73.7",
"prettier": "^2.4.1",
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4",
"react-native": "0.0.0-20230111-2023-573734f4e",
"react-native-platform-override": "^1.9.0",
"react-refresh": "^0.4.0",
"typescript": "^4.4.4"
},
"peerDependencies": {
"react": "18.2.0",
"react-native": "0.0.0-20221228-2020-ad953f6f4"
"react-native": "0.0.0-20230111-2023-573734f4e"
},
"beachball": {
"defaultNpmTag": "canary",

Просмотреть файл

@ -1,47 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
'use strict';
import type {DatePickerIOSType} from './DatePickerIOS.flow';
import StyleSheet from '../../StyleSheet/StyleSheet';
import Text from '../../Text/Text';
import View from '../View/View';
import * as React from 'react';
class DummyDatePickerIOS extends React.Component {
render() {
return (
<View style={[styles.dummyDatePickerIOS, this.props.style]}>
<Text style={styles.datePickerText}>
DatePickerIOS is not supported on this platform!
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
dummyDatePickerIOS: {
height: 100,
width: 300,
backgroundColor: '#ffbcbc',
borderWidth: 1,
borderColor: 'red',
alignItems: 'center',
justifyContent: 'center',
margin: 10,
},
datePickerText: {
color: '#333333',
margin: 20,
},
});
module.exports = (DummyDatePickerIOS: DatePickerIOSType);

Просмотреть файл

@ -5,7 +5,7 @@
import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';
const requireNativeComponent = require('../../ReactNative/requireNativeComponent');
import requireNativeComponent from '../../ReactNative/requireNativeComponent';
import codegenNativeCommands from '../../Utilities/codegenNativeCommands';
import type {TextInputNativeCommands} from './TextInputNativeCommands';
type NativeType = HostComponent<mixed>;

Просмотреть файл

@ -182,10 +182,10 @@ const validAttributesForNonEventProps = {
accessibilityElementsHidden: true,
accessibilityIgnoresInvertColors: true,
testID: true,
backgroundColor: {process: require('../StyleSheet/processColor')},
backgroundColor: {process: require('../StyleSheet/processColor').default},
backfaceVisibility: true,
opacity: true,
shadowColor: {process: require('../StyleSheet/processColor')},
shadowColor: {process: require('../StyleSheet/processColor').default},
shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
shadowOpacity: true,
shadowRadius: true,
@ -199,7 +199,7 @@ const validAttributesForNonEventProps = {
pointerEvents: true,
removeClippedSubviews: true,
borderRadius: true,
borderColor: {process: require('../StyleSheet/processColor')},
borderColor: {process: require('../StyleSheet/processColor').default},
borderCurve: true,
borderWidth: true,
borderStyle: true,
@ -207,17 +207,17 @@ const validAttributesForNonEventProps = {
collapsable: true,
borderTopWidth: true,
borderTopColor: {process: require('../StyleSheet/processColor')},
borderTopColor: {process: require('../StyleSheet/processColor').default},
borderRightWidth: true,
borderRightColor: {process: require('../StyleSheet/processColor')},
borderRightColor: {process: require('../StyleSheet/processColor').default},
borderBottomWidth: true,
borderBottomColor: {process: require('../StyleSheet/processColor')},
borderBottomColor: {process: require('../StyleSheet/processColor').default},
borderLeftWidth: true,
borderLeftColor: {process: require('../StyleSheet/processColor')},
borderLeftColor: {process: require('../StyleSheet/processColor').default},
borderStartWidth: true,
borderStartColor: {process: require('../StyleSheet/processColor')},
borderStartColor: {process: require('../StyleSheet/processColor').default},
borderEndWidth: true,
borderEndColor: {process: require('../StyleSheet/processColor')},
borderEndColor: {process: require('../StyleSheet/processColor').default},
borderTopLeftRadius: true,
borderTopRightRadius: true,
@ -227,6 +227,10 @@ const validAttributesForNonEventProps = {
borderBottomRightRadius: true,
borderBottomStartRadius: true,
borderBottomEndRadius: true,
borderEndEndRadius: true,
borderEndStartRadius: true,
borderStartEndRadius: true,
borderStartStartRadius: true,
display: true,
zIndex: true,

Просмотреть файл

@ -115,4 +115,4 @@ const RCTNetworking = {
},
};
module.exports = RCTNetworking;
export default RCTNetworking;

Просмотреть файл

@ -64,7 +64,7 @@ function getReactDiffProcessValue(typeAnnotation: PropTypeAnnotation) {
switch (typeAnnotation.name) {
case 'ColorPrimitive':
return j.template
.expression`{ process: require('react-native/Libraries/StyleSheet/processColor') }`;
.expression`{ process: require('react-native/Libraries/StyleSheet/processColor').default }`;
case 'ImageSourcePrimitive':
return j.template
.expression`{ process: require('react-native/Libraries/Image/resolveAssetSource') }`;

Просмотреть файл

@ -14,7 +14,6 @@
import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo';
import typeof ActivityIndicator from './Libraries/Components/ActivityIndicator/ActivityIndicator';
import typeof Button from './Libraries/Components/Button';
import typeof DatePickerIOS from './Libraries/Components/DatePicker/DatePickerIOS';
import typeof DrawerLayoutAndroid from './Libraries/Components/DrawerAndroid/DrawerLayoutAndroid';
import typeof FlatList from './Libraries/Lists/FlatList';
import typeof Image from './Libraries/Image/Image';
@ -111,22 +110,13 @@ module.exports = {
.default;
},
get ActivityIndicator(): ActivityIndicator {
return require('./Libraries/Components/ActivityIndicator/ActivityIndicator');
return require('./Libraries/Components/ActivityIndicator/ActivityIndicator')
.default;
},
get Button(): Button {
return require('./Libraries/Components/Button');
},
// $FlowFixMe[value-as-type]
get DatePickerIOS(): DatePickerIOS {
warnOnce(
'DatePickerIOS-merged',
'DatePickerIOS has been merged with DatePickerAndroid and will be removed in a future release. ' +
"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. " +
'See https://github.com/react-native-datetimepicker/datetimepicker',
);
return require('./Libraries/Components/DatePicker/DatePickerIOS');
},
// $FlowFixMe[value-as-type]
get DrawerLayoutAndroid(): DrawerLayoutAndroid {
return require('./Libraries/Components/DrawerAndroid/DrawerLayoutAndroid');
},
@ -261,7 +251,7 @@ module.exports = {
return require('./Libraries/Utilities/DevSettings');
},
get Dimensions(): Dimensions {
return require('./Libraries/Utilities/Dimensions');
return require('./Libraries/Utilities/Dimensions').default;
},
get Easing(): Easing {
return require('./Libraries/Animated/Easing').default;
@ -285,7 +275,7 @@ module.exports = {
return require('./Libraries/Linking/Linking');
},
get LogBox(): LogBox {
return require('./Libraries/LogBox/LogBox');
return require('./Libraries/LogBox/LogBox').default;
},
get NativeDialogManagerAndroid(): NativeDialogManagerAndroid {
return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid')
@ -296,7 +286,7 @@ module.exports = {
},
// $FlowFixMe[value-as-type]
get Networking(): Networking {
return require('./Libraries/Network/RCTNetworking');
return require('./Libraries/Network/RCTNetworking').default;
},
get PanResponder(): PanResponder {
return require('./Libraries/Interaction/PanResponder');
@ -305,7 +295,7 @@ module.exports = {
return require('./Libraries/PermissionsAndroid/PermissionsAndroid');
},
get PixelRatio(): PixelRatio {
return require('./Libraries/Utilities/PixelRatio');
return require('./Libraries/Utilities/PixelRatio').default;
},
get PushNotificationIOS(): PushNotificationIOS {
warnOnce(
@ -356,7 +346,7 @@ module.exports = {
return require('./Libraries/Utilities/useWindowDimensions').default;
},
get UTFSequence(): UTFSequence {
return require('./Libraries/UTFSequence');
return require('./Libraries/UTFSequence').default;
},
get Vibration(): Vibration {
return require('./Libraries/Vibration/Vibration');
@ -387,12 +377,12 @@ module.exports = {
.PlatformColor;
},
get processColor(): processColor {
return require('./Libraries/StyleSheet/processColor');
return require('./Libraries/StyleSheet/processColor').default;
},
get requireNativeComponent(): <T>(
uiViewClassName: string,
) => HostComponent<T> {
return require('./Libraries/ReactNative/requireNativeComponent');
return require('./Libraries/ReactNative/requireNativeComponent').default;
},
get RootTagContext(): RootTagContext {
return require('./Libraries/ReactNative/RootTag').RootTagContext;
@ -832,4 +822,19 @@ if (__DEV__) {
);
},
});
/* $FlowFixMe[prop-missing] This is intentional: Flow will error when
* attempting to access DatePickerIOS. */
/* $FlowFixMe[invalid-export] This is intentional: Flow will error when
* attempting to access DatePickerIOS. */
Object.defineProperty(module.exports, 'DatePickerIOS', {
configurable: true,
get() {
invariant(
false,
'DatePickerIOS has been removed from react-native core. ' +
"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. " +
'See https://github.com/react-native-datetimepicker/datetimepicker',
);
},
});
}

Просмотреть файл

@ -10044,10 +10044,10 @@ react-native-xaml@^0.0.70:
"@types/react-native" "*"
typescript "^4.4.3"
react-native@0.0.0-20221228-2020-ad953f6f4:
version "0.0.0-20221228-2020-ad953f6f4"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.0.0-20221228-2020-ad953f6f4.tgz#e7fbb8ee539c62900dab4fb53d68439ff170e2f4"
integrity sha512-7pGA605KQ6O3E8SI0To0wnq/uf8nlM7tmnTSl84kzJcPcXevuOii3027pYVanOkEJ9XNvID/s3SkuCZtauSypg==
react-native@0.0.0-20230111-2023-573734f4e:
version "0.0.0-20230111-2023-573734f4e"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.0.0-20230111-2023-573734f4e.tgz#cb036733f157f0921b180b3db3046c471c03efcc"
integrity sha512-Z226hFnkbt1E8zV/5K7chiMcVKF9T0CCkSwoeE95JbNFoZ5pVv7sLajsIgUNyFMNjYmr5GBABA9Ji8Yl6EehQg==
dependencies:
"@jest/create-cache-key-function" "^29.2.1"
"@react-native-community/cli" "10.0.0"