Merge commit 'b27a83b084600f0191c20c7809424bf733a6734b' into 0.68-merge-latest

This commit is contained in:
Adam Gleitman 2022-05-25 16:18:25 -07:00
Родитель 046c8c0d94 b27a83b084
Коммит e833eb42f8
76 изменённых файлов: 1143 добавлений и 597 удалений

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

@ -38,7 +38,6 @@ flow/
emoji=true emoji=true
exact_by_default=true exact_by_default=true
indexed_access=false
format.bracket_spacing=false format.bracket_spacing=false

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

@ -38,7 +38,6 @@ flow/
emoji=true emoji=true
exact_by_default=true exact_by_default=true
indexed_access=false
format.bracket_spacing=false format.bracket_spacing=false

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

@ -9,6 +9,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: lucasbento/core-workflow-apply-version-label@v0.0.5 - uses: lucasbento/core-workflow-apply-version-label@v0.0.6
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}

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

@ -307,6 +307,7 @@ REACT_PUBLIC_HEADERS = {
"React/RCTVersion.h": RCTBASE_PATH + "RCTVersion.h", "React/RCTVersion.h": RCTBASE_PATH + "RCTVersion.h",
"React/RCTView.h": RCTVIEWS_PATH + "RCTView.h", "React/RCTView.h": RCTVIEWS_PATH + "RCTView.h",
"React/RCTViewManager.h": RCTVIEWS_PATH + "RCTViewManager.h", "React/RCTViewManager.h": RCTVIEWS_PATH + "RCTViewManager.h",
"React/RCTViewUtils.h": RCTVIEWS_PATH + "RCTViewUtils.h",
"React/RCTWeakProxy.h": RCTBASE_PATH + "RCTWeakProxy.h", "React/RCTWeakProxy.h": RCTBASE_PATH + "RCTWeakProxy.h",
"React/RCTWeakViewHolder.h": RCTVIEWS_PATH + "RCTWeakViewHolder.h", "React/RCTWeakViewHolder.h": RCTVIEWS_PATH + "RCTWeakViewHolder.h",
"React/RCTWrapperViewController.h": RCTVIEWS_PATH + "RCTWrapperViewController.h", "React/RCTWrapperViewController.h": RCTVIEWS_PATH + "RCTWrapperViewController.h",

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

@ -38,6 +38,7 @@ class AppEventsTest extends React.Component<{...}, State> {
NativeAppEventEmitter.addListener('testEvent', this.receiveEvent); NativeAppEventEmitter.addListener('testEvent', this.receiveEvent);
const event = {data: TEST_PAYLOAD, ts: Date.now()}; const event = {data: TEST_PAYLOAD, ts: Date.now()};
TestModule.sendAppEvent('testEvent', event); TestModule.sendAppEvent('testEvent', event);
// eslint-disable-next-line react/no-did-mount-set-state
this.setState({sent: event}); this.setState({sent: event});
} }

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

@ -18,7 +18,6 @@ const AnimatedInterpolation = require('./nodes/AnimatedInterpolation');
const AnimatedModulo = require('./nodes/AnimatedModulo'); const AnimatedModulo = require('./nodes/AnimatedModulo');
const AnimatedMultiplication = require('./nodes/AnimatedMultiplication'); const AnimatedMultiplication = require('./nodes/AnimatedMultiplication');
const AnimatedNode = require('./nodes/AnimatedNode'); const AnimatedNode = require('./nodes/AnimatedNode');
const AnimatedProps = require('./nodes/AnimatedProps');
const AnimatedSubtraction = require('./nodes/AnimatedSubtraction'); const AnimatedSubtraction = require('./nodes/AnimatedSubtraction');
const AnimatedTracking = require('./nodes/AnimatedTracking'); const AnimatedTracking = require('./nodes/AnimatedTracking');
const AnimatedValue = require('./nodes/AnimatedValue'); const AnimatedValue = require('./nodes/AnimatedValue');

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

