* integrate 6/14

* Change files

* fix linting and snapshots

* fix snapshot

* fix snapshots again

* add comments

* fix comment

* remove comment from codegen file

* revert packages.lock.json

* Update TextProps.windows.js

* Update Text.windows.js

* update Text.windows.js and TextProps.js

* update text.windows.js

* fix snapshots

* integrate 0.75.0-nightly-20240618-5df5ed1a8

* Change files

* fix CI and validate-overrides

* use @react-native-community/template@next

* add comments

* update script temporarily

* remove AppRegistry, AppContainer and renderApplication overrides

* fix text snapshots

* fix httprequest snapshot

* comment out failing fabric tests

* fix bad change

* fix snapshot

---------

Co-authored-by: Marlene Cota <1422161+marlenecota@users.noreply.github.com>
Co-authored-by: TatianaKapos <tatianakapos@microsoft.com>
This commit is contained in:
Yajur-Grover 2024-07-22 12:10:02 -07:00 коммит произвёл GitHub
Родитель ed69918a55
Коммит 7b187af8b1
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
86 изменённых файлов: 1156 добавлений и 19631 удалений

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

@ -40,17 +40,21 @@ steps:
- ${{ if endsWith(parameters.template, '-app') }}:
- script: |
npx --yes react-native@$(reactNativeDevDependency) init testcli --template react-native@$(reactNativeDevDependency)
# Change version of @react-native-community/template from 'next' to 'reactNativeDevDependency' - Windows #13446
npx --yes react-native@$(reactNativeDevDependency) init testcli --template @react-native-community/template@next
displayName: Init new app project with react-native init
workingDirectory: $(Agent.BuildDirectory)
- ${{ if endsWith(parameters.template, '-lib') }}:
- script: |
npx --yes create-react-native-library@latest --slug testcli --description testcli --author-name "React-Native-Windows Bot" --author-email 53619745+rnbot@users.noreply.github.com --author-url http://example.com --repo-url http://example.com --languages java-objc --type module-new --react-native-version $(reactNativeDevDependency) --example vanilla testcli
# Change version of react-native from 'next' to 'reactNativeDevDependency' - Windows #13446
npx --yes create-react-native-library@latest --slug testcli --description testcli --author-name "React-Native-Windows Bot" --author-email 53619745+rnbot@users.noreply.github.com --author-url http://example.com --repo-url http://example.com --languages java-objc --type module-new --react-native-version next --example vanilla testcli
displayName: Init new lib project with create-react-native-library
workingDirectory: $(Agent.BuildDirectory)
- script: |
# Once version of react-native is reverted from 'next' to 'reactNativeDevDependency', remove 'yarn upgrade' command - Windows #13446
call yarn upgrade react-native@$(reactNativeDevDependency)
call yarn install
displayName: pre-windows yarn install
workingDirectory: $(Agent.BuildDirectory)\testcli

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

@ -69,7 +69,8 @@ steps:
- ${{ if eq(parameters.projectType, 'app') }}:
- script: |
npx --yes react-native@$(reactNativeDevDependency) init testcli --template react-native@$(reactNativeDevDependency)
# Change version of @react-native-community/template from next to reactNativeDevDependency - Windows #13446
npx --yes react-native@$(reactNativeDevDependency) init testcli --template @react-native-community/template@next
displayName: Init new app project
workingDirectory: $(Agent.BuildDirectory)

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 6/14",
"packageName": "@office-iss/react-native-win32",
"email": "yajurgrover24@gmail.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/automation",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 6/14",
"packageName": "@react-native-windows/automation-channel",
"email": "yajurgrover24@gmail.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/automation-commands",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/cli",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/codegen",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/find-repo-root",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/fs",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/package-utils",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@react-native-windows/telemetry",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/create-github-releases",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/doxysaurus",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 6/14",
"packageName": "@rnw-scripts/eslint-config",
"email": "yajurgrover24@gmail.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/format-files",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/integrate-rn",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/jest-out-of-tree-resolver",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/jest-out-of-tree-snapshot-resolver",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/just-task",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/promote-release",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "@rnw-scripts/take-screenshot",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "react-native-platform-override",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "integrate 6/14",
"packageName": "react-native-windows",
"email": "yajurgrover24@gmail.com",
"dependentChangeType": "patch"
}

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

@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "integrate 0.75.0-nightly-20240618-5df5ed1a8",
"packageName": "react-native-windows-init",
"email": "tatianakapos@microsoft.com",
"dependentChangeType": "patch"
}

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

@ -5,7 +5,7 @@
"excludePatterns": [
"src/js/examples-win32/**"
],
"baseVersion": "0.75.0-nightly-20240613-f7aea0c8e",
"baseVersion": "0.75.0-nightly-20240618-5df5ed1a8",
"overrides": [
{
"type": "patch",

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

@ -19,7 +19,7 @@
"peerDependencies": {
"@office-iss/react-native-win32": "^0.0.0-canary.256",
"react": "18.0.0",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e"
"react-native": "0.75.0-nightly-20240618-5df5ed1a8"
},
"devDependencies": {
"@office-iss/react-native-win32": "^0.0.0-canary.256",
@ -30,7 +30,7 @@
"@types/node": "^18.0.0",
"eslint": "^8.19.0",
"just-scripts": "^1.3.3",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-platform-override": "^1.9.43",
"typescript": "5.0.4"
},

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

@ -159,4 +159,4 @@ untyped-import
untyped-type-import
[version]
^0.237.2
^0.238.0

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

@ -7,13 +7,13 @@
"**/__snapshots__/**",
"src-win/rntypes/**"
],
"baseVersion": "0.75.0-nightly-20240613-f7aea0c8e",
"baseVersion": "0.75.0-nightly-20240618-5df5ed1a8",
"overrides": [
{
"type": "derived",
"file": ".flowconfig",
"baseFile": ".flowconfig",
"baseHash": "0a0c16d79748a5e84407a57c772c3508160134ae"
"baseHash": "75582b181be0cd6790f7c021bfafb761dfc42381"
},
{
"type": "derived",
@ -317,7 +317,7 @@
"type": "patch",
"file": "src-win/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js",
"baseFile": "packages/react-native/Libraries/LogBox/UI/LogBoxInspectorHeader.js",
"baseHash": "1a12281b1cfab7352fcfeb5984f0ed3c83c04660",
"baseHash": "e85290422895e30d58e2d804f11e73407a743282",
"issue": 7952
},
{
@ -439,13 +439,13 @@
"type": "derived",
"file": "src-win/Libraries/Text/Text.win32.js",
"baseFile": "packages/react-native/Libraries/Text/Text.js",
"baseHash": "24376d16dfc834512d72348e2a434731440146d4"
"baseHash": "71c24366f3f0baa9a48ba34c08b255483bf77553"
},
{
"type": "derived",
"file": "src-win/Libraries/Text/TextNativeComponent.win32.js",
"baseFile": "packages/react-native/Libraries/Text/TextNativeComponent.js",
"baseHash": "9f7ea4e5225a06e1ec3bb46a2f4bc9f72bf46873",
"baseHash": "1b2e6301edc13f3a91e47b9befe8a47a12e6ad39",
"issue": 7074
},
{

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

@ -30,13 +30,13 @@
"@react-native-community/cli-platform-android": "14.0.0-alpha.2",
"@react-native-community/cli-platform-ios": "14.0.0-alpha.2",
"@react-native/assets": "1.0.0",
"@react-native/assets-registry": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/codegen": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/community-cli-plugin": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/gradle-plugin": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/js-polyfills": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/normalize-colors": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/virtualized-lists": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/assets-registry": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/codegen": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/community-cli-plugin": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/gradle-plugin": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/js-polyfills": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/normalize-colors": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/virtualized-lists": "0.75.0-nightly-20240618-5df5ed1a8",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
"ansi-regex": "^5.0.0",
@ -61,7 +61,7 @@
"react-refresh": "^0.14.0",
"react-shallow-renderer": "^16.15.0",
"regenerator-runtime": "^0.13.2",
"scheduler": "0.24.0-canary-efb381bbf-20230505",
"scheduler": "0.25.0-rc-fb9a90fa48-20240614",
"semver": "^7.1.3",
"stacktrace-parser": "^0.1.10",
"whatwg-fetch": "^3.0.0",
@ -71,13 +71,13 @@
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/eslint-parser": "^7.20.0",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.28",
"@rnw-scripts/just-task": "2.3.41",
"@rnw-scripts/metro-dev-config": "0.0.0",
"@rnx-kit/jest-preset": "^0.1.0",
"@rnx-kit/jest-preset": "^0.1.17",
"@types/node": "^18.0.0",
"@types/prop-types": "15.7.1",
"@types/react": "^18.2.6",
@ -86,15 +86,15 @@
"jscodeshift": "^0.14.0",
"just-scripts": "^1.3.3",
"prettier": "2.8.8",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-platform-override": "^1.9.43",
"typescript": "5.0.4"
},
"peerDependencies": {
"@types/react": "^18.2.6",
"react": "^18.2.0",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e"
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8"
},
"beachball": {
"defaultNpmTag": "canary",

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

@ -17,17 +17,18 @@ import View from '../../Components/View/View';
import StyleSheet from '../../StyleSheet/StyleSheet';
import Text from '../../Text/Text';
import Platform from '../../Utilities/Platform';
import LogBoxButton from './LogBoxButton';
import LogBoxInspectorHeaderButton from './LogBoxInspectorHeaderButton';
import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
type Props = $ReadOnly<{|
type Props = $ReadOnly<{
onSelectIndex: (selectedIndex: number) => void,
selectedIndex: number,
total: number,
level: LogLevel,
|}>;
}>;
function LogBoxInspectorHeader(props: Props): React.Node {
export default function LogBoxInspectorHeader(props: Props): React.Node {
if (props.level === 'syntax') {
return (
<View style={[styles.safeArea, styles[props.level]]}>
@ -53,7 +54,7 @@ function LogBoxInspectorHeader(props: Props): React.Node {
<LogBoxInspectorHeaderButton
disabled={props.total <= 1}
level={props.level}
image={'←'}
image={new String('←')}
onPress={() => props.onSelectIndex(prevIndex)}
/>
<View style={styles.title}>
@ -62,7 +63,7 @@ function LogBoxInspectorHeader(props: Props): React.Node {
<LogBoxInspectorHeaderButton
disabled={props.total <= 1}
level={props.level}
image={'→'}
image={new String('→')}
onPress={() => props.onSelectIndex(nextIndex)}
/>
</View>
@ -70,70 +71,6 @@ function LogBoxInspectorHeader(props: Props): React.Node {
);
}
const backgroundForLevel = (level: LogLevel) =>
({
warn: {
default: 'transparent',
pressed: LogBoxStyle.getWarningDarkColor(),
},
error: {
default: 'transparent',
pressed: LogBoxStyle.getErrorDarkColor(),
},
fatal: {
default: 'transparent',
pressed: LogBoxStyle.getFatalDarkColor(),
},
syntax: {
default: 'transparent',
pressed: LogBoxStyle.getFatalDarkColor(),
},
})[level];
function LogBoxInspectorHeaderButton(
props: $ReadOnly<{|
disabled: boolean,
image: string,
level: LogLevel,
onPress?: ?() => void,
|}>,
): React.Node {
return (
<LogBoxButton
backgroundColor={backgroundForLevel(props.level)}
onPress={props.disabled ? null : props.onPress}
style={styles.title}>
{props.disabled ? null : (
<Text style={[styles.titleText, headerStyles.buttonText]}>
{props.image}
</Text>
)}
</LogBoxButton>
);
}
const headerStyles = StyleSheet.create({
button: {
alignItems: 'center',
aspectRatio: 1,
justifyContent: 'center',
marginTop: 0,
marginRight: 6,
marginLeft: 6,
marginBottom: 0,
borderRadius: 3,
height: 50,
width: 50,
},
buttonText: {
fontSize: 30,
},
buttonImage: {
fontSize: 20,
color: LogBoxStyle.getTextColor(),
},
});
const styles = StyleSheet.create({
syntax: {
backgroundColor: LogBoxStyle.getFatalColor(),
@ -173,5 +110,3 @@ const styles = StyleSheet.create({
paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight : 40,
},
});
export default LogBoxInspectorHeader;

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

@ -56,8 +56,10 @@ const Text: React.AbstractComponent<
'aria-selected': ariaSelected,
'aria-setsize': ariaSetsize, // Win32
ellipsizeMode,
disabled,
id,
nativeID,
numberOfLines,
onLongPress,
onPress,
onPressIn,
@ -69,7 +71,10 @@ const Text: React.AbstractComponent<
onResponderTerminationRequest,
onStartShouldSetResponder,
pressRetentionOffset,
selectable,
selectionColor,
suppressHighlighting,
style,
...restProps
} = props;
@ -113,7 +118,7 @@ const Text: React.AbstractComponent<
}
const _accessibilityStateDisabled = _accessibilityState?.disabled;
const _disabled = restProps.disabled ?? _accessibilityStateDisabled;
const _disabled = disabled ?? _accessibilityStateDisabled;
const isPressable =
(onPress != null ||
@ -216,29 +221,28 @@ const Text: React.AbstractComponent<
);
// TODO: Move this processing to the view configuration.
const selectionColor =
restProps.selectionColor == null
? null
: processColor(restProps.selectionColor);
const _selectionColor =
selectionColor == null ? null : processColor(selectionColor);
let style = restProps.style;
let _style = style;
if (__DEV__) {
if (PressabilityDebug.isEnabled() && onPress != null) {
style = [restProps.style, {color: 'magenta'}];
_style = [style, {color: 'magenta'}];
}
}
let numberOfLines = restProps.numberOfLines;
if (numberOfLines != null && !(numberOfLines >= 0)) {
let _numberOfLines = numberOfLines;
if (_numberOfLines != null && !(_numberOfLines >= 0)) {
if (__DEV__) {
console.error(
`'numberOfLines' in <Text> must be a non-negative number, received: ${numberOfLines}. The value will be set to 0.`,
`'numberOfLines' in <Text> must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`,
);
numberOfLines = 0;
}
_numberOfLines = 0;
}
let _selectable = restProps.selectable;
const processedStyle = flattenStyle(style);
let _selectable = selectable;
const processedStyle = flattenStyle(_style);
if (processedStyle != null) {
if (typeof processedStyle.fontWeight === 'number') {
// $FlowFixMe[cannot-write]
@ -279,11 +283,12 @@ const Text: React.AbstractComponent<
isHighlighted={isHighlighted}
isPressable={isPressable}
nativeID={_nativeID}
numberOfLines={numberOfLines}
numberOfLines={_numberOfLines}
ref={forwardedRef}
selectable={_selectable}
selectionColor={selectionColor}
selectionColor={_selectionColor}
style={processedStyle}
disabled={disabled}
/>
);
}
@ -325,10 +330,10 @@ const Text: React.AbstractComponent<
ellipsizeMode={ellipsizeMode ?? 'tail'}
isHighlighted={isHighlighted}
nativeID={_nativeID}
numberOfLines={numberOfLines}
numberOfLines={_numberOfLines}
ref={forwardedRef}
selectable={_selectable}
selectionColor={selectionColor}
selectionColor={_selectionColor}
style={processedStyle}
/>
</TextAncestor.Provider>

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

@ -17,7 +17,7 @@ import {createViewConfig} from '../NativeComponent/ViewConfig';
import UIManager from '../ReactNative/UIManager';
import createReactNativeComponentClass from '../Renderer/shims/createReactNativeComponentClass';
type NativeTextProps = $ReadOnly<{
export type NativeTextProps = $ReadOnly<{
...TextProps,
isHighlighted?: ?boolean,
selectionColor?: ?ProcessedColorValue,

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

@ -2,15 +2,16 @@
'use strict';
const React = require('react');
const ReactTestRenderer = require('react-test-renderer');
const renderer = require('react-native/jest/renderer');
const {ButtonWin32} = require('@office-iss/react-native-win32');
describe('ButtonWin32', () => {
it('renders native component', () => {
const component = ReactTestRenderer.create(
<ButtonWin32/>
);
expect(component).toMatchSnapshot();
it('renders native component', async () => {
expect(
await renderer.create(
<ButtonWin32/>,
),
).toMatchSnapshot();
});
});

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

@ -30,8 +30,8 @@
"eslint": "^8.19.0",
"just-scripts": "^1.3.2",
"prettier": "2.8.8",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843",
"typescript": "5.0.4"
},

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

@ -40,8 +40,8 @@
"xpath": "^0.0.27"
},
"devDependencies": {
"@react-native-community/cli-doctor": "14.0.0-alpha.0",
"@react-native-community/cli-types": "14.0.0-alpha.0",
"@react-native-community/cli-doctor": "14.0.0-alpha.2",
"@react-native-community/cli-types": "14.0.0-alpha.2",
"@rnw-scripts/eslint-config": "1.2.24",
"@rnw-scripts/jest-unittest-config": "1.5.8",
"@rnw-scripts/just-task": "2.3.41",

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

@ -12,7 +12,7 @@ export const HealthCheckList = [
[true, 'DeveloperMode', 'Developer mode is on'],
[true, 'LongPath', 'Long path support is enabled'],
[true, 'VSUWP', 'Visual Studio 2022 (>= 17.9) & req. components'],
[true, 'Node', 'Node.js (LTS, >= 18.0)'],
[true, 'Node', 'Node.js (LTS, >= 18.18)'],
[true, 'Yarn', 'Yarn'],
[true, 'DotNetCore', '.NET SDK (LTS, = 6.0)'],
];

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

@ -147,7 +147,7 @@ ${type.properties
function tryGetConstantType(
nativeModule: NativeModuleSchema,
): NativeModuleObjectTypeAnnotation | undefined {
const candidates = nativeModule.spec.properties.filter(
const candidates = nativeModule.spec.methods.filter(
prop => prop.name === 'getConstants',
);
if (candidates.length === 0) {
@ -224,7 +224,7 @@ export function generateTypeScript(
? ''
: ` getConstants(): ${translateType(constantType)}`;
const methods = nativeModule.spec.properties.filter(
const methods = nativeModule.spec.methods.filter(
prop => prop.name !== 'getConstants',
);
const membersCode = methods.map(translateMethod).join('');

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

@ -104,6 +104,7 @@ export function translateFieldOrReturnType(
callerName,
options,
)}>`;
case 'FunctionTypeAnnotation':
case 'MixedTypeAnnotation':
return '';
case 'EnumDeclaration':

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

@ -13,7 +13,7 @@ export function generateValidateConstants(
nativeModule: NativeModuleSchema,
aliases: AliasMap,
): [string, string] | undefined {
const candidates = nativeModule.spec.properties.filter(
const candidates = nativeModule.spec.methods.filter(
prop => prop.name === 'getConstants',
);
if (candidates.length === 0) {

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

@ -87,13 +87,13 @@ function translatePossibleMethodSignatures(
}
function renderProperties(
properties: ReadonlyArray<NativeModulePropertyShape>,
methods: ReadonlyArray<NativeModulePropertyShape>,
aliases: AliasMap,
tuple: boolean,
options: CppCodegenOptions,
): string {
// TODO: generate code for constants
return properties
return methods
.filter(prop => prop.name !== 'getConstants')
.map((prop, index) => {
// TODO: prop.optional === true
@ -160,15 +160,15 @@ export function generateValidateMethods(
aliases: AliasMap,
options: CppCodegenOptions,
): [string, string] {
const properties = nativeModule.spec.properties;
const methods = nativeModule.spec.methods;
const traversedProperties = renderProperties(
properties,
methods,
aliases,
false,
options,
);
const traversedPropertyTuples = renderProperties(
properties,
methods,
aliases,
true,
options,

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

@ -5,7 +5,7 @@
"excludePatterns": [
"src/js/examples-win/**"
],
"baseVersion": "0.75.0-nightly-20240613-f7aea0c8e",
"baseVersion": "0.75.0-nightly-20240618-5df5ed1a8",
"overrides": [
{
"type": "derived",

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

@ -18,7 +18,7 @@
"peerDependencies": {
"@react-native-picker/picker": "2.4.10",
"react": "18.0.0",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843",
"react-native-xaml": "^0.0.78"
},
@ -31,7 +31,7 @@
"@types/node": "^18.0.0",
"eslint": "^8.19.0",
"just-scripts": "^1.3.3",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-platform-override": "^1.9.43",
"react-native-windows": "^0.0.0-canary.843",
"typescript": "5.0.4"

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

@ -1,11 +1,11 @@
{
"baseVersion": "0.75.0-nightly-20240613-f7aea0c8e",
"baseVersion": "0.75.0-nightly-20240618-5df5ed1a8",
"overrides": [
{
"type": "patch",
"file": "package.json",
"baseFile": "package.json",
"baseHash": "e701abe396d106c4e2b0d26e649f2acccf86f4c7"
"baseHash": "11c838fa94b4fd0af8fc6cfb79be0713ba050d01"
}
]
}

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

@ -45,8 +45,8 @@
"@definitelytyped/dtslint": "^0.0.127",
"@jest/create-cache-key-function": "^29.6.3",
"@pkgjs/parseargs": "^0.11.0",
"@react-native/metro-babel-transformer": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-babel-transformer": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/metro-config": "0.75.0-nightly-20240618-5df5ed1a8",
"@tsconfig/node18": "1.0.1",
"@types/react": "^18.2.6",
"@typescript-eslint/parser": "^7.1.1",
@ -73,7 +73,7 @@
"eslint-plugin-redundant-undefined": "^0.4.0",
"eslint-plugin-relay": "^1.8.3",
"flow-api-translator": "0.22.0",
"flow-bin": "^0.237.2",
"flow-bin": "^0.238.0",
"glob": "^7.1.1",
"hermes-eslint": "0.22.0",
"hermes-transform": "0.22.0",
@ -89,13 +89,16 @@
"nullthrows": "^1.1.1",
"prettier": "2.8.8",
"prettier-plugin-hermes-parser": "0.22.0",
"react": "18.3.1",
"react-test-renderer": "18.3.1",
"react": "19.0.0-rc-fb9a90fa48-20240614",
"react-test-renderer": "19.0.0-rc-fb9a90fa48-20240614",
"rimraf": "^3.0.2",
"shelljs": "^0.8.5",
"signedsource": "^1.0.0",
"supports-color": "^7.1.0",
"typescript": "5.0.4",
"ws": "^6.2.2"
},
"resolutions": {
"react-is": "19.0.0-rc-fb9a90fa48-20240614"
}
}

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

@ -12,11 +12,14 @@
const React = require('react');
const {Alert, Text, View} = require('react-native');
const {RNTesterThemeContext} = require('../../components/RNTesterTheme');
type Props = $ReadOnly<{||}>;
class AccessibilityIOSExample extends React.Component<Props> {
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<>
<View
onAccessibilityAction={event => {
@ -26,7 +29,9 @@ class AccessibilityIOSExample extends React.Component<Props> {
}}
accessible={true}
accessibilityActions={[{name: 'activate'}]}>
<Text>Accessibility normal tap example</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Accessibility normal tap example
</Text>
</View>
<View
onAccessibilityAction={event => {
@ -36,7 +41,9 @@ class AccessibilityIOSExample extends React.Component<Props> {
}}
accessible={true}
accessibilityActions={[{name: 'magicTap'}]}>
<Text>Accessibility magic tap example</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Accessibility magic tap example
</Text>
</View>
<View
onAccessibilityAction={event => {
@ -46,17 +53,23 @@ class AccessibilityIOSExample extends React.Component<Props> {
}}
accessible={true}
accessibilityActions={[{name: 'escape'}]}>
<Text>Accessibility escape example</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Accessibility escape example
</Text>
</View>
<View accessibilityElementsHidden={true}>
<Text>
<Text style={{color: theme.SecondaryLabelColor}}>
This view's children are hidden from the accessibility tree
</Text>
</View>
<View accessible={true} accessibilityLanguage="it-IT">
<Text>This view's language should be `it-IT`</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
This view's language should be `it-IT`
</Text>
</View>
</>
)}
</RNTesterThemeContext.Consumer>
);
}
}

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

@ -11,6 +11,7 @@
'use strict';
import type {NativeMethods} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';
import {RNTesterThemeContext} from '../../components/RNTesterTheme';
const ScreenshotManager = require('../../../NativeModuleExample/NativeScreenshotManager');
const React = require('react');
@ -37,12 +38,20 @@ class ActionSheetExample extends React.Component<Props, State> {
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showActionSheet} style={style.button}>
<Text
onPress={this.showActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the ActionSheet
</Text>
<Text>Clicked button: {this.state.clicked}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Clicked button: {this.state.clicked}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -70,12 +79,20 @@ class ActionSheetTintExample extends React.Component<
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showActionSheet} style={style.button}>
<Text
onPress={this.showActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the ActionSheet
</Text>
<Text>Clicked button: {this.state.clicked}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Clicked button: {this.state.clicked}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -104,12 +121,20 @@ class ActionSheetCancelButtonTintExample extends React.Component<
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showActionSheet} style={style.button}>
<Text
onPress={this.showActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the ActionSheet
</Text>
<Text>Clicked button: {this.state.clicked}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Clicked button: {this.state.clicked}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -141,20 +166,26 @@ class ActionSheetAnchorExample extends React.Component<
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<View style={style.anchorRow}>
<Text style={style.button}>
<Text style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click there to show the ActionSheet ->
</Text>
<Text
onPress={this.showActionSheet}
style={style.button}
style={[style.button, {color: theme.SecondaryLabelColor}]}
ref={this.anchorRef}>
HERE
</Text>
</View>
<Text>Clicked button: {this.state.clicked}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Clicked button: {this.state.clicked}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -182,12 +213,20 @@ class ActionSheetDisabledExample extends React.Component<Props, State> {
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showActionSheet} style={style.button}>
<Text
onPress={this.showActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the ActionSheet
</Text>
<Text>Clicked button: {this.state.clicked}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
Clicked button: {this.state.clicked}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -209,12 +248,18 @@ class ActionSheetDisabledExample extends React.Component<Props, State> {
class ActionSheetDismissExample extends React.Component<{...}> {
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showAndDismissActionSheet} style={style.button}>
<Text
onPress={this.showAndDismissActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show and automatically dismiss the ActionSheet after 3
seconds
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -244,12 +289,20 @@ class ShareActionSheetExample extends React.Component<
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showShareActionSheet} style={style.button}>
<Text
onPress={this.showShareActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the Share ActionSheet
</Text>
<Text>{this.state.text}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
{this.state.text}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -285,12 +338,20 @@ class ShareScreenshotExample extends React.Component<
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<Text onPress={this.showShareActionSheet} style={style.button}>
<Text
onPress={this.showShareActionSheet}
style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the Share ActionSheet
</Text>
<Text>{this.state.text}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
{this.state.text}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
@ -332,20 +393,26 @@ class ShareScreenshotAnchorExample extends React.Component<
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View>
<View style={style.anchorRow}>
<Text style={style.button}>
<Text style={[style.button, {color: theme.SecondaryLabelColor}]}>
Click to show the Share ActionSheet ->
</Text>
<Text
onPress={this.showShareActionSheet}
style={style.button}
style={[style.button, {color: theme.SecondaryLabelColor}]}
ref={this.anchorRef}>
HERE
</Text>
</View>
<Text>{this.state.text}</Text>
<Text style={{color: theme.SecondaryLabelColor}}>
{this.state.text}
</Text>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}

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

@ -11,6 +11,7 @@
import type {RNTesterModule} from '../../types/RNTesterTypes';
import * as React from 'react';
import {RNTesterThemeContext} from '../../components/RNTesterTheme';
import {Alert, Pressable, StyleSheet, Text, View} from 'react-native';
// Shows log on the screen
@ -241,11 +242,14 @@ const PromptOptions = () => {
style: 'cancel',
},
];
const theme = React.useContext(RNTesterThemeContext);
return (
<View>
<Text style={styles.promptValue}>
<Text style={styles.bold}>Prompt value:</Text>
<Text style={[{color: theme.SecondaryLabelColor}, styles.bold]}>
Prompt value:
</Text>
{JSON.stringify(promptValue, null, 2)}
</Text>

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

@ -86,7 +86,7 @@ class RequestIdleCallbackTester extends React.Component<
message = 'Burned CPU for 10ms,';
}
this.setState({
message: `${message} ${deadline.timeRemaining()}ms remaining in frame`,
message: `${message} ${deadline.timeRemaining()}ms remaining in frame (timeout: ${String(deadline.didTimeout)})`,
});
});
}

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

@ -40,6 +40,7 @@ class XHRExampleDownload extends React.Component<{...}, Object> {
readystateHandler: false,
progressHandler: true,
arraybuffer: false,
chunked: false,
};
xhr: ?XMLHttpRequest = null;
@ -107,12 +108,19 @@ class XHRExampleDownload extends React.Component<{...}, Object> {
Alert.alert('Error', xhr.responseText);
}
};
if (this.state.chunked) {
xhr.open(
'GET',
'https://filesamples.com/samples/ebook/azw3/Around%20the%20World%20in%2028%20Languages.azw3',
);
} else {
xhr.open(
'GET',
'http://aleph.gutenberg.org/cache/epub/100/pg100-images.html.utf8',
);
// Avoid gzip so we can actually show progress
xhr.setRequestHeader('Accept-Encoding', '');
}
xhr.send();
this.setState({downloading: true});
@ -133,7 +141,11 @@ class XHRExampleDownload extends React.Component<{...}, Object> {
) : (
<TouchableHighlight style={styles.wrapper} onPress={this._download}>
<View style={styles.button}>
<Text>Download 7MB Text File</Text>
<Text>
{this.state.chunked
? 'Download 10MB File'
: 'Download 19KB pdf File'}
</Text>
</View>
</TouchableHighlight>
);
@ -188,6 +200,13 @@ class XHRExampleDownload extends React.Component<{...}, Object> {
onValueChange={arraybuffer => this.setState({arraybuffer})}
/>
</View>
<View style={styles.configRow}>
<Text>transfer-encoding: chunked</Text>
<Switch
value={this.state.chunked}
onValueChange={chunked => this.setState({chunked})}
/>
</View>
{button}
{readystate}
{progress}

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

@ -1,5 +1,5 @@
{
"baseVersion": "0.75.0-nightly-20240613-f7aea0c8e",
"baseVersion": "0.75.0-nightly-20240618-5df5ed1a8",
"overrides": [
{
"type": "copy",
@ -19,14 +19,14 @@
"type": "copy",
"directory": "js/examples/Accessibility",
"baseDirectory": "packages/rn-tester/js/examples/Accessibility",
"baseHash": "a7c60c86d2c129b8956401f9a655643fbbfd0d47",
"baseHash": "202c0403c5421448660ea8eefce2d08d4050fb0f",
"issue": 4054
},
{
"type": "copy",
"directory": "js/examples/ActionSheetIOS",
"baseDirectory": "packages/rn-tester/js/examples/ActionSheetIOS",
"baseHash": "72a48941ddf9da8fb5d2da51f6e5ea68c8769315",
"baseHash": "9e96e8232483b57cf3c6288618be416cbee67661",
"issue": 4054
},
{
@ -40,7 +40,7 @@
"type": "copy",
"directory": "js/examples/Alert",
"baseDirectory": "packages/rn-tester/js/examples/Alert",
"baseHash": "5ed9654a15f3a9b536e322433fe350cbe0fa9802",
"baseHash": "7022b11445f0946d27d3051739f4b4fd1fba5bc8",
"issue": 4054
},
{
@ -404,7 +404,7 @@
"type": "copy",
"directory": "js/examples/Timer",
"baseDirectory": "packages/rn-tester/js/examples/Timer",
"baseHash": "3dc4f038350bc33606e7de919f317997e2166f75",
"baseHash": "6368c65721027c9cc3174c846bbd084ad3dc4f9c",
"issue": 4054
},
{
@ -467,7 +467,7 @@
"type": "copy",
"directory": "js/examples/XHR",
"baseDirectory": "packages/rn-tester/js/examples/XHR",
"baseHash": "b7de8fa8fdd431bda468acd429914d5891aca0a7",
"baseHash": "b7dfda5f6ff304b4760e3eaa3db8d50ba2eee18f",
"issue": 4054
},
{
@ -572,7 +572,7 @@
"type": "patch",
"file": "package.json",
"baseFile": "packages/rn-tester/package.json",
"baseHash": "cfd0d876dfb0c2c3bb7e4d96eea50613d4486288",
"baseHash": "1ae462bf0c4108bda00c00adaf4d13ef30ea9d8a",
"issue": 13228
}
]

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

@ -29,7 +29,7 @@
"nullthrows": "^1.1.1"
},
"peerDependencies": {
"react": "18.3.1",
"react": "19.0.0-rc-fb9a90fa48-20240614",
"react-native": "*"
},
"codegenConfig": {

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

@ -11,12 +11,12 @@
},
"dependencies": {
"@babel/core": "^7.20.0",
"@react-native/babel-preset": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/babel-preset": "0.75.0-nightly-20240614-8b53d41a8",
"babel-plugin-transform-flow-enums": "^0.0.2"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@react-native/babel-preset": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/babel-preset": "0.75.0-nightly-20240614-8b53d41a8",
"eslint": "^8.19.0",
"prettier": "2.8.8"
},

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

@ -12,7 +12,7 @@
"@babel/core": "^7.20.0",
"@babel/eslint-parser": "^7.20.0",
"@microsoft/eslint-plugin-sdl": "^0.2.0",
"@react-native/eslint-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/eslint-config": "0.75.0-nightly-20240614-8b53d41a8",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-ft-flow": "^2.0.1"
},

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

@ -19,6 +19,7 @@
"integrate-rn": "./bin.js"
},
"dependencies": {
"@react-native-community/template": "^0.75.0-rc.3",
"@react-native-windows/find-repo-root": "^0.0.0-canary.82",
"@react-native-windows/fs": "^0.0.0-canary.53",
"@react-native-windows/package-utils": "^0.0.0-canary.79",

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

@ -127,7 +127,7 @@ async function upgradeReactNative(
const findRnOpts = {searchPath: platformPackages[0].path};
const origJson = (await findPackage('react-native', findRnOpts))!.json;
const origTemplateJson = (await findPackage(
'react-native/template',
'@react-native-community/template',
findRnOpts,
))!.json;
@ -158,7 +158,7 @@ async function upgradeReactNative(
await runCommand('yarn install');
const newJson = (await findPackage('react-native', findRnOpts))!.json;
const newTemplateJson = (await findPackage(
'react-native/template',
'@react-native-community/template',
findRnOpts,
))!.json;

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

@ -17,7 +17,7 @@
"lint:fix": "rnw-scripts lint:fix"
},
"dependencies": {
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnx-kit/metro-config": "^1.3.5",
"@rnx-kit/metro-plugin-duplicates-checker": "^2.1.0",
"@rnx-kit/metro-serializer": "^1.0.11",

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

@ -19,8 +19,8 @@
"@types/react": "^18.2.6",
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843"
},
"devDependencies": {
@ -31,7 +31,7 @@
"@babel/runtime": "^7.20.0",
"@react-native-windows/automation": "^0.3.265",
"@react-native-windows/automation-commands": "^0.1.286",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-node-config": "2.3.2",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
@ -47,7 +47,7 @@
"eslint": "^8.19.0",
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-test-renderer": "18.3.1",
"react-test-renderer": "19.0.0-rc-fb9a90fa48-20240614",
"sanitize-filename": "^1.6.3",
"typescript": "5.0.4"
},

Разница между файлами не показана из-за своего большого размера Загрузить разницу

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

@ -37,6 +37,10 @@ describe('snapshotAllPages', () => {
test(component.module.title, () => {
for (const example of component.module.examples) {
// https://github.com/microsoft/react-native-windows/issues/13436
if((component.module.title == 'FlatList' && (example.title == 'Basic' || example.title == "MultiColumn")) || (component.module.title == 'ScrollView' && example.title == '<ScrollView> RefreshControl\n') || (component.module.title == 'SectionList' && example.title == 'SectionList scrollable')){
continue;
}
const Example = example.render;
let tree;
act(() => {

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

@ -19,8 +19,8 @@
"@types/react": "^18.2.6",
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843",
"react-native-xaml": "^0.0.78"
},
@ -32,14 +32,14 @@
"@babel/runtime": "^7.20.0",
"@react-native-windows/automation": "^0.3.265",
"@react-native-windows/automation-commands": "^0.1.286",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-node-config": "2.3.2",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
"@rnw-scripts/just-task": "2.3.41",
"@rnw-scripts/metro-dev-config": "0.0.0",
"@rnw-scripts/ts-config": "2.0.5",
"@rnx-kit/jest-preset": "^0.1.0",
"@rnx-kit/jest-preset": "^0.1.17",
"@types/jest": "^29.2.2",
"@types/node": "^18.0.0",
"@types/react": "^18.2.6",
@ -47,7 +47,7 @@
"eslint": "^8.19.0",
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-test-renderer": "18.3.1",
"react-test-renderer": "19.0.0-rc-fb9a90fa48-20240614",
"sanitize-filename": "^1.6.3",
"typescript": "5.0.4"
},

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

@ -240,7 +240,7 @@ exports[`TextTest Text border 1`] = `
"CornerRadius": "0,0,0,0",
"FlowDirection": "LeftToRight",
"Foreground": "#FF000000",
"Height": 395,
"Height": 727,
"HorizontalAlignment": "Stretch",
"Left": 0,
"Margin": "0,0,0,0",
@ -275,7 +275,7 @@ exports[`TextTest Text border 1`] = `
"Clip": null,
"CornerRadius": "0,0,0,0",
"FlowDirection": "LeftToRight",
"Height": 395,
"Height": 727,
"HorizontalAlignment": "Stretch",
"Left": 0,
"Margin": "0,0,0,0",
@ -329,7 +329,7 @@ exports[`TextTest Text border 1`] = `
"Clip": null,
"CornerRadius": "0,0,0,0",
"FlowDirection": "LeftToRight",
"Height": 144,
"Height": 476,
"HorizontalAlignment": "Stretch",
"Left": 100,
"Margin": "0,0,0,0",
@ -344,18 +344,18 @@ exports[`TextTest Text border 1`] = `
"Clip": null,
"FlowDirection": "LeftToRight",
"Foreground": "#FF000000",
"Height": 78,
"Height": 210,
"HorizontalAlignment": "Stretch",
"Left": 33,
"Left": 133,
"Margin": "0,0,0,0",
"Padding": "0,0,0,0",
"Padding": "30,30,30,30",
"Text": "Some more bordered text + a tad of CSS.
1st nested - border specifcied but ignored.
2nd Inside text!",
"Top": 33,
"Top": 133,
"VerticalAlignment": "Stretch",
"Visibility": "Visible",
"Width": 452,
"Width": 252,
"XamlType": "Windows.UI.Xaml.Controls.TextBlock",
},
],
@ -370,7 +370,7 @@ exports[`TextTest Text border 1`] = `
"Margin": "0,0,0,0",
"Padding": "0,0,0,0",
"Text": "This text is outlined and laid out within the normal text run, so will wrap etc as normal text.",
"Top": 376,
"Top": 708,
"VerticalAlignment": "Stretch",
"Visibility": "Visible",
"Width": 718,

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

@ -16,8 +16,8 @@
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"chai": "^4.2.0",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843"
},
"devDependencies": {
@ -27,7 +27,7 @@
"@babel/preset-typescript": "^7.11.5",
"@babel/traverse": "^7.11.5",
"@babel/types": "^7.11.5",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-node-config": "2.3.2",
"@rnw-scripts/eslint-config": "^1.2.24",
"@rnw-scripts/just-task": "^2.3.41",

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

@ -15,14 +15,14 @@
"@types/react": "^18.2.6",
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
"@rnw-scripts/just-task": "2.3.41",

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

@ -15,8 +15,8 @@
"@types/react": "^18.2.6",
"@typescript-eslint/eslint-plugin": "^5.21.0",
"@typescript-eslint/parser": "^5.21.0",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843"
},
"devDependencies": {
@ -26,7 +26,7 @@
"@babel/preset-typescript": "^7.8.3",
"@babel/runtime": "^7.20.0",
"@jest/globals": "^29.7.0",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-node-config": "2.3.2",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
@ -41,7 +41,7 @@
"jest": "^29.7.0",
"just-scripts": "^1.3.3",
"prettier": "2.8.8",
"react-test-renderer": "18.3.1",
"react-test-renderer": "19.0.0-rc-fb9a90fa48-20240614",
"typescript": "5.0.4"
},
"engines": {

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

@ -15,8 +15,8 @@
"@types/react": "^18.2.6",
"@typescript-eslint/eslint-plugin": "^5.30.5",
"@typescript-eslint/parser": "^5.57.1",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-windows": "^0.0.0-canary.843"
},
"devDependencies": {
@ -25,7 +25,7 @@
"@babel/runtime": "^7.20.0",
"@react-native-windows/cli": "0.0.0-canary.226",
"@react-native-windows/codegen": "0.0.0-canary.97",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
"@rnw-scripts/just-task": "2.3.41",

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

@ -152,4 +152,4 @@ untyped-import
untyped-type-import
[version]
^0.237.2
^0.238.0

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

@ -54,6 +54,10 @@ void DevSettings::addMenuItem(std::string title) noexcept {
assert(false);
}
void DevSettings::openDebugger() noexcept {
// TODO: implement openDebugger() #13437
}
void DevSettings::setIsShakeToShowDevMenuEnabled(bool enabled) noexcept {
assert(false);
}

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

@ -25,6 +25,7 @@ struct DevSettings {
REACT_METHOD(setProfilingEnabled) void setProfilingEnabled(bool isProfilingEnabled) noexcept;
REACT_METHOD(toggleElementInspector) void toggleElementInspector() noexcept;
REACT_METHOD(addMenuItem) void addMenuItem(std::string title) noexcept;
REACT_METHOD(openDebugger) void openDebugger() noexcept;
REACT_METHOD(setIsShakeToShowDevMenuEnabled) void setIsShakeToShowDevMenuEnabled(bool enabled) noexcept;
REACT_METHOD(addListener)

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

@ -24,21 +24,21 @@
"Microsoft.SourceLink.Common": "1.1.1"
}
},
"Microsoft.UI.Xaml": {
"type": "Direct",
"requested": "[2.8.0, )",
"resolved": "2.8.0",
"contentHash": "vxdHxTr63s5KVtNddMFpgvjBjUH50z7seq/5jLWmmSuf8poxg+sXrywkofUdE8ZstbpO9y3FL/IXXUcPYbeesA==",
"dependencies": {
"Microsoft.Web.WebView2": "1.0.1264.42"
}
},
"Microsoft.Windows.CppWinRT": {
"type": "Direct",
"requested": "[2.0.230706.1, )",
"resolved": "2.0.230706.1",
"contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ=="
},
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
},
"Microsoft.Build.Tasks.Git": {
"type": "Transitive",
"resolved": "1.1.1",
@ -49,10 +49,10 @@
"resolved": "1.1.1",
"contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg=="
},
"Microsoft.Windows.SDK.BuildTools": {
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "10.0.22621.756",
"contentHash": "7ZL2sFSioYm1Ry067Kw1hg0SCcW5kuVezC2SwjGbcPE61Nn+gTbH86T73G3LcEOVj0S3IZzNuE/29gZvOLS7VA=="
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"common": {
"type": "Project",
@ -79,80 +79,52 @@
}
},
"native,Version=v0.0/win10-arm": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win10-arm-aot": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win10-arm64-aot": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win10-x64": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win10-x64-aot": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win10-x86": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win10-x86-aot": {
"Microsoft.WindowsAppSDK": {
"type": "Direct",
"requested": "[1.5.240227000, )",
"resolved": "1.5.240227000",
"contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==",
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
}
}

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

@ -24,9 +24,10 @@ struct DevSettingsSpec : winrt::Microsoft::ReactNative::TurboModuleSpec {
Method<void(bool) noexcept>{5, L"setProfilingEnabled"},
Method<void() noexcept>{6, L"toggleElementInspector"},
Method<void(std::string) noexcept>{7, L"addMenuItem"},
Method<void(std::string) noexcept>{8, L"addListener"},
Method<void(double) noexcept>{9, L"removeListeners"},
Method<void(bool) noexcept>{10, L"setIsShakeToShowDevMenuEnabled"},
Method<void() noexcept>{8, L"openDebugger"},
Method<void(std::string) noexcept>{9, L"addListener"},
Method<void(double) noexcept>{10, L"removeListeners"},
Method<void(bool) noexcept>{11, L"setIsShakeToShowDevMenuEnabled"},
};
template <class TModule>
@ -75,16 +76,21 @@ struct DevSettingsSpec : winrt::Microsoft::ReactNative::TurboModuleSpec {
" REACT_METHOD(addMenuItem) static void addMenuItem(std::string title) noexcept { /* implementation */ }\n");
REACT_SHOW_METHOD_SPEC_ERRORS(
8,
"openDebugger",
" REACT_METHOD(openDebugger) void openDebugger() noexcept { /* implementation */ }\n"
" REACT_METHOD(openDebugger) static void openDebugger() noexcept { /* implementation */ }\n");
REACT_SHOW_METHOD_SPEC_ERRORS(
9,
"addListener",
" REACT_METHOD(addListener) void addListener(std::string eventName) noexcept { /* implementation */ }\n"
" REACT_METHOD(addListener) static void addListener(std::string eventName) noexcept { /* implementation */ }\n");
REACT_SHOW_METHOD_SPEC_ERRORS(
9,
10,
"removeListeners",
" REACT_METHOD(removeListeners) void removeListeners(double count) noexcept { /* implementation */ }\n"
" REACT_METHOD(removeListeners) static void removeListeners(double count) noexcept { /* implementation */ }\n");
REACT_SHOW_METHOD_SPEC_ERRORS(
10,
11,
"setIsShakeToShowDevMenuEnabled",
" REACT_METHOD(setIsShakeToShowDevMenuEnabled) void setIsShakeToShowDevMenuEnabled(bool enabled) noexcept { /* implementation */ }\n"
" REACT_METHOD(setIsShakeToShowDevMenuEnabled) static void setIsShakeToShowDevMenuEnabled(bool enabled) noexcept { /* implementation */ }\n");

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

@ -0,0 +1,64 @@
/*
* This file is auto-generated from a NativeModule spec file in js.
*
* This is a C++ Spec class that should be used with MakeTurboModuleProvider to register native modules
* in a way that also verifies at compile time that the native module matches the interface required
* by the TurboModule JS spec.
*/
#pragma once
#include <NativeModules.h>
#include <tuple>
namespace Microsoft::ReactNativeSpecs {
struct IdleCallbacksSpec_IdleDeadline {
bool didTimeout;
timeRemaining;
};
struct IdleCallbacksSpec_RequestIdleCallbackOptions {
std::optional<double> timeout;
};
inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(IdleCallbacksSpec_IdleDeadline*) noexcept {
winrt::Microsoft::ReactNative::FieldMap fieldMap {
{L"didTimeout", &IdleCallbacksSpec_IdleDeadline::didTimeout},
{L"timeRemaining", &IdleCallbacksSpec_IdleDeadline::timeRemaining},
};
return fieldMap;
}
inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(IdleCallbacksSpec_RequestIdleCallbackOptions*) noexcept {
winrt::Microsoft::ReactNative::FieldMap fieldMap {
{L"timeout", &IdleCallbacksSpec_RequestIdleCallbackOptions::timeout},
};
return fieldMap;
}
struct IdleCallbacksSpec : winrt::Microsoft::ReactNative::TurboModuleSpec {
static constexpr auto methods = std::tuple{
SyncMethod<(Callback<IdleCallbacksSpec_IdleDeadline>, IdleCallbacksSpec_RequestIdleCallbackOptions) noexcept>{0, L"requestIdleCallback"},
Method<void() noexcept>{1, L"cancelIdleCallback"},
};
template <class TModule>
static constexpr void ValidateModule() noexcept {
constexpr auto methodCheckResults = CheckMethods<TModule, IdleCallbacksSpec>();
REACT_SHOW_METHOD_SPEC_ERRORS(
0,
"requestIdleCallback",
" REACT_SYNC_METHOD(requestIdleCallback) requestIdleCallback(std::function<void(IdleCallbacksSpec_IdleDeadline const &)> const & callback, IdleCallbacksSpec_RequestIdleCallbackOptions && options) noexcept { /* implementation */ }\n"
" REACT_SYNC_METHOD(requestIdleCallback) static requestIdleCallback(std::function<void(IdleCallbacksSpec_IdleDeadline const &)> const & callback, IdleCallbacksSpec_RequestIdleCallbackOptions && options) noexcept { /* implementation */ }\n");
REACT_SHOW_METHOD_SPEC_ERRORS(
1,
"cancelIdleCallback",
" REACT_METHOD(cancelIdleCallback) void cancelIdleCallback( handle) noexcept { /* implementation */ }\n"
" REACT_METHOD(cancelIdleCallback) static void cancelIdleCallback( handle) noexcept { /* implementation */ }\n");
}
};
} // namespace Microsoft::ReactNativeSpecs

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

@ -1101,6 +1101,12 @@ static jsi::Value __hostFunction_NativeDevSettingsCxxSpecJSI_addMenuItem(jsi::Ru
);
return jsi::Value::undefined();
}
static jsi::Value __hostFunction_NativeDevSettingsCxxSpecJSI_openDebugger(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_cast<NativeDevSettingsCxxSpecJSI *>(&turboModule)->openDebugger(
rt
);
return jsi::Value::undefined();
}
static jsi::Value __hostFunction_NativeDevSettingsCxxSpecJSI_addListener(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_cast<NativeDevSettingsCxxSpecJSI *>(&turboModule)->addListener(
rt,
@ -1133,6 +1139,7 @@ NativeDevSettingsCxxSpecJSI::NativeDevSettingsCxxSpecJSI(std::shared_ptr<CallInv
methodMap_["setProfilingEnabled"] = MethodMetadata {1, __hostFunction_NativeDevSettingsCxxSpecJSI_setProfilingEnabled};
methodMap_["toggleElementInspector"] = MethodMetadata {0, __hostFunction_NativeDevSettingsCxxSpecJSI_toggleElementInspector};
methodMap_["addMenuItem"] = MethodMetadata {1, __hostFunction_NativeDevSettingsCxxSpecJSI_addMenuItem};
methodMap_["openDebugger"] = MethodMetadata {0, __hostFunction_NativeDevSettingsCxxSpecJSI_openDebugger};
methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeDevSettingsCxxSpecJSI_addListener};
methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeDevSettingsCxxSpecJSI_removeListeners};
methodMap_["setIsShakeToShowDevMenuEnabled"] = MethodMetadata {1, __hostFunction_NativeDevSettingsCxxSpecJSI_setIsShakeToShowDevMenuEnabled};
@ -2842,6 +2849,26 @@ NativeWebSocketModuleCxxSpecJSI::NativeWebSocketModuleCxxSpecJSI(std::shared_ptr
methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeWebSocketModuleCxxSpecJSI_addListener};
methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeWebSocketModuleCxxSpecJSI_removeListeners};
}
static jsi::Value __hostFunction_NativeIdleCallbacksCxxSpecJSI_requestIdleCallback(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast<NativeIdleCallbacksCxxSpecJSI *>(&turboModule)->requestIdleCallback(
rt,
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asObject(rt).asFunction(rt),
count <= 1 || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asObject(rt))
);
}
static jsi::Value __hostFunction_NativeIdleCallbacksCxxSpecJSI_cancelIdleCallback(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_cast<NativeIdleCallbacksCxxSpecJSI *>(&turboModule)->cancelIdleCallback(
rt,
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : jsi::Value(rt, args[0])
);
return jsi::Value::undefined();
}
NativeIdleCallbacksCxxSpecJSI::NativeIdleCallbacksCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
: TurboModule("NativeIdleCallbacksCxx", jsInvoker) {
methodMap_["requestIdleCallback"] = MethodMetadata {2, __hostFunction_NativeIdleCallbacksCxxSpecJSI_requestIdleCallback};
methodMap_["cancelIdleCallback"] = MethodMetadata {1, __hostFunction_NativeIdleCallbacksCxxSpecJSI_cancelIdleCallback};
}
static jsi::Value __hostFunction_NativeMicrotasksCxxSpecJSI_queueMicrotask(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_cast<NativeMicrotasksCxxSpecJSI *>(&turboModule)->queueMicrotask(
rt,

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

@ -2673,6 +2673,7 @@ public:
virtual void setProfilingEnabled(jsi::Runtime &rt, bool isProfilingEnabled) = 0;
virtual void toggleElementInspector(jsi::Runtime &rt) = 0;
virtual void addMenuItem(jsi::Runtime &rt, jsi::String title) = 0;
virtual void openDebugger(jsi::Runtime &rt) = 0;
virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
virtual void setIsShakeToShowDevMenuEnabled(jsi::Runtime &rt, bool enabled) = 0;
@ -2766,6 +2767,14 @@ private:
return bridging::callFromJs<void>(
rt, &T::addMenuItem, jsInvoker_, instance_, std::move(title));
}
void openDebugger(jsi::Runtime &rt) override {
static_assert(
bridging::getParameterCount(&T::openDebugger) == 1,
"Expected openDebugger(...) to have 1 parameters");
return bridging::callFromJs<void>(
rt, &T::openDebugger, jsInvoker_, instance_);
}
void addListener(jsi::Runtime &rt, jsi::String eventName) override {
static_assert(
bridging::getParameterCount(&T::addListener) == 2,
@ -7693,6 +7702,155 @@ private:
};
#pragma mark - NativeIdleCallbacksIdleDeadline
template <typename P0, typename P1>
struct NativeIdleCallbacksIdleDeadline {
P0 didTimeout;
P1 timeRemaining;
bool operator==(const NativeIdleCallbacksIdleDeadline &other) const {
return didTimeout == other.didTimeout && timeRemaining == other.timeRemaining;
}
};
template <typename T>
struct NativeIdleCallbacksIdleDeadlineBridging {
static T types;
static T fromJs(
jsi::Runtime &rt,
const jsi::Object &value,
const std::shared_ptr<CallInvoker> &jsInvoker) {
T result{
bridging::fromJs<decltype(types.didTimeout)>(rt, value.getProperty(rt, "didTimeout"), jsInvoker),
bridging::fromJs<decltype(types.timeRemaining)>(rt, value.getProperty(rt, "timeRemaining"), jsInvoker)};
return result;
}
#ifdef DEBUG
static bool didTimeoutToJs(jsi::Runtime &rt, decltype(types.didTimeout) value) {
return bridging::toJs(rt, value);
}
static jsi::Function timeRemainingToJs(jsi::Runtime &rt, decltype(types.timeRemaining) value) {
return bridging::toJs(rt, value);
}
#endif
static jsi::Object toJs(
jsi::Runtime &rt,
const T &value,
const std::shared_ptr<CallInvoker> &jsInvoker) {
auto result = facebook::jsi::Object(rt);
result.setProperty(rt, "didTimeout", bridging::toJs(rt, value.didTimeout, jsInvoker));
result.setProperty(rt, "timeRemaining", bridging::toJs(rt, value.timeRemaining, jsInvoker));
return result;
}
};
#pragma mark - NativeIdleCallbacksRequestIdleCallbackOptions
template <typename P0>
struct NativeIdleCallbacksRequestIdleCallbackOptions {
P0 timeout;
bool operator==(const NativeIdleCallbacksRequestIdleCallbackOptions &other) const {
return timeout == other.timeout;
}
};
template <typename T>
struct NativeIdleCallbacksRequestIdleCallbackOptionsBridging {
static T types;
static T fromJs(
jsi::Runtime &rt,
const jsi::Object &value,
const std::shared_ptr<CallInvoker> &jsInvoker) {
T result{
bridging::fromJs<decltype(types.timeout)>(rt, value.getProperty(rt, "timeout"), jsInvoker)};
return result;
}
#ifdef DEBUG
static double timeoutToJs(jsi::Runtime &rt, decltype(types.timeout) value) {
return bridging::toJs(rt, value);
}
#endif
static jsi::Object toJs(
jsi::Runtime &rt,
const T &value,
const std::shared_ptr<CallInvoker> &jsInvoker) {
auto result = facebook::jsi::Object(rt);
if (value.timeout) {
result.setProperty(rt, "timeout", bridging::toJs(rt, value.timeout.value(), jsInvoker));
}
return result;
}
};
class JSI_EXPORT NativeIdleCallbacksCxxSpecJSI : public TurboModule {
protected:
NativeIdleCallbacksCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
public:
virtual jsi::Value requestIdleCallback(jsi::Runtime &rt, jsi::Function callback, std::optional<jsi::Object> options) = 0;
virtual void cancelIdleCallback(jsi::Runtime &rt, jsi::Value handle) = 0;
};
template <typename T>
class JSI_EXPORT NativeIdleCallbacksCxxSpec : public TurboModule {
public:
jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
return delegate_.get(rt, propName);
}
static constexpr std::string_view kModuleName = "NativeIdleCallbacksCxx";
protected:
NativeIdleCallbacksCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
: TurboModule(std::string{NativeIdleCallbacksCxxSpec::kModuleName}, jsInvoker),
delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
private:
class Delegate : public NativeIdleCallbacksCxxSpecJSI {
public:
Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
NativeIdleCallbacksCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
}
jsi::Value requestIdleCallback(jsi::Runtime &rt, jsi::Function callback, std::optional<jsi::Object> options) override {
static_assert(
bridging::getParameterCount(&T::requestIdleCallback) == 3,
"Expected requestIdleCallback(...) to have 3 parameters");
return bridging::callFromJs<jsi::Value>(
rt, &T::requestIdleCallback, jsInvoker_, instance_, std::move(callback), std::move(options));
}
void cancelIdleCallback(jsi::Runtime &rt, jsi::Value handle) override {
static_assert(
bridging::getParameterCount(&T::cancelIdleCallback) == 2,
"Expected cancelIdleCallback(...) to have 2 parameters");
return bridging::callFromJs<void>(
rt, &T::cancelIdleCallback, jsInvoker_, instance_, std::move(handle));
}
private:
friend class NativeIdleCallbacksCxxSpec;
T *instance_;
};
Delegate delegate_;
};
class JSI_EXPORT NativeMicrotasksCxxSpecJSI : public TurboModule {
protected:
NativeMicrotasksCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);

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

@ -8,13 +8,13 @@
"**/__snapshots__/**",
"src-win/rntypes/**"
],
"baseVersion": "0.75.0-nightly-20240613-f7aea0c8e",
"baseVersion": "0.75.0-nightly-20240618-5df5ed1a8",
"overrides": [
{
"type": "derived",
"file": ".flowconfig",
"baseFile": ".flowconfig",
"baseHash": "0a0c16d79748a5e84407a57c772c3508160134ae"
"baseHash": "75582b181be0cd6790f7c021bfafb761dfc42381"
},
{
"type": "derived",
@ -523,7 +523,7 @@
"type": "derived",
"file": "src-win/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js",
"baseFile": "packages/react-native/Libraries/LogBox/UI/LogBoxInspectorHeader.js",
"baseHash": "1a12281b1cfab7352fcfeb5984f0ed3c83c04660"
"baseHash": "e85290422895e30d58e2d804f11e73407a743282"
},
{
"type": "derived",
@ -585,40 +585,12 @@
"baseHash": "8e70142f3acab570d188c617a1811da11b6e9da4",
"issue": 4379
},
{
"type": "patch",
"file": "src-win/Libraries/ReactNative/AppContainer.js",
"baseFile": "packages/react-native/Libraries/ReactNative/AppContainer.js",
"baseHash": "547149b6581de22ddf68f91e58294703a71b118d",
"issue": 13314
},
{
"type": "patch",
"file": "src-win/Libraries/ReactNative/AppRegistry.d.ts",
"baseFile": "packages/react-native/Libraries/ReactNative/AppRegistry.d.ts",
"baseHash": "ec4dce37a05e1d0ef00f40b6549cdb277ad3a227",
"issue": 13314
},
{
"type": "patch",
"file": "src-win/Libraries/ReactNative/AppRegistry.js",
"baseFile": "packages/react-native/Libraries/ReactNative/AppRegistry.js",
"baseHash": "80a5455a014ab826cc21b9e8efe1dbe7c29b5f44",
"issue": 13314
},
{
"type": "patch",
"file": "src-win/Libraries/ReactNative/PaperUIManager.windows.js",
"baseFile": "packages/react-native/Libraries/ReactNative/PaperUIManager.js",
"baseHash": "5421778518fbd545ba3896bdfb1fb4f829d016fd"
},
{
"type": "patch",
"file": "src-win/Libraries/ReactNative/renderApplication.js",
"baseFile": "packages/react-native/Libraries/ReactNative/renderApplication.js",
"baseHash": "14b60713c380bbedeb9cdf0811708fd5f5fe49c2",
"issue": 13314
},
{
"type": "platform",
"file": "src-win/Libraries/StyleSheet/PlatformColorValueTypes.windows.js"
@ -627,7 +599,7 @@
"type": "derived",
"file": "src-win/Libraries/Text/Text.windows.js",
"baseFile": "packages/react-native/Libraries/Text/Text.js",
"baseHash": "24376d16dfc834512d72348e2a434731440146d4"
"baseHash": "71c24366f3f0baa9a48ba34c08b255483bf77553"
},
{
"type": "derived",

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

@ -28,13 +28,13 @@
"@react-native-community/cli-platform-ios": "14.0.0-alpha.2",
"@react-native-windows/cli": "0.0.0-canary.226",
"@react-native/assets": "1.0.0",
"@react-native/assets-registry": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/codegen": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/community-cli-plugin": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/gradle-plugin": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/js-polyfills": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/normalize-colors": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/virtualized-lists": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/assets-registry": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/codegen": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/community-cli-plugin": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/gradle-plugin": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/js-polyfills": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/normalize-colors": "0.75.0-nightly-20240618-5df5ed1a8",
"@react-native/virtualized-lists": "0.75.0-nightly-20240618-5df5ed1a8",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
"ansi-regex": "^5.0.0",
@ -57,7 +57,7 @@
"react-refresh": "^0.14.0",
"react-shallow-renderer": "^16.15.0",
"regenerator-runtime": "^0.13.2",
"scheduler": "0.24.0-canary-efb381bbf-20230505",
"scheduler": "0.25.0-rc-fb9a90fa48-20240614",
"semver": "^7.1.3",
"source-map-support": "^0.5.19",
"stacktrace-parser": "^0.1.10",
@ -67,13 +67,13 @@
},
"devDependencies": {
"@react-native-windows/codegen": "0.0.0-canary.97",
"@react-native/metro-config": "0.75.0-nightly-20240613-f7aea0c8e",
"@react-native/metro-config": "0.75.0-nightly-20240614-8b53d41a8",
"@rnw-scripts/babel-react-native-config": "0.0.0",
"@rnw-scripts/eslint-config": "1.2.24",
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.28",
"@rnw-scripts/just-task": "2.3.41",
"@rnw-scripts/metro-dev-config": "0.0.0",
"@rnx-kit/jest-preset": "^0.1.0",
"@rnx-kit/jest-preset": "^0.1.17",
"@types/node": "^18.0.0",
"@types/react": "^18.2.6",
"eslint": "^8.19.0",
@ -82,16 +82,16 @@
"jscodeshift": "^0.14.0",
"just-scripts": "^1.3.3",
"prettier": "2.8.8",
"react": "18.3.1",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e",
"react": "19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8",
"react-native-platform-override": "^1.9.43",
"react-refresh": "^0.14.0",
"typescript": "5.0.4"
},
"peerDependencies": {
"@types/react": "^18.2.6",
"react": "^18.2.0",
"react-native": "0.75.0-nightly-20240613-f7aea0c8e"
"react": "^19.0.0-rc-fb9a90fa48-20240614",
"react-native": "0.75.0-nightly-20240618-5df5ed1a8"
},
"beachball": {
"defaultNpmTag": "canary",

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

@ -8,26 +8,25 @@
* @format
*/
import type {ImageSource} from '../../Image/ImageSource';
import type {LogLevel} from '../Data/LogBoxLog';
import StatusBar from '../../Components/StatusBar/StatusBar';
import View from '../../Components/View/View';
import Image from '../../Image/Image';
import StyleSheet from '../../StyleSheet/StyleSheet';
import Text from '../../Text/Text';
import Platform from '../../Utilities/Platform';
import LogBoxButton from './LogBoxButton';
import LogBoxInspectorHeaderButton from './LogBoxInspectorHeaderButton';
import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
type Props = $ReadOnly<{|
type Props = $ReadOnly<{
onSelectIndex: (selectedIndex: number) => void,
selectedIndex: number,
total: number,
level: LogLevel,
|}>;
}>;
function LogBoxInspectorHeader(props: Props): React.Node {
export default function LogBoxInspectorHeader(props: Props): React.Node {
if (props.level === 'syntax') {
return (
<View style={[styles.safeArea, styles[props.level]]}>
@ -70,64 +69,6 @@ function LogBoxInspectorHeader(props: Props): React.Node {
);
}
const backgroundForLevel = (level: LogLevel) =>
({
warn: {
default: 'transparent',
pressed: LogBoxStyle.getWarningDarkColor(),
},
error: {
default: 'transparent',
pressed: LogBoxStyle.getErrorDarkColor(),
},
fatal: {
default: 'transparent',
pressed: LogBoxStyle.getFatalDarkColor(),
},
syntax: {
default: 'transparent',
pressed: LogBoxStyle.getFatalDarkColor(),
},
})[level];
function LogBoxInspectorHeaderButton(
props: $ReadOnly<{|
disabled: boolean,
image: ImageSource,
level: LogLevel,
onPress?: ?() => void,
|}>,
): React.Node {
return (
<LogBoxButton
backgroundColor={backgroundForLevel(props.level)}
onPress={props.disabled ? null : props.onPress}
style={headerStyles.button}>
{props.disabled ? null : (
<Image source={props.image} style={headerStyles.buttonImage} />
)}
</LogBoxButton>
);
}
const headerStyles = StyleSheet.create({
button: {
alignItems: 'center',
aspectRatio: 1,
justifyContent: 'center',
marginTop: 5,
marginRight: 6,
marginLeft: 6,
marginBottom: -8,
borderRadius: 3,
},
buttonImage: {
height: 14,
width: 8,
tintColor: LogBoxStyle.getTextColor(),
},
});
const styles = StyleSheet.create({
syntax: {
backgroundColor: LogBoxStyle.getFatalColor(),
@ -168,5 +109,3 @@ const styles = StyleSheet.create({
paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight : 40,
},
});
export default LogBoxInspectorHeader;

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

@ -1,32 +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
* @flow
*/
import type {RootTag} from './RootTag';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import * as React from 'react';
export type Props = $ReadOnly<{|
children?: React.Node,
fabric?: boolean,
rootTag: number | RootTag,
initialProps?: {...},
showArchitectureIndicator?: boolean,
WrapperComponent?: ?React.ComponentType<any>,
rootViewStyle?: ?ViewStyleProp,
internal_excludeLogBox?: boolean,
internal_excludeInspector?: boolean,
|}>;
const AppContainer: React.AbstractComponent<Props> = __DEV__
? require('./AppContainer-dev').default
: require('./AppContainer-prod').default;
module.exports = AppContainer;

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

@ -1,125 +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
*/
import type * as React from 'react';
import type {IPerformanceLogger} from '../Utilities/IPerformanceLogger';
import type {ViewStyle} from '../StyleSheet/StyleSheetTypes';
type Task = (taskData: any) => Promise<void>;
type TaskProvider = () => Task;
type TaskCanceller = () => void;
type TaskCancelProvider = () => TaskCanceller;
export type ComponentProvider = () => React.ComponentType<any>;
export type Runnable = (appParameters: any) => void;
export type AppConfig = {
appKey: string;
component?: ComponentProvider | undefined;
run?: Runnable | undefined;
};
export type ComponentProviderInstrumentationHook = (
component: ComponentProvider,
scopedPerformanceLogger: IPerformanceLogger,
) => React.ComponentType<any>;
export type WrapperComponentProvider = (
appParameters: any,
) => React.ComponentType<any>;
export type RootViewStyleProvider = (appParameters: any) => ViewStyle;
/**
* `AppRegistry` is the JS entry point to running all React Native apps. App
* root components should register themselves with
* `AppRegistry.registerComponent`, then the native system can load the bundle
* for the app and then actually run the app when it's ready by invoking
* `AppRegistry.runApplication`.
*
* To "stop" an application when a view should be destroyed, call
* `AppRegistry.unmountApplicationComponentAtRootTag` with the tag that was
* pass into `runApplication`. These should always be used as a pair.
*
* `AppRegistry` should be `require`d early in the `require` sequence to make
* sure the JS execution environment is setup before other modules are
* `require`d.
*/
export namespace AppRegistry {
export function setWrapperComponentProvider(
provider: WrapperComponentProvider,
): void;
export function setRootViewStyleProvider(
provider: RootViewStyleProvider,
): void;
export function registerConfig(config: AppConfig[]): void;
export function setRootViewStyleProvider(
provider: RootViewStyleProvider,
): void;
export function registerComponent(
appKey: string,
getComponentFunc: ComponentProvider,
section?: boolean,
): string;
export function registerRunnable(appKey: string, func: Runnable): string;
export function registerSection(
appKey: string,
component: ComponentProvider,
): void;
export function getAppKeys(): string[];
export function getSectionKeys(): string[];
export function getSections(): Record<string, Runnable>;
export function unmountApplicationComponentAtRootTag(rootTag: number): void;
export function runApplication(appKey: string, appParameters: any): void;
export function setSurfaceProps(
appKey: string,
appParameters: any,
displayMode?: number,
): void;
export function getRunnable(appKey: string): Runnable | undefined;
export function getRegistry(): {sections: string[]; runnables: Runnable[]};
export function setComponentProviderInstrumentationHook(
hook: ComponentProviderInstrumentationHook,
): void;
export function registerHeadlessTask(
taskKey: string,
taskProvider: TaskProvider,
): void;
export function registerCancellableHeadlessTask(
taskKey: string,
taskProvider: TaskProvider,
taskCancelProvider: TaskCancelProvider,
): void;
export function startHeadlessTask(
taskId: number,
taskKey: string,
data: any,
): void;
export function cancelHeadlessTask(taskId: number, taskKey: string): void;
}

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

@ -1,376 +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.
*
* @flow
* @format
*/
import type {RootTag} from '../Types/RootTagTypes';
import type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';
import type {DisplayModeType} from './DisplayMode';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import BatchedBridge from '../BatchedBridge/BatchedBridge';
import BugReporting from '../BugReporting/BugReporting';
import createPerformanceLogger from '../Utilities/createPerformanceLogger';
import infoLog from '../Utilities/infoLog';
import SceneTracker from '../Utilities/SceneTracker';
import {coerceDisplayMode} from './DisplayMode';
import HeadlessJsTaskError from './HeadlessJsTaskError';
import NativeHeadlessJsTaskSupport from './NativeHeadlessJsTaskSupport';
import renderApplication from './renderApplication';
import {unmountComponentAtNodeAndRemoveContainer} from './RendererProxy';
import invariant from 'invariant';
type Task = (taskData: any) => Promise<void>;
export type TaskProvider = () => Task;
type TaskCanceller = () => void;
type TaskCancelProvider = () => TaskCanceller;
export type ComponentProvider = () => React$ComponentType<any>;
export type ComponentProviderInstrumentationHook = (
component_: ComponentProvider,
scopedPerformanceLogger: IPerformanceLogger,
) => React$ComponentType<any>;
export type AppConfig = {
appKey: string,
component?: ComponentProvider,
run?: Runnable,
section?: boolean,
...
};
type AppParameters = {
initialProps: $ReadOnly<{[string]: mixed, ...}>,
rootTag: RootTag,
fabric?: boolean,
concurrentRoot?: boolean,
};
export type Runnable = (
appParameters: AppParameters,
displayMode: DisplayModeType,
) => void;
export type Runnables = {[appKey: string]: Runnable};
export type Registry = {
sections: $ReadOnlyArray<string>,
runnables: Runnables,
...
};
export type WrapperComponentProvider = (
appParameters: Object,
) => React$ComponentType<any>;
export type RootViewStyleProvider = (appParameters: Object) => ViewStyleProp;
const runnables: Runnables = {};
let runCount = 1;
const sections: Runnables = {};
const taskProviders: Map<string, TaskProvider> = new Map();
const taskCancelProviders: Map<string, TaskCancelProvider> = new Map();
let componentProviderInstrumentationHook: ComponentProviderInstrumentationHook =
(component: ComponentProvider) => component();
let wrapperComponentProvider: ?WrapperComponentProvider;
let rootViewStyleProvider: ?RootViewStyleProvider;
let showArchitectureIndicator = false;
/**
* `AppRegistry` is the JavaScript entry point to running all React Native apps.
*
* See https://reactnative.dev/docs/appregistry
*/
const AppRegistry = {
setWrapperComponentProvider(provider: WrapperComponentProvider) {
wrapperComponentProvider = provider;
},
setRootViewStyleProvider(provider: RootViewStyleProvider) {
rootViewStyleProvider = provider;
},
enableArchitectureIndicator(enabled: boolean): void {
showArchitectureIndicator = enabled;
},
registerConfig(config: Array<AppConfig>): void {
config.forEach(appConfig => {
if (appConfig.run) {
AppRegistry.registerRunnable(appConfig.appKey, appConfig.run);
} else {
invariant(
appConfig.component != null,
'AppRegistry.registerConfig(...): Every config is expected to set ' +
'either `run` or `component`, but `%s` has neither.',
appConfig.appKey,
);
AppRegistry.registerComponent(
appConfig.appKey,
appConfig.component,
appConfig.section,
);
}
});
},
/**
* Registers an app's root component.
*
* See https://reactnative.dev/docs/appregistry#registercomponent
*/
registerComponent(
appKey: string,
componentProvider: ComponentProvider,
section?: boolean,
): string {
const scopedPerformanceLogger = createPerformanceLogger();
runnables[appKey] = (appParameters, displayMode) => {
const concurrentRootEnabled = Boolean(
appParameters.initialProps?.concurrentRoot ||
appParameters.concurrentRoot,
);
renderApplication(
componentProviderInstrumentationHook(
componentProvider,
scopedPerformanceLogger,
),
appParameters.initialProps,
appParameters.rootTag,
wrapperComponentProvider && wrapperComponentProvider(appParameters),
rootViewStyleProvider && rootViewStyleProvider(appParameters),
appParameters.fabric,
showArchitectureIndicator,
scopedPerformanceLogger,
appKey === 'LogBox', // is logbox
appKey,
displayMode,
concurrentRootEnabled,
);
};
if (section) {
sections[appKey] = runnables[appKey];
}
return appKey;
},
registerRunnable(appKey: string, run: Runnable): string {
runnables[appKey] = run;
return appKey;
},
registerSection(appKey: string, component: ComponentProvider): void {
AppRegistry.registerComponent(appKey, component, true);
},
getAppKeys(): $ReadOnlyArray<string> {
return Object.keys(runnables);
},
getSectionKeys(): $ReadOnlyArray<string> {
return Object.keys(sections);
},
getSections(): Runnables {
return {
...sections,
};
},
getRunnable(appKey: string): ?Runnable {
return runnables[appKey];
},
getRegistry(): Registry {
return {
sections: AppRegistry.getSectionKeys(),
runnables: {...runnables},
};
},
setComponentProviderInstrumentationHook(
hook: ComponentProviderInstrumentationHook,
) {
componentProviderInstrumentationHook = hook;
},
/**
* Loads the JavaScript bundle and runs the app.
*
* See https://reactnative.dev/docs/appregistry#runapplication
*/
runApplication(
appKey: string,
appParameters: AppParameters,
displayMode?: number,
): void {
if (appKey !== 'LogBox') {
const logParams = __DEV__ ? ` with ${JSON.stringify(appParameters)}` : '';
const msg = `Running "${appKey}"${logParams}`;
infoLog(msg);
BugReporting.addSource(
'AppRegistry.runApplication' + runCount++,
() => msg,
);
}
invariant(
runnables[appKey],
`"${appKey}" has not been registered. This can happen if:\n` +
'* Metro (the local dev server) is run from the wrong folder. ' +
'Check if Metro is running, stop it and restart it in the current project.\n' +
"* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.",
);
SceneTracker.setActiveScene({name: appKey});
runnables[appKey](appParameters, coerceDisplayMode(displayMode));
},
/**
* Update initial props for a surface that's already rendered
*/
setSurfaceProps(
appKey: string,
appParameters: Object,
displayMode?: number,
): void {
if (appKey !== 'LogBox') {
const msg =
'Updating props for Surface "' +
appKey +
'" with ' +
JSON.stringify(appParameters);
infoLog(msg);
BugReporting.addSource(
'AppRegistry.setSurfaceProps' + runCount++,
() => msg,
);
}
invariant(
runnables[appKey],
`"${appKey}" has not been registered. This can happen if:\n` +
'* Metro (the local dev server) is run from the wrong folder. ' +
'Check if Metro is running, stop it and restart it in the current project.\n' +
"* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.",
);
runnables[appKey](appParameters, coerceDisplayMode(displayMode));
},
/**
* Stops an application when a view should be destroyed.
*
* See https://reactnative.dev/docs/appregistry#unmountapplicationcomponentatroottag
*/
unmountApplicationComponentAtRootTag(rootTag: RootTag): void {
unmountComponentAtNodeAndRemoveContainer(rootTag);
},
/**
* Register a headless task. A headless task is a bit of code that runs without a UI.
*
* See https://reactnative.dev/docs/appregistry#registerheadlesstask
*/
registerHeadlessTask(taskKey: string, taskProvider: TaskProvider): void {
// $FlowFixMe[object-this-reference]
this.registerCancellableHeadlessTask(taskKey, taskProvider, () => () => {
/* Cancel is no-op */
});
},
/**
* Register a cancellable headless task. A headless task is a bit of code that runs without a UI.
*
* See https://reactnative.dev/docs/appregistry#registercancellableheadlesstask
*/
registerCancellableHeadlessTask(
taskKey: string,
taskProvider: TaskProvider,
taskCancelProvider: TaskCancelProvider,
): void {
if (taskProviders.has(taskKey)) {
console.warn(
`registerHeadlessTask or registerCancellableHeadlessTask called multiple times for same key '${taskKey}'`,
);
}
taskProviders.set(taskKey, taskProvider);
taskCancelProviders.set(taskKey, taskCancelProvider);
},
/**
* Only called from native code. Starts a headless task.
*
* See https://reactnative.dev/docs/appregistry#startheadlesstask
*/
startHeadlessTask(taskId: number, taskKey: string, data: any): void {
const taskProvider = taskProviders.get(taskKey);
if (!taskProvider) {
console.warn(`No task registered for key ${taskKey}`);
if (NativeHeadlessJsTaskSupport) {
NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);
}
return;
}
taskProvider()(data)
.then(() => {
if (NativeHeadlessJsTaskSupport) {
NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);
}
})
.catch(reason => {
console.error(reason);
if (
NativeHeadlessJsTaskSupport &&
reason instanceof HeadlessJsTaskError
) {
// $FlowFixMe[unused-promise]
NativeHeadlessJsTaskSupport.notifyTaskRetry(taskId).then(
retryPosted => {
if (!retryPosted) {
NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);
}
},
);
}
});
},
/**
* Only called from native code. Cancels a headless task.
*
* See https://reactnative.dev/docs/appregistry#cancelheadlesstask
*/
cancelHeadlessTask(taskId: number, taskKey: string): void {
const taskCancelProvider = taskCancelProviders.get(taskKey);
if (!taskCancelProvider) {
throw new Error(`No task canceller registered for key '${taskKey}'`);
}
taskCancelProvider()();
},
};
// Register LogBox as a default surface
AppRegistry.registerComponent('LogBox', () => {
if (__DEV__ && typeof jest === 'undefined') {
return require('../LogBox/LogBoxInspectorContainer').default;
} else {
return function NoOp() {
return null;
};
}
});
global.RN$AppRegistry = AppRegistry;
// Backwards compat with SurfaceRegistry, remove me later
global.RN$SurfaceRegistry = {
renderSurface: AppRegistry.runApplication,
setSurfaceProps: AppRegistry.setSurfaceProps,
};
if (global.RN$Bridgeless === true) {
console.log('Bridgeless mode is enabled');
} else {
BatchedBridge.registerCallableModule('AppRegistry', AppRegistry);
}
module.exports = AppRegistry;

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

@ -1,109 +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
* @flow
*/
import type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import GlobalPerformanceLogger from '../Utilities/GlobalPerformanceLogger';
import PerformanceLoggerContext from '../Utilities/PerformanceLoggerContext';
import AppContainer from './AppContainer';
import DisplayMode, {type DisplayModeType} from './DisplayMode';
import getCachedComponentWithDebugName from './getCachedComponentWithDebugName';
import * as Renderer from './RendererProxy';
import invariant from 'invariant';
import * as React from 'react';
// require BackHandler so it sets the default handler that exits the app if no listeners respond
import '../Utilities/BackHandler';
type ActivityType = React.AbstractComponent<{
mode: 'visible' | 'hidden',
children: React.Node,
}>;
export default function renderApplication<Props: Object>(
RootComponent: React.ComponentType<Props>,
initialProps: Props,
rootTag: any,
WrapperComponent?: ?React.ComponentType<any>,
rootViewStyle?: ?ViewStyleProp,
fabric?: boolean,
showArchitectureIndicator?: boolean,
scopedPerformanceLogger?: IPerformanceLogger,
isLogBox?: boolean,
debugName?: string,
displayMode?: ?DisplayModeType,
useConcurrentRoot?: boolean,
useOffscreen?: boolean,
) {
invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);
const performanceLogger = scopedPerformanceLogger ?? GlobalPerformanceLogger;
let renderable: React.MixedElement = (
<PerformanceLoggerContext.Provider value={performanceLogger}>
<AppContainer
rootTag={rootTag}
fabric={fabric}
showArchitectureIndicator={showArchitectureIndicator}
WrapperComponent={WrapperComponent}
rootViewStyle={rootViewStyle}
initialProps={initialProps ?? Object.freeze({})}
internal_excludeLogBox={isLogBox}>
<RootComponent {...initialProps} rootTag={rootTag} />
</AppContainer>
</PerformanceLoggerContext.Provider>
);
if (__DEV__ && debugName) {
const RootComponentWithMeaningfulName = getCachedComponentWithDebugName(
`${debugName}(RootComponent)`,
);
renderable = (
<RootComponentWithMeaningfulName>
{renderable}
</RootComponentWithMeaningfulName>
);
}
if (useOffscreen && displayMode != null) {
// $FlowFixMe[incompatible-type]
// $FlowFixMe[prop-missing]
const Activity: ActivityType = React.unstable_Activity;
renderable = (
<Activity
mode={displayMode === DisplayMode.VISIBLE ? 'visible' : 'hidden'}>
{renderable}
</Activity>
);
}
// We want to have concurrentRoot always enabled when you're on Fabric.
const useConcurrentRootOverride = fabric;
performanceLogger.startTimespan('renderApplication_React_render');
performanceLogger.setExtra(
'usedReactConcurrentRoot',
useConcurrentRootOverride ? '1' : '0',
);
performanceLogger.setExtra('usedReactFabric', fabric ? '1' : '0');
performanceLogger.setExtra(
'usedReactProfiler',
Renderer.isProfilingRenderer(),
);
Renderer.renderElement({
element: renderable,
rootTag,
useFabric: Boolean(fabric),
useConcurrentRoot: Boolean(useConcurrentRootOverride),
});
performanceLogger.stopTimespan('renderApplication_React_render');
}

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

@ -52,8 +52,10 @@ const Text: React.AbstractComponent<
'aria-setsize': ariaSetsize, // Windows
'aria-selected': ariaSelected,
ellipsizeMode,
disabled,
id,
nativeID,
numberOfLines,
onLongPress,
onPress,
onPressIn,
@ -65,7 +67,10 @@ const Text: React.AbstractComponent<
onResponderTerminationRequest,
onStartShouldSetResponder,
pressRetentionOffset,
selectable,
selectionColor,
suppressHighlighting,
style,
...restProps
} = props;
@ -102,7 +107,7 @@ const Text: React.AbstractComponent<
}
const _accessibilityStateDisabled = _accessibilityState?.disabled;
const _disabled = restProps.disabled ?? _accessibilityStateDisabled;
const _disabled = disabled ?? _accessibilityStateDisabled;
const isPressable =
(onPress != null ||
@ -205,29 +210,28 @@ const Text: React.AbstractComponent<
);
// TODO: Move this processing to the view configuration.
const selectionColor =
restProps.selectionColor == null
? null
: processColor(restProps.selectionColor);
const _selectionColor =
selectionColor == null ? null : processColor(selectionColor);
let style = restProps.style;
let _style = style;
if (__DEV__) {
if (PressabilityDebug.isEnabled() && onPress != null) {
style = [restProps.style, {color: 'magenta'}];
_style = [style, {color: 'magenta'}];
}
}
let numberOfLines = restProps.numberOfLines;
if (numberOfLines != null && !(numberOfLines >= 0)) {
let _numberOfLines = numberOfLines;
if (_numberOfLines != null && !(_numberOfLines >= 0)) {
if (__DEV__) {
console.error(
`'numberOfLines' in <Text> must be a non-negative number, received: ${numberOfLines}. The value will be set to 0.`,
`'numberOfLines' in <Text> must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`,
);
numberOfLines = 0;
}
_numberOfLines = 0;
}
let _selectable = restProps.selectable;
const processedStyle = flattenStyle(style);
let _selectable = selectable;
const processedStyle = flattenStyle(_style);
if (processedStyle != null) {
if (typeof processedStyle.fontWeight === 'number') {
// $FlowFixMe[cannot-write]
@ -283,16 +287,16 @@ const Text: React.AbstractComponent<
isHighlighted={isHighlighted}
isPressable={isPressable}
nativeID={_nativeID}
numberOfLines={numberOfLines}
numberOfLines={_numberOfLines}
ref={forwardedRef}
selectable={_selectable}
selectionColor={selectionColor}
selectionColor={_selectionColor}
style={processedStyle}
/>
);
// [Windows] Following else statement forked due to PR #5740
} else {
let styleProps: ViewStyleProp = (restProps.style: any);
let styleProps: ViewStyleProp = (style: any);
if (
global.RN$Bridgeless !== true && // [Windows] Fabric text handles borders, but on paper we need to wrap it in an extra view
styleProps &&
@ -367,12 +371,12 @@ const Text: React.AbstractComponent<
disabled={_disabled}
ellipsizeMode={ellipsizeMode ?? 'tail'}
isHighlighted={isHighlighted}
nativeID={id ?? nativeID}
numberOfLines={numberOfLines}
nativeID={_nativeID}
numberOfLines={_numberOfLines}
ref={forwardedRef}
selectable={_selectable}
selectionColor={selectionColor}
style={((rest: any): TextStyleProp)}
selectionColor={_selectionColor}
style={processedStyle}
/>
</TextAncestor.Provider>
</View>
@ -394,11 +398,11 @@ const Text: React.AbstractComponent<
ellipsizeMode={ellipsizeMode ?? 'tail'}
isHighlighted={isHighlighted}
nativeID={_nativeID}
numberOfLines={numberOfLines}
numberOfLines={_numberOfLines}
ref={forwardedRef}
selectable={_selectable}
selectionColor={selectionColor}
style={style}
selectionColor={_selectionColor}
style={processedStyle}
/>
</TextAncestor.Provider>
);

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

@ -2,15 +2,15 @@
'use strict';
const React = require('react');
const ReactTestRenderer = require('react-test-renderer');
const renderer = require('react-native/jest/renderer');
const View = require('../Components/View/View');
describe('View', () => {
it('renders basic view', () => {
const component = ReactTestRenderer.create(
it('renders basic view', async () => {
expect(
await renderer.create(
<View/>
);
expect(component).toMatchSnapshot();
),
).toMatchSnapshot();
});
});

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

@ -113,7 +113,7 @@ async function postInstall(config = {}, options = {}) {
'test:windows': 'jest --config jest.config.windows.js',
},
devDependencies: {
'@rnx-kit/jest-preset': '^0.1.16',
'@rnx-kit/jest-preset': '^0.1.17',
},
});

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

@ -212,7 +212,7 @@ async function postInstall(config = {}, options = {}) {
'react-native-windows': rnwVersion,
},
devDependencies: {
'@rnx-kit/jest-preset': '^0.1.16',
'@rnx-kit/jest-preset': '^0.1.17',
},
});

394
yarn.lock
Просмотреть файл

@ -2192,18 +2192,6 @@
execa "^5.0.0"
fast-glob "^3.3.2"
"@react-native-community/cli-config@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-14.0.0-alpha.0.tgz#ad5a7e11b9d43aad7ceb0a2098c7acacd5cc6205"
integrity sha512-jq/mQkuOoCG+aFlQEnlPAvfWRPDOLNtBoKUQhr3db7Eex3hVlxIKqOkrcgUnDghwOdAhq+Kx2KE5brwI2ETMNw==
dependencies:
"@react-native-community/cli-tools" "14.0.0-alpha.0"
chalk "^4.1.2"
cosmiconfig "^5.1.0"
deepmerge "^4.3.0"
fast-glob "^3.3.2"
joi "^17.2.1"
"@react-native-community/cli-config@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-14.0.0-alpha.2.tgz#392b0e7d768842b57ec594cb3995f3d4f6fbabe8"
@ -2223,28 +2211,6 @@
dependencies:
serve-static "^1.13.1"
"@react-native-community/cli-doctor@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-14.0.0-alpha.0.tgz#da539b9dddfc55d5d4ba49631fc427f1a265edd9"
integrity sha512-J7VmjyJlT9N3WryFsqFXriP9Fn7BlHqdkLa8P6TqABXxp7ZD21WrYgCqsDTR3pfBiyAFpOpyrgjO6d0RNu1SSQ==
dependencies:
"@react-native-community/cli-config" "14.0.0-alpha.0"
"@react-native-community/cli-platform-android" "14.0.0-alpha.0"
"@react-native-community/cli-platform-apple" "14.0.0-alpha.0"
"@react-native-community/cli-platform-ios" "14.0.0-alpha.0"
"@react-native-community/cli-tools" "14.0.0-alpha.0"
chalk "^4.1.2"
command-exists "^1.2.8"
deepmerge "^4.3.0"
envinfo "^7.10.0"
execa "^5.0.0"
node-stream-zip "^1.9.1"
ora "^5.4.1"
semver "^7.5.2"
strip-ansi "^5.2.0"
wcwidth "^1.0.1"
yaml "^2.2.1"
"@react-native-community/cli-doctor@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-14.0.0-alpha.2.tgz#0a3e5b7512b930a079e9dacae2cc77073b111f95"
@ -2267,18 +2233,6 @@
wcwidth "^1.0.1"
yaml "^2.2.1"
"@react-native-community/cli-platform-android@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-14.0.0-alpha.0.tgz#ea3deec43f8cfb8f6fd7e00310e6c8aa255223ab"
integrity sha512-iin6jxiiFGFoO5yySFI1GPuFJVmPpoXI3+sgSHxpCA6sqSJ7iZilwa0jzDKV4XqWFstmijh2zZJgiJvv9srurw==
dependencies:
"@react-native-community/cli-tools" "14.0.0-alpha.0"
chalk "^4.1.2"
execa "^5.0.0"
fast-glob "^3.3.2"
fast-xml-parser "^4.2.4"
logkitty "^0.7.1"
"@react-native-community/cli-platform-android@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-14.0.0-alpha.2.tgz#a2ce4de0f3003db3cf34fcdbf384f701ae1dc16d"
@ -2291,18 +2245,6 @@
fast-xml-parser "^4.2.4"
logkitty "^0.7.1"
"@react-native-community/cli-platform-apple@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0-alpha.0.tgz#a96d7bdd3776d711ea8c4027a38c1a7c3e554f48"
integrity sha512-8uTqmJu9wMRPStftzUUH7y5ZlYqzlkfaS1VDkz40V/ECnDQK24NzgHdm6UHckcydF4PomO4esEJUlBlMUZeK/w==
dependencies:
"@react-native-community/cli-tools" "14.0.0-alpha.0"
chalk "^4.1.2"
execa "^5.0.0"
fast-glob "^3.3.2"
fast-xml-parser "^4.0.12"
ora "^5.4.1"
"@react-native-community/cli-platform-apple@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0-alpha.2.tgz#feaa2770005dd08b6bff380c623ec177a65d2a65"
@ -2315,13 +2257,6 @@
fast-xml-parser "^4.0.12"
ora "^5.4.1"
"@react-native-community/cli-platform-ios@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0-alpha.0.tgz#a4ef1642ef11b5edde5124a547613d6ee10aa78a"
integrity sha512-m3Eouxh7MvMmiroFdl52dJp6uP5pRasoe1sEvZ0vDzqhENCb36N7lzLlHVAd05FT9/xsC3wQvRElGiJXGhOxwg==
dependencies:
"@react-native-community/cli-platform-apple" "14.0.0-alpha.0"
"@react-native-community/cli-platform-ios@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0-alpha.2.tgz#6651691421d57d4230ee8d0dcd309af94a8303a7"
@ -2344,23 +2279,6 @@
serve-static "^1.13.1"
ws "^7.5.1"
"@react-native-community/cli-tools@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-14.0.0-alpha.0.tgz#39d223807859d922a991dafc4bedf36c0b21301d"
integrity sha512-+ypuOKGQnUVWbxZqfflwzSUWLv3tUZBGmrpdSZoNMOtPiR+JyxgtHA9IODwTDYmuFWG+nyRZDBE+eHSk0zutww==
dependencies:
appdirsjs "^1.2.4"
chalk "^4.1.2"
execa "^5.0.0"
find-up "^5.0.0"
mime "^2.4.1"
node-fetch "^2.6.0"
open "^6.2.0"
ora "^5.4.1"
semver "^7.5.2"
shell-quote "^1.7.3"
sudo-prompt "^9.0.0"
"@react-native-community/cli-tools@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-14.0.0-alpha.2.tgz#fa898083fa48449d9a2a08624fa2d71057a37d2e"
@ -2378,13 +2296,6 @@
shell-quote "^1.7.3"
sudo-prompt "^9.0.0"
"@react-native-community/cli-types@14.0.0-alpha.0":
version "14.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-14.0.0-alpha.0.tgz#8877b21e271938750c061bbd7c9447ab961fc52d"
integrity sha512-1iQ6AgOxGz7oLlLSDOeGPD9ewPAW23OyYjVpv8+rcirZisHzqMT8zwuCtLo4vmAfKad2HB0yL2EjEDN2VFyNCQ==
dependencies:
joi "^17.2.1"
"@react-native-community/cli-types@14.0.0-alpha.2":
version "14.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-14.0.0-alpha.2.tgz#6ebb5d088350901ed6d9870ab9b1e75dd7609ca9"
@ -2414,32 +2325,44 @@
prompts "^2.4.2"
semver "^7.5.2"
"@react-native-community/template@^0.75.0-rc.3":
version "0.75.0-rc.4"
resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.75.0-rc.4.tgz#5428db60118a4028a9b7ed8698f80d868c30a69b"
integrity sha512-cwC4Z1X62Xg4oPTrgrqDYLl3QLSIwjN+bI9R4zatkZwuU93ooD1Ai0QOF6KpDRkePG4rpnOVJmxVG8plfVISqQ==
"@react-native-picker/picker@^2.5.1":
version "2.7.7"
resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-2.7.7.tgz#6e19c3a72a482be015f5194794e6c14efe8762e8"
integrity sha512-CTHthVmx8ujlH/u5AnxLQfsheh/DoEbo+Kbx0HGTlbKVLC1eZ4Kr9jXIIUcwB7JEgOXifdZIPQCsoTc/7GQ0ag==
"@react-native/assets-registry@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.75.0-nightly-20240613-f7aea0c8e.tgz#8fabf66819a4b1da56ff3a955847919381d66746"
integrity sha512-wOPLwMHrPuZdSigzVkIGqjyDWBVLOkAFbTgTUpprq4zk+7SiefxTJ4ZkL0dtzqfPIkZao3iDhpjIFb14Rgo8iw==
"@react-native/assets-registry@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.75.0-nightly-20240618-5df5ed1a8.tgz#6e1d8d990712160c83c5d9f106b2e3cef2e8df36"
integrity sha512-yH057bMkigNqwKQQPFKC+v8XBkCaKBSO5pSqa9w7Zgqzr20I5pCfdc1UF/liF4A/6wgYPLLbc5gfXoJJOKYi3A==
"@react-native/assets@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e"
integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==
"@react-native/babel-plugin-codegen@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.0-nightly-20240613-f7aea0c8e.tgz#57172196d18d379cf1d5f409107be73416fb23c5"
integrity sha512-QL6vlZcEYVTz4uonnqif8zcyD6H/RYlSvOZ+iKn/HNAH2TSwyH89eiaGkEAkg5eCY2GjlH/iBESjfd9JlOmgkQ==
"@react-native/babel-plugin-codegen@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.0-nightly-20240614-8b53d41a8.tgz#516a3ab6eefd87c789f7c8ea53558660845c8330"
integrity sha512-9E+UV7s+6wLutnGlPTxiZFzJgAxLPJeidkeToNp1aovUNRsGAAmKcOyoI/BgpevGAm9SO5I/pUonTGxLHrS6zA==
dependencies:
"@react-native/codegen" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/codegen" "0.75.0-nightly-20240614-8b53d41a8"
"@react-native/babel-preset@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.75.0-nightly-20240613-f7aea0c8e.tgz#abb82c0dce27d3fdd556727cc23b18269e56914b"
integrity sha512-pDxBhamviKbiQ/aanx/GfPCEHsYeIb6SdZBT8LgFkf5jeMsR0WoISsHhFlwKGF7CA8Bt7sWv1dFTbCCUrlh39A==
"@react-native/babel-plugin-codegen@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.0-nightly-20240618-5df5ed1a8.tgz#f27d689638ea3b51ce534e1c0d3f9f458ffb9a18"
integrity sha512-oREgyQXipAiJQjd348vAjP7OED/piM3Pl/GHHJdst3lrTi9s+lW3lrwQ/iEkiagE6a5oh4UFF+jc67+N+L+8uw==
dependencies:
"@react-native/codegen" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/babel-preset@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.75.0-nightly-20240614-8b53d41a8.tgz#17490f4b8023cfd4b2b8b6a319ff67479f9b35ad"
integrity sha512-VlBnHuD/SsxKYRea3VfuTfttfZmQ2BhokdHqK/tWQ3qO/j2x/TPkWgaeuJ5n3VyZfvF5W5vKcfjwsQIgJuvfSA==
dependencies:
"@babel/core" "^7.20.0"
"@babel/plugin-proposal-export-default-from" "^7.0.0"
@ -2483,14 +2406,65 @@
"@babel/plugin-transform-typescript" "^7.5.0"
"@babel/plugin-transform-unicode-regex" "^7.0.0"
"@babel/template" "^7.0.0"
"@react-native/babel-plugin-codegen" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/babel-plugin-codegen" "0.75.0-nightly-20240614-8b53d41a8"
babel-plugin-transform-flow-enums "^0.0.2"
react-refresh "^0.14.0"
"@react-native/codegen@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.75.0-nightly-20240613-f7aea0c8e.tgz#cec38f86e2af43ca39345284bd41b59597450dfb"
integrity sha512-pIu423AgfgmpN+yqiJsiLaNYMDMMP59yhihCA/7IvCf5moD/+5tHRVavLvXHveHcXc/+xJq7jHedMrNh9nu1Tw==
"@react-native/babel-preset@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.75.0-nightly-20240618-5df5ed1a8.tgz#c512ebee7cb07d0474d87b383638d9812b72fcd5"
integrity sha512-wGmsDu0tBqI2LXS3pFgdgI2AaZfG1FvcdtGsqxIhQo2nkJQLFp3OHXf2kjla/h/oq1GCN0vEIevenxyt8mFUIw==
dependencies:
"@babel/core" "^7.20.0"
"@babel/plugin-proposal-export-default-from" "^7.0.0"
"@babel/plugin-syntax-dynamic-import" "^7.8.0"
"@babel/plugin-syntax-export-default-from" "^7.0.0"
"@babel/plugin-syntax-flow" "^7.18.0"
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
"@babel/plugin-syntax-optional-chaining" "^7.0.0"
"@babel/plugin-transform-arrow-functions" "^7.0.0"
"@babel/plugin-transform-async-generator-functions" "^7.24.3"
"@babel/plugin-transform-async-to-generator" "^7.20.0"
"@babel/plugin-transform-block-scoping" "^7.0.0"
"@babel/plugin-transform-class-properties" "^7.24.1"
"@babel/plugin-transform-classes" "^7.0.0"
"@babel/plugin-transform-computed-properties" "^7.0.0"
"@babel/plugin-transform-destructuring" "^7.20.0"
"@babel/plugin-transform-flow-strip-types" "^7.20.0"
"@babel/plugin-transform-for-of" "^7.0.0"
"@babel/plugin-transform-function-name" "^7.0.0"
"@babel/plugin-transform-literals" "^7.0.0"
"@babel/plugin-transform-logical-assignment-operators" "^7.24.1"
"@babel/plugin-transform-modules-commonjs" "^7.0.0"
"@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0"
"@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1"
"@babel/plugin-transform-numeric-separator" "^7.24.1"
"@babel/plugin-transform-object-rest-spread" "^7.24.5"
"@babel/plugin-transform-optional-catch-binding" "^7.24.1"
"@babel/plugin-transform-optional-chaining" "^7.24.5"
"@babel/plugin-transform-parameters" "^7.0.0"
"@babel/plugin-transform-private-methods" "^7.22.5"
"@babel/plugin-transform-private-property-in-object" "^7.22.11"
"@babel/plugin-transform-react-display-name" "^7.0.0"
"@babel/plugin-transform-react-jsx" "^7.0.0"
"@babel/plugin-transform-react-jsx-self" "^7.0.0"
"@babel/plugin-transform-react-jsx-source" "^7.0.0"
"@babel/plugin-transform-regenerator" "^7.20.0"
"@babel/plugin-transform-runtime" "^7.0.0"
"@babel/plugin-transform-shorthand-properties" "^7.0.0"
"@babel/plugin-transform-spread" "^7.0.0"
"@babel/plugin-transform-sticky-regex" "^7.0.0"
"@babel/plugin-transform-typescript" "^7.5.0"
"@babel/plugin-transform-unicode-regex" "^7.0.0"
"@babel/template" "^7.0.0"
"@react-native/babel-plugin-codegen" "0.75.0-nightly-20240618-5df5ed1a8"
babel-plugin-transform-flow-enums "^0.0.2"
react-refresh "^0.14.0"
"@react-native/codegen@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.75.0-nightly-20240614-8b53d41a8.tgz#9ac7b40edfedeb00907dbb3b2847bf3f8c2f2d46"
integrity sha512-jauwQtDeSgGMguDTgH+hAdIWo8EgTqXZUos0zDaM5qm7gM2qeDAaZ+fzGE+OYOPDPPKCnu3wRLllmilqzRUz/A==
dependencies:
"@babel/parser" "^7.20.0"
glob "^7.1.1"
@ -2500,15 +2474,28 @@
mkdirp "^0.5.1"
nullthrows "^1.1.1"
"@react-native/community-cli-plugin@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.75.0-nightly-20240613-f7aea0c8e.tgz#984ccd35d355a2ae53599955e4a7d3a1943fb931"
integrity sha512-7xO1JpfAh1jY+M188nHZap1pd18dNNUtJlEvH/AH1/tk0phcROqFto+93H0IReAmdlJ5zsMnvh+GjdtOHFkMjQ==
"@react-native/codegen@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.75.0-nightly-20240618-5df5ed1a8.tgz#ba11806cba9b74f7269b74a2e1d1d1366afc4ef7"
integrity sha512-CrF4EkzXG/oM8ikmqOZHbawyFeL35QTZ3YvPZoJRc5mb1nT7huhmDCctm8oMCA6f6Zb//t+J6v3yxnhL+qjxhQ==
dependencies:
"@babel/parser" "^7.20.0"
glob "^7.1.1"
hermes-parser "0.22.0"
invariant "^2.2.4"
jscodeshift "^0.14.0"
mkdirp "^0.5.1"
nullthrows "^1.1.1"
"@react-native/community-cli-plugin@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.75.0-nightly-20240618-5df5ed1a8.tgz#b730c62081ab1f2aea6c6a0f7e20dae5f6695d18"
integrity sha512-/kIjHi+Ovg1AbXNA4pwLK/aOWN0m1nOOtVpMZq7mz094qULkOb6pKu0AAHGnlktyLG7bIAORp1gpHybjHMzrCg==
dependencies:
"@react-native-community/cli-server-api" "14.0.0-alpha.2"
"@react-native-community/cli-tools" "14.0.0-alpha.2"
"@react-native/dev-middleware" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/metro-babel-transformer" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/dev-middleware" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/metro-babel-transformer" "0.75.0-nightly-20240618-5df5ed1a8"
chalk "^4.0.0"
execa "^5.1.1"
metro "^0.80.3"
@ -2518,18 +2505,18 @@
querystring "^0.2.1"
readline "^1.3.0"
"@react-native/debugger-frontend@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.75.0-nightly-20240613-f7aea0c8e.tgz#709cd413a5b40303cc2b0e2b74e5f761083e1cf2"
integrity sha512-Rq8tYTYAABzTge1leKFX3hkup+mseHvkGjJTzSJOT/w1FtBlbofizNLyqr/et8eNHXgcFNycvZ898ovlLbnGHQ==
"@react-native/debugger-frontend@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.75.0-nightly-20240618-5df5ed1a8.tgz#be1d2e13e5f05c61c78d4dd61990e33ff752d725"
integrity sha512-4q+pM/JgYfCowwFf3OowQRg/42EfbTpSJQJKQfN5SeoVyWTjkCriTg746gNX9e96KZvAhu6ZsGJSI3BYgVR9wA==
"@react-native/dev-middleware@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.75.0-nightly-20240613-f7aea0c8e.tgz#69a2106bc33f8b7c918a373f188871086e6b163b"
integrity sha512-kkcL+WHv2wMuOEra+FJZRwbhGTDGB9iRazRx3b+VwgG91EaYu4Fl3eXvDExmHBw5JFlnisc49twyFoVZjebx3A==
"@react-native/dev-middleware@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.75.0-nightly-20240618-5df5ed1a8.tgz#5e843308d5518534e854f20ae512c5620ac5c149"
integrity sha512-xtWRQdlaFZh62tm/ceSVvL6YM+j2SGWm4R/4UTzlmry9NIGYF9CvX7j7nZDPI9T9Ic9sM0fFx8CI7ghaq8N1yA==
dependencies:
"@isaacs/ttlcache" "^1.4.1"
"@react-native/debugger-frontend" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/debugger-frontend" "0.75.0-nightly-20240618-5df5ed1a8"
chrome-launcher "^0.15.2"
chromium-edge-launcher "^0.2.0"
connect "^3.6.5"
@ -2541,14 +2528,14 @@
serve-static "^1.13.1"
ws "^6.2.2"
"@react-native/eslint-config@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.75.0-nightly-20240613-f7aea0c8e.tgz#9ec3e12eb16c8ba04fd20735fc526e94fede0ba7"
integrity sha512-kNU7wnQJpMUGT52Rf19Q9udgFMfsd6eEyfJrmD5ZJRzrAGyKlU2QtKaZKaZiFEThXgpSvWqzLxf8BJdLbGHjeg==
"@react-native/eslint-config@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.75.0-nightly-20240614-8b53d41a8.tgz#c490e43916eb74c0f02ac168d214b79b524f0154"
integrity sha512-Rs9N9Ezhp0SXJyxYZB7Lbs/yZSDXn+S+y+3RYrFP4ZfTBTdIwFDd5HK+/VSZAGxjpBF5vDKPS1dZBJ+qQ8ZoVw==
dependencies:
"@babel/core" "^7.20.0"
"@babel/eslint-parser" "^7.20.0"
"@react-native/eslint-plugin" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/eslint-plugin" "0.75.0-nightly-20240614-8b53d41a8"
"@typescript-eslint/eslint-plugin" "^7.1.1"
"@typescript-eslint/parser" "^7.1.1"
eslint-config-prettier "^8.5.0"
@ -2559,45 +2546,70 @@
eslint-plugin-react-hooks "^4.6.0"
eslint-plugin-react-native "^4.0.0"
"@react-native/eslint-plugin@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.75.0-nightly-20240613-f7aea0c8e.tgz#fa5cf4eb6ae7ae605daac3ef579adcd688d42495"
integrity sha512-zfWODguLe49+v4vqppFG2VkZGlSlBOD43aaS9YbQOEljGCQfuoQNX55qJgpqVaUbdNnGn/CwQnro1oNIpnI01A==
"@react-native/eslint-plugin@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.75.0-nightly-20240614-8b53d41a8.tgz#db4d6187093c1cd34aa8c7e4d498bef5cd49a888"
integrity sha512-FsSVfieFdL3ugKoqrNmweT0d7z6Q+6iyVBl7vjRJ37CtsWg/K8ZY1yYL8kQxwZwx0/WXmA323Bc0NrZh+ic7cg==
"@react-native/gradle-plugin@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.75.0-nightly-20240613-f7aea0c8e.tgz#eb05f811da1209b1dafbfdd579b407a117b89a97"
integrity sha512-dfRlALXxoSvxzcw2E5EtoqSsu+UGAxmy9O7HPTHNcEK/wXlB3thkfXN1MuexYVHQY8zn10whSJRBpxE5ZmxNIg==
"@react-native/gradle-plugin@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.75.0-nightly-20240618-5df5ed1a8.tgz#4e6257f91b69387b5de80239786851050ccb8263"
integrity sha512-5EUM0Z/ZPGG/vRNpa+V/r2WvxX9lpR/WYXIsVkYVonXaZBiSEozIxaSB5IbD0jf64aq/7iDO2AJRiWNqL2K9GQ==
"@react-native/js-polyfills@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.75.0-nightly-20240613-f7aea0c8e.tgz#94dcac9b5c9cf3b0a7469c0689db93e5a9a82cda"
integrity sha512-8SyIu7CjUG7RK0OJCh5iHQHRpUeaQwEZbE+KRmO9cqAnunBdryKMdInG9HnuFLztB69ZoUHxC6QA6xNg1wWnEg==
"@react-native/js-polyfills@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.75.0-nightly-20240614-8b53d41a8.tgz#d041c14a7a732c6b07831b3a17f31700a0e09f1f"
integrity sha512-fhX1kqBwpwKMqOXnI6zjg1n3uM6lL+sKzaxwet8gFyxFaB8o4uCNRU3NhLhwMHi7WyRkCk0hacus+MS8JwdLyg==
"@react-native/metro-babel-transformer@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.0-nightly-20240613-f7aea0c8e.tgz#6059985f5e7670fe0a76a98222d77fc2c51c4d0e"
integrity sha512-X1WL7sGku0Sp9fMElS1GVXupeqrV4OPLZuLNRxlVYr+fxpsbXPpxL+R8ZqskOeUhksUnqFQsTjrpg5SqBxI3ow==
"@react-native/js-polyfills@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.75.0-nightly-20240618-5df5ed1a8.tgz#d99289643b34d24da7fe95110507b2dad71c60db"
integrity sha512-fCW+Y+8J4JfKq3kWGts5y3jAPUWQk6JTwGFKoK7qQaVUdiUWb/pOqt0IknGvZVLNBqmTCtXzbOjdUB3E2wmbIw==
"@react-native/metro-babel-transformer@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.0-nightly-20240614-8b53d41a8.tgz#3f1edd35bfb3221f8d7c103132b81acca4b2498a"
integrity sha512-OWvqW2BhrMR+jqT154IR+eo1Vb1EMv5syUM0T/m6ARaCTD7LDlGaAeGJs0+vtStqKXaWahKgj7Zc9Wk82hQRAQ==
dependencies:
"@babel/core" "^7.20.0"
"@react-native/babel-preset" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/babel-preset" "0.75.0-nightly-20240614-8b53d41a8"
hermes-parser "0.22.0"
nullthrows "^1.1.1"
"@react-native/metro-config@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.75.0-nightly-20240613-f7aea0c8e.tgz#22479febf7f6104c269ef9930312d9882cb75b0b"
integrity sha512-gy/4Iw3cRZxD3Um7ap55my0xxwCnvnaiUvq57Vp27Au+WQMCyzyO6kEm4c4KuUKGwc7vK+Mv5ox4oTumQEjbGA==
"@react-native/metro-babel-transformer@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.0-nightly-20240618-5df5ed1a8.tgz#73084cae8c1cabf376ed8a3aeeba0414432faa00"
integrity sha512-TixQ9j2f+feX42lrW+1d0/RsnLDxWdNWTKF+RRP6wjrn5wonSpzr/0xJ4+k0V5LcdIuhJvGdEHHkD1tizrIG2Q==
dependencies:
"@react-native/js-polyfills" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/metro-babel-transformer" "0.75.0-nightly-20240613-f7aea0c8e"
"@babel/core" "^7.20.0"
"@react-native/babel-preset" "0.75.0-nightly-20240618-5df5ed1a8"
hermes-parser "0.22.0"
nullthrows "^1.1.1"
"@react-native/metro-config@0.75.0-nightly-20240614-8b53d41a8":
version "0.75.0-nightly-20240614-8b53d41a8"
resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.75.0-nightly-20240614-8b53d41a8.tgz#3417469853a2f34e6917648472231ecae83ad979"
integrity sha512-sh2ylFmWHesWq5Xx5bNrGd7nlSULSY8Q7/SDFeFD4c+9O3I1b7oLhxe9nzI4R7/YrY3fr2X7agKbv3fRRFJH3w==
dependencies:
"@react-native/js-polyfills" "0.75.0-nightly-20240614-8b53d41a8"
"@react-native/metro-babel-transformer" "0.75.0-nightly-20240614-8b53d41a8"
metro-config "^0.80.3"
metro-runtime "^0.80.3"
"@react-native/normalize-colors@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.75.0-nightly-20240613-f7aea0c8e.tgz#ad4c21f8b0165b252070176780fb89639566cd12"
integrity sha512-YNEuFTGABj93+91NcFzc3Qlb26xQp4cYtCIUwgQKtir6bf7YTBp58RkwqiSfk+wZ6kolmTs0vxA6MsUf790AYg==
"@react-native/metro-config@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.75.0-nightly-20240618-5df5ed1a8.tgz#59770e8cb330c29c5f2938ea15ae1ff4de78a9ef"
integrity sha512-mQp11OPAyWbVjF0dOrV7De38Q9tJiaR8M/w6J2Y7kjx4DNCqxGiCVBkvLulHaGAaA3YQHxpjVfaVwg2Zd0DzXA==
dependencies:
"@react-native/js-polyfills" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/metro-babel-transformer" "0.75.0-nightly-20240618-5df5ed1a8"
metro-config "^0.80.3"
metro-runtime "^0.80.3"
"@react-native/normalize-colors@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.75.0-nightly-20240618-5df5ed1a8.tgz#1a1792b4286213a377417f3251b1b32b209247af"
integrity sha512-de22fMTjpj2DdnPdy7bTjw3P4k4jvWviVFJhRMLMEiTyi7yEpGd6GSGpPFVRZDCcd4d4/mTUZ4fpQOv+M4nBYQ==
"@react-native/popup-menu-android@0.75.0-main":
version "0.75.0-main"
@ -2606,10 +2618,10 @@
dependencies:
nullthrows "^1.1.1"
"@react-native/virtualized-lists@0.75.0-nightly-20240613-f7aea0c8e":
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.75.0-nightly-20240613-f7aea0c8e.tgz#2906cf37f68e28d7e3cfc4e60ff9e036317129fd"
integrity sha512-X1u3kcEP7jP7OOG9IquxX8mlNme9ySbIboT0XJpYcrsUQv7KMMyK0SIfDh4QxkHQDctS90WtwbuSk/jxdSxmIw==
"@react-native/virtualized-lists@0.75.0-nightly-20240618-5df5ed1a8":
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.75.0-nightly-20240618-5df5ed1a8.tgz#c23249cac6f6329169d4cb248599d7cd7523813a"
integrity sha512-8BT7IVui6hyMtUmslanN8cKpwscwm/ZOND3/N2RQHnDMrAk3nlZG/06G6Q0ef3gz3vxfHoTHpGfI05OOXhxbKg==
dependencies:
invariant "^2.2.4"
nullthrows "^1.1.1"
@ -2657,7 +2669,7 @@
resolved "https://registry.yarnpkg.com/@rnx-kit/console/-/console-1.1.0.tgz#86364f8e6c68b01e9493730276c0d8109a80cd41"
integrity sha512-N+zFhTSXroiK4eL26vs61Pmtl7wzTPAKLd4JKw9/fk5cNAHUscCXF/uclzuYN61Ye5AwygIvcwbm9wv4Jfa92A==
"@rnx-kit/jest-preset@^0.1.0", "@rnx-kit/jest-preset@^0.1.16":
"@rnx-kit/jest-preset@^0.1.16", "@rnx-kit/jest-preset@^0.1.17":
version "0.1.17"
resolved "https://registry.yarnpkg.com/@rnx-kit/jest-preset/-/jest-preset-0.1.17.tgz#aba8a049a5c7e157ad82ad005515c7fd230df1e8"
integrity sha512-tAL838G8B6to52R1QMcNyTnBc6oRNpX14QvuBl/v63n1YjwA6iybOkFortRA+tJVX81WiUV754m2Yp3d4S8iEA==
@ -6614,10 +6626,10 @@ flow-bin@^0.217.2:
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.217.2.tgz#96affa17f3cb303019f740bffeb28cfab7ce1250"
integrity sha512-fk4NcfybYjzlww1sEsfk71nqXvonAYpMRFEjmZxibDWWBiaw8DGmqXWZ7XzSunVB15VkJfOstn/sYP1EYPPyWg==
flow-bin@^0.237.2:
version "0.237.2"
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.237.2.tgz#42b0be22acd7fb84c77f39f078fc2f6b7d159fdd"
integrity sha512-PlonnPvzTW4nES5YPMwZOJS+IRoaS0ABJWPjsT+5kvLDjXsPerg6A4ftWks4t4gRpPjKSl+6F1BTn9uqWP0inA==
flow-bin@^0.238.0:
version "0.238.3"
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.238.3.tgz#8b181e35f0c9a4436deeedcecb3965da7bc8d721"
integrity sha512-jvpCMXk4Qc5IfMaZJTIcZMiBSN2A5CGYVyJs/DW019Njz1uzbshHWfuUyt5kbnkqUU4e6VsF3OZRJCZR3KM4+w==
flow-enums-runtime@^0.0.5:
version "0.0.5"
@ -10417,6 +10429,11 @@ react-devtools-core@5.1.0:
shell-quote "^1.6.1"
ws "^7"
react-is@19.0.0-rc-fb9a90fa48-20240614:
version "19.0.0-rc-fb9a90fa48-20240614"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.0.0-rc-fb9a90fa48-20240614.tgz#6987893799abdedf2e9929e31541cb6d7dc8285a"
integrity sha512-60qI7v1B9RhmZwjTCnAgzcuABOQsIH20vTbETQPaze96s1lY2lSawv9dvXAfF8Z1MIqOppWSKLNOshF0WsZ3OA==
"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
@ -10444,22 +10461,22 @@ react-native-xaml@^0.0.78:
dependencies:
"@types/react" "*"
react-native@0.75.0-nightly-20240613-f7aea0c8e:
version "0.75.0-nightly-20240613-f7aea0c8e"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.75.0-nightly-20240613-f7aea0c8e.tgz#58e3a6b8d61443b839f39baf2e85de68af1c7b00"
integrity sha512-QbZv3lb0gk1sl/G966EeMndCSemeOF/yqLSkPIxZ+vKJHSnDTZoEJ19NOvRR9HZe2Er0s3btnNIdH95tGejDaQ==
react-native@0.75.0-nightly-20240618-5df5ed1a8:
version "0.75.0-nightly-20240618-5df5ed1a8"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.75.0-nightly-20240618-5df5ed1a8.tgz#6cae0a6a09d48e9b06d7acab2ced3a9f1d636068"
integrity sha512-7kRgUoekA9bpStpBOe6ueju2A0KKmdUcbBxQWEGM+G0Vc3Self7qIuI2o+e/wfLzGBjKpI87QudqtA8jxy5gdw==
dependencies:
"@jest/create-cache-key-function" "^29.6.3"
"@react-native-community/cli" "14.0.0-alpha.2"
"@react-native-community/cli-platform-android" "14.0.0-alpha.2"
"@react-native-community/cli-platform-ios" "14.0.0-alpha.2"
"@react-native/assets-registry" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/codegen" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/community-cli-plugin" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/gradle-plugin" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/js-polyfills" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/normalize-colors" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/virtualized-lists" "0.75.0-nightly-20240613-f7aea0c8e"
"@react-native/assets-registry" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/codegen" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/community-cli-plugin" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/gradle-plugin" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/js-polyfills" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/normalize-colors" "0.75.0-nightly-20240618-5df5ed1a8"
"@react-native/virtualized-lists" "0.75.0-nightly-20240618-5df5ed1a8"
abort-controller "^3.0.0"
anser "^1.4.9"
ansi-regex "^5.0.0"
@ -10480,9 +10497,8 @@ react-native@0.75.0-nightly-20240613-f7aea0c8e:
promise "^8.3.0"
react-devtools-core "5.1.0"
react-refresh "^0.14.0"
react-shallow-renderer "^16.15.0"
regenerator-runtime "^0.13.2"
scheduler "0.24.0-canary-efb381bbf-20230505"
scheduler "0.25.0-rc-fb9a90fa48-20240614"
semver "^7.1.3"
stacktrace-parser "^0.1.10"
whatwg-fetch "^3.0.0"
@ -10511,12 +10527,18 @@ react-test-renderer@18.3.1:
react-shallow-renderer "^16.15.0"
scheduler "^0.23.2"
react@18.3.1:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
react-test-renderer@19.0.0-rc-fb9a90fa48-20240614:
version "19.0.0-rc-fb9a90fa48-20240614"
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-19.0.0-rc-fb9a90fa48-20240614.tgz#6657b3d05a533afad5ea0516f9ed29cadf72334f"
integrity sha512-cV3mGgsKTJCB8f4tZxWIp0ot4PMgx791XTkwpapf06ZlUk5BCP3C1CbIqRXcKeiQODvFJClZX26TFTPAklTq7A==
dependencies:
loose-envify "^1.1.0"
react-is "19.0.0-rc-fb9a90fa48-20240614"
scheduler "0.25.0-rc-fb9a90fa48-20240614"
react@19.0.0-rc-fb9a90fa48-20240614, react@^19.0.0-rc-fb9a90fa48-20240614:
version "19.0.0-rc-fb9a90fa48-20240614"
resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-fb9a90fa48-20240614.tgz#90eb43a0b005e8cc3cbf0d801c14816d01df1b08"
integrity sha512-nvE3Gy+IOIfH/DXhkyxFVQSrITarFcQz4+shzC/McxQXEUSonpw2oDy/Wi9hdDtV3hlP12VYuDL95iiBREedNQ==
read-yaml-file@^2.1.0:
version "2.1.0"
@ -10938,12 +10960,10 @@ sax@>=0.6.0:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0"
integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
scheduler@0.24.0-canary-efb381bbf-20230505:
version "0.24.0-canary-efb381bbf-20230505"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz#5dddc60e29f91cd7f8b983d7ce4a99c2202d178f"
integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==
dependencies:
loose-envify "^1.1.0"
scheduler@0.25.0-rc-fb9a90fa48-20240614:
version "0.25.0-rc-fb9a90fa48-20240614"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-fb9a90fa48-20240614.tgz#9ee11063b7c0f47aef3fea53d9f1be3f13794dce"
integrity sha512-HHqQ/SqbeiDfXXVKgNxTpbQTD4n7IUb4hZATvHjp03jr3TF7igehCyHdOjeYTrzIseLO93cTTfSb5f4qWcirMQ==
scheduler@^0.23.2:
version "0.23.2"