@ -140,21 +140,6 @@ describe('Animated tests', () => {
expect(callback).toBeCalled(); expect(callback).toBeCalled();
}); });
// This test is flaky and we are asking open source to fix it
// https://github.com/facebook/react-native/issues/21517
it.skip('send toValue when an underdamped spring stops', () => {
const anim = new Animated.Value(0);
const listener = jest.fn();
anim.addListener(listener);
Animated.spring(anim, {toValue: 15, useNativeDriver: false}).start();
jest.runAllTimers();
const lastValue =
listener.mock.calls[listener.mock.calls.length - 2][0].value;
expect(lastValue).not.toBe(15);
expect(lastValue).toBeCloseTo(15);
expect(anim.__getValue()).toBe(15);
});
it('send toValue when a critically damped spring stops', () => { it('send toValue when a critically damped spring stops', () => {
const anim = new Animated.Value(0); const anim = new Animated.Value(0);
const listener = jest.fn(); const listener = jest.fn();

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

@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @flow strict * @flow strict
* @noformat * @format
*/ */
'use strict'; 'use strict';
@ -72,19 +72,17 @@ class MessageQueue {
} }
// $FlowFixMe[cannot-write] // $FlowFixMe[cannot-write]
// $FlowFixMe[method-unbinding] added when improving typing for this parameters this.callFunctionReturnFlushedQueue =
this.callFunctionReturnFlushedQueue = this.callFunctionReturnFlushedQueue.bind( // $FlowFixMe[method-unbinding] added when improving typing for this parameters
this, this.callFunctionReturnFlushedQueue.bind(this);
);
// $FlowFixMe[cannot-write] // $FlowFixMe[cannot-write]
// $FlowFixMe[method-unbinding] added when improving typing for this parameters // $FlowFixMe[method-unbinding] added when improving typing for this parameters
this.flushedQueue = this.flushedQueue.bind(this); this.flushedQueue = this.flushedQueue.bind(this);
// $FlowFixMe[cannot-write] // $FlowFixMe[cannot-write]
// $FlowFixMe[method-unbinding] added when improving typing for this parameters this.invokeCallbackAndReturnFlushedQueue =
this.invokeCallbackAndReturnFlushedQueue = this.invokeCallbackAndReturnFlushedQueue.bind( // $FlowFixMe[method-unbinding] added when improving typing for this parameters
this, this.invokeCallbackAndReturnFlushedQueue.bind(this);
);
} }
/** /**

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

@ -14,8 +14,6 @@ jest.unmock('../NativeModules');
let BatchedBridge; let BatchedBridge;
let NativeModules; let NativeModules;
let fs;
let parseErrorStack;
const MODULE_IDS = 0; const MODULE_IDS = 0;
const METHOD_IDS = 1; const METHOD_IDS = 1;
@ -45,8 +43,6 @@ describe('MessageQueue', function() {
global.__fbBatchedBridgeConfig = require('../__mocks__/MessageQueueTestConfig'); global.__fbBatchedBridgeConfig = require('../__mocks__/MessageQueueTestConfig');
BatchedBridge = require('../BatchedBridge'); BatchedBridge = require('../BatchedBridge');
NativeModules = require('../NativeModules'); NativeModules = require('../NativeModules');
fs = require('fs');
parseErrorStack = require('../../Core/Devtools/parseErrorStack');
}); });
it('should generate native modules', () => { it('should generate native modules', () => {

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

@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @flow strict-local * @flow strict-local
* @noformat * @format
*/ */
const React = require('react'); const React = require('react');
@ -100,7 +100,8 @@ const ProgressBarAndroid = (
const ProgressBarAndroidToExport = React.forwardRef(ProgressBarAndroid); const ProgressBarAndroidToExport = React.forwardRef(ProgressBarAndroid);
/* $FlowFixMe(>=0.89.0 site=react_native_android_fb) This comment suppresses an module.exports =
* error found when Flow v0.89 was deployed. To see the error, delete this /* $FlowFixMe(>=0.89.0 site=react_native_android_fb) This comment suppresses an
* comment and run Flow. */ * error found when Flow v0.89 was deployed. To see the error, delete this
module.exports = (ProgressBarAndroidToExport: typeof ProgressBarAndroidNativeComponent); * comment and run Flow. */
(ProgressBarAndroidToExport: typeof ProgressBarAndroidNativeComponent);

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

@ -17,7 +17,6 @@ import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';
import type { import type {
DirectEventHandler, DirectEventHandler,
Float, Float,
Int32,
WithDefault, WithDefault,
} from '../../Types/CodegenTypes'; } from '../../Types/CodegenTypes';
import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ColorValue} from '../../StyleSheet/StyleSheet';

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

@ -11,12 +11,12 @@
'use strict'; 'use strict';
import * as React from 'react'; const React = require('react');
import ScrollView from '../ScrollView'; const ScrollView = require('../ScrollView');
import * as ReactNativeTestTools from '../../../Utilities/ReactNativeTestTools'; const ReactNativeTestTools = require('../../../Utilities/ReactNativeTestTools');
import ReactTestRenderer from 'react-test-renderer'; const ReactTestRenderer = require('react-test-renderer');
import View from '../../View/View'; const View = require('../../View/View');
import Text from '../../../Text/Text'; const Text = require('../../../Text/Text');
describe('<ScrollView />', () => { describe('<ScrollView />', () => {
it('should render as expected', () => { it('should render as expected', () => {

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

@ -8,7 +8,6 @@
* @format * @format
*/ */
import ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig';
import type {PartialViewConfig} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes'; import type {PartialViewConfig} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';
const AndroidTextInputViewConfig = { const AndroidTextInputViewConfig = {
@ -53,8 +52,6 @@ const AndroidTextInputViewConfig = {
}, },
directEventTypes: {}, directEventTypes: {},
validAttributes: { validAttributes: {
...ReactNativeViewViewConfig.validAttributes,
maxFontSizeMultiplier: true, maxFontSizeMultiplier: true,
adjustsFontSizeToFit: true, adjustsFontSizeToFit: true,
minimumFontScale: true, minimumFontScale: true,

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

@ -9,7 +9,6 @@
*/ */
import type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes'; import type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';
import ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig';
const RCTTextInputViewConfig = { const RCTTextInputViewConfig = {
uiViewClassName: 'RCTSinglelineTextInputView', uiViewClassName: 'RCTSinglelineTextInputView',
@ -72,7 +71,6 @@ const RCTTextInputViewConfig = {
}, },
directEventTypes: {}, directEventTypes: {},
validAttributes: { validAttributes: {
...ReactNativeViewViewConfig.validAttributes,
fontSize: true, fontSize: true,
fontWeight: true, fontWeight: true,
fontVariant: true, fontVariant: true,

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

@ -1064,9 +1064,9 @@ function InternalTextInput(props: Props): React.Node {
}); });
const _onChange = (event: ChangeEvent) => { const _onChange = (event: ChangeEvent) => {
const text = event.nativeEvent.text; const currentText = event.nativeEvent.text;
props.onChange && props.onChange(event); props.onChange && props.onChange(event);
props.onChangeText && props.onChangeText(text); props.onChangeText && props.onChangeText(currentText);
if (inputRef.current == null) { if (inputRef.current == null) {
// calling `props.onChange` or `props.onChangeText` // calling `props.onChange` or `props.onChangeText`
@ -1074,7 +1074,7 @@ function InternalTextInput(props: Props): React.Node {
return; return;
} }
setLastNativeText(text); setLastNativeText(currentText);
// This must happen last, after we call setLastNativeText. // This must happen last, after we call setLastNativeText.
// Different ordering can cause bugs when editing AndroidTextInputs // Different ordering can cause bugs when editing AndroidTextInputs
// with multiple Fragments. // with multiple Fragments.

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

@ -102,15 +102,10 @@ describe('TextInput tests', () => {
TextInput.State.focusTextInput(textInputRef.current); TextInput.State.focusTextInput(textInputRef.current);
expect(textInputRef.current.isFocused()).toBe(true); expect(textInputRef.current.isFocused()).toBe(true);
expect(TextInput.State.currentlyFocusedInput()).toBe(textInputRef.current); expect(TextInput.State.currentlyFocusedInput()).toBe(textInputRef.current);
// This function is currently deprecated and will be removed in the future
expect(TextInput.State.currentlyFocusedField()).toBe(
ReactNative.findNodeHandle(textInputRef.current),
);
TextInput.State.blurTextInput(textInputRef.current); TextInput.State.blurTextInput(textInputRef.current);
expect(textInputRef.current.isFocused()).toBe(false); expect(textInputRef.current.isFocused()).toBe(false);
expect(TextInput.State.currentlyFocusedInput()).toBe(null); expect(TextInput.State.currentlyFocusedInput()).toBe(null);
// This function is currently deprecated and will be removed in the future
expect(TextInput.State.currentlyFocusedField()).toBe(null);
}); });
it('should unfocus when other TextInput is focused', () => { it('should unfocus when other TextInput is focused', () => {
@ -144,24 +139,17 @@ describe('TextInput tests', () => {
expect(textInputRe1.current.isFocused()).toBe(false); expect(textInputRe1.current.isFocused()).toBe(false);
expect(textInputRe2.current.isFocused()).toBe(false); expect(textInputRe2.current.isFocused()).toBe(false);
const inputTag1 = ReactNative.findNodeHandle(textInputRe1.current);
const inputTag2 = ReactNative.findNodeHandle(textInputRe2.current);
TextInput.State.focusTextInput(textInputRe1.current); TextInput.State.focusTextInput(textInputRe1.current);
expect(textInputRe1.current.isFocused()).toBe(true); expect(textInputRe1.current.isFocused()).toBe(true);
expect(textInputRe2.current.isFocused()).toBe(false); expect(textInputRe2.current.isFocused()).toBe(false);
expect(TextInput.State.currentlyFocusedInput()).toBe(textInputRe1.current); expect(TextInput.State.currentlyFocusedInput()).toBe(textInputRe1.current);
// This function is currently deprecated and will be removed in the future
expect(TextInput.State.currentlyFocusedField()).toBe(inputTag1);
TextInput.State.focusTextInput(textInputRe2.current); TextInput.State.focusTextInput(textInputRe2.current);
expect(textInputRe1.current.isFocused()).toBe(false); expect(textInputRe1.current.isFocused()).toBe(false);
expect(textInputRe2.current.isFocused()).toBe(true); expect(textInputRe2.current.isFocused()).toBe(true);
expect(TextInput.State.currentlyFocusedInput()).toBe(textInputRe2.current); expect(TextInput.State.currentlyFocusedInput()).toBe(textInputRe2.current);
// This function is currently deprecated and will be removed in the future
expect(TextInput.State.currentlyFocusedField()).toBe(inputTag2);
}); });
it('should render as expected', () => { it('should render as expected', () => {

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

@ -19,7 +19,7 @@ import invariant from 'invariant';
* here, or in their own files. * here, or in their own files.
*/ */
const oneArgumentPooler = function(copyFieldsFrom) { const oneArgumentPooler = function(copyFieldsFrom) {
const Klass = this; const Klass = this; // eslint-disable-line consistent-this
if (Klass.instancePool.length) { if (Klass.instancePool.length) {
const instance = Klass.instancePool.pop(); const instance = Klass.instancePool.pop();
Klass.call(instance, copyFieldsFrom); Klass.call(instance, copyFieldsFrom);
@ -30,7 +30,7 @@ const oneArgumentPooler = function(copyFieldsFrom) {
}; };
const twoArgumentPooler = function(a1, a2) { const twoArgumentPooler = function(a1, a2) {
const Klass = this; const Klass = this; // eslint-disable-line consistent-this
if (Klass.instancePool.length) { if (Klass.instancePool.length) {
const instance = Klass.instancePool.pop(); const instance = Klass.instancePool.pop();
Klass.call(instance, a1, a2); Klass.call(instance, a1, a2);
@ -41,7 +41,7 @@ const twoArgumentPooler = function(a1, a2) {
}; };
const threeArgumentPooler = function(a1, a2, a3) { const threeArgumentPooler = function(a1, a2, a3) {
const Klass = this; const Klass = this; // eslint-disable-line consistent-this
if (Klass.instancePool.length) { if (Klass.instancePool.length) {
const instance = Klass.instancePool.pop(); const instance = Klass.instancePool.pop();
Klass.call(instance, a1, a2, a3); Klass.call(instance, a1, a2, a3);
@ -52,7 +52,7 @@ const threeArgumentPooler = function(a1, a2, a3) {
}; };
const fourArgumentPooler = function(a1, a2, a3, a4) { const fourArgumentPooler = function(a1, a2, a3, a4) {
const Klass = this; const Klass = this; // eslint-disable-line consistent-this
if (Klass.instancePool.length) { if (Klass.instancePool.length) {
const instance = Klass.instancePool.pop(); const instance = Klass.instancePool.pop();
Klass.call(instance, a1, a2, a3, a4); Klass.call(instance, a1, a2, a3, a4);
@ -63,7 +63,7 @@ const fourArgumentPooler = function(a1, a2, a3, a4) {
}; };
const standardReleaser = function(instance) { const standardReleaser = function(instance) {
const Klass = this; const Klass = this; // eslint-disable-line consistent-this
invariant( invariant(
instance instanceof Klass, instance instanceof Klass,
'Trying to release an instance into a pool of a different type.', 'Trying to release an instance into a pool of a different type.',

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

@ -8,8 +8,6 @@
* @flow strict-local * @flow strict-local
*/ */
/* globals window: true */
/** /**
* Sets up global variables typical in most JavaScript environments. * Sets up global variables typical in most JavaScript environments.
* *

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

@ -28,7 +28,7 @@ const JSTimers = require('../JSTimers');
describe('JSTimers', function() { describe('JSTimers', function() {
beforeEach(function() { beforeEach(function() {
jest.spyOn(console, 'warn'); jest.spyOn(console, 'warn').mockReturnValue(undefined);
global.setTimeout = JSTimers.setTimeout; global.setTimeout = JSTimers.setTimeout;
}); });

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

@ -17,7 +17,7 @@ describe('AssetUtils', () => {
}); });
it('should return empty string and warn once if no cacheBreaker set (DEV)', () => { it('should return empty string and warn once if no cacheBreaker set (DEV)', () => {
const mockWarn = jest.spyOn(console, 'warn'); const mockWarn = jest.spyOn(console, 'warn').mockReturnValue(undefined);
global.__DEV__ = true; global.__DEV__ = true;
expect(getUrlCacheBreaker()).toEqual(''); expect(getUrlCacheBreaker()).toEqual('');
expect(getUrlCacheBreaker()).toEqual(''); expect(getUrlCacheBreaker()).toEqual('');

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

@ -362,7 +362,7 @@ describe('VirtualizedList', () => {
const layout = {width: 300, height: 600}; const layout = {width: 300, height: 600};
let data = Array(20) let data = Array(20)
.fill() .fill()
.map((_, key) => ({key: String(key)})); .map((_, index) => ({key: `key-${index}`}));
const onEndReached = jest.fn(); const onEndReached = jest.fn();
const props = { const props = {
data, data,

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

@ -9,9 +9,8 @@
*/ */
import {ansiToJson} from 'anser'; import {ansiToJson} from 'anser';
import Text from '../../Text/Text';
import View from '../../Components/View/View';
import * as React from 'react'; import * as React from 'react';
import {StyleSheet, Text, View} from 'react-native';
import type {TextStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet'; import type {TextStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';
@ -77,9 +76,9 @@ export default function Ansi({
}; };
return ( return (
<View style={{flexDirection: 'column'}}> <View>
{parsedLines.map((items, i) => ( {parsedLines.map((items, i) => (
<View style={{flexDirection: 'row'}} key={i}> <View style={styles.line} key={i}>
{items.map((bundle, key) => { {items.map((bundle, key) => {
const textStyle = const textStyle =
bundle.fg && COLORS[bundle.fg] bundle.fg && COLORS[bundle.fg]
@ -101,3 +100,9 @@ export default function Ansi({
</View> </View>
); );
} }
const styles = StyleSheet.create({
line: {
flexDirection: 'row',
},
});

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

@ -30,20 +30,20 @@ function mockFilterResult(returnValues) {
} }
describe('LogBox', () => { describe('LogBox', () => {
const {error, warn} = console; const {error, log, warn} = console;
let consoleError;
let consoleWarn;
beforeEach(() => { beforeEach(() => {
jest.resetModules(); jest.resetModules();
console.error = consoleError = jest.fn(); console.error = jest.fn();
console.warn = consoleWarn = jest.fn(); console.log = jest.fn();
console.warn = jest.fn();
console.disableYellowBox = false; console.disableYellowBox = false;
}); });
afterEach(() => { afterEach(() => {
LogBox.uninstall(); LogBox.uninstall();
console.error = error; console.error = error;
console.log = log;
console.warn = warn; console.warn = warn;
}); });
@ -329,6 +329,8 @@ describe('LogBox', () => {
}); });
it('preserves decorations of console.error after installing/uninstalling', () => { it('preserves decorations of console.error after installing/uninstalling', () => {
const consoleError = console.error;
LogBox.install(); LogBox.install();
const originalConsoleError = console.error; const originalConsoleError = console.error;
@ -356,6 +358,8 @@ describe('LogBox', () => {
}); });
it('preserves decorations of console.warn after installing/uninstalling', () => { it('preserves decorations of console.warn after installing/uninstalling', () => {
const consoleWarn = console.warn;
LogBox.install(); LogBox.install();
const originalConsoleWarn = console.warn; const originalConsoleWarn = console.warn;

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

@ -70,33 +70,30 @@ export function get<Config>(
: createViewConfig(viewConfigProvider()); : createViewConfig(viewConfigProvider());
if (verify) { if (verify) {
const nativeViewConfig = native
? viewConfig
: getNativeComponentAttributes(name);
const staticViewConfig = native
? createViewConfig(viewConfigProvider())
: viewConfig;
if (strict) { if (strict) {
const results = native const validationOutput = StaticViewConfigValidator.validate(
? StaticViewConfigValidator.validate( name,
nativeViewConfig,
staticViewConfig,
);
if (validationOutput.type === 'invalid') {
console.error(
StaticViewConfigValidator.stringifyValidationResult(
name, name,
viewConfig, validationOutput,
createViewConfig(viewConfigProvider()), ),
) );
: StaticViewConfigValidator.validate(
name,
getNativeComponentAttributes(name),
viewConfig,
);
if (results != null) {
console.error(results);
} }
} else { } else {
if (native) { verifyComponentAttributeEquivalence(nativeViewConfig, staticViewConfig);
verifyComponentAttributeEquivalence(
viewConfig,
createViewConfig(viewConfigProvider()),
);
} else {
verifyComponentAttributeEquivalence(
getNativeComponentAttributes(name),
viewConfig,
);
}
} }
} }

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

@ -10,9 +10,31 @@
import {type ViewConfig} from '../Renderer/shims/ReactNativeTypes'; import {type ViewConfig} from '../Renderer/shims/ReactNativeTypes';
type Difference = { type Difference =
path: $ReadOnlyArray<string>, | {
type: 'missing' | 'unequal' | 'unexpected', type: 'missing',
path: Array<string>,
nativeValue: mixed,
}
| {
type: 'unequal',
path: Array<string>,
nativeValue: mixed,
staticValue: mixed,
}
| {
type: 'unexpected',
path: Array<string>,
staticValue: mixed,
};
type ValidationResult = ValidResult | InvalidResult;
type ValidResult = {
type: 'valid',
};
type InvalidResult = {
type: 'invalid',
differences: Array<Difference>,
}; };
/** /**
@ -23,7 +45,7 @@ export function validate(
name: string, name: string,
nativeViewConfig: ViewConfig, nativeViewConfig: ViewConfig,
staticViewConfig: ViewConfig, staticViewConfig: ViewConfig,
): ?string { ): ValidationResult {
const differences = []; const differences = [];
accumulateDifferences( accumulateDifferences(
differences, differences,
@ -41,13 +63,27 @@ export function validate(
validAttributes: staticViewConfig.validAttributes, validAttributes: staticViewConfig.validAttributes,
}, },
); );
if (differences.length === 0) { if (differences.length === 0) {
return null; return {type: 'valid'};
} }
return {
type: 'invalid',
differences,
};
}
export function stringifyValidationResult(
name: string,
validationResult: InvalidResult,
): string {
const {differences} = validationResult;
return [ return [
`StaticViewConfigValidator: Invalid static view config for '${name}'.`, `StaticViewConfigValidator: Invalid static view config for '${name}'.`,
'', '',
...differences.map(({path, type}) => { ...differences.map(difference => {
const {type, path} = difference;
switch (type) { switch (type) {
case 'missing': case 'missing':
return `- '${path.join('.')}' is missing.`; return `- '${path.join('.')}' is missing.`;
@ -71,7 +107,11 @@ function accumulateDifferences(
const nativeValue = nativeObject[nativeKey]; const nativeValue = nativeObject[nativeKey];
if (!staticObject.hasOwnProperty(nativeKey)) { if (!staticObject.hasOwnProperty(nativeKey)) {
differences.push({path: [...path, nativeKey], type: 'missing'}); differences.push({
path: [...path, nativeKey],
type: 'missing',
nativeValue,
});
continue; continue;
} }
@ -94,13 +134,22 @@ function accumulateDifferences(
} }
if (nativeValue !== staticValue) { if (nativeValue !== staticValue) {
differences.push({path: [...path, nativeKey], type: 'unequal'}); differences.push({
path: [...path, nativeKey],
type: 'unequal',
nativeValue,
staticValue,
});
} }
} }
for (const staticKey in staticObject) { for (const staticKey in staticObject) {
if (!nativeObject.hasOwnProperty(staticKey)) { if (!nativeObject.hasOwnProperty(staticKey)) {
differences.push({path: [...path, staticKey], type: 'unexpected'}); differences.push({
path: [...path, staticKey],
type: 'unexpected',
staticValue: staticObject[staticKey],
});
} }
} }
} }

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

@ -74,13 +74,13 @@ test('passes for identical configs', () => {
}, },
}; };
expect( const validationResult = StaticViewConfigValidator.validate(
StaticViewConfigValidator.validate( name,
name, nativeViewConfig,
nativeViewConfig, staticViewConfig,
staticViewConfig, );
),
).toBe(null); expect(validationResult.type).toBe('valid');
}); });
test('fails for mismatched names', () => { test('fails for mismatched names', () => {
@ -98,13 +98,10 @@ test('fails for mismatched names', () => {
}, },
}; };
expect( expectSVCToNotMatchNVC(
StaticViewConfigValidator.validate( name,
name, nativeViewConfig,
nativeViewConfig, staticViewConfig,
staticViewConfig,
),
).toBe(
` `
StaticViewConfigValidator: Invalid static view config for 'RCTView'. StaticViewConfigValidator: Invalid static view config for 'RCTView'.
@ -130,13 +127,10 @@ test('fails for unequal attributes', () => {
}, },
}; };
expect( expectSVCToNotMatchNVC(
StaticViewConfigValidator.validate( name,
name, nativeViewConfig,
nativeViewConfig, staticViewConfig,
staticViewConfig,
),
).toBe(
` `
StaticViewConfigValidator: Invalid static view config for 'RCTView'. StaticViewConfigValidator: Invalid static view config for 'RCTView'.
@ -165,13 +159,10 @@ test('fails for missing attributes', () => {
}, },
}; };
expect( expectSVCToNotMatchNVC(
StaticViewConfigValidator.validate( name,
name, nativeViewConfig,
nativeViewConfig, staticViewConfig,
staticViewConfig,
),
).toBe(
` `
StaticViewConfigValidator: Invalid static view config for 'RCTView'. StaticViewConfigValidator: Invalid static view config for 'RCTView'.
@ -203,13 +194,10 @@ test('fails for unexpected attributes', () => {
}, },
}; };
expect( expectSVCToNotMatchNVC(
StaticViewConfigValidator.validate( name,
name, nativeViewConfig,
nativeViewConfig, staticViewConfig,
staticViewConfig,
),
).toBe(
` `
StaticViewConfigValidator: Invalid static view config for 'RCTView'. StaticViewConfigValidator: Invalid static view config for 'RCTView'.
@ -220,3 +208,26 @@ StaticViewConfigValidator: Invalid static view config for 'RCTView'.
`.trimStart(), `.trimStart(),
); );
}); });
function expectSVCToNotMatchNVC(
name,
nativeViewConfig,
staticViewConfig,
message,
) {
const validationResult = StaticViewConfigValidator.validate(
name,
nativeViewConfig,
staticViewConfig,
);
expect(validationResult.type).toBe('invalid');
if (validationResult.type === 'invalid') {
expect(
StaticViewConfigValidator.stringifyValidationResult(
name,
validationResult,
),
).toBe(message);
}
}

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

@ -52,17 +52,20 @@ export function PressabilityDebugView({color, hitSlop}: Props): React.Node {
return ( return (
<View <View
pointerEvents="none" pointerEvents="none"
style={{ style={
backgroundColor: baseColor.slice(0, -2) + '0F', // 15% // eslint-disable-next-line react-native/no-inline-styles
borderColor: baseColor.slice(0, -2) + '55', // 85% {
borderStyle: 'dashed', backgroundColor: baseColor.slice(0, -2) + '0F', // 15%
borderWidth: 1, borderColor: baseColor.slice(0, -2) + '55', // 85%
bottom: -(hitSlop?.bottom ?? 0), borderStyle: 'dashed',
left: -(hitSlop?.left ?? 0), borderWidth: 1,
position: 'absolute', bottom: -(hitSlop?.bottom ?? 0),
right: -(hitSlop?.right ?? 0), left: -(hitSlop?.left ?? 0),
top: -(hitSlop?.top ?? 0), position: 'absolute',
}} right: -(hitSlop?.right ?? 0),
top: -(hitSlop?.top ?? 0),
}
}
/> />
); );
} }

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

@ -35,6 +35,10 @@ function getNativeComponentAttributes(uiViewClassName: string): any {
// native component that can be either avoided or simplified. // native component that can be either avoided or simplified.
let {baseModuleName, bubblingEventTypes, directEventTypes} = viewConfig; let {baseModuleName, bubblingEventTypes, directEventTypes} = viewConfig;
let nativeProps = viewConfig.NativeProps; let nativeProps = viewConfig.NativeProps;
bubblingEventTypes = bubblingEventTypes ?? {};
directEventTypes = directEventTypes ?? {};
while (baseModuleName) { while (baseModuleName) {
const baseModule = UIManager.getViewManagerConfig(baseModuleName); const baseModule = UIManager.getViewManagerConfig(baseModuleName);
if (!baseModule) { if (!baseModule) {

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

@ -4,9 +4,9 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @noformat
* @flow * @flow
* @generated SignedSource<<40f01afd3b6d95a617ac8e48748a2a76>> * @generated SignedSource<<ca65d187831e77f0f589dfd9fa8775bc>>
* *
* This file was sync'd from the facebook/react repository. * This file was sync'd from the facebook/react repository.
*/ */

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

@ -4,9 +4,9 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @noformat
* @flow strict-local * @flow strict-local
* @generated SignedSource<<bed66083565ac46f6de032dd8f2d6814>> * @generated SignedSource<<b17df4f82c9d4fe20645f360eadf82bc>>
* *
* This file was sync'd from the facebook/react repository. * This file was sync'd from the facebook/react repository.
*/ */

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

@ -4,9 +4,9 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @noformat
* @flow * @flow
* @generated SignedSource<<fd14f2375864691ea971c77ac6088e4b>> * @generated SignedSource<<45ec3626ad048b08dac9b031b02bc0a8>>
* *
* This file was sync'd from the facebook/react repository. * This file was sync'd from the facebook/react repository.
*/ */

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

@ -4,9 +4,9 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @noformat
* @flow strict * @flow strict
* @generated SignedSource<<67969011689de134487d7110b6519058>> * @generated SignedSource<<ec11b46a06877b4f7f3f0b6c1f5d46c3>>
* *
* This file was sync'd from the facebook/react repository. * This file was sync'd from the facebook/react repository.
*/ */

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

@ -4,9 +4,9 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @noformat
* @flow strict-local * @flow strict-local
* @generated SignedSource<<5b2da3e92f44ee2684113b45af052f5d>> * @generated SignedSource<<cfc4aafaa6b6af5b0a69d4463b8d214d>>
* *
* This file was sync'd from the facebook/react repository. * This file was sync'd from the facebook/react repository.
*/ */

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

@ -4,9 +4,9 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @noformat
* @flow strict-local * @flow strict-local
* @generated SignedSource<<435ec24b3531c66986fe5d529795713b>> * @generated SignedSource<<4f1549884fbe8fc2aea495692e3f665d>>
* *
* This file was sync'd from the facebook/react repository. * This file was sync'd from the facebook/react repository.
*/ */

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

@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @flow * @flow
* @noformat * @format
*/ */
/* eslint-env jest */ /* eslint-env jest */
@ -26,13 +26,14 @@ export type ReactTestInstance = $PropertyType<ReactTestRendererType, 'root'>;
export type Predicate = (node: ReactTestInstance) => boolean; export type Predicate = (node: ReactTestInstance) => boolean;
type $ReturnType<Fn> = $Call<<Ret, A>((...A) => Ret) => Ret, Fn>; type $ReturnType<Fn> = $Call<<Ret, A>((...A) => Ret) => Ret, Fn>;
/* $FlowFixMe[prop-missing] (>=0.125.1 site=react_native_fb) This comment
* suppresses an error found when Flow v0.125.1 was deployed. To see the error,
* delete this comment and run Flow. */
/* $FlowFixMe[value-as-type] (>=0.125.1 site=react_native_fb) This comment /* $FlowFixMe[value-as-type] (>=0.125.1 site=react_native_fb) This comment
* suppresses an error found when Flow v0.125.1 was deployed. To see the error, * suppresses an error found when Flow v0.125.1 was deployed. To see the error,
* delete this comment and run Flow. */ * delete this comment and run Flow. */
export type ReactTestRendererJSON = $ReturnType<ReactTestRenderer.create.toJSON>; export type ReactTestRendererJSON =
/* $FlowFixMe[prop-missing] (>=0.125.1 site=react_native_fb) This comment
* suppresses an error found when Flow v0.125.1 was deployed. To see the error,
* delete this comment and run Flow. */
$ReturnType<ReactTestRenderer.create.toJSON>;
const { const {
Switch, Switch,

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

@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @format * @format
* @flow strict
*/ */
'use strict'; 'use strict';
@ -18,7 +19,10 @@
* @param {MatrixMath.Matrix} two Second matrix. * @param {MatrixMath.Matrix} two Second matrix.
* @return {boolean} Whether or not the two matrices differ. * @return {boolean} Whether or not the two matrices differ.
*/ */
const matricesDiffer = function(one, two) { const matricesDiffer = function(
one: ?Array<number>,
two: ?Array<number>,
): boolean {
if (one === two) { if (one === two) {
return false; return false;
} }

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

@ -4,17 +4,23 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @flow strict
* @format * @format
*/ */
'use strict'; 'use strict';
const dummySize = {width: undefined, height: undefined}; const dummySize = {width: undefined, height: undefined};
type Size = {width: ?number, height: ?number};
const sizesDiffer = function(one, two) { const sizesDiffer = function(one: Size, two: Size): boolean {
one = one || dummySize; const defaultedOne = one || dummySize;
two = two || dummySize; const defaultedTwo = two || dummySize;
return one !== two && (one.width !== two.width || one.height !== two.height); return (
defaultedOne !== defaultedTwo &&
(defaultedOne.width !== defaultedTwo.width ||
defaultedOne.height !== defaultedTwo.height)
);
}; };
module.exports = sizesDiffer; module.exports = sizesDiffer;

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

@ -20,7 +20,8 @@ import {type EventSubscription} from './EventSubscription';
*/ */
class EmitterSubscription<EventDefinitions: {...}, K: $Keys<EventDefinitions>> class EmitterSubscription<EventDefinitions: {...}, K: $Keys<EventDefinitions>>
extends _EventSubscription<EventDefinitions, K> extends _EventSubscription<EventDefinitions, K>
implements EventSubscription { implements EventSubscription
{
emitter: EventEmitter<EventDefinitions>; emitter: EventEmitter<EventDefinitions>;
listener: ?(...$ElementType<EventDefinitions, K>) => mixed; listener: ?(...$ElementType<EventDefinitions, K>) => mixed;
context: ?$FlowFixMe; context: ?$FlowFixMe;

3
Libraries/vendor/emitter/_EventEmitter.js поставляемый
Просмотреть файл

@ -31,7 +31,8 @@ const sparseFilterPredicate = () => true;
* more advanced emitter may use an EventHolder and EventFactory. * more advanced emitter may use an EventHolder and EventFactory.
*/ */
class EventEmitter<EventDefinitions: {...}> { class EventEmitter<EventDefinitions: {...}> {
_subscriber: EventSubscriptionVendor<EventDefinitions> = new EventSubscriptionVendor<EventDefinitions>(); _subscriber: EventSubscriptionVendor<EventDefinitions> =
new EventSubscriptionVendor<EventDefinitions>();
/** /**
* @constructor * @constructor

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

@ -18,7 +18,8 @@ import type EventSubscriptionVendor from './_EventSubscriptionVendor';
* remove its own subscription. * remove its own subscription.
*/ */
class _EventSubscription<EventDefinitions: {...}, K: $Keys<EventDefinitions>> class _EventSubscription<EventDefinitions: {...}, K: $Keys<EventDefinitions>>
implements EventSubscription { implements EventSubscription
{
eventType: K; eventType: K;
key: number; key: number;
subscriber: EventSubscriptionVendor<EventDefinitions>; subscriber: EventSubscriptionVendor<EventDefinitions>;

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

@ -23,7 +23,7 @@ class EventSubscriptionVendor<EventDefinitions: {...}> {
[type: $Keys<EventDefinitions>]: Array< [type: $Keys<EventDefinitions>]: Array<
EventSubscription<EventDefinitions, $FlowFixMe>, EventSubscription<EventDefinitions, $FlowFixMe>,
>, >,
..., ...
}; };
constructor() { constructor() {

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

@ -0,0 +1,18 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import <React/RCTDefines.h>
NS_ASSUME_NONNULL_BEGIN
RCT_EXTERN_C_BEGIN
UIEdgeInsets RCTContentInsets(UIView *view);
RCT_EXTERN_C_END
NS_ASSUME_NONNULL_END

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

@ -0,0 +1,22 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import "RCTViewUtils.h"
#import "UIView+React.h"
UIEdgeInsets RCTContentInsets(UIView *view)
{
while (view) {
UIViewController *controller = view.reactViewController;
if (controller) {
return controller.view.safeAreaInsets;
}
view = view.superview;
}
return UIEdgeInsetsZero;
}

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

@ -9,11 +9,11 @@
'use strict'; 'use strict';
const React = require('react'); import * as React from 'react';
const {StyleSheet, UIManager, View, findNodeHandle} = require('react-native'); import {useEffect, useRef} from 'react';
const BatchedBridge = require('react-native/Libraries/BatchedBridge/BatchedBridge'); import {StyleSheet, UIManager, View, findNodeHandle} from 'react-native';
import BatchedBridge from 'react-native/Libraries/BatchedBridge/BatchedBridge';
const assertEquals = require('./Asserts').assertEquals; import {assertEquals} from './Asserts';
const styles = StyleSheet.create({ const styles = StyleSheet.create({
A: { A: {
@ -45,24 +45,27 @@ const styles = StyleSheet.create({
let A, B, C, D; let A, B, C, D;
class MeasureLayoutTestApp extends React.Component { function MeasureLayoutTestApp() {
componentDidMount() { const refA = useRef(null);
A = findNodeHandle(this.refs.A); const refB = useRef(null);
B = findNodeHandle(this.refs.B); const refC = useRef(null);
C = findNodeHandle(this.refs.C); const refD = useRef(null);
D = findNodeHandle(this.refs.D);
}
render() { useEffect(() => {
return ( A = findNodeHandle(refA.current);
<View ref="A" style={styles.A} collapsable={false}> B = findNodeHandle(refB.current);
<View ref="B" style={styles.B} collapsable={false}> C = findNodeHandle(refC.current);
<View ref="C" style={styles.C} collapsable={false} /> D = findNodeHandle(refD.current);
</View> });
<View ref="D" style={styles.D} collapsable={false} />
return (
<View ref={refA} style={styles.A} collapsable={false}>
<View ref={refB} style={styles.B} collapsable={false}>
<View ref={refC} style={styles.C} collapsable={false} />
</View> </View>
); <View ref={refD} style={styles.D} collapsable={false} />
} </View>
);
} }
function shouldNotCallThisCallback() { function shouldNotCallThisCallback() {
@ -70,7 +73,7 @@ function shouldNotCallThisCallback() {
} }
const MeasureLayoutTestModule = { const MeasureLayoutTestModule = {
MeasureLayoutTestApp: MeasureLayoutTestApp, MeasureLayoutTestApp,
verifyMeasureOnViewA: function() { verifyMeasureOnViewA: function() {
UIManager.measure(A, function(a, b, width, height, x, y) { UIManager.measure(A, function(a, b, width, height, x, y) {
assertEquals(500, width); assertEquals(500, width);

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

@ -105,7 +105,7 @@ class ScrollViewTestApp extends React.Component<Props, State> {
} }
render(): React.Node { render(): React.Node {
scrollViewApp = this; scrollViewApp = this; // eslint-disable-line consistent-this
const children = this.state.data.map((item, index) => ( const children = this.state.data.map((item, index) => (
<Item <Item
key={index} key={index}
@ -140,7 +140,7 @@ class HorizontalScrollViewTestApp extends React.Component<Props, State> {
} }
render(): React.Node { render(): React.Node {
scrollViewApp = this; scrollViewApp = this; // eslint-disable-line consistent-this
const children = this.state.data.map((item, index) => ( const children = this.state.data.map((item, index) => (
<Item <Item
key={index} key={index}

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

@ -334,7 +334,7 @@ class SubviewsClippingTestApp extends React.Component {
state = {}; state = {};
UNSAFE_componentWillMount() { UNSAFE_componentWillMount() {
appInstance = this; appInstance = this; // eslint-disable-line consistent-this
} }
setComponent = component => { setComponent = component => {

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

@ -51,7 +51,7 @@ class SwipeRefreshLayoutTestApp extends React.Component {
}; };
componentDidMount() { componentDidMount() {
app = this; app = this; // eslint-disable-line consistent-this
} }
render() { render() {

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

@ -70,7 +70,6 @@ class TokenizedTextExample extends React.Component {
return ( return (
<View> <View>
<TextInput <TextInput
ref="tokenizedInput"
testID="tokenizedInput" testID="tokenizedInput"
multiline={true} multiline={true}
style={styles.multiline} style={styles.multiline}
@ -87,7 +86,7 @@ class TokenizedTextExample extends React.Component {
class TextInputTestApp extends React.Component { class TextInputTestApp extends React.Component {
componentDidMount() { componentDidMount() {
app = this; app = this; // eslint-disable-line consistent-this
} }
handleOnSubmitEditing = record => { handleOnSubmitEditing = record => {
@ -119,30 +118,25 @@ class TextInputTestApp extends React.Component {
testID="textInput2" testID="textInput2"
/> />
<TextInput <TextInput
ref="textInput3"
style={styles.textInput} style={styles.textInput}
defaultValue="Hello, World" defaultValue="Hello, World"
testID="textInput3" testID="textInput3"
/> />
<TextInput <TextInput
ref="textInput4"
style={[styles.textInput, styles.textInputColor]} style={[styles.textInput, styles.textInputColor]}
testID="textInput4" testID="textInput4"
/> />
<TextInput <TextInput
ref="textInput5"
style={[styles.textInput, styles.textInputColor]} style={[styles.textInput, styles.textInputColor]}
defaultValue="" defaultValue=""
testID="textInput5" testID="textInput5"
/> />
<TextInput <TextInput
ref="textInput6"
style={[styles.textInput, styles.textInputColor]} style={[styles.textInput, styles.textInputColor]}
defaultValue="Text" defaultValue="Text"
testID="textInput6" testID="textInput6"
/> />
<TextInput <TextInput
ref="onSubmitTextInput"
onSubmitEditing={this.handleOnSubmitEditing.bind(this, 'onSubmit')} onSubmitEditing={this.handleOnSubmitEditing.bind(this, 'onSubmit')}
defaultValue="" defaultValue=""
testID="onSubmitTextInput" testID="onSubmitTextInput"

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

@ -185,14 +185,7 @@ public class ReactRootView extends FrameLayout implements RootView, ReactRoot {
@Override @Override
public void onChildStartedNativeGesture(MotionEvent ev) { public void onChildStartedNativeGesture(MotionEvent ev) {
if (mReactInstanceManager == null if (!isDispatcherReady()) {
|| !mIsAttachedToInstance
|| mReactInstanceManager.getCurrentReactContext() == null) {
FLog.w(TAG, "Unable to dispatch touch to JS as the catalyst instance has not been attached");
return;
}
if (mJSTouchDispatcher == null) {
FLog.w(TAG, "Unable to dispatch touch to JS before the dispatcher is available");
return; return;
} }
ReactContext reactContext = mReactInstanceManager.getCurrentReactContext(); ReactContext reactContext = mReactInstanceManager.getCurrentReactContext();
@ -209,6 +202,35 @@ public class ReactRootView extends FrameLayout implements RootView, ReactRoot {
onChildStartedNativeGesture(ev); onChildStartedNativeGesture(ev);
} }
@Override
public void onChildEndedNativeGesture(View childView, MotionEvent ev) {
if (!isDispatcherReady()) {
return;
}
ReactContext reactContext = mReactInstanceManager.getCurrentReactContext();
UIManager uiManager = UIManagerHelper.getUIManager(reactContext, getUIManagerType());
if (uiManager != null) {
EventDispatcher eventDispatcher = uiManager.getEventDispatcher();
mJSTouchDispatcher.onChildEndedNativeGesture(ev, eventDispatcher);
}
}
private boolean isDispatcherReady() {
if (mReactInstanceManager == null
|| !mIsAttachedToInstance
|| mReactInstanceManager.getCurrentReactContext() == null) {
FLog.w(TAG, "Unable to dispatch touch to JS as the catalyst instance has not been attached");
return false;
}
if (mJSTouchDispatcher == null) {
FLog.w(TAG, "Unable to dispatch touch to JS before the dispatcher is available");
return false;
}
return true;
}
@Override @Override
public boolean onInterceptTouchEvent(MotionEvent ev) { public boolean onInterceptTouchEvent(MotionEvent ev) {
dispatchJSTouchEvent(ev); dispatchJSTouchEvent(ev);

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

@ -57,14 +57,7 @@ SurfaceHandlerBinding::initHybrid(
jni::alias_ref<jclass>, jni::alias_ref<jclass>,
jint surfaceId, jint surfaceId,
jni::alias_ref<jstring> moduleName) { jni::alias_ref<jstring> moduleName) {
auto env = jni::Environment::current(); return makeCxxInstance(surfaceId, moduleName->toStdString());
const char *moduleNameValue =
env->GetStringUTFChars(moduleName.get(), JNI_FALSE);
auto instance = makeCxxInstance(surfaceId, moduleNameValue);
env->ReleaseStringUTFChars(moduleName.get(), moduleNameValue);
return instance;
} }
void SurfaceHandlerBinding::setLayoutConstraints( void SurfaceHandlerBinding::setLayoutConstraints(

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

@ -12,7 +12,6 @@ import android.view.ViewGroup;
import com.facebook.common.logging.FLog; import com.facebook.common.logging.FLog;
import com.facebook.infer.annotation.Assertions; import com.facebook.infer.annotation.Assertions;
import com.facebook.react.common.ReactConstants; import com.facebook.react.common.ReactConstants;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.uimanager.events.TouchEvent; import com.facebook.react.uimanager.events.TouchEvent;
import com.facebook.react.uimanager.events.TouchEventCoalescingKeyHelper; import com.facebook.react.uimanager.events.TouchEventCoalescingKeyHelper;
@ -51,6 +50,11 @@ public class JSTouchDispatcher {
mTargetTag = -1; mTargetTag = -1;
} }
public void onChildEndedNativeGesture(MotionEvent androidEvent, EventDispatcher eventDispatcher) {
// There should be only one child gesture at any given time. We can safely turn off the flag.
mChildIsHandlingNativeGesture = false;
}
/** /**
* Main catalyst view is responsible for collecting and sending touch events to JS. This method * Main catalyst view is responsible for collecting and sending touch events to JS. This method
* reacts for an incoming android native touch events ({@link MotionEvent}) and calls into {@link * reacts for an incoming android native touch events ({@link MotionEvent}) and calls into {@link
@ -75,7 +79,7 @@ public class JSTouchDispatcher {
mTargetTag = findTargetTagAndSetCoordinates(ev); mTargetTag = findTargetTagAndSetCoordinates(ev);
eventDispatcher.dispatchEvent( eventDispatcher.dispatchEvent(
TouchEvent.obtain( TouchEvent.obtain(
Event.getSurfaceIdForView(mRootViewGroup), UIManagerHelper.getSurfaceId(mRootViewGroup),
mTargetTag, mTargetTag,
TouchEventType.START, TouchEventType.START,
ev, ev,
@ -100,7 +104,7 @@ public class JSTouchDispatcher {
findTargetTagAndSetCoordinates(ev); findTargetTagAndSetCoordinates(ev);
eventDispatcher.dispatchEvent( eventDispatcher.dispatchEvent(
TouchEvent.obtain( TouchEvent.obtain(
Event.getSurfaceIdForView(mRootViewGroup), UIManagerHelper.getSurfaceId(mRootViewGroup),
mTargetTag, mTargetTag,
TouchEventType.END, TouchEventType.END,
ev, ev,
@ -115,7 +119,7 @@ public class JSTouchDispatcher {
findTargetTagAndSetCoordinates(ev); findTargetTagAndSetCoordinates(ev);
eventDispatcher.dispatchEvent( eventDispatcher.dispatchEvent(
TouchEvent.obtain( TouchEvent.obtain(
Event.getSurfaceIdForView(mRootViewGroup), UIManagerHelper.getSurfaceId(mRootViewGroup),
mTargetTag, mTargetTag,
TouchEventType.MOVE, TouchEventType.MOVE,
ev, ev,
@ -127,7 +131,7 @@ public class JSTouchDispatcher {
// New pointer goes down, this can only happen after ACTION_DOWN is sent for the first pointer // New pointer goes down, this can only happen after ACTION_DOWN is sent for the first pointer
eventDispatcher.dispatchEvent( eventDispatcher.dispatchEvent(
TouchEvent.obtain( TouchEvent.obtain(
Event.getSurfaceIdForView(mRootViewGroup), UIManagerHelper.getSurfaceId(mRootViewGroup),
mTargetTag, mTargetTag,
TouchEventType.START, TouchEventType.START,
ev, ev,
@ -139,7 +143,7 @@ public class JSTouchDispatcher {
// Exactly one of the pointers goes up // Exactly one of the pointers goes up
eventDispatcher.dispatchEvent( eventDispatcher.dispatchEvent(
TouchEvent.obtain( TouchEvent.obtain(
Event.getSurfaceIdForView(mRootViewGroup), UIManagerHelper.getSurfaceId(mRootViewGroup),
mTargetTag, mTargetTag,
TouchEventType.END, TouchEventType.END,
ev, ev,
@ -188,7 +192,7 @@ public class JSTouchDispatcher {
Assertions.assertNotNull(eventDispatcher) Assertions.assertNotNull(eventDispatcher)
.dispatchEvent( .dispatchEvent(
TouchEvent.obtain( TouchEvent.obtain(
Event.getSurfaceIdForView(mRootViewGroup), UIManagerHelper.getSurfaceId(mRootViewGroup),
mTargetTag, mTargetTag,
TouchEventType.CANCEL, TouchEventType.CANCEL,
androidEvent, androidEvent,

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

@ -22,5 +22,11 @@ public interface RootView {
/** @deprecated */ /** @deprecated */
void onChildStartedNativeGesture(MotionEvent ev); void onChildStartedNativeGesture(MotionEvent ev);
/**
* Called when a child ends a native gesture. Should be called from the child's onTouchIntercepted
* implementation.
*/
void onChildEndedNativeGesture(View childView, MotionEvent ev);
void handleException(Throwable t); void handleException(Throwable t);
} }

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

@ -160,10 +160,18 @@ public class UIManagerHelper {
} }
/** /**
* @return Get the ThemedReactContext associated with a View, if possible, and then call * @return Gets the surfaceId for the {@link ThemedReactContext} associated with a View, if
* getSurfaceId on it. See above (getReactContext) for additional context. * possible, and then call getSurfaceId on it. See above (getReactContext) for additional
* context.
* <p>For RootViews, the root's rootViewTag is returned
* <p>Returns -1 for non-Fabric views
*/ */
public static int getSurfaceId(View view) { public static int getSurfaceId(View view) {
if (view instanceof ReactRoot) {
ReactRoot rootView = (ReactRoot) view;
return rootView.getUIManagerType() == UIManagerType.FABRIC ? rootView.getRootViewTag() : -1;
}
int reactTag = view.getId(); int reactTag = view.getId();
// In non-Fabric we don't have (or use) SurfaceId // In non-Fabric we don't have (or use) SurfaceId
@ -177,9 +185,8 @@ public class UIManagerHelper {
} }
int surfaceId = getSurfaceId(context); int surfaceId = getSurfaceId(context);
// All Fabric-managed Views (should) have a ThemedReactContext attached.
if (surfaceId == -1) { if (surfaceId == -1) {
// All Fabric-managed Views (should) have a ThemedReactContext attached.
ReactSoftExceptionLogger.logSoftException( ReactSoftExceptionLogger.logSoftException(
TAG, TAG,
new IllegalStateException( new IllegalStateException(

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

@ -7,13 +7,10 @@
package com.facebook.react.uimanager.events; package com.facebook.react.uimanager.events;
import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableMap;
import com.facebook.react.common.SystemClock; import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.IllegalViewOperationException; import com.facebook.react.uimanager.IllegalViewOperationException;
import com.facebook.react.uimanager.ReactRoot;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.common.UIManagerType; import com.facebook.react.uimanager.common.UIManagerType;
/** /**
@ -43,23 +40,6 @@ public abstract class Event<T extends Event> {
private long mTimestampMs; private long mTimestampMs;
private int mUniqueID = sUniqueID++; private int mUniqueID = sUniqueID++;
/**
* This surfaceId should be a valid SurfaceId in Fabric, and should ALWAYS return -1 in
* non-Fabric.
*/
public static int getSurfaceIdForView(@Nullable View view) {
if (view != null
&& view instanceof ReactRoot
&& ((ReactRoot) view).getUIManagerType() == UIManagerType.FABRIC) {
if (view.getContext() instanceof ThemedReactContext) {
ThemedReactContext context = (ThemedReactContext) view.getContext();
return context.getSurfaceId();
}
return ((ReactRoot) view).getRootViewTag();
}
return -1;
}
protected Event() {} protected Event() {}
@Deprecated @Deprecated

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

@ -25,4 +25,16 @@ public class NativeGestureUtil {
public static void notifyNativeGestureStarted(View view, MotionEvent event) { public static void notifyNativeGestureStarted(View view, MotionEvent event) {
RootViewUtil.getRootView(view).onChildStartedNativeGesture(view, event); RootViewUtil.getRootView(view).onChildStartedNativeGesture(view, event);
} }
/**
* Helper method that should be called when a native view ends a native gesture (e.g. a native
* ScrollView takes control of a gesture stream and starts scrolling). This will handle
* dispatching the appropriate events to JS to make sure future gesture is not blocked.
*
* @param view the View ending the native gesture
* @param event the MotionEvent that caused the gesture to be ended
*/
public static void notifyNativeGestureEnded(View view, MotionEvent event) {
RootViewUtil.getRootView(view).onChildEndedNativeGesture(view, event);
}
} }

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

@ -537,6 +537,11 @@ public class ReactModalHostView extends ViewGroup
mJSTouchDispatcher.onChildStartedNativeGesture(ev, mEventDispatcher); mJSTouchDispatcher.onChildStartedNativeGesture(ev, mEventDispatcher);
} }
@Override
public void onChildEndedNativeGesture(View childView, MotionEvent ev) {
mJSTouchDispatcher.onChildEndedNativeGesture(ev, mEventDispatcher);
}
@Override @Override
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
// No-op - override in order to still receive events to onInterceptTouchEvent // No-op - override in order to still receive events to onInterceptTouchEvent

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

@ -36,6 +36,7 @@ async function updateComment(octokit, issueParams, body, replacePattern) {
const authedUserId = authenticatedUser.data.id; const authedUserId = authenticatedUser.data.id;
const pattern = new RegExp(replacePattern, 'g'); const pattern = new RegExp(replacePattern, 'g');
const comment = comments.data.find( const comment = comments.data.find(
// eslint-disable-next-line no-shadow
({user, body}) => user.id === authedUserId && pattern.test(body), ({user, body}) => user.id === authedUserId && pattern.test(body),
); );
if (!comment) { if (!comment) {

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

@ -11,8 +11,12 @@
const React = require('react'); const React = require('react');
let nativeTag = 1;
module.exports = viewName => { module.exports = viewName => {
const Component = class extends React.Component { const Component = class extends React.Component {
_nativeTag = nativeTag++;
render() { render() {
return React.createElement(viewName, this.props, this.props.children); return React.createElement(viewName, this.props, this.props.children);
} }

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

@ -169,11 +169,16 @@
resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz#e42b1bef12d2415411519fd528e64b593b1363dc" resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz#e42b1bef12d2415411519fd528e64b593b1363dc"
integrity sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ== integrity sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ==
"@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": "@types/json-schema@^7.0.7":
version "7.0.11" version "7.0.11"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
"@types/json-schema@^7.0.9":
version "7.0.9"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
"@typescript-eslint/eslint-plugin@^4.22.1": "@typescript-eslint/eslint-plugin@^4.22.1":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
@ -208,14 +213,22 @@
"@typescript-eslint/utils" "5.18.0" "@typescript-eslint/utils" "5.18.0"
"@typescript-eslint/parser@^4.22.1": "@typescript-eslint/parser@^4.22.1":
version "4.33.0" version "4.22.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.1.tgz#a95bda0fd01d994a15fc3e99dc984294f25c19cc"
integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== integrity sha512-l+sUJFInWhuMxA6rtirzjooh8cM/AATAe3amvIkqKFeMzkn85V+eLzb1RyuXkHak4dLfYzOmF6DXPyflJvjQnw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "4.33.0" "@typescript-eslint/scope-manager" "4.22.1"
"@typescript-eslint/types" "4.33.0" "@typescript-eslint/types" "4.22.1"
"@typescript-eslint/typescript-estree" "4.33.0" "@typescript-eslint/typescript-estree" "4.22.1"
debug "^4.3.1" debug "^4.1.1"
"@typescript-eslint/scope-manager@4.22.1":
version "4.22.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.1.tgz#5bb357f94f9cd8b94e6be43dd637eb73b8f355b4"
integrity sha512-d5bAiPBiessSmNi8Amq/RuLslvcumxLmyhf1/Xa9IuaoFJ0YtshlJKxhlbY7l2JdEk3wS0EnmnfeJWSvADOe0g==
dependencies:
"@typescript-eslint/types" "4.22.1"
"@typescript-eslint/visitor-keys" "4.22.1"
"@typescript-eslint/scope-manager@4.33.0": "@typescript-eslint/scope-manager@4.33.0":
version "4.33.0" version "4.33.0"
@ -233,6 +246,11 @@
"@typescript-eslint/types" "5.18.0" "@typescript-eslint/types" "5.18.0"
"@typescript-eslint/visitor-keys" "5.18.0" "@typescript-eslint/visitor-keys" "5.18.0"
"@typescript-eslint/types@4.22.1":
version "4.22.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.1.tgz#bf99c6cec0b4a23d53a61894816927f2adad856a"
integrity sha512-2HTkbkdAeI3OOcWbqA8hWf/7z9c6gkmnWNGz0dKSLYLWywUlkOAQ2XcjhlKLj5xBFDf8FgAOF5aQbnLRvgNbCw==
"@typescript-eslint/types@4.33.0": "@typescript-eslint/types@4.33.0":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
@ -243,6 +261,19 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.18.0.tgz#4f0425d85fdb863071680983853c59a62ce9566e" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.18.0.tgz#4f0425d85fdb863071680983853c59a62ce9566e"
integrity sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw== integrity sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==
"@typescript-eslint/typescript-estree@4.22.1":
version "4.22.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.1.tgz#dca379eead8cdfd4edc04805e83af6d148c164f9"
integrity sha512-p3We0pAPacT+onSGM+sPR+M9CblVqdA9F1JEdIqRVlxK5Qth4ochXQgIyb9daBomyQKAXbygxp1aXQRV0GC79A==
dependencies:
"@typescript-eslint/types" "4.22.1"
"@typescript-eslint/visitor-keys" "4.22.1"
debug "^4.1.1"
globby "^11.0.1"
is-glob "^4.0.1"
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/typescript-estree@4.33.0": "@typescript-eslint/typescript-estree@4.33.0":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
@ -281,6 +312,14 @@
eslint-scope "^5.1.1" eslint-scope "^5.1.1"
eslint-utils "^3.0.0" eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@4.22.1":
version "4.22.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.1.tgz#6045ae25a11662c671f90b3a403d682dfca0b7a6"
integrity sha512-WPkOrIRm+WCLZxXQHCi+WG8T2MMTUFR70rWjdWYddLT7cEfb2P4a3O/J2U1FBVsSFTocXLCoXWY6MZGejeStvQ==
dependencies:
"@typescript-eslint/types" "4.22.1"
eslint-visitor-keys "^2.0.0"
"@typescript-eslint/visitor-keys@4.33.0": "@typescript-eslint/visitor-keys@4.33.0":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
@ -318,9 +357,9 @@ ajv@^6.10.0, ajv@^6.12.4:
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^8.0.1: ajv@^8.0.1:
version "8.11.0" version "8.7.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.7.1.tgz#52be6f1736b076074798124293618f132ad07a7e"
integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== integrity sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==
dependencies: dependencies:
fast-deep-equal "^3.1.1" fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0" json-schema-traverse "^1.0.0"
@ -344,13 +383,21 @@ ansi-styles@^3.2.1:
dependencies: dependencies:
color-convert "^1.9.0" color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0: ansi-styles@^4.0.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies: dependencies:
color-convert "^2.0.1" color-convert "^2.0.1"
ansi-styles@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
dependencies:
"@types/color-name" "^1.1.1"
color-convert "^2.0.1"
argparse@^1.0.7: argparse@^1.0.7:
version "1.0.10" version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@ -358,7 +405,7 @@ argparse@^1.0.7:
dependencies: dependencies:
sprintf-js "~1.0.2" sprintf-js "~1.0.2"
array-includes@^3.1.4: array-includes@^3.1.3:
version "3.1.4" version "3.1.4"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9"
integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==
@ -374,7 +421,7 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
array.prototype.flatmap@^1.2.5: array.prototype.flatmap@^1.2.4:
version "1.2.5" version "1.2.5"
resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446"
integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==
@ -488,13 +535,20 @@ cross-spawn@^7.0.2:
shebang-command "^2.0.0" shebang-command "^2.0.0"
which "^2.0.1" which "^2.0.1"
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
version "4.3.4" version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies: dependencies:
ms "2.1.2" ms "2.1.2"
debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
dependencies:
ms "2.1.2"
deep-is@^0.1.3: deep-is@^0.1.3:
version "0.1.4" version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
@ -541,9 +595,9 @@ enquirer@^2.3.5:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
es-abstract@^1.19.0, es-abstract@^1.19.1: es-abstract@^1.19.0, es-abstract@^1.19.1:
version "1.19.2" version "1.19.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.2.tgz#8f7b696d8f15b167ae3640b4060670f3d054143f" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
integrity sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w== integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
es-to-primitive "^1.2.1" es-to-primitive "^1.2.1"
@ -551,15 +605,15 @@ es-abstract@^1.19.0, es-abstract@^1.19.1:
get-intrinsic "^1.1.1" get-intrinsic "^1.1.1"
get-symbol-description "^1.0.0" get-symbol-description "^1.0.0"
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.3" has-symbols "^1.0.2"
internal-slot "^1.0.3" internal-slot "^1.0.3"
is-callable "^1.2.4" is-callable "^1.2.4"
is-negative-zero "^2.0.2" is-negative-zero "^2.0.1"
is-regex "^1.1.4" is-regex "^1.1.4"
is-shared-array-buffer "^1.0.1" is-shared-array-buffer "^1.0.1"
is-string "^1.0.7" is-string "^1.0.7"
is-weakref "^1.0.2" is-weakref "^1.0.1"
object-inspect "^1.12.0" object-inspect "^1.11.0"
object-keys "^1.1.1" object-keys "^1.1.1"
object.assign "^4.1.2" object.assign "^4.1.2"
string.prototype.trimend "^1.0.4" string.prototype.trimend "^1.0.4"
@ -586,9 +640,9 @@ escape-string-regexp@^4.0.0:
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-prettier@^8.3.0: eslint-config-prettier@^8.3.0:
version "8.5.0" version "8.3.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a"
integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==
eslint-plugin-eslint-comments@^3.2.0: eslint-plugin-eslint-comments@^3.2.0:
version "3.2.0" version "3.2.0"
@ -607,9 +661,9 @@ eslint-plugin-flowtype@^7.0.0:
string-natural-compare "^3.0.1" string-natural-compare "^3.0.1"
eslint-plugin-jest@^25.2.4: eslint-plugin-jest@^25.2.4:
version "25.7.0" version "25.2.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.2.4.tgz#bb9f6a0bd1fd524ffb0b8b7a159cd70a58a1a793"
integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== integrity sha512-HRyinpgmEdkVr7pNPaYPHCoGqEzpgk79X8pg/xCeoAdurbyQjntJQ4pTzHl7BiVEBlam/F1Qsn+Dk0HtJO7Aaw==
dependencies: dependencies:
"@typescript-eslint/experimental-utils" "^5.0.0" "@typescript-eslint/experimental-utils" "^5.0.0"
@ -621,9 +675,9 @@ eslint-plugin-prettier@^4.0.0:
prettier-linter-helpers "^1.0.0" prettier-linter-helpers "^1.0.0"
eslint-plugin-react-hooks@^4.2.0: eslint-plugin-react-hooks@^4.2.0:
version "4.4.0" version "4.2.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz#71c39e528764c848d8253e1aa2c7024ed505f6c4" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
integrity sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ== integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==
eslint-plugin-react-native-globals@^0.1.1: eslint-plugin-react-native-globals@^0.1.1:
version "0.1.2" version "0.1.2"
@ -639,24 +693,24 @@ eslint-plugin-react-native@^3.11.0:
eslint-plugin-react-native-globals "^0.1.1" eslint-plugin-react-native-globals "^0.1.1"
eslint-plugin-react@^7.26.1: eslint-plugin-react@^7.26.1:
version "7.29.4" version "7.26.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz#41bcfe3e39e6a5ac040971c1af94437c80daa40e"
integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== integrity sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==
dependencies: dependencies:
array-includes "^3.1.4" array-includes "^3.1.3"
array.prototype.flatmap "^1.2.5" array.prototype.flatmap "^1.2.4"
doctrine "^2.1.0" doctrine "^2.1.0"
estraverse "^5.3.0" estraverse "^5.2.0"
jsx-ast-utils "^2.4.1 || ^3.0.0" jsx-ast-utils "^2.4.1 || ^3.0.0"
minimatch "^3.1.2" minimatch "^3.0.4"
object.entries "^1.1.5" object.entries "^1.1.4"
object.fromentries "^2.0.5" object.fromentries "^2.0.4"
object.hasown "^1.1.0" object.hasown "^1.0.0"
object.values "^1.1.5" object.values "^1.1.4"
prop-types "^15.8.1" prop-types "^15.7.2"
resolve "^2.0.0-next.3" resolve "^2.0.0-next.3"
semver "^6.3.0" semver "^6.3.0"
string.prototype.matchall "^4.0.6" string.prototype.matchall "^4.0.5"
eslint-scope@^5.1.1: eslint-scope@^5.1.1:
version "5.1.1" version "5.1.1"
@ -686,14 +740,14 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
eslint-visitor-keys@^2.0.0: eslint-visitor-keys@^2.0.0:
version "2.1.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
eslint-visitor-keys@^3.0.0: eslint-visitor-keys@^3.0.0:
version "3.3.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
eslint@^7.32.0: eslint@^7.32.0:
version "7.32.0" version "7.32.0"
@ -774,7 +828,7 @@ estraverse@^4.1.1:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: estraverse@^5.1.0, estraverse@^5.2.0:
version "5.3.0" version "5.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
@ -794,7 +848,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
fast-glob@^3.2.9: fast-glob@^3.1.1, fast-glob@^3.2.9:
version "3.2.11" version "3.2.11"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
@ -845,9 +899,9 @@ flat-cache@^3.0.4:
rimraf "^3.0.2" rimraf "^3.0.2"
flatted@^3.1.0: flatted@^3.1.0:
version "3.2.5" version "3.2.2"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561"
integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
fs.realpath@^1.0.0: fs.realpath@^1.0.0:
version "1.0.0" version "1.0.0"
@ -906,13 +960,13 @@ globals@^11.1.0:
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.6.0, globals@^13.9.0: globals@^13.6.0, globals@^13.9.0:
version "13.13.0" version "13.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
dependencies: dependencies:
type-fest "^0.20.2" type-fest "^0.20.2"
globby@^11.0.3, globby@^11.0.4: globby@^11.0.1, globby@^11.0.3:
version "11.1.0" version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@ -924,6 +978,18 @@ globby@^11.0.3, globby@^11.0.4:
merge2 "^1.4.1" merge2 "^1.4.1"
slash "^3.0.0" slash "^3.0.0"
globby@^11.0.4:
version "11.0.4"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
dependencies:
array-union "^2.1.0"
dir-glob "^3.0.1"
fast-glob "^3.1.1"
ignore "^5.1.4"
merge2 "^1.3.0"
slash "^3.0.0"
has-bigints@^1.0.1: has-bigints@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
@ -939,11 +1005,16 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: has-symbols@^1.0.1:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
has-tostringtag@^1.0.0: has-tostringtag@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
@ -963,7 +1034,7 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
ignore@^5.0.5, ignore@^5.1.8, ignore@^5.2.0: ignore@^5.0.5, ignore@^5.1.4, ignore@^5.2.0:
version "5.2.0" version "5.2.0"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
@ -1018,12 +1089,24 @@ is-boolean-object@^1.1.0:
call-bind "^1.0.2" call-bind "^1.0.2"
has-tostringtag "^1.0.0" has-tostringtag "^1.0.0"
is-callable@^1.1.4, is-callable@^1.2.4: is-callable@^1.1.4:
version "1.1.5"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
is-callable@^1.2.4:
version "1.2.4" version "1.2.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
is-core-module@^2.2.0, is-core-module@^2.8.1: is-core-module@^2.2.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==
dependencies:
has "^1.0.3"
is-core-module@^2.8.1:
version "2.8.1" version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
@ -1054,15 +1137,15 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
dependencies: dependencies:
is-extglob "^2.1.1" is-extglob "^2.1.1"
is-negative-zero@^2.0.2: is-negative-zero@^2.0.1:
version "2.0.2" version "2.0.1"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
is-number-object@^1.0.4: is-number-object@^1.0.4:
version "1.0.7" version "1.0.6"
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
dependencies: dependencies:
has-tostringtag "^1.0.0" has-tostringtag "^1.0.0"
@ -1093,19 +1176,26 @@ is-string@^1.0.5, is-string@^1.0.7:
dependencies: dependencies:
has-tostringtag "^1.0.0" has-tostringtag "^1.0.0"
is-symbol@^1.0.2, is-symbol@^1.0.3: is-symbol@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
dependencies:
call-bind "^1.0.2"
is-symbol@^1.0.3:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
dependencies: dependencies:
has-symbols "^1.0.2" has-symbols "^1.0.2"
is-weakref@^1.0.2: is-weakref@^1.0.1:
version "1.0.2" version "1.0.1"
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2"
integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.0"
isexe@^2.0.0: isexe@^2.0.0:
version "2.0.0" version "2.0.0"
@ -1146,11 +1236,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
"jsx-ast-utils@^2.4.1 || ^3.0.0": "jsx-ast-utils@^2.4.1 || ^3.0.0":
version "3.2.2" version "3.2.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz#6ab1e52c71dfc0c0707008a91729a9491fe9f76c" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b"
integrity sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw== integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==
dependencies: dependencies:
array-includes "^3.1.4" array-includes "^3.1.3"
object.assign "^4.1.2" object.assign "^4.1.2"
levn@^0.4.1: levn@^0.4.1:
@ -1171,6 +1261,11 @@ lodash.truncate@^4.4.2:
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
lodash@^4.17.15:
version "4.17.20"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
lodash@^4.17.21: lodash@^4.17.21:
version "4.17.21" version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@ -1203,7 +1298,7 @@ micromatch@^4.0.4:
braces "^3.0.2" braces "^3.0.2"
picomatch "^2.3.1" picomatch "^2.3.1"
minimatch@^3.0.4, minimatch@^3.1.2: minimatch@^3.0.4:
version "3.1.2" version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@ -1225,10 +1320,10 @@ object-assign@^4.1.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
object-inspect@^1.12.0, object-inspect@^1.9.0: object-inspect@^1.11.0, object-inspect@^1.9.0:
version "1.12.0" version "1.11.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
object-keys@^1.0.12, object-keys@^1.1.1: object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1" version "1.1.1"
@ -1245,7 +1340,7 @@ object.assign@^4.1.2:
has-symbols "^1.0.1" has-symbols "^1.0.1"
object-keys "^1.1.1" object-keys "^1.1.1"
object.entries@^1.1.5: object.entries@^1.1.4:
version "1.1.5" version "1.1.5"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861"
integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==
@ -1254,7 +1349,7 @@ object.entries@^1.1.5:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.19.1" es-abstract "^1.19.1"
object.fromentries@^2.0.5: object.fromentries@^2.0.4:
version "2.0.5" version "2.0.5"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251"
integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==
@ -1263,7 +1358,7 @@ object.fromentries@^2.0.5:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.19.1" es-abstract "^1.19.1"
object.hasown@^1.1.0: object.hasown@^1.0.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5"
integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==
@ -1271,7 +1366,7 @@ object.hasown@^1.1.0:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.19.1" es-abstract "^1.19.1"
object.values@^1.1.5: object.values@^1.1.4:
version "1.1.5" version "1.1.5"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
@ -1353,7 +1448,7 @@ progress@^2.0.0:
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
prop-types@^15.8.1: prop-types@^15.7.2:
version "15.8.1" version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@ -1377,15 +1472,15 @@ react-is@^16.13.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
regexp.prototype.flags@^1.4.1: regexp.prototype.flags@^1.3.1:
version "1.4.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
define-properties "^1.1.3" define-properties "^1.1.3"
regexpp@^3.1.0: regexpp@^3.0.0, regexpp@^3.1.0:
version "3.2.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
@ -1401,13 +1496,11 @@ resolve-from@^4.0.0:
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve@^1.12.0: resolve@^1.12.0:
version "1.22.0" version "1.15.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
dependencies: dependencies:
is-core-module "^2.8.1" path-parse "^1.0.6"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
resolve@^2.0.0-next.3: resolve@^2.0.0-next.3:
version "2.0.0-next.3" version "2.0.0-next.3"
@ -1441,7 +1534,12 @@ semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.2.1, semver@^7.3.5: semver@^7.2.1, semver@^7.3.2:
version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
semver@^7.3.5:
version "7.3.5" version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@ -1507,18 +1605,18 @@ string-width@^4.2.3:
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1" strip-ansi "^6.0.1"
string.prototype.matchall@^4.0.6: string.prototype.matchall@^4.0.5:
version "4.0.7" version "4.0.6"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa"
integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.19.1" es-abstract "^1.19.1"
get-intrinsic "^1.1.1" get-intrinsic "^1.1.1"
has-symbols "^1.0.3" has-symbols "^1.0.2"
internal-slot "^1.0.3" internal-slot "^1.0.3"
regexp.prototype.flags "^1.4.1" regexp.prototype.flags "^1.3.1"
side-channel "^1.0.4" side-channel "^1.0.4"
string.prototype.trimend@^1.0.4: string.prototype.trimend@^1.0.4:
@ -1569,9 +1667,9 @@ supports-preserve-symlinks-flag@^1.0.0:
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
table@^6.0.9: table@^6.0.9:
version "6.8.0" version "6.7.3"
resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" resolved "https://registry.yarnpkg.com/table/-/table-6.7.3.tgz#255388439715a738391bd2ee4cbca89a4d05a9b7"
integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== integrity sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==
dependencies: dependencies:
ajv "^8.0.1" ajv "^8.0.1"
lodash.truncate "^4.4.2" lodash.truncate "^4.4.2"
@ -1601,7 +1699,7 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tsutils@^3.21.0: tsutils@^3.17.1, tsutils@^3.21.0:
version "3.21.0" version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==

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

@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @noformat * @format
* @polyfill * @polyfill
* @nolint * @nolint
*/ */

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

@ -6,7 +6,7 @@
* *
* @polyfill * @polyfill
* @nolint * @nolint
* @noformat * @format
*/ */
/* eslint-disable no-shadow, eqeqeq, curly, no-unused-vars, no-void, no-control-regex */ /* eslint-disable no-shadow, eqeqeq, curly, no-unused-vars, no-void, no-control-regex */

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

@ -92,7 +92,7 @@ function buildFile(file, silent) {
); );
fs.writeFileSync(destPath, transformed); fs.writeFileSync(destPath, transformed);
const source = fs.readFileSync(file).toString('utf-8'); const source = fs.readFileSync(file).toString('utf-8');
if (/\@flow/.test(source)) { if (/@flow/.test(source)) {
fs.createReadStream(file).pipe(fs.createWriteStream(destPath + '.flow')); fs.createReadStream(file).pipe(fs.createWriteStream(destPath + '.flow'));
} }
silent || silent ||

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

@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* *
* @flow strict * @flow strict
* @noformat * @format
*/ */
'use strict'; 'use strict';

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

@ -562,8 +562,8 @@ SPEC CHECKSUMS:
boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8 DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8
FBLazyVector: ee032ccd1cb122fd9e1c5c92728974de60d884f4 FBLazyVector: 6d54f5ec18e67c6e8323ad20cf29611647787883
FBReactNativeSpec: d53a6a71e28fa39b0fb253cd7744ea91eabd73a8 FBReactNativeSpec: 91fbebb0579c702a7608cb8f60708d4f4732fda9
Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c
@ -574,40 +574,40 @@ SPEC CHECKSUMS:
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
FlipperKit: d8d346844eca5d9120c17d441a2f38596e8ed2b9 FlipperKit: d8d346844eca5d9120c17d441a2f38596e8ed2b9
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 49aa037945e044bab35de596adcd613ac229e9cd glog: 2bcc68b49c9846f6cec0aa5e5b404c26a8ed4f99
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
RCT-Folly: 24c6da766832002a4a2aac5f79ee0ca50fbe8507 RCT-Folly: 24c6da766832002a4a2aac5f79ee0ca50fbe8507
RCTRequired: bc8b047072a7c182d0d3ec7b28dc356c3c83837f RCTRequired: 5fb56b47e34326d08dc73df28dd2c2efd7d12f35
RCTTypeSafety: f737004406fb7bc9cb75216c2a140b89a7a21337 RCTTypeSafety: 615171ee45c434f57e5dfbd76cf7d27b82a89706
React: 214f1f9392608d00ebd18a346376cf258cff97eb React: 480d06cea6692d238ed6a1d812edb1145b48ada5
React-callinvoker: 3e614a6a6877414c5188a3591c58199c63eb6955 React-callinvoker: a4e8628e7b90b16f482ce43a1f63caa539a293ba
React-Codegen: d38a0a313dea0afe938532389685f81ce1c71d1d React-Codegen: d38a0a313dea0afe938532389685f81ce1c71d1d
React-Core: ec2515a358c942f5d47e5f7528076699ba6199d6 React-Core: 11cc868916ff649d0a10c0aa1ef01663daefc9f9
React-CoreModules: 5fe7687149edb43a030b74654ef9375f1c0886a0 React-CoreModules: 82de5420892224a7843d4342875b398a705c0f45
React-cxxreact: d56bfeceedafb240af691fb748484670a317714d React-cxxreact: 541694e0c176181fe2560aa15fe4b15f99936804
React-jsi: 29686e2a362be5a9b9eaef9451cef36123b216e0 React-jsi: 91760b845efde80dee265ccc70ecbad3baf10aa0
React-jsiexecutor: aa694f6245d00c676f6a3bce170498d1a23a5520 React-jsiexecutor: 0a519bf60eba61ab2df5b0e12747c4df8433f5b9
React-jsinspector: d4be49e75d7078a657ad109bec6a1b1166c312dc React-jsinspector: 6d5bf38f0d05277769cfebb52048072fe798f00e
React-logger: 5fc43a5079ca2d156143ca513b5588ca3f0f7696 React-logger: 88cdf9bd04476340f46e22e330d665f13901a49b
React-perflogger: 07e85f9b1bc98ddcdac677b168cc7c2fff2a619c React-perflogger: a63d56511c1a558b4f04772d406690c3787ec387
React-RCTActionSheet: f8d36696dfedb996133f3e769511048c2d56e6cf React-RCTActionSheet: 6ff40f13445bad460d42d2b9e0a3aac2db2f605c
React-RCTAnimation: 46c3ecf4123d6ef42d033be92207ccf6892d7d14 React-RCTAnimation: 779fbc66c9b23d00eb05d05462987515110d4998
React-RCTBlob: 37b41e44b3b78877b314a0e025e6194938d5dbcd React-RCTBlob: 85b2d2fa758dde38275c328d09666c0279a17d95
React-RCTImage: ef904a8ec3fecf309f578675ccc8880984dde5da React-RCTImage: 3fe5ca994f27eaf8b0c9aa7cda8350d06215a514
React-RCTLinking: bc63d2ab13638fa31a3aa47e5b2b8b5d4ec5d010 React-RCTLinking: 71cf507478b309a7a9fc5794a43f599cab087f16
React-RCTNetwork: fadc92d0ae49cfa3170e0a4f53a0de3e1843a04c React-RCTNetwork: 24ee6a15c750141bedf55a83ec522f5e41d974a0
React-RCTPushNotification: a728b1e660ff9f3a3a8ff4694a1dac21582f2237 React-RCTPushNotification: 4ed56c47ad568f2b94560b59e9b87923cfbc50eb
React-RCTSettings: 32062c41eda2516ad0778934941b3c0121c3cbbc React-RCTSettings: 4813a456f7f4f7c16cb9447cf3dc5f1c63c6eef7
React-RCTTest: 736fe24da5e1a7550b17a009c079257cc4d36be9 React-RCTTest: 2c1017134d5e2c38f221f0f34dd813428d3230f0
React-RCTText: fb305d0d88dccf43086a42a4df024f7984a4a028 React-RCTText: ab2d7891bb21ff770406d0362bfdf36e20efdb0a
React-RCTVibration: f1a0d7c99b103b58d44ee2463e6eaf8963177706 React-RCTVibration: c0b717932d4838a228e9d279299151a019862150
React-runtimeexecutor: d4f4b635ab3f215e897df59aaed540b0c7e1a515 React-runtimeexecutor: 79a5a07066f2c52173409c239de1fde497ac2b79
React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a
React-TurboModuleCxx-WinRTPort: a7afb798a0e54ac32565d5448500a8fd25450524 React-TurboModuleCxx-WinRTPort: 7cd76d204dcedaf165bfc3f0b41adc2d5f7358f6
ReactCommon: ddd5024761361be4ea7ab025cba7a389e939646d ReactCommon: faf191f43ed57fe34aae73d0cf7c40dc8cc1c1b2
ScreenshotManager: cbed2e311e2b1c414a23c67f16aff04f9c10a2c4 ScreenshotManager: cbed2e311e2b1c414a23c67f16aff04f9c10a2c4
Yoga: e89892ffd19e6d7bc17da185036c48d54cd5b993 Yoga: 5a543aa2d63fe00f3559a9c311fb8d8bf6f66d5b
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 31e2a6da8e5c70c540af7636baf1ae6d7707a1e0 PODFILE CHECKSUM: 31e2a6da8e5c70c540af7636baf1ae6d7707a1e0

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

@ -1092,7 +1092,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../../scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../../scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; shellScript = "set -x\n\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../../scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../../scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
26905525A793EABD06A4E9DD /* Start Metro */ = { 26905525A793EABD06A4E9DD /* Start Metro */ = {

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

@ -7,7 +7,7 @@
* @format * @format
*/ */
/* global device, element, by, expect, waitFor */ /* global element, by, expect */
const {openExampleWithTitle} = require('../e2e-helpers'); const {openExampleWithTitle} = require('../e2e-helpers');
describe('Alert', () => { describe('Alert', () => {

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

@ -8,7 +8,7 @@
* @format * @format
*/ */
/* global element, by, expect */ /* global element, by */
// Will open a component example from the root list // Will open a component example from the root list
// by filtering by component and then tapping on the label // by filtering by component and then tapping on the label

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

@ -35,7 +35,7 @@ function FadeInView({
children: React.Node, children: React.Node,
}) { }) {
//opacity 0 //opacity 0
const [fadeAnim, setFadeAnim] = React.useState(() => new Animated.Value(0)); const [fadeAnim] = React.useState(() => new Animated.Value(0));
React.useEffect(() => { React.useEffect(() => {
Animated.timing( Animated.timing(
// Uses easing functions // Uses easing functions

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

@ -102,9 +102,8 @@ class LayoutEventExample extends React.Component<Props, State> {
Press here to change layout. Press here to change layout.
</Text> </Text>
</Text> </Text>
<View ref="view" onLayout={this.onViewLayout} style={viewStyle}> <View onLayout={this.onViewLayout} style={viewStyle}>
<Image <Image
ref="img"
onLayout={this.onImageLayout} onLayout={this.onImageLayout}
style={styles.image} style={styles.image}
source={{ source={{
@ -119,7 +118,7 @@ class LayoutEventExample extends React.Component<Props, State> {
*/ */
JSON.stringify(this.state.viewLayout, null, ' ') + '\n\n'} JSON.stringify(this.state.viewLayout, null, ' ') + '\n\n'}
</Text> </Text>
<Text ref="txt" onLayout={this.onTextLayout} style={styles.text}> <Text onLayout={this.onTextLayout} style={styles.text}>
A simple piece of text.{this.state.extraText} A simple piece of text.{this.state.extraText}
</Text> </Text>
<Text> <Text>

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

@ -8,6 +8,8 @@
* @format * @format
*/ */
/* eslint-disable no-alert */
import * as React from 'react'; import * as React from 'react';
import {Modal, Platform, StyleSheet, Switch, Text, View} from 'react-native'; import {Modal, Platform, StyleSheet, Switch, Text, View} from 'react-native';
import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {RNTesterModuleExample} from '../../types/RNTesterTypes';

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

@ -63,7 +63,7 @@ class Tester extends React.Component<$FlowFixMeProps, $FlowFixMeState> {
{this.props.children(this.state.native)} {this.props.children(this.state.native)}
</View> </View>
<View> <View>
<Text>JavaScript:</Text> <Text>JavaScript{':'}</Text>
</View> </View>
<View style={styles.row}>{this.props.children(this.state.js)}</View> <View style={styles.row}>{this.props.children(this.state.js)}</View>
</View> </View>
@ -343,7 +343,7 @@ class TrackingExample extends React.Component<
{this.renderBlock(this.state.native, this.state.toNative)} {this.renderBlock(this.state.native, this.state.toNative)}
</View> </View>
<View> <View>
<Text>JavaScript:</Text> <Text>JavaScript{':'}</Text>
</View> </View>
<View style={styles.row}> <View style={styles.row}>
{this.renderBlock(this.state.js, this.state.toJS)} {this.renderBlock(this.state.js, this.state.toJS)}

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

@ -239,7 +239,12 @@ class OnChangeExample extends React.Component<{...}, $FlowFixMeState> {
render() { render() {
return ( return (
<View> <View>
<Switch onChange={() => alert('OnChange Called')} /> <Switch
onChange={() => {
// eslint-disable-next-line no-alert
alert('OnChange Called');
}}
/>
</View> </View>
); );
} }

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

@ -185,49 +185,51 @@ class RewriteInvalidCharactersAndClearExample extends React.Component<
} }
class BlurOnSubmitExample extends React.Component<{...}> { class BlurOnSubmitExample extends React.Component<{...}> {
focusNextField = nextField => { ref1 = React.createRef();
this.refs[nextField].focus(); ref2 = React.createRef();
}; ref3 = React.createRef();
ref4 = React.createRef();
ref5 = React.createRef();
render() { render() {
return ( return (
<View> <View>
<TextInput <TextInput
ref="1" ref={this.ref1}
style={styles.singleLine} style={styles.singleLine}
placeholder="blurOnSubmit = false" placeholder="blurOnSubmit = false"
returnKeyType="next" returnKeyType="next"
blurOnSubmit={false} blurOnSubmit={false}
onSubmitEditing={() => this.focusNextField('2')} onSubmitEditing={() => this.ref2.current?.focus()}
/> />
<TextInput <TextInput
ref="2" ref={this.ref2}
style={styles.singleLine} style={styles.singleLine}
keyboardType="email-address" keyboardType="email-address"
placeholder="blurOnSubmit = false" placeholder="blurOnSubmit = false"
returnKeyType="next" returnKeyType="next"
blurOnSubmit={false} blurOnSubmit={false}
onSubmitEditing={() => this.focusNextField('3')} onSubmitEditing={() => this.ref3.current?.focus()}
/> />
<TextInput <TextInput
ref="3" ref={this.ref3}
style={styles.singleLine} style={styles.singleLine}
keyboardType="url" keyboardType="url"
placeholder="blurOnSubmit = false" placeholder="blurOnSubmit = false"
returnKeyType="next" returnKeyType="next"
blurOnSubmit={false} blurOnSubmit={false}
onSubmitEditing={() => this.focusNextField('4')} onSubmitEditing={() => this.ref4.current?.focus()}
/> />
<TextInput <TextInput
ref="4" ref={this.ref4}
style={styles.singleLine} style={styles.singleLine}
keyboardType="numeric" keyboardType="numeric"
placeholder="blurOnSubmit = false" placeholder="blurOnSubmit = false"
blurOnSubmit={false} blurOnSubmit={false}
onSubmitEditing={() => this.focusNextField('5')} onSubmitEditing={() => this.ref5.current?.focus()}
/> />
<TextInput <TextInput
ref="5" ref={this.ref5}
style={styles.singleLine} style={styles.singleLine}
keyboardType="numbers-and-punctuation" keyboardType="numbers-and-punctuation"
placeholder="blurOnSubmit = true" placeholder="blurOnSubmit = true"

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

@ -17,7 +17,6 @@
"@typescript-eslint/parser": "4.30.0", "@typescript-eslint/parser": "4.30.0",
"async": "^3.2.2", "async": "^3.2.2",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-preset-fbjs": "^3.4.0",
"clang-format": "^1.2.4", "clang-format": "^1.2.4",
"connect": "^3.6.5", "connect": "^3.6.5",
"coveralls": "^3.0.2", "coveralls": "^3.0.2",

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

@ -94,6 +94,7 @@ describe('Android Test App', function() {
elem.click(); elem.click();
driver.sleep(2000); driver.sleep(2000);
}, },
// eslint-disable-next-line handle-callback-err
err => { err => {
// ignoring if Reload JS button can't be located // ignoring if Reload JS button can't be located
}, },

643
yarn.lock

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