mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27651720b4 | ||
|
|
00a942c905 | ||
|
|
ec5090adab | ||
|
|
29972f9602 | ||
|
|
f0b6eb7d9f | ||
|
|
afbd17ae41 | ||
|
|
b31a95c468 | ||
|
|
864c76b143 | ||
|
|
1875116090 | ||
|
|
c2404b4598 | ||
|
|
422260918a | ||
|
|
f2d709c3fa | ||
|
|
7c5aed7ae3 | ||
|
|
d8cf799a46 | ||
|
|
2923273bcb | ||
|
|
4846f1bf18 | ||
|
|
ccd4efac90 | ||
|
|
7100756bb8 | ||
|
|
8d8b61a695 | ||
|
|
09795971f8 | ||
|
|
e4ec71a1d9 | ||
|
|
ad6005f6bc | ||
|
|
66c8cd393c | ||
|
|
29e17754b3 | ||
|
|
e62b57e525 | ||
|
|
c72ecdb906 | ||
|
|
73747e674c | ||
|
|
2c5d4cba5c | ||
|
|
2903a291ca | ||
|
|
0042d96c1c | ||
|
|
98309fa7fc | ||
|
|
3c9e5f1470 | ||
|
|
b6ded72615 | ||
|
|
d4b6e02f2e | ||
|
|
30b4d157b2 | ||
|
|
b5fd5d0b4a | ||
|
|
1f7b0b3333 | ||
|
|
42658cf58b | ||
|
|
a642c3f264 | ||
|
|
ce0fd0a57f | ||
|
|
ab211fa7e4 | ||
|
|
49b2a6e9cd | ||
|
|
bb91f4a021 | ||
|
|
5136fcaf94 | ||
|
|
7d109659bc | ||
|
|
5394c908eb | ||
|
|
8c1718c122 | ||
|
|
cab16e4209 | ||
|
|
99fc293280 | ||
|
|
484a5ea854 | ||
|
|
4f897336b6 | ||
|
|
6ed1b39e6b | ||
|
|
0225f180f4 | ||
|
|
0b6fad6e7a | ||
|
|
fb429a5cd6 | ||
|
|
262a3f626d | ||
|
|
29639e7b95 | ||
|
|
27ccc6019e | ||
|
|
48413a4437 | ||
|
|
208bd05690 | ||
|
|
574447ae3d | ||
|
|
5e51e5492b | ||
|
|
b645f23708 | ||
|
|
18f1c69033 | ||
|
|
87f5b8b791 | ||
|
|
ff1558db3a | ||
|
|
e2dd18d8b0 | ||
|
|
787a772782 | ||
|
|
7acd6672a7 | ||
|
|
5f7b44c72d | ||
|
|
b191809d5e | ||
|
|
696fb55881 |
@@ -22,6 +22,7 @@ import type {
|
||||
AccessibilityState,
|
||||
AccessibilityValue,
|
||||
} from '../View/ViewAccessibility';
|
||||
import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
|
||||
import usePressability from '../../Pressability/usePressability';
|
||||
import {normalizeRect, type RectOrSize} from '../../StyleSheet/Rect';
|
||||
import type {ColorValue} from '../../StyleSheet/StyleSheetTypes';
|
||||
@@ -78,7 +79,7 @@ type Props = $ReadOnly<{|
|
||||
* Additional distance outside of this view in which a touch is considered a
|
||||
* press before `onPressOut` is triggered.
|
||||
*/
|
||||
pressRectOffset?: ?RectOrSize,
|
||||
pressRetentionOffset?: ?RectOrSize,
|
||||
|
||||
/**
|
||||
* Called when this view's layout changes.
|
||||
@@ -149,7 +150,7 @@ function Pressable(props: Props, forwardedRef): React.Node {
|
||||
onPress,
|
||||
onPressIn,
|
||||
onPressOut,
|
||||
pressRectOffset,
|
||||
pressRetentionOffset,
|
||||
style,
|
||||
testOnly_pressed,
|
||||
...restProps
|
||||
@@ -168,7 +169,7 @@ function Pressable(props: Props, forwardedRef): React.Node {
|
||||
() => ({
|
||||
disabled,
|
||||
hitSlop,
|
||||
pressRectOffset,
|
||||
pressRectOffset: pressRetentionOffset,
|
||||
android_disableSound,
|
||||
delayLongPress,
|
||||
onLongPress,
|
||||
@@ -203,7 +204,7 @@ function Pressable(props: Props, forwardedRef): React.Node {
|
||||
onPress,
|
||||
onPressIn,
|
||||
onPressOut,
|
||||
pressRectOffset,
|
||||
pressRetentionOffset,
|
||||
setPressed,
|
||||
],
|
||||
);
|
||||
@@ -220,6 +221,7 @@ function Pressable(props: Props, forwardedRef): React.Node {
|
||||
ref={viewRef}
|
||||
style={typeof style === 'function' ? style({pressed}) : style}>
|
||||
{typeof children === 'function' ? children({pressed}) : children}
|
||||
{__DEV__ ? <PressabilityDebugView color="red" hitSlop={hitSlop} /> : null}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ const AndroidHorizontalScrollViewViewConfig = {
|
||||
snapToInterval: true,
|
||||
snapToStart: true,
|
||||
snapToOffsets: true,
|
||||
contentOffset: true,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -544,12 +544,7 @@ type NativeType = HostComponent<NativeProps>;
|
||||
type NativeCommands = TextInputNativeCommands<NativeType>;
|
||||
|
||||
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
||||
supportedCommands: [
|
||||
'focus',
|
||||
'blur',
|
||||
'setMostRecentEventCount',
|
||||
'setTextAndSelection',
|
||||
],
|
||||
supportedCommands: ['focus', 'blur', 'setTextAndSelection'],
|
||||
});
|
||||
|
||||
let AndroidTextInputNativeComponent;
|
||||
|
||||
@@ -22,12 +22,7 @@ type NativeType = HostComponent<mixed>;
|
||||
type NativeCommands = TextInputNativeCommands<NativeType>;
|
||||
|
||||
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
||||
supportedCommands: [
|
||||
'focus',
|
||||
'blur',
|
||||
'setMostRecentEventCount',
|
||||
'setTextAndSelection',
|
||||
],
|
||||
supportedCommands: ['focus', 'blur', 'setTextAndSelection'],
|
||||
});
|
||||
|
||||
const SinglelineTextInputNativeComponent: HostComponent<mixed> = requireNativeComponent<mixed>(
|
||||
|
||||
@@ -24,12 +24,7 @@ type NativeType = HostComponent<mixed>;
|
||||
type NativeCommands = TextInputNativeCommands<NativeType>;
|
||||
|
||||
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
||||
supportedCommands: [
|
||||
'focus',
|
||||
'blur',
|
||||
'setMostRecentEventCount',
|
||||
'setTextAndSelection',
|
||||
],
|
||||
supportedCommands: ['focus', 'blur', 'setTextAndSelection'],
|
||||
});
|
||||
|
||||
let SinglelineTextInputNativeComponent;
|
||||
|
||||
@@ -488,6 +488,9 @@ export type Props = $ReadOnly<{|
|
||||
* The following values work on Android only:
|
||||
*
|
||||
* - `visible-password`
|
||||
*
|
||||
* On Android devices manufactured by Xiaomi with Android Q, 'email-address'
|
||||
* type will be replaced in native by 'default' to prevent a system related crash.
|
||||
*/
|
||||
keyboardType?: ?KeyboardType,
|
||||
|
||||
|
||||
@@ -17,10 +17,6 @@ import type {Int32} from '../../Types/CodegenTypes';
|
||||
export interface TextInputNativeCommands<T> {
|
||||
+focus: (viewRef: React.ElementRef<T>) => void;
|
||||
+blur: (viewRef: React.ElementRef<T>) => void;
|
||||
+setMostRecentEventCount: (
|
||||
viewRef: React.ElementRef<T>,
|
||||
eventCount: Int32,
|
||||
) => void;
|
||||
+setTextAndSelection: (
|
||||
viewRef: React.ElementRef<T>,
|
||||
mostRecentEventCount: Int32,
|
||||
@@ -30,11 +26,6 @@ export interface TextInputNativeCommands<T> {
|
||||
) => void;
|
||||
}
|
||||
|
||||
const supportedCommands = [
|
||||
'focus',
|
||||
'blur',
|
||||
'setMostRecentEventCount',
|
||||
'setTextAndSelection',
|
||||
];
|
||||
const supportedCommands = ['focus', 'blur', 'setTextAndSelection'];
|
||||
|
||||
export default supportedCommands;
|
||||
|
||||
@@ -53,6 +53,7 @@ class TouchableBounce extends React.Component<Props, State> {
|
||||
delayLongPress: this.props.delayLongPress,
|
||||
delayPressIn: this.props.delayPressIn,
|
||||
delayPressOut: this.props.delayPressOut,
|
||||
minPressDuration: 0,
|
||||
pressRectOffset: this.props.pressRetentionOffset,
|
||||
android_disableSound: this.props.touchSoundDisabled,
|
||||
onBlur: event => {
|
||||
|
||||
@@ -174,6 +174,7 @@ class TouchableHighlight extends React.Component<Props, State> {
|
||||
delayLongPress: this.props.delayLongPress,
|
||||
delayPressIn: this.props.delayPressIn,
|
||||
delayPressOut: this.props.delayPressOut,
|
||||
minPressDuration: 0,
|
||||
pressRectOffset: this.props.pressRetentionOffset,
|
||||
android_disableSound: this.props.touchSoundDisabled,
|
||||
onBlur: event => {
|
||||
|
||||
@@ -178,6 +178,7 @@ class TouchableNativeFeedback extends React.Component<Props, State> {
|
||||
delayLongPress: this.props.delayLongPress,
|
||||
delayPressIn: this.props.delayPressIn,
|
||||
delayPressOut: this.props.delayPressOut,
|
||||
minPressDuration: 0,
|
||||
pressRectOffset: this.props.pressRetentionOffset,
|
||||
android_disableSound: this.props.touchSoundDisabled,
|
||||
onLongPress: this.props.onLongPress,
|
||||
|
||||
@@ -147,6 +147,7 @@ class TouchableOpacity extends React.Component<Props, State> {
|
||||
delayLongPress: this.props.delayLongPress,
|
||||
delayPressIn: this.props.delayPressIn,
|
||||
delayPressOut: this.props.delayPressOut,
|
||||
minPressDuration: 0,
|
||||
pressRectOffset: this.props.pressRetentionOffset,
|
||||
onBlur: event => {
|
||||
if (Platform.isTV) {
|
||||
|
||||
@@ -179,6 +179,7 @@ function createPressabilityConfig(props: Props): PressabilityConfig {
|
||||
delayLongPress: props.delayLongPress,
|
||||
delayPressIn: props.delayPressIn,
|
||||
delayPressOut: props.delayPressOut,
|
||||
minPressDuration: 0,
|
||||
pressRectOffset: props.pressRetentionOffset,
|
||||
android_disableSound: props.touchSoundDisabled,
|
||||
onBlur: props.onBlur,
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
/**
|
||||
* @generated by scripts/bump-oss-version.js
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* @format
|
||||
* @generated by scripts/bump-oss-version.js
|
||||
* @flow
|
||||
*/
|
||||
|
||||
exports.version = {
|
||||
major: 0,
|
||||
minor: 0,
|
||||
patch: 0,
|
||||
minor: 63,
|
||||
patch: 4,
|
||||
prerelease: null,
|
||||
};
|
||||
|
||||
@@ -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 <Foundation/Foundation.h>
|
||||
|
||||
@protocol RCTDisplayRefreshable
|
||||
|
||||
- (void)displayDidRefresh:(CADisplayLink *)displayLink;
|
||||
|
||||
@end
|
||||
|
||||
@interface RCTDisplayWeakRefreshable : NSObject
|
||||
|
||||
@property (nonatomic, weak) id<RCTDisplayRefreshable> refreshable;
|
||||
|
||||
+ (CADisplayLink *)displayLinkWithWeakRefreshable:(id<RCTDisplayRefreshable>)refreshable;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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 "RCTDisplayWeakRefreshable.h"
|
||||
|
||||
@implementation RCTDisplayWeakRefreshable
|
||||
|
||||
+ (CADisplayLink *)displayLinkWithWeakRefreshable:(id<RCTDisplayRefreshable>)refreshable {
|
||||
RCTDisplayWeakRefreshable *target = [[RCTDisplayWeakRefreshable alloc] initWithRefreshable:refreshable];
|
||||
return [CADisplayLink displayLinkWithTarget:target selector:@selector(displayDidRefresh:)];
|
||||
}
|
||||
|
||||
- (instancetype)initWithRefreshable:(id<RCTDisplayRefreshable>)refreshable
|
||||
{
|
||||
if (self = [super init]) {
|
||||
_refreshable = refreshable;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)displayDidRefresh:(CADisplayLink *)displayLink {
|
||||
[_refreshable displayDidRefresh:displayLink];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -146,6 +146,7 @@ RCT_EXPORT_MODULE()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
#pragma mark - RCTImageLoaderProtocol 1/3
|
||||
|
||||
- (id<RCTImageCache>)imageCache
|
||||
{
|
||||
@@ -228,6 +229,8 @@ RCT_EXPORT_MODULE()
|
||||
return nil;
|
||||
}
|
||||
|
||||
# pragma mark - Private Image Decoding & Resizing
|
||||
|
||||
- (id<RCTImageDataDecoder>)imageDataDecoderForData:(NSData *)data
|
||||
{
|
||||
if (!_maxConcurrentLoadingTasks) {
|
||||
@@ -244,7 +247,7 @@ RCT_EXPORT_MODULE()
|
||||
_decoders = [_bridge modulesConformingToProtocol:@protocol(RCTImageDataDecoder)];
|
||||
}
|
||||
|
||||
_decoders = [[_bridge modulesConformingToProtocol:@protocol(RCTImageDataDecoder)] sortedArrayUsingComparator:^NSComparisonResult(id<RCTImageDataDecoder> a, id<RCTImageDataDecoder> b) {
|
||||
_decoders = [_decoders sortedArrayUsingComparator:^NSComparisonResult(id<RCTImageDataDecoder> a, id<RCTImageDataDecoder> b) {
|
||||
float priorityA = [a respondsToSelector:@selector(decoderPriority)] ? [a decoderPriority] : 0;
|
||||
float priorityB = [b respondsToSelector:@selector(decoderPriority)] ? [b decoderPriority] : 0;
|
||||
if (priorityA > priorityB) {
|
||||
@@ -309,33 +312,66 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
return image;
|
||||
}
|
||||
|
||||
- (RCTImageLoaderCancellationBlock) loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
callback:(RCTImageLoaderCompletionBlock)callback
|
||||
#pragma mark - RCTImageLoaderProtocol 2/3
|
||||
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
callback:(RCTImageLoaderCompletionBlock)callback
|
||||
{
|
||||
return [self loadImageWithURLRequest:imageURLRequest
|
||||
size:CGSizeZero
|
||||
scale:1
|
||||
clipped:YES
|
||||
resizeMode:RCTResizeModeStretch
|
||||
progressBlock:nil
|
||||
partialLoadBlock:nil
|
||||
completionBlock:callback];
|
||||
return [self loadImageWithURLRequest:imageURLRequest
|
||||
priority:RCTImageLoaderPriorityImmediate
|
||||
callback:callback];
|
||||
}
|
||||
|
||||
- (RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
priority:(RCTImageLoaderPriority)priority
|
||||
callback:(RCTImageLoaderCompletionBlock)callback {
|
||||
return [self loadImageWithURLRequest:imageURLRequest
|
||||
size:CGSizeZero
|
||||
scale:1
|
||||
clipped:YES
|
||||
resizeMode:RCTResizeModeStretch
|
||||
priority:priority
|
||||
progressBlock:nil
|
||||
partialLoadBlock:nil
|
||||
completionBlock:callback];
|
||||
}
|
||||
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
|
||||
{
|
||||
return [self loadImageWithURLRequest:imageURLRequest
|
||||
size:size
|
||||
scale:scale
|
||||
clipped:clipped
|
||||
resizeMode:resizeMode
|
||||
priority:RCTImageLoaderPriorityImmediate
|
||||
progressBlock:progressBlock
|
||||
partialLoadBlock:partialLoadBlock
|
||||
completionBlock:completionBlock];
|
||||
}
|
||||
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
priority:(RCTImageLoaderPriority)priority
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
|
||||
{
|
||||
RCTImageURLLoaderRequest *request = [self loadImageWithURLRequest:imageURLRequest
|
||||
size:size
|
||||
scale:scale
|
||||
clipped:clipped
|
||||
resizeMode:resizeMode
|
||||
priority:priority
|
||||
attribution:{}
|
||||
progressBlock:progressBlock
|
||||
partialLoadBlock:partialLoadBlock
|
||||
@@ -345,6 +381,8 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
};
|
||||
}
|
||||
|
||||
#pragma mark - Private Downloader Methods
|
||||
|
||||
- (void)dequeueTasks
|
||||
{
|
||||
dispatch_async(_URLRequestQueue, ^{
|
||||
@@ -415,6 +453,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
priority:(RCTImageLoaderPriority)priority
|
||||
attribution:(const ImageURLLoaderAttribution &)attribution
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressHandler
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
|
||||
@@ -481,6 +520,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
scale:scale
|
||||
resizeMode:resizeMode
|
||||
requestId:requestId
|
||||
priority:priority
|
||||
attribution:attributionCopy
|
||||
progressHandler:progressHandler
|
||||
partialLoadHandler:partialLoadHandler
|
||||
@@ -520,6 +560,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
scale:scale
|
||||
resizeMode:resizeMode
|
||||
requestId:requestId
|
||||
priority:priority
|
||||
attribution:attributionCopy
|
||||
progressHandler:progressHandler
|
||||
partialLoadHandler:partialLoadHandler
|
||||
@@ -701,6 +742,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
priority:(RCTImageLoaderPriority)priority
|
||||
attribution:(const ImageURLLoaderAttribution &)attribution
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
@@ -768,6 +810,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
size:size
|
||||
scale:scale
|
||||
resizeMode:resizeMode
|
||||
priority:priority
|
||||
attribution:attribution
|
||||
progressBlock:progressBlock
|
||||
partialLoadBlock:partialLoadBlock
|
||||
@@ -811,6 +854,8 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - RCTImageLoaderProtocol 3/3
|
||||
|
||||
- (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)data
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
@@ -962,6 +1007,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
size:CGSizeZero
|
||||
scale:1
|
||||
resizeMode:RCTResizeModeStretch
|
||||
priority: RCTImageLoaderPriorityImmediate
|
||||
attribution:{}
|
||||
progressBlock:NULL
|
||||
partialLoadBlock:NULL
|
||||
@@ -1106,7 +1152,11 @@ RCT_EXPORT_METHOD(getSizeWithHeaders:(NSString *)uri
|
||||
resolve:(RCTPromiseResolveBlock)resolve
|
||||
reject:(RCTPromiseRejectBlock)reject)
|
||||
{
|
||||
NSURLRequest *request = [RCTConvert NSURLRequest:uri];
|
||||
NSURL *URL = [RCTConvert NSURL:uri];
|
||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
|
||||
[headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL *stop) {
|
||||
[request addValue:[RCTConvert NSString:value] forHTTPHeaderField:key];
|
||||
}];
|
||||
[self getImageSizeForURLRequest:request
|
||||
block:^(NSError *error, CGSize size) {
|
||||
if (error) {
|
||||
@@ -1123,6 +1173,7 @@ RCT_EXPORT_METHOD(prefetchImage:(NSString *)uri
|
||||
{
|
||||
NSURLRequest *request = [RCTConvert NSURLRequest:uri];
|
||||
[self loadImageWithURLRequest:request
|
||||
priority:RCTImageLoaderPriorityPrefetch
|
||||
callback:^(NSError *error, UIImage *image) {
|
||||
if (error) {
|
||||
reject(@"E_PREFETCH_FAILURE", nil, error);
|
||||
|
||||
@@ -26,6 +26,17 @@
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* Image Downloading priority.
|
||||
* Use PriorityImmediate to download images at the highest priority.
|
||||
* Use PriorityPrefetch to prefetch images at a lower priority.
|
||||
* The priority logic is up to each @RCTImageLoaderProtocol implementation
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, RCTImageLoaderPriority) {
|
||||
RCTImageLoaderPriorityImmediate,
|
||||
RCTImageLoaderPriorityPrefetch
|
||||
};
|
||||
|
||||
@protocol RCTImageLoaderProtocol<RCTURLRequestHandler>
|
||||
|
||||
/**
|
||||
@@ -57,26 +68,32 @@
|
||||
* Loads the specified image at the highest available resolution.
|
||||
* Can be called from any thread, will call back on an unspecified thread.
|
||||
*/
|
||||
- (RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
callback:(RCTImageLoaderCompletionBlock)callback;
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
callback:(RCTImageLoaderCompletionBlock)callback;
|
||||
/**
|
||||
* As above, but includes download `priority`.
|
||||
*/
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
priority:(RCTImageLoaderPriority)priority
|
||||
callback:(RCTImageLoaderCompletionBlock)callback;
|
||||
|
||||
/**
|
||||
* As above, but includes target `size`, `scale` and `resizeMode`, which are used to
|
||||
* select the optimal dimensions for the loaded image. The `clipped` option
|
||||
* controls whether the image will be clipped to fit the specified size exactly,
|
||||
* or if the original aspect ratio should be retained.
|
||||
* `partialLoadBlock` is meant for custom image loaders that do not ship with the core RN library.
|
||||
* It is meant to be called repeatedly while loading the image as higher quality versions are decoded,
|
||||
* for instance with progressive JPEGs.
|
||||
*/
|
||||
- (RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock;
|
||||
* As above, but includes target `size`, `scale` and `resizeMode`, which are used to
|
||||
* select the optimal dimensions for the loaded image. The `clipped` option
|
||||
* controls whether the image will be clipped to fit the specified size exactly,
|
||||
* or if the original aspect ratio should be retained.
|
||||
* `partialLoadBlock` is meant for custom image loaders that do not ship with the core RN library.
|
||||
* It is meant to be called repeatedly while loading the image as higher quality versions are decoded,
|
||||
* for instance with progressive JPEGs.
|
||||
*/
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock;
|
||||
|
||||
/**
|
||||
* Finds an appropriate image decoder and passes the target `size`, `scale` and
|
||||
|
||||
@@ -28,6 +28,7 @@ RCT_EXTERN void RCTEnableImageLoadingPerfInstrumentation(BOOL enabled);
|
||||
scale:(CGFloat)scale
|
||||
clipped:(BOOL)clipped
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
priority: (RCTImageLoaderPriority)priority
|
||||
attribution:(const facebook::react::ImageURLLoaderAttribution &)attribution
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
||||
partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
|
||||
|
||||
@@ -35,7 +35,7 @@ typedef dispatch_block_t RCTImageLoaderCancellationBlock;
|
||||
* has finished. The method should also return a cancellation block, if
|
||||
* applicable.
|
||||
*/
|
||||
- (RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
#import <React/RCTImageURLLoader.h>
|
||||
#import <React/RCTImageLoaderProtocol.h>
|
||||
|
||||
// TODO (T61325135): Remove C++ checks
|
||||
#ifdef __cplusplus
|
||||
@@ -49,6 +50,7 @@ struct ImageURLLoaderAttribution {
|
||||
scale:(CGFloat)scale
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
requestId:(NSString *)requestId
|
||||
priority: (RCTImageLoaderPriority)priority
|
||||
attribution:(const facebook::react::ImageURLLoaderAttribution &)attribution
|
||||
progressHandler:(RCTImageLoaderProgressBlock)progressHandler
|
||||
partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
|
||||
|
||||
@@ -336,6 +336,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame)
|
||||
scale:imageScale
|
||||
clipped:NO
|
||||
resizeMode:_resizeMode
|
||||
priority:RCTImageLoaderPriorityImmediate
|
||||
attribution:{
|
||||
.nativeViewTag = [self.reactTag intValue],
|
||||
.surfaceId = [self.rootTag intValue],
|
||||
|
||||
@@ -88,16 +88,17 @@ RCT_EXPORT_METHOD(prefetchImage:(NSURLRequest *)request
|
||||
reject(@"E_INVALID_URI", @"Cannot prefetch an image for an empty URI", nil);
|
||||
return;
|
||||
}
|
||||
|
||||
[[self.bridge moduleForName:@"ImageLoader" lazilyLoadIfNecessary:YES]
|
||||
loadImageWithURLRequest:request
|
||||
callback:^(NSError *error, UIImage *image) {
|
||||
if (error) {
|
||||
reject(@"E_PREFETCH_FAILURE", nil, error);
|
||||
return;
|
||||
}
|
||||
resolve(@YES);
|
||||
}];
|
||||
id<RCTImageLoaderProtocol> imageLoader = (id<RCTImageLoaderProtocol>)[self.bridge
|
||||
moduleForName:@"ImageLoader" lazilyLoadIfNecessary:YES];
|
||||
[imageLoader loadImageWithURLRequest:request
|
||||
priority:RCTImageLoaderPriorityPrefetch
|
||||
callback:^(NSError *error, UIImage *image) {
|
||||
if (error) {
|
||||
reject(@"E_PREFETCH_FAILURE", nil, error);
|
||||
return;
|
||||
}
|
||||
resolve(@YES);
|
||||
}];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(queryCache:(NSArray *)requests
|
||||
|
||||
@@ -41,13 +41,13 @@ RCT_EXPORT_MODULE()
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressHandler:(RCTImageLoaderProgressBlock)progressHandler
|
||||
partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
|
||||
completionHandler:(RCTImageLoaderCompletionBlock)completionHandler
|
||||
- (nullable RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressHandler:(RCTImageLoaderProgressBlock)progressHandler
|
||||
partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
|
||||
completionHandler:(RCTImageLoaderCompletionBlock)completionHandler
|
||||
{
|
||||
UIImage *image = RCTImageFromLocalAssetURL(imageURL);
|
||||
if (image) {
|
||||
@@ -60,7 +60,7 @@ RCT_EXPORT_MODULE()
|
||||
RCTLogWarn(@"%@", message);
|
||||
completionHandler(RCTErrorWithMessage(message), nil);
|
||||
}
|
||||
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
#import <React/RCTUIImageViewAnimated.h>
|
||||
#import <React/RCTWeakProxy.h>
|
||||
#import <React/RCTDisplayWeakRefreshable.h>
|
||||
|
||||
#import <mach/mach.h>
|
||||
#import <objc/runtime.h>
|
||||
@@ -29,7 +29,7 @@ static NSUInteger RCTDeviceFreeMemory() {
|
||||
return (vm_stat.free_count - vm_stat.speculative_count) * page_size;
|
||||
}
|
||||
|
||||
@interface RCTUIImageViewAnimated () <CALayerDelegate>
|
||||
@interface RCTUIImageViewAnimated () <CALayerDelegate, RCTDisplayRefreshable>
|
||||
|
||||
@property (nonatomic, assign) NSUInteger maxBufferSize;
|
||||
@property (nonatomic, strong, readwrite) UIImage *currentFrame;
|
||||
@@ -153,7 +153,7 @@ static NSUInteger RCTDeviceFreeMemory() {
|
||||
}
|
||||
|
||||
if (!_displayLink) {
|
||||
_displayLink = [CADisplayLink displayLinkWithTarget:[RCTWeakProxy weakProxyWithTarget:self] selector:@selector(displayDidRefresh:)];
|
||||
_displayLink = [RCTDisplayWeakRefreshable displayLinkWithWeakRefreshable:self];
|
||||
NSString *runLoopMode = [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode;
|
||||
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:runLoopMode];
|
||||
}
|
||||
@@ -275,6 +275,8 @@ static NSUInteger RCTDeviceFreeMemory() {
|
||||
if (_currentFrame) {
|
||||
layer.contentsScale = self.animatedImageScale;
|
||||
layer.contents = (__bridge id)_currentFrame.CGImage;
|
||||
} else {
|
||||
[super displayLayer:layer];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ if (__DEV__) {
|
||||
},
|
||||
|
||||
ignoreAllLogs: (value?: ?boolean): void => {
|
||||
LogBoxData.setDisabled(!!value);
|
||||
LogBoxData.setDisabled(value == null ? true : value);
|
||||
},
|
||||
|
||||
uninstall: (): void => {
|
||||
|
||||
@@ -69,6 +69,30 @@ describe('LogBox', () => {
|
||||
expect(LogBoxData.isDisabled()).toBe(true);
|
||||
});
|
||||
|
||||
it('will not ignore logs for `ignoreAllLogs(false)`', () => {
|
||||
expect(LogBoxData.isDisabled()).toBe(false);
|
||||
|
||||
LogBox.install();
|
||||
|
||||
expect(LogBoxData.isDisabled()).toBe(false);
|
||||
|
||||
LogBox.ignoreAllLogs(false);
|
||||
|
||||
expect(LogBoxData.isDisabled()).toBe(false);
|
||||
});
|
||||
|
||||
it('will ignore logs for `ignoreAllLogs()`', () => {
|
||||
expect(LogBoxData.isDisabled()).toBe(false);
|
||||
|
||||
LogBox.install();
|
||||
|
||||
expect(LogBoxData.isDisabled()).toBe(false);
|
||||
|
||||
LogBox.ignoreAllLogs();
|
||||
|
||||
expect(LogBoxData.isDisabled()).toBe(true);
|
||||
});
|
||||
|
||||
it('registers warnings', () => {
|
||||
jest.mock('../Data/LogBoxData');
|
||||
|
||||
|
||||
@@ -99,12 +99,6 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init)
|
||||
{
|
||||
BOOL valid = YES;
|
||||
if (_requestToken == nil) {
|
||||
if (requestToken == nil) {
|
||||
if (RCT_DEBUG) {
|
||||
RCTLogError(@"Missing request token for request: %@", _request);
|
||||
}
|
||||
valid = NO;
|
||||
}
|
||||
_requestToken = requestToken;
|
||||
} else if (![requestToken isEqual:_requestToken]) {
|
||||
if (RCT_DEBUG) {
|
||||
|
||||
@@ -78,6 +78,11 @@ export type PressabilityConfig = $ReadOnly<{|
|
||||
*/
|
||||
delayPressOut?: ?number,
|
||||
|
||||
/**
|
||||
* Minimum duration to wait between calling `onPressIn` and `onPressOut`.
|
||||
*/
|
||||
minPressDuration?: ?number,
|
||||
|
||||
/**
|
||||
* Called after the element loses focus.
|
||||
*/
|
||||
@@ -271,14 +276,14 @@ const isPressInSignal = signal =>
|
||||
const isTerminalSignal = signal =>
|
||||
signal === 'RESPONDER_TERMINATED' || signal === 'RESPONDER_RELEASE';
|
||||
|
||||
const DEFAULT_LONG_PRESS_DELAY_MS = 370; // 500 - 130
|
||||
const DEFAULT_PRESS_DELAY_MS = 130;
|
||||
const DEFAULT_LONG_PRESS_DELAY_MS = 500;
|
||||
const DEFAULT_PRESS_RECT_OFFSETS = {
|
||||
bottom: 30,
|
||||
left: 20,
|
||||
right: 20,
|
||||
top: 20,
|
||||
};
|
||||
const DEFAULT_MIN_PRESS_DURATION = 130;
|
||||
|
||||
/**
|
||||
* Pressability implements press handling capabilities.
|
||||
@@ -393,6 +398,7 @@ export default class Pressability {
|
||||
pageX: number,
|
||||
pageY: number,
|
||||
|}>;
|
||||
_touchActivateTime: ?number;
|
||||
_touchState: TouchState = 'NOT_RESPONDER';
|
||||
|
||||
constructor(config: PressabilityConfig) {
|
||||
@@ -461,12 +467,7 @@ export default class Pressability {
|
||||
this._touchState = 'NOT_RESPONDER';
|
||||
this._receiveSignal('RESPONDER_GRANT', event);
|
||||
|
||||
const delayPressIn = normalizeDelay(
|
||||
this._config.delayPressIn,
|
||||
0,
|
||||
DEFAULT_PRESS_DELAY_MS,
|
||||
);
|
||||
|
||||
const delayPressIn = normalizeDelay(this._config.delayPressIn);
|
||||
if (delayPressIn > 0) {
|
||||
this._pressDelayTimeout = setTimeout(() => {
|
||||
this._receiveSignal('DELAY', event);
|
||||
@@ -478,7 +479,7 @@ export default class Pressability {
|
||||
const delayLongPress = normalizeDelay(
|
||||
this._config.delayLongPress,
|
||||
10,
|
||||
DEFAULT_LONG_PRESS_DELAY_MS,
|
||||
DEFAULT_LONG_PRESS_DELAY_MS - delayPressIn,
|
||||
);
|
||||
this._longPressDelayTimeout = setTimeout(() => {
|
||||
this._handleLongPress(event);
|
||||
@@ -702,6 +703,7 @@ export default class Pressability {
|
||||
pageX: touch.pageX,
|
||||
pageY: touch.pageY,
|
||||
};
|
||||
this._touchActivateTime = Date.now();
|
||||
if (onPressIn != null) {
|
||||
onPressIn(event);
|
||||
}
|
||||
@@ -710,7 +712,16 @@ export default class Pressability {
|
||||
_deactivate(event: PressEvent): void {
|
||||
const {onPressOut} = this._config;
|
||||
if (onPressOut != null) {
|
||||
const delayPressOut = normalizeDelay(this._config.delayPressOut);
|
||||
const minPressDuration = normalizeDelay(
|
||||
this._config.minPressDuration,
|
||||
0,
|
||||
DEFAULT_MIN_PRESS_DURATION,
|
||||
);
|
||||
const pressDuration = Date.now() - (this._touchActivateTime ?? 0);
|
||||
const delayPressOut = Math.max(
|
||||
minPressDuration - pressDuration,
|
||||
normalizeDelay(this._config.delayPressOut),
|
||||
);
|
||||
if (delayPressOut > 0) {
|
||||
this._pressOutDelayTimeout = setTimeout(() => {
|
||||
onPressOut(event);
|
||||
@@ -719,6 +730,7 @@ export default class Pressability {
|
||||
onPressOut(event);
|
||||
}
|
||||
}
|
||||
this._touchActivateTime = null;
|
||||
}
|
||||
|
||||
_measureResponderRegion(): void {
|
||||
|
||||
@@ -232,6 +232,7 @@ const createMockPressEvent = (
|
||||
describe('Pressability', () => {
|
||||
beforeEach(() => {
|
||||
jest.resetModules();
|
||||
jest.spyOn(Date, 'now');
|
||||
jest.spyOn(HoverState, 'isHoverEnabled');
|
||||
});
|
||||
|
||||
@@ -354,7 +355,7 @@ describe('Pressability', () => {
|
||||
expect(config.onLongPress).toBeCalled();
|
||||
});
|
||||
|
||||
it('is called if pressed for 370ms after the press delay', () => {
|
||||
it('is called if pressed for 500ms after press started', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
delayPressIn: 100,
|
||||
});
|
||||
@@ -363,7 +364,7 @@ describe('Pressability', () => {
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
|
||||
jest.advanceTimersByTime(469);
|
||||
jest.advanceTimersByTime(499);
|
||||
expect(config.onLongPress).not.toBeCalled();
|
||||
jest.advanceTimersByTime(1);
|
||||
expect(config.onLongPress).toBeCalled();
|
||||
@@ -392,7 +393,7 @@ describe('Pressability', () => {
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
|
||||
jest.advanceTimersByTime(139);
|
||||
jest.advanceTimersByTime(9);
|
||||
expect(config.onLongPress).not.toBeCalled();
|
||||
jest.advanceTimersByTime(1);
|
||||
expect(config.onLongPress).toBeCalled();
|
||||
@@ -459,7 +460,13 @@ describe('Pressability', () => {
|
||||
const {config, handlers} = createMockPressability();
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderGrant(
|
||||
createMockPressEvent({
|
||||
registrationName: 'onResponderGrant',
|
||||
pageX: 0,
|
||||
pageY: 0,
|
||||
}),
|
||||
);
|
||||
handlers.onResponderMove(
|
||||
createMockPressEvent({
|
||||
registrationName: 'onResponderMove',
|
||||
@@ -474,7 +481,13 @@ describe('Pressability', () => {
|
||||
|
||||
// Subsequent long touch gesture should not carry over previous state.
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderGrant(
|
||||
createMockPressEvent({
|
||||
registrationName: 'onResponderGrant',
|
||||
pageX: 7,
|
||||
pageY: 8,
|
||||
}),
|
||||
);
|
||||
handlers.onResponderMove(
|
||||
// NOTE: Delta from (0, 0) is ~10.6 > 10, but should not matter.
|
||||
createMockPressEvent({
|
||||
@@ -505,6 +518,7 @@ describe('Pressability', () => {
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPress).toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
});
|
||||
@@ -520,7 +534,7 @@ describe('Pressability', () => {
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
});
|
||||
|
||||
it('is called after the default delay by default', () => {
|
||||
it('is called immediately by default', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
delayPressIn: null,
|
||||
});
|
||||
@@ -529,24 +543,6 @@ describe('Pressability', () => {
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
|
||||
jest.advanceTimersByTime(129);
|
||||
expect(config.onPressIn).not.toBeCalled();
|
||||
jest.advanceTimersByTime(1);
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
});
|
||||
|
||||
it('falls back to the default delay if `delayPressIn` is omitted', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
delayPressIn: null,
|
||||
});
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
|
||||
jest.advanceTimersByTime(129);
|
||||
expect(config.onPressIn).not.toBeCalled();
|
||||
jest.advanceTimersByTime(1);
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
});
|
||||
|
||||
@@ -578,7 +574,124 @@ describe('Pressability', () => {
|
||||
});
|
||||
});
|
||||
|
||||
// TODO: onPressOut tests
|
||||
describe('onPressOut', () => {
|
||||
it('is called after `onResponderRelease` before `delayPressIn`', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
delayPressIn: Number.EPSILON,
|
||||
});
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
expect(config.onPressIn).not.toBeCalled();
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
it('is called after `onResponderRelease` after `delayPressIn`', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
delayPressIn: Number.EPSILON,
|
||||
});
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
it('is not called after `onResponderTerminate` before `delayPressIn`', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
delayPressIn: Number.EPSILON,
|
||||
});
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
handlers.onResponderTerminate(
|
||||
createMockPressEvent('onResponderTerminate'),
|
||||
);
|
||||
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('is not called after `onResponderTerminate` after `delayPressIn`', () => {
|
||||
const {config, handlers} = createMockPressability();
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
handlers.onResponderTerminate(
|
||||
createMockPressEvent('onResponderTerminate'),
|
||||
);
|
||||
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
it('is called after the minimum press duration by default', () => {
|
||||
const {config, handlers} = createMockPressability();
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
jest.advanceTimersByTime(120);
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
jest.advanceTimersByTime(10);
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
it('is called after only after the remaining minimum press duration', () => {
|
||||
const {config, handlers} = createMockPressability();
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
// WORKAROUND: Jest does not advance `Date.now()`.
|
||||
const touchActivateTime = Date.now();
|
||||
jest.advanceTimersByTime(120);
|
||||
Date.now.mockReturnValue(touchActivateTime + 120);
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPressOut).not.toBeCalled();
|
||||
jest.advanceTimersByTime(10);
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
it('is called synchronously if minimum press duration is 0ms', () => {
|
||||
const {config, handlers} = createMockPressability({
|
||||
minPressDuration: 0,
|
||||
});
|
||||
|
||||
handlers.onStartShouldSetResponder();
|
||||
handlers.onResponderGrant(createMockPressEvent('onResponderGrant'));
|
||||
handlers.onResponderMove(createMockPressEvent('onResponderMove'));
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('`onPress*` with movement', () => {
|
||||
describe('within bounds of hit rect', () => {
|
||||
@@ -611,6 +724,7 @@ describe('Pressability', () => {
|
||||
|
||||
expect(config.onPressIn).toBeCalled();
|
||||
expect(config.onPress).toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
@@ -648,6 +762,7 @@ describe('Pressability', () => {
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPress).toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
});
|
||||
@@ -676,6 +791,7 @@ describe('Pressability', () => {
|
||||
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
expect(config.onPress).not.toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
|
||||
@@ -733,6 +849,7 @@ describe('Pressability', () => {
|
||||
handlers.onResponderRelease(createMockPressEvent('onResponderRelease'));
|
||||
|
||||
expect(config.onPress).toBeCalled();
|
||||
jest.runOnlyPendingTimers();
|
||||
expect(config.onPressOut).toBeCalled();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -51,6 +51,9 @@ class StyleSheetValidation {
|
||||
if (!__DEV__ || global.__RCTProfileIsProfiling) {
|
||||
return;
|
||||
}
|
||||
if (!styles[name]) {
|
||||
return;
|
||||
}
|
||||
const styleProps = Object.keys(styles[name]);
|
||||
for (const prop of styleProps) {
|
||||
StyleSheetValidation.validateStyleProp(
|
||||
|
||||
@@ -104,6 +104,10 @@ static UIColor *defaultPlaceholderColor()
|
||||
|
||||
- (void)setDefaultTextAttributes:(NSDictionary<NSAttributedStringKey, id> *)defaultTextAttributes
|
||||
{
|
||||
if ([_defaultTextAttributes isEqualToDictionary:defaultTextAttributes]) {
|
||||
return;
|
||||
}
|
||||
|
||||
_defaultTextAttributes = defaultTextAttributes;
|
||||
self.typingAttributes = defaultTextAttributes;
|
||||
[self _updatePlaceholder];
|
||||
|
||||
@@ -40,6 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, copy, nullable) RCTDirectEventBlock onScroll;
|
||||
|
||||
@property (nonatomic, assign) NSInteger mostRecentEventCount;
|
||||
@property (nonatomic, assign, readonly) NSInteger nativeEventCount;
|
||||
@property (nonatomic, assign) BOOL autoFocus;
|
||||
@property (nonatomic, assign) BOOL blurOnSubmit;
|
||||
@property (nonatomic, assign) BOOL selectTextOnFocus;
|
||||
@@ -51,9 +52,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, copy) NSString *inputAccessoryViewID;
|
||||
@property (nonatomic, assign) UIKeyboardType keyboardType;
|
||||
|
||||
- (void)setText:(NSString *__nullable)text
|
||||
selectionStart:(NSInteger)start
|
||||
selectionEnd:(NSInteger)end;
|
||||
/**
|
||||
Sets selection intext input if both start and end are within range of the text input.
|
||||
**/
|
||||
- (void)setSelectionStart:(NSInteger)start
|
||||
selectionEnd:(NSInteger)end;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
__weak RCTEventDispatcher *_eventDispatcher;
|
||||
BOOL _hasInputAccesoryView;
|
||||
NSString *_Nullable _predictedText;
|
||||
NSInteger _nativeEventCount;
|
||||
BOOL _didMoveToWindow;
|
||||
}
|
||||
|
||||
@@ -68,7 +67,13 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame)
|
||||
- (void)enforceTextAttributesIfNeeded
|
||||
{
|
||||
id<RCTBackedTextInputViewProtocol> backedTextInputView = self.backedTextInputView;
|
||||
backedTextInputView.defaultTextAttributes = [_textAttributes effectiveTextAttributes];
|
||||
|
||||
NSDictionary<NSAttributedStringKey,id> *textAttributes = [[_textAttributes effectiveTextAttributes] mutableCopy];
|
||||
if ([textAttributes valueForKey:NSForegroundColorAttributeName] == nil) {
|
||||
[textAttributes setValue:[UIColor blackColor] forKey:NSForegroundColorAttributeName];
|
||||
}
|
||||
|
||||
backedTextInputView.defaultTextAttributes = textAttributes;
|
||||
}
|
||||
|
||||
- (void)setReactPaddingInsets:(UIEdgeInsets)reactPaddingInsets
|
||||
@@ -193,17 +198,9 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame)
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setText:(NSString *__nullable)text
|
||||
selectionStart:(NSInteger)start
|
||||
selectionEnd:(NSInteger)end
|
||||
- (void)setSelectionStart:(NSInteger)start
|
||||
selectionEnd:(NSInteger)end
|
||||
{
|
||||
if (text) {
|
||||
NSMutableAttributedString *mutableString =
|
||||
[[NSMutableAttributedString alloc] initWithAttributedString:self.backedTextInputView.attributedText];
|
||||
[mutableString replaceCharactersInRange:NSMakeRange(0, mutableString.string.length) withString:text];
|
||||
self.backedTextInputView.attributedText = mutableString;
|
||||
}
|
||||
|
||||
UITextPosition *startPosition = [self.backedTextInputView positionFromPosition:self.backedTextInputView.beginningOfDocument
|
||||
offset:start];
|
||||
UITextPosition *endPosition = [self.backedTextInputView positionFromPosition:self.backedTextInputView.beginningOfDocument
|
||||
|
||||
@@ -117,14 +117,6 @@ RCT_EXPORT_METHOD(blur : (nonnull NSNumber *)viewTag)
|
||||
}];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setMostRecentEventCount : (nonnull NSNumber *)viewTag eventCount:(NSInteger)eventCount)
|
||||
{
|
||||
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
||||
RCTBaseTextInputView *view = (RCTBaseTextInputView *)viewRegistry[viewTag];
|
||||
view.mostRecentEventCount = eventCount;
|
||||
}];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setTextAndSelection : (nonnull NSNumber *)viewTag
|
||||
mostRecentEventCount : (NSInteger)mostRecentEventCount
|
||||
value : (NSString *)value
|
||||
@@ -133,8 +125,18 @@ RCT_EXPORT_METHOD(setTextAndSelection : (nonnull NSNumber *)viewTag
|
||||
{
|
||||
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
||||
RCTBaseTextInputView *view = (RCTBaseTextInputView *)viewRegistry[viewTag];
|
||||
view.mostRecentEventCount = mostRecentEventCount;
|
||||
[view setText:value selectionStart:start selectionEnd:end];
|
||||
NSInteger eventLag = view.nativeEventCount - mostRecentEventCount;
|
||||
if (eventLag != 0) {
|
||||
return;
|
||||
}
|
||||
RCTExecuteOnUIManagerQueue(^{
|
||||
RCTBaseTextInputShadowView *shadowView = (RCTBaseTextInputShadowView *)[self.bridge.uiManager shadowViewForReactTag:viewTag];
|
||||
[shadowView setText:value];
|
||||
[self.bridge.uiManager setNeedsLayout];
|
||||
RCTExecuteOnMainQueue(^{
|
||||
[view setSelectionStart:start selectionEnd:end];
|
||||
});
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,10 @@
|
||||
|
||||
- (void)setDefaultTextAttributes:(NSDictionary<NSAttributedStringKey, id> *)defaultTextAttributes
|
||||
{
|
||||
if ([_defaultTextAttributes isEqualToDictionary:defaultTextAttributes]) {
|
||||
return;
|
||||
}
|
||||
|
||||
_defaultTextAttributes = defaultTextAttributes;
|
||||
[super setDefaultTextAttributes:defaultTextAttributes];
|
||||
[self _updatePlaceholder];
|
||||
|
||||
@@ -651,10 +651,6 @@ const MatrixMath = {
|
||||
skew[0] = MatrixMath.v3Dot(row[0], row[1]);
|
||||
row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);
|
||||
|
||||
// Compute XY shear factor and make 2nd row orthogonal to 1st.
|
||||
skew[0] = MatrixMath.v3Dot(row[0], row[1]);
|
||||
row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);
|
||||
|
||||
// Now, compute Y scale and normalize 2nd row.
|
||||
scale[1] = MatrixMath.v3Length(row[1]);
|
||||
row[1] = MatrixMath.v3Normalize(row[1], scale[1]);
|
||||
|
||||
+257
-257
@@ -3,58 +3,58 @@ PODS:
|
||||
- CocoaAsyncSocket (7.6.4)
|
||||
- CocoaLibEvent (1.0.0)
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (1000.0.0)
|
||||
- FBReactNativeSpec (1000.0.0):
|
||||
- FBLazyVector (0.63.3)
|
||||
- FBReactNativeSpec (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 1000.0.0)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- Flipper (0.33.1):
|
||||
- Flipper-Folly (~> 2.1)
|
||||
- Flipper-RSocket (~> 1.0)
|
||||
- RCTRequired (= 0.63.3)
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- Flipper (0.54.0):
|
||||
- Flipper-Folly (~> 2.2)
|
||||
- Flipper-RSocket (~> 1.1)
|
||||
- Flipper-DoubleConversion (1.1.7)
|
||||
- Flipper-Folly (2.1.1):
|
||||
- Flipper-Folly (2.3.0):
|
||||
- boost-for-react-native
|
||||
- CocoaLibEvent (~> 1.0)
|
||||
- Flipper-DoubleConversion
|
||||
- Flipper-Glog
|
||||
- OpenSSL-Universal (= 1.0.2.19)
|
||||
- OpenSSL-Universal (= 1.0.2.20)
|
||||
- Flipper-Glog (0.3.6)
|
||||
- Flipper-PeerTalk (0.0.4)
|
||||
- Flipper-RSocket (1.0.0):
|
||||
- Flipper-Folly (~> 2.0)
|
||||
- FlipperKit (0.33.1):
|
||||
- FlipperKit/Core (= 0.33.1)
|
||||
- FlipperKit/Core (0.33.1):
|
||||
- Flipper (~> 0.33.1)
|
||||
- Flipper-RSocket (1.1.0):
|
||||
- Flipper-Folly (~> 2.2)
|
||||
- FlipperKit (0.54.0):
|
||||
- FlipperKit/Core (= 0.54.0)
|
||||
- FlipperKit/Core (0.54.0):
|
||||
- Flipper (~> 0.54.0)
|
||||
- FlipperKit/CppBridge
|
||||
- FlipperKit/FBCxxFollyDynamicConvert
|
||||
- FlipperKit/FBDefines
|
||||
- FlipperKit/FKPortForwarding
|
||||
- FlipperKit/CppBridge (0.33.1):
|
||||
- Flipper (~> 0.33.1)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (0.33.1):
|
||||
- Flipper-Folly (~> 2.1)
|
||||
- FlipperKit/FBDefines (0.33.1)
|
||||
- FlipperKit/FKPortForwarding (0.33.1):
|
||||
- FlipperKit/CppBridge (0.54.0):
|
||||
- Flipper (~> 0.54.0)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (0.54.0):
|
||||
- Flipper-Folly (~> 2.2)
|
||||
- FlipperKit/FBDefines (0.54.0)
|
||||
- FlipperKit/FKPortForwarding (0.54.0):
|
||||
- CocoaAsyncSocket (~> 7.6)
|
||||
- Flipper-PeerTalk (~> 0.0.4)
|
||||
- FlipperKit/FlipperKitHighlightOverlay (0.33.1)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (0.33.1):
|
||||
- FlipperKit/FlipperKitHighlightOverlay (0.54.0)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (0.54.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitHighlightOverlay
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable
|
||||
- YogaKit (~> 1.18)
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (0.33.1)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (0.33.1):
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (0.54.0)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (0.54.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitReactPlugin (0.33.1):
|
||||
- FlipperKit/FlipperKitReactPlugin (0.54.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1):
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (0.54.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/SKIOSNetworkPlugin (0.33.1):
|
||||
- FlipperKit/SKIOSNetworkPlugin (0.54.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitNetworkPlugin
|
||||
- Folly (2020.01.13.00):
|
||||
@@ -67,274 +67,274 @@ PODS:
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- glog (0.3.5)
|
||||
- OpenSSL-Universal (1.0.2.19):
|
||||
- OpenSSL-Universal/Static (= 1.0.2.19)
|
||||
- OpenSSL-Universal/Static (1.0.2.19)
|
||||
- RCTRequired (1000.0.0)
|
||||
- RCTTypeSafety (1000.0.0):
|
||||
- FBLazyVector (= 1000.0.0)
|
||||
- OpenSSL-Universal (1.0.2.20):
|
||||
- OpenSSL-Universal/Static (= 1.0.2.20)
|
||||
- OpenSSL-Universal/Static (1.0.2.20)
|
||||
- RCTRequired (0.63.3)
|
||||
- RCTTypeSafety (0.63.3):
|
||||
- FBLazyVector (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 1000.0.0)
|
||||
- React-Core (= 1000.0.0)
|
||||
- React (1000.0.0):
|
||||
- React-Core (= 1000.0.0)
|
||||
- React-Core/DevSupport (= 1000.0.0)
|
||||
- React-Core/RCTWebSocket (= 1000.0.0)
|
||||
- React-RCTActionSheet (= 1000.0.0)
|
||||
- React-RCTAnimation (= 1000.0.0)
|
||||
- React-RCTBlob (= 1000.0.0)
|
||||
- React-RCTImage (= 1000.0.0)
|
||||
- React-RCTLinking (= 1000.0.0)
|
||||
- React-RCTNetwork (= 1000.0.0)
|
||||
- React-RCTSettings (= 1000.0.0)
|
||||
- React-RCTText (= 1000.0.0)
|
||||
- React-RCTVibration (= 1000.0.0)
|
||||
- React-ART (1000.0.0):
|
||||
- React-Core/ARTHeaders (= 1000.0.0)
|
||||
- React-callinvoker (1000.0.0)
|
||||
- React-Core (1000.0.0):
|
||||
- RCTRequired (= 0.63.3)
|
||||
- React-Core (= 0.63.3)
|
||||
- React (0.63.3):
|
||||
- React-Core (= 0.63.3)
|
||||
- React-Core/DevSupport (= 0.63.3)
|
||||
- React-Core/RCTWebSocket (= 0.63.3)
|
||||
- React-RCTActionSheet (= 0.63.3)
|
||||
- React-RCTAnimation (= 0.63.3)
|
||||
- React-RCTBlob (= 0.63.3)
|
||||
- React-RCTImage (= 0.63.3)
|
||||
- React-RCTLinking (= 0.63.3)
|
||||
- React-RCTNetwork (= 0.63.3)
|
||||
- React-RCTSettings (= 0.63.3)
|
||||
- React-RCTText (= 0.63.3)
|
||||
- React-RCTVibration (= 0.63.3)
|
||||
- React-ART (0.63.3):
|
||||
- React-Core/ARTHeaders (= 0.63.3)
|
||||
- React-callinvoker (0.63.3)
|
||||
- React-Core (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default (= 1000.0.0)
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-Core/Default (= 0.63.3)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/ARTHeaders (1000.0.0):
|
||||
- React-Core/ARTHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (1000.0.0):
|
||||
- React-Core/CoreModulesHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/Default (1000.0.0):
|
||||
- React-Core/Default (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (1000.0.0):
|
||||
- React-Core/DevSupport (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default (= 1000.0.0)
|
||||
- React-Core/RCTWebSocket (= 1000.0.0)
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-jsinspector (= 1000.0.0)
|
||||
- React-Core/Default (= 0.63.3)
|
||||
- React-Core/RCTWebSocket (= 0.63.3)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- React-jsinspector (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (1000.0.0):
|
||||
- React-Core/RCTActionSheetHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (1000.0.0):
|
||||
- React-Core/RCTAnimationHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (1000.0.0):
|
||||
- React-Core/RCTBlobHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (1000.0.0):
|
||||
- React-Core/RCTImageHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (1000.0.0):
|
||||
- React-Core/RCTLinkingHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (1000.0.0):
|
||||
- React-Core/RCTNetworkHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTPushNotificationHeaders (1000.0.0):
|
||||
- React-Core/RCTPushNotificationHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (1000.0.0):
|
||||
- React-Core/RCTSettingsHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (1000.0.0):
|
||||
- React-Core/RCTTextHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (1000.0.0):
|
||||
- React-Core/RCTVibrationHeaders (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (1000.0.0):
|
||||
- React-Core/RCTWebSocket (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-Core/Default (= 1000.0.0)
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsiexecutor (= 1000.0.0)
|
||||
- React-Core/Default (= 0.63.3)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsiexecutor (= 0.63.3)
|
||||
- Yoga
|
||||
- React-CoreModules (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- React-CoreModules (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core/CoreModulesHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-RCTImage (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-cxxreact (1000.0.0):
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core/CoreModulesHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-RCTImage (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-cxxreact (0.63.3):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 1000.0.0)
|
||||
- React-jsinspector (= 1000.0.0)
|
||||
- React-jsi (1000.0.0):
|
||||
- React-callinvoker (= 0.63.3)
|
||||
- React-jsinspector (= 0.63.3)
|
||||
- React-jsi (0.63.3):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-jsi/Default (= 1000.0.0)
|
||||
- React-jsi/Default (1000.0.0):
|
||||
- React-jsi/Default (= 0.63.3)
|
||||
- React-jsi/Default (0.63.3):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-jsiexecutor (1000.0.0):
|
||||
- React-jsiexecutor (0.63.3):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-jsinspector (1000.0.0)
|
||||
- React-RCTActionSheet (1000.0.0):
|
||||
- React-Core/RCTActionSheetHeaders (= 1000.0.0)
|
||||
- React-RCTAnimation (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-jsinspector (0.63.3)
|
||||
- React-RCTActionSheet (0.63.3):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.63.3)
|
||||
- React-RCTAnimation (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core/RCTAnimationHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTBlob (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core/RCTAnimationHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTBlob (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (= 1000.0.0)
|
||||
- React-Core/RCTWebSocket (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-RCTNetwork (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTImage (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- React-Core/RCTBlobHeaders (= 0.63.3)
|
||||
- React-Core/RCTWebSocket (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-RCTNetwork (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTImage (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core/RCTImageHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- React-RCTNetwork (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTLinking (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- React-Core/RCTLinkingHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTNetwork (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core/RCTImageHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- React-RCTNetwork (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTLinking (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- React-Core/RCTLinkingHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTNetwork (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core/RCTNetworkHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTPushNotification (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core/RCTPushNotificationHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTSettings (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core/RCTNetworkHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTPushNotification (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core/RCTPushNotificationHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTSettings (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 1000.0.0)
|
||||
- React-Core/RCTSettingsHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTTest (1000.0.0):
|
||||
- RCTTypeSafety (= 0.63.3)
|
||||
- React-Core/RCTSettingsHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTTest (0.63.3):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core (= 1000.0.0)
|
||||
- React-CoreModules (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-RCTText (1000.0.0):
|
||||
- React-Core/RCTTextHeaders (= 1000.0.0)
|
||||
- React-RCTVibration (1000.0.0):
|
||||
- FBReactNativeSpec (= 1000.0.0)
|
||||
- React-Core (= 0.63.3)
|
||||
- React-CoreModules (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- React-RCTText (0.63.3):
|
||||
- React-Core/RCTTextHeaders (= 0.63.3)
|
||||
- React-RCTVibration (0.63.3):
|
||||
- FBReactNativeSpec (= 0.63.3)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (1000.0.0):
|
||||
- React-Core/RCTVibrationHeaders (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (0.63.3):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 1000.0.0)
|
||||
- React-Core (= 1000.0.0)
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/samples (1000.0.0):
|
||||
- React-callinvoker (= 0.63.3)
|
||||
- React-Core (= 0.63.3)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/samples (0.63.3):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 1000.0.0)
|
||||
- React-Core (= 1000.0.0)
|
||||
- React-cxxreact (= 1000.0.0)
|
||||
- React-jsi (= 1000.0.0)
|
||||
- ReactCommon/turbomodule/core (= 1000.0.0)
|
||||
- React-callinvoker (= 0.63.3)
|
||||
- React-Core (= 0.63.3)
|
||||
- React-cxxreact (= 0.63.3)
|
||||
- React-jsi (= 0.63.3)
|
||||
- ReactCommon/turbomodule/core (= 0.63.3)
|
||||
- Yoga (1.14.0)
|
||||
- YogaKit (1.18.1):
|
||||
- Yoga (~> 1.14)
|
||||
@@ -343,25 +343,25 @@ DEPENDENCIES:
|
||||
- DoubleConversion (from `../third-party-podspecs/DoubleConversion.podspec`)
|
||||
- FBLazyVector (from `../Libraries/FBLazyVector`)
|
||||
- FBReactNativeSpec (from `../Libraries/FBReactNativeSpec`)
|
||||
- Flipper (~> 0.33.1)
|
||||
- Flipper (~> 0.54.0)
|
||||
- Flipper-DoubleConversion (= 1.1.7)
|
||||
- Flipper-Folly (~> 2.1)
|
||||
- Flipper-Folly (~> 2.2)
|
||||
- Flipper-Glog (= 0.3.6)
|
||||
- Flipper-PeerTalk (~> 0.0.4)
|
||||
- Flipper-RSocket (~> 1.0)
|
||||
- FlipperKit (~> 0.33.1)
|
||||
- FlipperKit/Core (~> 0.33.1)
|
||||
- FlipperKit/CppBridge (~> 0.33.1)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (~> 0.33.1)
|
||||
- FlipperKit/FBDefines (~> 0.33.1)
|
||||
- FlipperKit/FKPortForwarding (~> 0.33.1)
|
||||
- FlipperKit/FlipperKitHighlightOverlay (~> 0.33.1)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1)
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (~> 0.33.1)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (~> 0.33.1)
|
||||
- FlipperKit/FlipperKitReactPlugin (~> 0.33.1)
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1)
|
||||
- FlipperKit/SKIOSNetworkPlugin (~> 0.33.1)
|
||||
- Flipper-RSocket (~> 1.1)
|
||||
- FlipperKit (~> 0.54.0)
|
||||
- FlipperKit/Core (~> 0.54.0)
|
||||
- FlipperKit/CppBridge (~> 0.54.0)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (~> 0.54.0)
|
||||
- FlipperKit/FBDefines (~> 0.54.0)
|
||||
- FlipperKit/FKPortForwarding (~> 0.54.0)
|
||||
- FlipperKit/FlipperKitHighlightOverlay (~> 0.54.0)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (~> 0.54.0)
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (~> 0.54.0)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (~> 0.54.0)
|
||||
- FlipperKit/FlipperKitReactPlugin (~> 0.54.0)
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.54.0)
|
||||
- FlipperKit/SKIOSNetworkPlugin (~> 0.54.0)
|
||||
- Folly (from `../third-party-podspecs/Folly.podspec`)
|
||||
- glog (from `../third-party-podspecs/glog.podspec`)
|
||||
- RCTRequired (from `../Libraries/RCTRequired`)
|
||||
@@ -472,44 +472,44 @@ SPEC CHECKSUMS:
|
||||
CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845
|
||||
CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f
|
||||
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
||||
FBLazyVector: 8ea0285646adaf7fa725c20ed737c49ee5ea680a
|
||||
FBReactNativeSpec: e8f07c749b9cf184c819f5a8ca44b91ab61fca12
|
||||
Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69
|
||||
FBLazyVector: 878b59e31113e289e275165efbe4b54fa614d43d
|
||||
FBReactNativeSpec: 7da9338acfb98d4ef9e5536805a0704572d33c2f
|
||||
Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365
|
||||
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
|
||||
Flipper-Folly: 2de3d03e0acc7064d5e4ed9f730e2f217486f162
|
||||
Flipper-Folly: e4493b013c02d9347d5e0cb4d128680239f6c78a
|
||||
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
|
||||
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
|
||||
Flipper-RSocket: 1260a31c05c238eabfa9bb8a64e3983049048371
|
||||
FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e
|
||||
Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7
|
||||
FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d
|
||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
|
||||
OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355
|
||||
RCTRequired: 34582e9b3ebe69f244e091f37218d318406d5c4a
|
||||
RCTTypeSafety: 1ade47a69b092cddf1e4ea21e0c5bdc65cc950b4
|
||||
React: cafb3c2321f7df55ce90dbf29d513799a79e4418
|
||||
React-ART: df0460bdff42ef039e28ee3ffd41f50b75644788
|
||||
React-callinvoker: 0dada022d38b73e6e15b33e2a96476153f79bbf6
|
||||
React-Core: 08c69f013e6fd654ea8f9fd84bbd66780a54d886
|
||||
React-CoreModules: d13d148c851af5780f864be74bc2165140923dc7
|
||||
React-cxxreact: 091da030e879ed93d970e95dd74fcbacb2a1d661
|
||||
React-jsi: fe94132da767bfc4801968c2a12abae43e9a833e
|
||||
React-jsiexecutor: 55eff40b2e0696e7a979016e321793ec8b28a2ac
|
||||
React-jsinspector: 7fbf9b42b58b02943a0d89b0ba9fff0070f2de98
|
||||
React-RCTActionSheet: 51c43beeb74ef41189e87fe9823e53ebf6210359
|
||||
React-RCTAnimation: 9d09196c641c1ebfef3a4e9ae670bcda5fadb420
|
||||
React-RCTBlob: 715489626cf44d28ee51e5277a4d559167351696
|
||||
React-RCTImage: 19151d2d071b05c3832a0b212473cafa4ea8948f
|
||||
React-RCTLinking: 7c94c0f2fcc658cb4043dacb4f6621dca2f8f8b5
|
||||
React-RCTNetwork: 7596e84acacd5d0674e9743b55c5bf61a626af69
|
||||
React-RCTPushNotification: 88c9f47ff0d4391d5136d70745f15713cdc5f6bb
|
||||
React-RCTSettings: a29c61f85f535ba2eff54d80bef2ea3cdb6e5fba
|
||||
React-RCTTest: cfe25fcf70b04a747dba4326105db398250caa9a
|
||||
React-RCTText: 6c01963d3e562109f5548262b09b1b2bc260dd60
|
||||
React-RCTVibration: d42d73dafd9f63cf758656ee743aa80c566798ff
|
||||
ReactCommon: 39e00b754f5e1628804fab28f44146d06280f700
|
||||
Yoga: f7fa200d8c49f97b54c9421079e781fb900b5cae
|
||||
OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd
|
||||
RCTRequired: 48884c74035a0b5b76dbb7a998bd93bcfc5f2047
|
||||
RCTTypeSafety: edf4b618033c2f1c5b7bc3d90d8e085ed95ba2ab
|
||||
React: f36e90f3ceb976546e97df3403e37d226f79d0e3
|
||||
React-ART: 20c4d06a9454453e90a598c22041058733877f1e
|
||||
React-callinvoker: 18874f621eb96625df7a24a7dc8d6e07391affcd
|
||||
React-Core: ac3d816b8e3493970153f4aaf0cff18af0bb95e6
|
||||
React-CoreModules: 4016d3a4e518bcfc4f5a51252b5a05692ca6f0e1
|
||||
React-cxxreact: ffc9129013b87cb36cf3f30a86695a3c397b0f99
|
||||
React-jsi: df07aa95b39c5be3e41199921509bfa929ed2b9d
|
||||
React-jsiexecutor: b56c03e61c0dd5f5801255f2160a815f4a53d451
|
||||
React-jsinspector: 8e68ffbfe23880d3ee9bafa8be2777f60b25cbe2
|
||||
React-RCTActionSheet: 53ea72699698b0b47a6421cb1c8b4ab215a774aa
|
||||
React-RCTAnimation: 1befece0b5183c22ae01b966f5583f42e69a83c2
|
||||
React-RCTBlob: 0b284339cbe4b15705a05e2313a51c6d8b51fa40
|
||||
React-RCTImage: d1756599ebd4dc2cb19d1682fe67c6b976658387
|
||||
React-RCTLinking: 9af0a51c6d6a4dd1674daadafffc6d03033a6d18
|
||||
React-RCTNetwork: 332c83929cc5eae0b3bbca4add1d668e1fc18bda
|
||||
React-RCTPushNotification: e4c2f387783fbf1e1a66c11c1f87a11fbc720b7c
|
||||
React-RCTSettings: d6953772cfd55f2c68ad72b7ef29efc7ec49f773
|
||||
React-RCTTest: 760a5cd745953a2a875dab68841de500d6998638
|
||||
React-RCTText: 65a6de06a7389098ce24340d1d3556015c38f746
|
||||
React-RCTVibration: 8e9fb25724a0805107fc1acc9075e26f814df454
|
||||
ReactCommon: 4167844018c9ed375cc01a843e9ee564399e53c3
|
||||
Yoga: 7d13633d129fd179e01b8953d38d47be90db185a
|
||||
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
|
||||
|
||||
PODFILE CHECKSUM: 5f0be4be03d6934478b9dd621bfbab4383b8c85d
|
||||
|
||||
COCOAPODS: 1.9.1
|
||||
COCOAPODS: 1.10.0
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/>
|
||||
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) Facebook, Inc. and its affiliates." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
|
||||
<rect key="frame" x="20" y="439" width="441" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RNTester" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
|
||||
<rect key="frame" x="20" y="140" width="441" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
|
||||
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
|
||||
<constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
|
||||
<constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
|
||||
<constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
|
||||
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<point key="canvasLocation" x="548" y="455"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
|
||||
<rect key="frame" x="0.0" y="647" width="375" height="0.0"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RNTester" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
||||
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) Facebook, Inc. and its affiliates." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
|
||||
<rect key="frame" x="0.0" y="626" width="375" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
||||
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/>
|
||||
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
|
||||
<constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
|
||||
<constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="52.173913043478265" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -3,11 +3,10 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objectVersion = 51;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
272E6B3F1BEA849E001FCF37 /* UpdatePropertiesExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.m */; };
|
||||
27F441EC1BEBE5030039B79C /* FlexibleSizeExampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.m */; };
|
||||
@@ -18,6 +17,7 @@
|
||||
5CB07C9B226467E60039471C /* RNTesterTurboModuleProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB07C99226467E60039471C /* RNTesterTurboModuleProvider.mm */; };
|
||||
6766440649168A1FAD1DB4A4 /* libPods-RNTesterIntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F836A7C97EC1BA121BA5A2A /* libPods-RNTesterIntegrationTests.a */; };
|
||||
6ABAB5205C9B8E0726E12033 /* libPods-RNTester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5C8E567A4E6281113811CB1 /* libPods-RNTester.a */; };
|
||||
8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */; };
|
||||
85C7978AB28C149170A56955 /* libPods-RNTesterUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11941849F77C552FDC3EED77 /* libPods-RNTesterUnitTests.a */; };
|
||||
E7C1241A22BEC44B00DA25C0 /* RNTesterIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7C1241922BEC44B00DA25C0 /* RNTesterIntegrationTests.m */; };
|
||||
E7DB20D122B2BAA6005AC45F /* RCTBundleURLProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20A922B2BAA3005AC45F /* RCTBundleURLProviderTests.m */; };
|
||||
@@ -73,7 +73,6 @@
|
||||
11941849F77C552FDC3EED77 /* libPods-RNTesterUnitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterUnitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07F961A680F5B00A75B9A /* RNTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RNTester.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RNTester/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNTester/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RNTester/main.m; sourceTree = "<group>"; };
|
||||
272E6B3B1BEA849E001FCF37 /* UpdatePropertiesExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UpdatePropertiesExampleView.h; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.h; sourceTree = "<group>"; };
|
||||
@@ -90,6 +89,7 @@
|
||||
5CB07C9A226467E60039471C /* RNTesterTurboModuleProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNTesterTurboModuleProvider.h; path = RNTester/RNTesterTurboModuleProvider.h; sourceTree = "<group>"; };
|
||||
5F836A7C97EC1BA121BA5A2A /* libPods-RNTesterIntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterIntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7D51F73F0DA20287418D98BD /* Pods-RNTesterIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNTester/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
972A459EE6CF8CC63531A088 /* Pods-RNTesterIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
98233960D1D6A1977D1C7EAF /* Pods-RNTester.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RNTester/Pods-RNTester.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B5C8E567A4E6281113811CB1 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -219,7 +219,7 @@
|
||||
5CB07C99226467E60039471C /* RNTesterTurboModuleProvider.mm */,
|
||||
13B07FB71A68108700A75B9A /* main.m */,
|
||||
2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */,
|
||||
13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
|
||||
8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */,
|
||||
680759612239798500290469 /* Fabric */,
|
||||
272E6B3A1BEA846C001FCF37 /* NativeExampleViews */,
|
||||
1323F18D1C04ABAC0091BED0 /* Supporting Files */,
|
||||
@@ -492,8 +492,8 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2DDEF0101F84BF7B00DBDF73 /* Images.xcassets in Resources */,
|
||||
8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */,
|
||||
3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */,
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -730,18 +730,6 @@
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
13B07FB21A68108700A75B9A /* Base */,
|
||||
);
|
||||
name = LaunchScreen.xib;
|
||||
path = RNTester;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
@@ -796,6 +784,10 @@
|
||||
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
|
||||
);
|
||||
"LIBRARY_SEARCH_PATHS[arch=*]" = "$(inherited)";
|
||||
OTHER_CFLAGS = (
|
||||
"$(inherited)",
|
||||
"-DFB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -803,6 +795,7 @@
|
||||
"-framework",
|
||||
"\"JavaScriptCore\"",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.react.uiapp;
|
||||
PRODUCT_NAME = RNTester;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -857,6 +850,10 @@
|
||||
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
|
||||
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
|
||||
);
|
||||
OTHER_CFLAGS = (
|
||||
"$(inherited)",
|
||||
"-DFB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -864,6 +861,7 @@
|
||||
"-framework",
|
||||
"\"JavaScriptCore\"",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.react.uiapp;
|
||||
PRODUCT_NAME = RNTester;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -1056,6 +1054,7 @@
|
||||
"$(inherited)",
|
||||
"-DFB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.RNTesterUnitTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -1091,6 +1090,7 @@
|
||||
"$(inherited)",
|
||||
"-DFB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.RNTesterUnitTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -1127,6 +1127,7 @@
|
||||
"$(inherited)",
|
||||
"-DFB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.RNTesterIntegrationTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -1160,6 +1161,7 @@
|
||||
"$(inherited)",
|
||||
"-DFB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.RNTesterIntegrationTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
|
||||
@@ -71,7 +71,7 @@ project.ext.react = [
|
||||
root: "$rootDir",
|
||||
inputExcludes: ["android/**", "./**", ".gradle/**"],
|
||||
composeSourceMapsPath: "$rootDir/scripts/compose-source-maps.js",
|
||||
hermesCommand: "../../../node_modules/hermes-engine/%OS-BIN%/hermes",
|
||||
hermesCommand: "../../../node_modules/hermes-engine/%OS-BIN%/hermesc",
|
||||
enableHermesForVariant: { def v -> v.name.contains("hermes") }
|
||||
]
|
||||
|
||||
|
||||
@@ -9,4 +9,4 @@ android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.33.1
|
||||
FLIPPER_VERSION=0.54.0
|
||||
|
||||
@@ -29,94 +29,94 @@ function PlatformColorsExample() {
|
||||
colors = [
|
||||
// https://developer.apple.com/documentation/uikit/uicolor/ui_element_colors
|
||||
// Label Colors
|
||||
{label: 'labelColor', color: PlatformColor('labelColor')},
|
||||
{label: 'label', color: PlatformColor('label')},
|
||||
{
|
||||
label: 'secondaryLabelColor',
|
||||
color: PlatformColor('secondaryLabelColor'),
|
||||
label: 'secondaryLabel',
|
||||
color: PlatformColor('secondaryLabel'),
|
||||
},
|
||||
{
|
||||
label: 'tertiaryLabelColor',
|
||||
color: PlatformColor('tertiaryLabelColor'),
|
||||
label: 'tertiaryLabel',
|
||||
color: PlatformColor('tertiaryLabel'),
|
||||
},
|
||||
{
|
||||
label: 'quaternaryLabelColor',
|
||||
color: PlatformColor('quaternaryLabelColor'),
|
||||
label: 'quaternaryLabel',
|
||||
color: PlatformColor('quaternaryLabel'),
|
||||
},
|
||||
// Fill Colors
|
||||
{label: 'systemFillColor', color: PlatformColor('systemFillColor')},
|
||||
{label: 'systemFill', color: PlatformColor('systemFill')},
|
||||
{
|
||||
label: 'secondarySystemFillColor',
|
||||
color: PlatformColor('secondarySystemFillColor'),
|
||||
label: 'secondarySystemFill',
|
||||
color: PlatformColor('secondarySystemFill'),
|
||||
},
|
||||
{
|
||||
label: 'tertiarySystemFillColor',
|
||||
color: PlatformColor('tertiarySystemFillColor'),
|
||||
label: 'tertiarySystemFill',
|
||||
color: PlatformColor('tertiarySystemFill'),
|
||||
},
|
||||
{
|
||||
label: 'quaternarySystemFillColor',
|
||||
color: PlatformColor('quaternarySystemFillColor'),
|
||||
label: 'quaternarySystemFill',
|
||||
color: PlatformColor('quaternarySystemFill'),
|
||||
},
|
||||
// Text Colors
|
||||
{
|
||||
label: 'placeholderTextColor',
|
||||
color: PlatformColor('placeholderTextColor'),
|
||||
label: 'placeholderText',
|
||||
color: PlatformColor('placeholderText'),
|
||||
},
|
||||
// Standard Content Background Colors
|
||||
{
|
||||
label: 'systemBackgroundColor',
|
||||
color: PlatformColor('systemBackgroundColor'),
|
||||
label: 'systemBackground',
|
||||
color: PlatformColor('systemBackground'),
|
||||
},
|
||||
{
|
||||
label: 'secondarySystemBackgroundColor',
|
||||
color: PlatformColor('secondarySystemBackgroundColor'),
|
||||
label: 'secondarySystemBackground',
|
||||
color: PlatformColor('secondarySystemBackground'),
|
||||
},
|
||||
{
|
||||
label: 'tertiarySystemBackgroundColor',
|
||||
color: PlatformColor('tertiarySystemBackgroundColor'),
|
||||
label: 'tertiarySystemBackground',
|
||||
color: PlatformColor('tertiarySystemBackground'),
|
||||
},
|
||||
// Grouped Content Background Colors
|
||||
{
|
||||
label: 'systemGroupedBackgroundColor',
|
||||
color: PlatformColor('systemGroupedBackgroundColor'),
|
||||
label: 'systemGroupedBackground',
|
||||
color: PlatformColor('systemGroupedBackground'),
|
||||
},
|
||||
{
|
||||
label: 'secondarySystemGroupedBackgroundColor',
|
||||
color: PlatformColor('secondarySystemGroupedBackgroundColor'),
|
||||
label: 'secondarySystemGroupedBackground',
|
||||
color: PlatformColor('secondarySystemGroupedBackground'),
|
||||
},
|
||||
{
|
||||
label: 'tertiarySystemGroupedBackgroundColor',
|
||||
color: PlatformColor('tertiarySystemGroupedBackgroundColor'),
|
||||
label: 'tertiarySystemGroupedBackground',
|
||||
color: PlatformColor('tertiarySystemGroupedBackground'),
|
||||
},
|
||||
// Separator Colors
|
||||
{label: 'separatorColor', color: PlatformColor('separatorColor')},
|
||||
{label: 'separator', color: PlatformColor('separator')},
|
||||
{
|
||||
label: 'opaqueSeparatorColor',
|
||||
color: PlatformColor('opaqueSeparatorColor'),
|
||||
label: 'opaqueSeparator',
|
||||
color: PlatformColor('opaqueSeparator'),
|
||||
},
|
||||
// Link Color
|
||||
{label: 'linkColor', color: PlatformColor('linkColor')},
|
||||
{label: 'link', color: PlatformColor('link')},
|
||||
// Nonadaptable Colors
|
||||
{label: 'darkTextColor', color: PlatformColor('darkTextColor')},
|
||||
{label: 'lightTextColor', color: PlatformColor('lightTextColor')},
|
||||
{label: 'darkText', color: PlatformColor('darkText')},
|
||||
{label: 'lightText', color: PlatformColor('lightText')},
|
||||
// https://developer.apple.com/documentation/uikit/uicolor/standard_colors
|
||||
// Adaptable Colors
|
||||
{label: 'systemBlueColor', color: PlatformColor('systemBlueColor')},
|
||||
{label: 'systemBrownColor', color: PlatformColor('systemBrownColor')},
|
||||
{label: 'systemGreenColor', color: PlatformColor('systemGreenColor')},
|
||||
{label: 'systemIndigoColor', color: PlatformColor('systemIndigoColor')},
|
||||
{label: 'systemOrangeColor', color: PlatformColor('systemOrangeColor')},
|
||||
{label: 'systemPinkColor', color: PlatformColor('systemPinkColor')},
|
||||
{label: 'systemPurpleColor', color: PlatformColor('systemPurpleColor')},
|
||||
{label: 'systemRedColor', color: PlatformColor('systemRedColor')},
|
||||
{label: 'systemTealColor', color: PlatformColor('systemTealColor')},
|
||||
{label: 'systemYellowColor', color: PlatformColor('systemYellowColor')},
|
||||
{label: 'systemBlue', color: PlatformColor('systemBlue')},
|
||||
{label: 'systemBrown', color: PlatformColor('systemBrown')},
|
||||
{label: 'systemGreen', color: PlatformColor('systemGreen')},
|
||||
{label: 'systemIndigo', color: PlatformColor('systemIndigo')},
|
||||
{label: 'systemOrange', color: PlatformColor('systemOrange')},
|
||||
{label: 'systemPink', color: PlatformColor('systemPink')},
|
||||
{label: 'systemPurple', color: PlatformColor('systemPurple')},
|
||||
{label: 'systemRed', color: PlatformColor('systemRed')},
|
||||
{label: 'systemTeal', color: PlatformColor('systemTeal')},
|
||||
{label: 'systemYellow', color: PlatformColor('systemYellow')},
|
||||
// Adaptable Gray Colors
|
||||
{label: 'systemGrayColor', color: PlatformColor('systemGrayColor')},
|
||||
{label: 'systemGray2Color', color: PlatformColor('systemGray2Color')},
|
||||
{label: 'systemGray3Color', color: PlatformColor('systemGray3Color')},
|
||||
{label: 'systemGray4Color', color: PlatformColor('systemGray4Color')},
|
||||
{label: 'systemGray5Color', color: PlatformColor('systemGray5Color')},
|
||||
{label: 'systemGray6Color', color: PlatformColor('systemGray6Color')},
|
||||
{label: 'systemGray', color: PlatformColor('systemGray')},
|
||||
{label: 'systemGray2', color: PlatformColor('systemGray2')},
|
||||
{label: 'systemGray3', color: PlatformColor('systemGray3')},
|
||||
{label: 'systemGray4', color: PlatformColor('systemGray4')},
|
||||
{label: 'systemGray5', color: PlatformColor('systemGray5')},
|
||||
{label: 'systemGray6', color: PlatformColor('systemGray6')},
|
||||
];
|
||||
} else if (Platform.OS === 'android') {
|
||||
colors = [
|
||||
|
||||
@@ -161,9 +161,9 @@ class RewriteInvalidCharactersAndClearExample extends React.Component<
|
||||
ref={ref => {
|
||||
this.inputRef = ref;
|
||||
}}
|
||||
multiline={false}
|
||||
multiline={true}
|
||||
onChangeText={text => {
|
||||
this.setState({text: text.replace(/\s/g, '')});
|
||||
this.setState({text: text.replace(/ /g, '')});
|
||||
}}
|
||||
style={styles.default}
|
||||
value={this.state.text}
|
||||
|
||||
@@ -148,12 +148,53 @@ exports.examples = [
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'Circle with Border Radius',
|
||||
title: 'Rounded Borders',
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View
|
||||
style={{borderRadius: 10, borderWidth: 1, width: 20, height: 20}}
|
||||
/>
|
||||
<View style={{flexDirection: 'row'}}>
|
||||
<View
|
||||
style={{
|
||||
width: 50,
|
||||
height: 50,
|
||||
borderRadius: 25,
|
||||
borderWidth: 1,
|
||||
marginRight: 10,
|
||||
}}
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
width: 50,
|
||||
height: 50,
|
||||
borderRadius: 25,
|
||||
borderWidth: 10,
|
||||
marginRight: 10,
|
||||
}}
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
width: 50,
|
||||
height: 50,
|
||||
borderTopLeftRadius: 5,
|
||||
borderTopRightRadius: 10,
|
||||
borderBottomRightRadius: 25,
|
||||
borderBottomLeftRadius: 50,
|
||||
borderWidth: 1,
|
||||
marginRight: 10,
|
||||
}}
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
width: 50,
|
||||
height: 50,
|
||||
borderTopLeftRadius: 5,
|
||||
borderTopRightRadius: 10,
|
||||
borderBottomRightRadius: 25,
|
||||
borderBottomLeftRadius: 50,
|
||||
borderWidth: 10,
|
||||
marginRight: 10,
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
},
|
||||
},
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ Pod::Spec.new do |s|
|
||||
s.header_dir = "React"
|
||||
s.framework = "JavaScriptCore"
|
||||
s.library = "stdc++"
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Folly\"" }
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Folly\"", "DEFINES_MODULE" => "YES" }
|
||||
s.user_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/Headers/Private/React-Core\""}
|
||||
s.default_subspec = "Default"
|
||||
|
||||
|
||||
+19
-2
@@ -604,7 +604,7 @@ static NSDictionary<NSString *, NSDictionary *> *RCTSemanticColorsMap()
|
||||
{
|
||||
static NSDictionary<NSString *, NSDictionary *> *colorMap = nil;
|
||||
if (colorMap == nil) {
|
||||
colorMap = @{
|
||||
NSMutableDictionary<NSString *, NSDictionary *> *map = [@{
|
||||
// https://developer.apple.com/documentation/uikit/uicolor/ui_element_colors
|
||||
// Label Colors
|
||||
@"labelColor" : @{
|
||||
@@ -729,7 +729,22 @@ static NSDictionary<NSString *, NSDictionary *> *RCTSemanticColorsMap()
|
||||
// iOS 13.0
|
||||
RCTFallbackARGB : @(0xFFf2f2f7)
|
||||
},
|
||||
} mutableCopy];
|
||||
// The color names are the Objective-C UIColor selector names,
|
||||
// but Swift selector names are valid as well, so make aliases.
|
||||
static NSString *const RCTColorSuffix = @"Color";
|
||||
NSMutableDictionary<NSString *, NSDictionary *> *aliases = [NSMutableDictionary new];
|
||||
for (NSString *objcSelector in map) {
|
||||
RCTAssert([objcSelector hasSuffix:RCTColorSuffix], @"A selector in the color map did not end with the suffix Color.");
|
||||
NSMutableDictionary *entry = [map[objcSelector] mutableCopy];
|
||||
RCTAssert([entry objectForKey:RCTSelector] == nil, @"Entry should not already have an RCTSelector");
|
||||
NSString *swiftSelector = [objcSelector substringToIndex:[objcSelector length] - [RCTColorSuffix length]];
|
||||
entry[RCTSelector] = objcSelector;
|
||||
aliases[swiftSelector] = entry;
|
||||
}
|
||||
[map addEntriesFromDictionary:aliases];
|
||||
#if DEBUG
|
||||
[map addEntriesFromDictionary:@{
|
||||
// The follow exist for Unit Tests
|
||||
@"unitTestFallbackColor" : @{RCTFallback : @"gridColor"},
|
||||
@"unitTestFallbackColorIOS" : @{RCTFallback : @"blueColor"},
|
||||
@@ -743,9 +758,11 @@ static NSDictionary<NSString *, NSDictionary *> *RCTSemanticColorsMap()
|
||||
RCTIndex : @1,
|
||||
RCTFallback : @"controlAlternatingRowBackgroundColors"
|
||||
},
|
||||
}];
|
||||
#endif
|
||||
};
|
||||
colorMap = [map copy];
|
||||
}
|
||||
|
||||
return colorMap;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,11 +21,11 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^(void){
|
||||
__rnVersion = @{
|
||||
RCTVersionMajor: @(0),
|
||||
RCTVersionMinor: @(0),
|
||||
RCTVersionPatch: @(0),
|
||||
RCTVersionPrerelease: [NSNull null],
|
||||
};
|
||||
RCTVersionMajor: @(0),
|
||||
RCTVersionMinor: @(63),
|
||||
RCTVersionPatch: @(4),
|
||||
RCTVersionPrerelease: [NSNull null],
|
||||
};
|
||||
});
|
||||
return __rnVersion;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* 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 <UIKit/UIKit.h>
|
||||
|
||||
@interface RCTAlertController : UIAlertController
|
||||
|
||||
- (void)show:(BOOL)animated completion:(void (^)(void))completion;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* 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/RCTUtils.h>
|
||||
|
||||
#import "RCTAlertController.h"
|
||||
|
||||
@interface RCTAlertController ()
|
||||
|
||||
@property (nonatomic, strong) UIWindow *alertWindow;
|
||||
|
||||
@end
|
||||
|
||||
@implementation RCTAlertController
|
||||
|
||||
- (UIWindow *)alertWindow
|
||||
{
|
||||
if (_alertWindow == nil) {
|
||||
_alertWindow = [[UIWindow alloc] initWithFrame:RCTSharedApplication().keyWindow.bounds];
|
||||
_alertWindow.rootViewController = [UIViewController new];
|
||||
_alertWindow.windowLevel = UIWindowLevelAlert + 1;
|
||||
}
|
||||
return _alertWindow;
|
||||
}
|
||||
|
||||
- (void)show:(BOOL)animated completion:(void (^)(void))completion
|
||||
{
|
||||
[self.alertWindow makeKeyAndVisible];
|
||||
[self.alertWindow.rootViewController presentViewController:self animated:animated completion:completion];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -15,6 +15,7 @@
|
||||
#import <React/RCTUtils.h>
|
||||
|
||||
#import "CoreModulesPlugins.h"
|
||||
#import "RCTAlertController.h"
|
||||
|
||||
@implementation RCTConvert (UIAlertViewStyle)
|
||||
|
||||
@@ -99,29 +100,9 @@ RCT_EXPORT_METHOD(alertWithArgs : (JS::NativeAlertManager::Args &)args callback
|
||||
}
|
||||
}
|
||||
|
||||
UIViewController *presentingController = RCTPresentedViewController();
|
||||
if (presentingController == nil) {
|
||||
RCTLogError(@"Tried to display alert view but there is no application window. args: %@", @{
|
||||
@"title" : args.title() ?: [NSNull null],
|
||||
@"message" : args.message() ?: [NSNull null],
|
||||
@"buttons" : RCTConvertOptionalVecToArray(
|
||||
args.buttons(),
|
||||
^id(id<NSObject> element) {
|
||||
return element;
|
||||
})
|
||||
?: [NSNull null],
|
||||
@"type" : args.type() ?: [NSNull null],
|
||||
@"defaultValue" : args.defaultValue() ?: [NSNull null],
|
||||
@"cancelButtonKey" : args.cancelButtonKey() ?: [NSNull null],
|
||||
@"destructiveButtonKey" : args.destructiveButtonKey() ?: [NSNull null],
|
||||
@"keyboardType" : args.keyboardType() ?: [NSNull null],
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
RCTAlertController *alertController = [RCTAlertController alertControllerWithTitle:title
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
switch (type) {
|
||||
case RCTAlertViewStylePlainTextInput: {
|
||||
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
|
||||
@@ -170,7 +151,7 @@ RCT_EXPORT_METHOD(alertWithArgs : (JS::NativeAlertManager::Args &)args callback
|
||||
} else if ([buttonKey isEqualToString:destructiveButtonKey]) {
|
||||
buttonStyle = UIAlertActionStyleDestructive;
|
||||
}
|
||||
__weak UIAlertController *weakAlertController = alertController;
|
||||
__weak RCTAlertController *weakAlertController = alertController;
|
||||
[alertController
|
||||
addAction:[UIAlertAction
|
||||
actionWithTitle:buttonTitle
|
||||
@@ -202,7 +183,7 @@ RCT_EXPORT_METHOD(alertWithArgs : (JS::NativeAlertManager::Args &)args callback
|
||||
[_alertControllers addObject:alertController];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[presentingController presentViewController:alertController animated:YES completion:nil];
|
||||
[alertController show:YES completion:nil];
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -166,7 +166,9 @@ RCT_EXPORT_METHOD(close : (double)code reason : (NSString *)reason socketID : (d
|
||||
NSNumber *socketID = [webSocket reactTag];
|
||||
_contentHandlers[socketID] = nil;
|
||||
_sockets[socketID] = nil;
|
||||
[self sendEventWithName:@"websocketFailed" body:@{@"message" : error.localizedDescription, @"id" : socketID}];
|
||||
NSDictionary *body =
|
||||
@{@"message" : error.localizedDescription ?: @"Undefined, error is nil", @"id" : socketID ?: @(-1)};
|
||||
[self sendEventWithName:@"websocketFailed" body:body];
|
||||
}
|
||||
|
||||
- (void)webSocket:(RCTSRWebSocket *)webSocket
|
||||
|
||||
@@ -302,7 +302,10 @@ using namespace facebook::react;
|
||||
{
|
||||
if (!_backedTextInputView.textWasPasted) {
|
||||
if (_eventEmitter) {
|
||||
std::static_pointer_cast<TextInputEventEmitter const>(_eventEmitter)->onKeyPress([self _textInputMetrics]);
|
||||
KeyPressMetrics keyPressMetrics;
|
||||
keyPressMetrics.text = RCTStringFromNSString(text);
|
||||
keyPressMetrics.eventCount = _mostRecentEventCount;
|
||||
std::static_pointer_cast<TextInputEventEmitter const>(_eventEmitter)->onKeyPress(keyPressMetrics);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,11 +407,6 @@ using namespace facebook::react;
|
||||
[_backedTextInputView resignFirstResponder];
|
||||
}
|
||||
|
||||
- (void)setMostRecentEventCount:(NSInteger)eventCount
|
||||
{
|
||||
_mostRecentEventCount = eventCount;
|
||||
}
|
||||
|
||||
- (void)setTextAndSelection:(NSInteger)eventCount
|
||||
value:(NSString *__nullable)value
|
||||
start:(NSInteger)start
|
||||
|
||||
@@ -14,7 +14,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol RCTTextInputViewProtocol <NSObject>
|
||||
- (void)focus;
|
||||
- (void)blur;
|
||||
- (void)setMostRecentEventCount:(NSInteger)eventCount;
|
||||
- (void)setTextAndSelection:(NSInteger)eventCount
|
||||
value:(NSString *__nullable)value
|
||||
start:(NSInteger)start
|
||||
@@ -50,27 +49,6 @@ RCTTextInputHandleCommand(id<RCTTextInputViewProtocol> componentView, NSString c
|
||||
return;
|
||||
}
|
||||
|
||||
if ([commandName isEqualToString:@"setMostRecentEventCount"]) {
|
||||
#if RCT_DEBUG
|
||||
if ([args count] != 1) {
|
||||
RCTLogError(
|
||||
@"%@ command %@ received %d arguments, expected %d.", @"TextInput", commandName, (int)[args count], 1);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
NSObject *arg0 = args[0];
|
||||
#if RCT_DEBUG
|
||||
if (!RCTValidateTypeOfViewCommandArgument(arg0, [NSNumber class], @"number", @"TextInput", commandName, @"1st")) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
NSInteger eventCount = [(NSNumber *)arg0 intValue];
|
||||
|
||||
[componentView setMostRecentEventCount:eventCount];
|
||||
return;
|
||||
}
|
||||
|
||||
if ([commandName isEqualToString:@"setTextAndSelection"]) {
|
||||
#if RCT_DEBUG
|
||||
if ([args count] != 4) {
|
||||
|
||||
@@ -65,6 +65,7 @@ static const NSUInteger kMatrixArrayLength = 4 * 4;
|
||||
|
||||
CGFloat zeroScaleThreshold = FLT_EPSILON;
|
||||
|
||||
CATransform3D next;
|
||||
for (NSDictionary *transformConfig in (NSArray<NSDictionary *> *)json) {
|
||||
if (transformConfig.count != 1) {
|
||||
RCTLogConvertError(json, @"a CATransform3D. You must specify exactly one property per transform object.");
|
||||
@@ -74,10 +75,13 @@ static const NSUInteger kMatrixArrayLength = 4 * 4;
|
||||
id value = transformConfig[property];
|
||||
|
||||
if ([property isEqualToString:@"matrix"]) {
|
||||
transform = [self CATransform3DFromMatrix:value];
|
||||
next = [self CATransform3DFromMatrix:value];
|
||||
transform = CATransform3DConcat(next, transform);
|
||||
|
||||
} else if ([property isEqualToString:@"perspective"]) {
|
||||
transform.m34 = -1 / [value floatValue];
|
||||
next = CATransform3DIdentity;
|
||||
next.m34 = -1 / [value floatValue];
|
||||
transform = CATransform3DConcat(next, transform);
|
||||
|
||||
} else if ([property isEqualToString:@"rotateX"]) {
|
||||
CGFloat rotate = [self convertToRadians:value];
|
||||
@@ -123,11 +127,15 @@ static const NSUInteger kMatrixArrayLength = 4 * 4;
|
||||
|
||||
} else if ([property isEqualToString:@"skewX"]) {
|
||||
CGFloat skew = [self convertToRadians:value];
|
||||
transform.m21 = tanf(skew);
|
||||
next = CATransform3DIdentity;
|
||||
next.m21 = tanf(skew);
|
||||
transform = CATransform3DConcat(next, transform);
|
||||
|
||||
} else if ([property isEqualToString:@"skewY"]) {
|
||||
CGFloat skew = [self convertToRadians:value];
|
||||
transform.m12 = tanf(skew);
|
||||
next = CATransform3DIdentity;
|
||||
next.m12 = tanf(skew);
|
||||
transform = CATransform3DConcat(next, transform);
|
||||
|
||||
} else {
|
||||
RCTLogError(@"Unsupported transform type for a CATransform3D: %@.", property);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION_NAME=1000.0.0-master
|
||||
VERSION_NAME=0.63.4
|
||||
GROUP=com.facebook.react
|
||||
|
||||
POM_NAME=ReactNative
|
||||
@@ -13,8 +13,8 @@ FEST_ASSERT_CORE_VERSION=2.0M10
|
||||
|
||||
ANDROIDX_TEST_VERSION=1.1.0
|
||||
FRESCO_VERSION=2.0.0
|
||||
OKHTTP_VERSION=3.12.1
|
||||
SO_LOADER_VERSION=0.8.2
|
||||
OKHTTP_VERSION=3.12.12
|
||||
SO_LOADER_VERSION=0.9.0
|
||||
|
||||
BOOST_VERSION=1_63_0
|
||||
DOUBLE_CONVERSION_VERSION=1.1.6
|
||||
|
||||
Vendored
+3
@@ -51,6 +51,9 @@
|
||||
-dontwarn com.facebook.react.**
|
||||
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
|
||||
|
||||
# hermes
|
||||
-keep class com.facebook.jni.** { *; }
|
||||
|
||||
# okhttp
|
||||
|
||||
-keepattributes Signature
|
||||
|
||||
@@ -10,7 +10,6 @@ package com.facebook.react;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.devsupport.JSCHeapCapture;
|
||||
import com.facebook.react.devsupport.JSDevSupport;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.module.annotations.ReactModuleList;
|
||||
import com.facebook.react.module.model.ReactModuleInfo;
|
||||
@@ -50,10 +49,7 @@ public class DebugCorePackage extends TurboReactPackage {
|
||||
return (ReactModuleInfoProvider) reactModuleInfoProviderClass.newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
// In OSS case, the annotation processor does not run. We fall back on creating this by hand
|
||||
Class<? extends NativeModule>[] moduleList =
|
||||
new Class[] {
|
||||
JSCHeapCapture.class, JSDevSupport.class,
|
||||
};
|
||||
Class<? extends NativeModule>[] moduleList = new Class[] {JSCHeapCapture.class};
|
||||
|
||||
final Map<String, ReactModuleInfo> reactModuleInfoMap = new HashMap<>();
|
||||
for (Class<? extends NativeModule> moduleClass : moduleList) {
|
||||
|
||||
@@ -689,7 +689,7 @@ public class ReactRootView extends FrameLayout implements RootView, ReactRoot {
|
||||
sendEvent(
|
||||
"keyboardDidHide",
|
||||
createKeyboardEventPayload(
|
||||
PixelUtil.toDIPFromPixel(mVisibleViewArea.height()),
|
||||
PixelUtil.toDIPFromPixel(mLastHeight),
|
||||
0,
|
||||
PixelUtil.toDIPFromPixel(mVisibleViewArea.width()),
|
||||
0));
|
||||
@@ -705,6 +705,7 @@ public class ReactRootView extends FrameLayout implements RootView, ReactRoot {
|
||||
return;
|
||||
}
|
||||
mDeviceRotation = rotation;
|
||||
DisplayMetricsHolder.initDisplayMetrics(getContext().getApplicationContext());
|
||||
emitOrientationChanged(rotation);
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ public class ReadableNativeMap extends NativeMap implements ReadableMap {
|
||||
if (hasKey(name)) {
|
||||
return getLocalMap().get(name);
|
||||
}
|
||||
throw new NoSuchKeyException(name);
|
||||
return null;
|
||||
}
|
||||
|
||||
private @Nullable <T> T getNullableValue(String name, Class<T> type) {
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import java.util.Map;
|
||||
public class ReactNativeVersion {
|
||||
public static final Map<String, Object> VERSION = MapBuilder.<String, Object>of(
|
||||
"major", 0,
|
||||
"minor", 0,
|
||||
"patch", 0,
|
||||
"minor", 63,
|
||||
"patch", 4,
|
||||
"prerelease", null);
|
||||
}
|
||||
|
||||
@@ -169,10 +169,6 @@ public class MatrixMathHelper {
|
||||
skew[0] = v3Dot(row[0], row[1]);
|
||||
row[1] = v3Combine(row[1], row[0], 1.0, -skew[0]);
|
||||
|
||||
// Compute XY shear factor and make 2nd row orthogonal to 1st.
|
||||
skew[0] = v3Dot(row[0], row[1]);
|
||||
row[1] = v3Combine(row[1], row[0], 1.0, -skew[0]);
|
||||
|
||||
// Now, compute Y scale and normalize 2nd row.
|
||||
scale[1] = v3Length(row[1]);
|
||||
row[1] = v3Normalize(row[1], scale[1]);
|
||||
|
||||
+12
-9
@@ -1,12 +1,11 @@
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
||||
*/
|
||||
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
*
|
||||
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
||||
*/
|
||||
package com.facebook.react.viewmanagers;
|
||||
|
||||
import android.view.View;
|
||||
@@ -16,10 +15,14 @@ import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
||||
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
||||
import com.facebook.react.uimanager.LayoutShadowNode;
|
||||
|
||||
public class AndroidDropdownPickerManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & AndroidDropdownPickerManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
||||
public class AndroidDropdownPickerManagerDelegate<
|
||||
T extends View,
|
||||
U extends BaseViewManagerInterface<T> & AndroidDropdownPickerManagerInterface<T>>
|
||||
extends BaseViewManagerDelegate<T, U> {
|
||||
public AndroidDropdownPickerManagerDelegate(U viewManager) {
|
||||
super(viewManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProperty(T view, String propName, @Nullable Object value) {
|
||||
switch (propName) {
|
||||
|
||||
+6
@@ -8,6 +8,7 @@
|
||||
package com.facebook.react.views.picker;
|
||||
|
||||
import android.widget.Spinner;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
import com.facebook.react.uimanager.ViewManagerDelegate;
|
||||
@@ -41,4 +42,9 @@ public class ReactDropdownPickerManager extends ReactPickerManager
|
||||
protected ViewManagerDelegate<ReactPicker> getDelegate() {
|
||||
return mDelegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBackgroundColor(@NonNull ReactPicker view, int backgroundColor) {
|
||||
view.setStagedBackgroundColor(backgroundColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,14 @@
|
||||
package com.facebook.react.views.picker;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Spinner;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSpinner;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import com.facebook.react.common.annotations.VisibleForTesting;
|
||||
import java.util.List;
|
||||
|
||||
@@ -173,6 +175,7 @@ public class ReactPicker extends AppCompatSpinner {
|
||||
&& adapter != null
|
||||
&& mStagedPrimaryTextColor != adapter.getPrimaryTextColor()) {
|
||||
adapter.setPrimaryTextColor(mStagedPrimaryTextColor);
|
||||
ViewCompat.setBackgroundTintList(this, ColorStateList.valueOf(mStagedPrimaryTextColor));
|
||||
mStagedPrimaryTextColor = null;
|
||||
}
|
||||
|
||||
|
||||
+31
-1
@@ -50,6 +50,8 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
||||
private static final String CONTENT_OFFSET_LEFT = "contentOffsetLeft";
|
||||
private static final String CONTENT_OFFSET_TOP = "contentOffsetTop";
|
||||
|
||||
private static final int UNSET_CONTENT_OFFSET = -1;
|
||||
|
||||
private final OnScrollDispatchHelper mOnScrollDispatchHelper = new OnScrollDispatchHelper();
|
||||
private final @Nullable OverScroller mScroller;
|
||||
private final VelocityHelper mVelocityHelper = new VelocityHelper();
|
||||
@@ -76,6 +78,8 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
||||
private boolean mSnapToEnd = true;
|
||||
private ReactViewBackgroundManager mReactBackgroundManager;
|
||||
private boolean mPagedArrowScrolling = false;
|
||||
private int pendingContentOffsetX = UNSET_CONTENT_OFFSET;
|
||||
private int pendingContentOffsetY = UNSET_CONTENT_OFFSET;
|
||||
private @Nullable StateWrapper mStateWrapper;
|
||||
|
||||
private final Rect mTempRect = new Rect();
|
||||
@@ -224,7 +228,13 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
||||
// Call with the present values in order to re-layout if necessary
|
||||
reactScrollTo(getScrollX(), getScrollY());
|
||||
// If a "pending" value has been set, we restore that value.
|
||||
// That value gets cleared by reactScrollTo.
|
||||
int scrollToX =
|
||||
pendingContentOffsetX != UNSET_CONTENT_OFFSET ? pendingContentOffsetX : getScrollX();
|
||||
int scrollToY =
|
||||
pendingContentOffsetY != UNSET_CONTENT_OFFSET ? pendingContentOffsetY : getScrollY();
|
||||
reactScrollTo(scrollToX, scrollToY);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -906,6 +916,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
||||
public void reactSmoothScrollTo(int x, int y) {
|
||||
smoothScrollTo(x, y);
|
||||
updateStateOnScroll(x, y);
|
||||
setPendingContentOffsets(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -917,6 +928,25 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
||||
public void reactScrollTo(int x, int y) {
|
||||
scrollTo(x, y);
|
||||
updateStateOnScroll(x, y);
|
||||
setPendingContentOffsets(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* If contentOffset is set before the View has been laid out, store the values and set them when
|
||||
* `onLayout` is called.
|
||||
*
|
||||
* @param x
|
||||
* @param y
|
||||
*/
|
||||
private void setPendingContentOffsets(int x, int y) {
|
||||
View child = getChildAt(0);
|
||||
if (child != null && child.getWidth() != 0 && child.getHeight() != 0) {
|
||||
pendingContentOffsetX = UNSET_CONTENT_OFFSET;
|
||||
pendingContentOffsetY = UNSET_CONTENT_OFFSET;
|
||||
} else {
|
||||
pendingContentOffsetX = x;
|
||||
pendingContentOffsetY = y;
|
||||
}
|
||||
}
|
||||
|
||||
public void updateState(@Nullable StateWrapper stateWrapper) {
|
||||
|
||||
+12
@@ -12,6 +12,7 @@ import android.util.DisplayMetrics;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
@@ -299,4 +300,15 @@ public class ReactHorizontalScrollViewManager extends ViewGroupManager<ReactHori
|
||||
view.setFadingEdgeLength(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ReactProp(name = "contentOffset")
|
||||
public void setContentOffset(ReactHorizontalScrollView view, ReadableMap value) {
|
||||
if (value != null) {
|
||||
double x = value.hasKey("x") ? value.getDouble("x") : 0;
|
||||
double y = value.hasKey("y") ? value.getDouble("y") : 0;
|
||||
view.reactScrollTo((int) PixelUtil.toPixelFromDIP(x), (int) PixelUtil.toPixelFromDIP(y));
|
||||
} else {
|
||||
view.reactScrollTo(0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,8 @@ public class ReactScrollView extends ScrollView
|
||||
private static final String CONTENT_OFFSET_LEFT = "contentOffsetLeft";
|
||||
private static final String CONTENT_OFFSET_TOP = "contentOffsetTop";
|
||||
|
||||
private static final int UNSET_CONTENT_OFFSET = -1;
|
||||
|
||||
private final OnScrollDispatchHelper mOnScrollDispatchHelper = new OnScrollDispatchHelper();
|
||||
private final @Nullable OverScroller mScroller;
|
||||
private final VelocityHelper mVelocityHelper = new VelocityHelper();
|
||||
@@ -81,6 +83,8 @@ public class ReactScrollView extends ScrollView
|
||||
private boolean mSnapToEnd = true;
|
||||
private View mContentView;
|
||||
private ReactViewBackgroundManager mReactBackgroundManager;
|
||||
private int pendingContentOffsetX = UNSET_CONTENT_OFFSET;
|
||||
private int pendingContentOffsetY = UNSET_CONTENT_OFFSET;
|
||||
private @Nullable StateWrapper mStateWrapper;
|
||||
|
||||
public ReactScrollView(ReactContext context) {
|
||||
@@ -200,7 +204,13 @@ public class ReactScrollView extends ScrollView
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
||||
// Call with the present values in order to re-layout if necessary
|
||||
reactScrollTo(getScrollX(), getScrollY());
|
||||
// If a "pending" value has been set, we restore that value.
|
||||
// That value gets cleared by reactScrollTo.
|
||||
int scrollToX =
|
||||
pendingContentOffsetX != UNSET_CONTENT_OFFSET ? pendingContentOffsetX : getScrollX();
|
||||
int scrollToY =
|
||||
pendingContentOffsetY != UNSET_CONTENT_OFFSET ? pendingContentOffsetY : getScrollY();
|
||||
reactScrollTo(scrollToX, scrollToY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -777,6 +787,7 @@ public class ReactScrollView extends ScrollView
|
||||
public void reactSmoothScrollTo(int x, int y) {
|
||||
smoothScrollTo(x, y);
|
||||
updateStateOnScroll(x, y);
|
||||
setPendingContentOffsets(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -788,6 +799,25 @@ public class ReactScrollView extends ScrollView
|
||||
public void reactScrollTo(int x, int y) {
|
||||
scrollTo(x, y);
|
||||
updateStateOnScroll(x, y);
|
||||
setPendingContentOffsets(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* If contentOffset is set before the View has been laid out, store the values and set them when
|
||||
* `onLayout` is called.
|
||||
*
|
||||
* @param x
|
||||
* @param y
|
||||
*/
|
||||
private void setPendingContentOffsets(int x, int y) {
|
||||
View child = getChildAt(0);
|
||||
if (child != null && child.getWidth() != 0 && child.getHeight() != 0) {
|
||||
pendingContentOffsetX = UNSET_CONTENT_OFFSET;
|
||||
pendingContentOffsetY = UNSET_CONTENT_OFFSET;
|
||||
} else {
|
||||
pendingContentOffsetX = x;
|
||||
pendingContentOffsetY = y;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+12
@@ -13,6 +13,7 @@ import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.bridge.RetryableMountingLayerException;
|
||||
import com.facebook.react.common.MapBuilder;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
@@ -304,6 +305,17 @@ public class ReactScrollViewManager extends ViewGroupManager<ReactScrollView>
|
||||
}
|
||||
}
|
||||
|
||||
@ReactProp(name = "contentOffset")
|
||||
public void setContentOffset(ReactScrollView view, ReadableMap value) {
|
||||
if (value != null) {
|
||||
double x = value.hasKey("x") ? value.getDouble("x") : 0;
|
||||
double y = value.hasKey("y") ? value.getDouble("y") : 0;
|
||||
view.reactScrollTo((int) PixelUtil.toPixelFromDIP(x), (int) PixelUtil.toPixelFromDIP(y));
|
||||
} else {
|
||||
view.reactScrollTo(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object updateState(
|
||||
ReactScrollView view, ReactStylesDiffMap props, @Nullable StateWrapper stateWrapper) {
|
||||
|
||||
+2
-2
@@ -14,6 +14,7 @@ import android.os.Build;
|
||||
import android.text.Layout;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Gravity;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
@@ -34,7 +35,6 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* {@link ReactShadowNode} abstract class for spannable text nodes.
|
||||
@@ -512,7 +512,7 @@ public abstract class ReactBaseTextShadowNode extends LayoutShadowNode {
|
||||
public void setFontVariant(@Nullable ReadableArray fontVariantArray) {
|
||||
String fontFeatureSettings = ReactTypefaceUtils.parseFontVariant(fontVariantArray);
|
||||
|
||||
if (!Objects.equals(fontFeatureSettings, mFontFeatureSettings)) {
|
||||
if (!TextUtils.equals(fontFeatureSettings, mFontFeatureSettings)) {
|
||||
mFontFeatureSettings = fontFeatureSettings;
|
||||
markUpdated();
|
||||
}
|
||||
|
||||
@@ -383,8 +383,22 @@ public class ReactEditText extends AppCompatEditText {
|
||||
@Override
|
||||
public void setInputType(int type) {
|
||||
Typeface tf = super.getTypeface();
|
||||
super.setInputType(type);
|
||||
mStagedInputType = type;
|
||||
|
||||
int inputType = type;
|
||||
|
||||
// Set InputType to TYPE_CLASS_TEXT (the default one for Android) to fix a crash on Xiaomi
|
||||
// devices with Android Q. This crash happens when focusing on a email EditText within a
|
||||
// ScrollView, a prompt will be triggered but the system fail to locate it properly.
|
||||
// Here is an example post discussing about this issue:
|
||||
// https://github.com/facebook/react-native/issues/27204
|
||||
if (inputType == InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
|
||||
&& Build.VERSION.SDK_INT == Build.VERSION_CODES.Q
|
||||
&& Build.MANUFACTURER.startsWith("Xiaomi")) {
|
||||
inputType = InputType.TYPE_CLASS_TEXT;
|
||||
}
|
||||
|
||||
super.setInputType(inputType);
|
||||
mStagedInputType = inputType;
|
||||
// Input type password defaults to monospace font, so we need to re-apply the font
|
||||
super.setTypeface(tf);
|
||||
|
||||
@@ -401,7 +415,7 @@ public class ReactEditText extends AppCompatEditText {
|
||||
// We override the KeyListener so that all keys on the soft input keyboard as well as hardware
|
||||
// keyboards work. Some KeyListeners like DigitsKeyListener will display the keyboard but not
|
||||
// accept all input from it
|
||||
mKeyListener.setInputType(type);
|
||||
mKeyListener.setInputType(inputType);
|
||||
setKeyListener(mKeyListener);
|
||||
}
|
||||
|
||||
|
||||
-3
@@ -230,9 +230,6 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
||||
case "blurTextInput":
|
||||
reactEditText.clearFocusFromJS();
|
||||
break;
|
||||
case "setMostRecentEventCount":
|
||||
// TODO: delete, this is no longer used from JS
|
||||
break;
|
||||
case "setTextAndSelection":
|
||||
int mostRecentEventCount = args.getInt(0);
|
||||
if (mostRecentEventCount == UNSET) {
|
||||
|
||||
+23
-14
@@ -526,11 +526,6 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
||||
mTempRectForBorderRadiusOutline.set(getBounds());
|
||||
mTempRectForCenterDrawPath.set(getBounds());
|
||||
|
||||
float fullBorderWidth = getFullBorderWidth();
|
||||
if (fullBorderWidth > 0) {
|
||||
mTempRectForCenterDrawPath.inset(fullBorderWidth * 0.5f, fullBorderWidth * 0.5f);
|
||||
}
|
||||
|
||||
final RectF borderWidth = getDirectionAwareBorderInsets();
|
||||
|
||||
mInnerClipTempRectForBorderRadius.top += borderWidth.top;
|
||||
@@ -538,6 +533,11 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
||||
mInnerClipTempRectForBorderRadius.left += borderWidth.left;
|
||||
mInnerClipTempRectForBorderRadius.right -= borderWidth.right;
|
||||
|
||||
mTempRectForCenterDrawPath.top += borderWidth.top * 0.5f;
|
||||
mTempRectForCenterDrawPath.bottom -= borderWidth.bottom * 0.5f;
|
||||
mTempRectForCenterDrawPath.left += borderWidth.left * 0.5f;
|
||||
mTempRectForCenterDrawPath.right -= borderWidth.right * 0.5f;
|
||||
|
||||
final float borderRadius = getFullBorderRadius();
|
||||
float topLeftRadius = getBorderRadiusOrDefaultTo(borderRadius, BorderRadiusLocation.TOP_LEFT);
|
||||
float topRightRadius = getBorderRadiusOrDefaultTo(borderRadius, BorderRadiusLocation.TOP_RIGHT);
|
||||
@@ -663,14 +663,22 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
||||
mCenterDrawPath.addRoundRect(
|
||||
mTempRectForCenterDrawPath,
|
||||
new float[] {
|
||||
innerTopLeftRadiusX + (topLeftRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerTopLeftRadiusY + (topLeftRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerTopRightRadiusX + (topRightRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerTopRightRadiusY + (topRightRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerBottomRightRadiusX + (bottomRightRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerBottomRightRadiusY + (bottomRightRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerBottomLeftRadiusX + (bottomLeftRadius > 0 ? extraRadiusForOutline : 0),
|
||||
innerBottomLeftRadiusY + (bottomLeftRadius > 0 ? extraRadiusForOutline : 0)
|
||||
Math.max(topLeftRadius - borderWidth.left * 0.5f,
|
||||
(borderWidth.left > 0.0f) ? (topLeftRadius / borderWidth.left) : 0.0f),
|
||||
Math.max(topLeftRadius - borderWidth.top * 0.5f,
|
||||
(borderWidth.top > 0.0f) ? (topLeftRadius / borderWidth.top) : 0.0f),
|
||||
Math.max(topRightRadius - borderWidth.right * 0.5f,
|
||||
(borderWidth.right > 0.0f) ? (topRightRadius / borderWidth.right) : 0.0f),
|
||||
Math.max(topRightRadius - borderWidth.top * 0.5f,
|
||||
(borderWidth.top > 0.0f) ? (topRightRadius / borderWidth.top) : 0.0f),
|
||||
Math.max(bottomRightRadius - borderWidth.right * 0.5f,
|
||||
(borderWidth.right > 0.0f) ? (bottomRightRadius / borderWidth.right) : 0.0f),
|
||||
Math.max(bottomRightRadius - borderWidth.bottom * 0.5f,
|
||||
(borderWidth.bottom > 0.0f) ? (bottomRightRadius / borderWidth.bottom) : 0.0f),
|
||||
Math.max(bottomLeftRadius - borderWidth.left * 0.5f,
|
||||
(borderWidth.left > 0.0f) ? (bottomLeftRadius / borderWidth.left) : 0.0f),
|
||||
Math.max(bottomLeftRadius - borderWidth.bottom * 0.5f,
|
||||
(borderWidth.bottom > 0.0f) ? (bottomLeftRadius / borderWidth.bottom) : 0.0f)
|
||||
},
|
||||
Path.Direction.CW);
|
||||
|
||||
@@ -998,10 +1006,11 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
||||
}
|
||||
|
||||
private void drawRectangularBackgroundWithBorders(Canvas canvas) {
|
||||
mPaint.setStyle(Paint.Style.FILL);
|
||||
|
||||
int useColor = ColorUtil.multiplyColorAlpha(mColor, mAlpha);
|
||||
if (Color.alpha(useColor) != 0) { // color is not transparent
|
||||
mPaint.setColor(useColor);
|
||||
mPaint.setStyle(Paint.Style.FILL);
|
||||
canvas.drawRect(getBounds(), mPaint);
|
||||
}
|
||||
|
||||
|
||||
+2
-4
@@ -36,7 +36,8 @@ FOLLY_FLAGS := \
|
||||
-DFOLLY_NO_CONFIG=1 \
|
||||
-DFOLLY_HAVE_CLOCK_GETTIME=1 \
|
||||
-DFOLLY_HAVE_MEMRCHR=1 \
|
||||
-DFOLLY_USE_LIBCPP=1
|
||||
-DFOLLY_USE_LIBCPP=1 \
|
||||
-DFOLLY_MOBILE=1
|
||||
|
||||
# If APP_PLATFORM in Application.mk targets android-23 above, please comment this line.
|
||||
# NDK uses GNU style stderror_r() after API 23.
|
||||
@@ -87,9 +88,6 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
|
||||
|
||||
LOCAL_CFLAGS += -fexceptions -fno-omit-frame-pointer -frtti -Wno-sign-compare
|
||||
|
||||
FOLLY_FLAGS += \
|
||||
-DFOLLY_MOBILE=1
|
||||
|
||||
LOCAL_CFLAGS += $(FOLLY_FLAGS)
|
||||
|
||||
LOCAL_EXPORT_CPPFLAGS := $(FOLLY_FLAGS)
|
||||
|
||||
@@ -10,9 +10,9 @@ fb_native.android_library(
|
||||
visibility = ["PUBLIC"],
|
||||
)
|
||||
|
||||
fb_native.android_prebuilt_aar(
|
||||
fb_native.prebuilt_jar(
|
||||
name = "annotation-binary",
|
||||
aar = ":annotation-binary-aar",
|
||||
binary_jar = ":annotation-binary.jar",
|
||||
)
|
||||
|
||||
fb_native.prebuilt_jar(
|
||||
@@ -26,19 +26,19 @@ fb_native.android_prebuilt_aar(
|
||||
)
|
||||
|
||||
fb_native.remote_file(
|
||||
name = "annotation-binary-aar",
|
||||
sha1 = "ae6d46195467467fae746c6225f79ac41e7039e8",
|
||||
url = "mvn:com.facebook.soloader:annotation:aar:0.8.2",
|
||||
name = "annotation-binary.jar",
|
||||
sha1 = "dc58463712cb3e5f03d8ee5ac9743b9ced9afa77",
|
||||
url = "mvn:com.facebook.soloader:annotation:jar:0.9.0",
|
||||
)
|
||||
|
||||
fb_native.remote_file(
|
||||
name = "nativeloader-binary.jar",
|
||||
sha1 = "86cb3da9384707034355ac1e84e9a8cf6de80f7c",
|
||||
url = "mvn:com.facebook.soloader:nativeloader:jar:0.8.2",
|
||||
sha1 = "677c7fbfcc847d7eb6082048d07b10afd4cff898",
|
||||
url = "mvn:com.facebook.soloader:nativeloader:jar:0.9.0",
|
||||
)
|
||||
|
||||
fb_native.remote_file(
|
||||
name = "soloader-binary-aar",
|
||||
sha1 = "8575dbdec464207a19273bd3c09d758a08fa655c",
|
||||
url = "mvn:com.facebook.soloader:soloader:aar:0.8.2",
|
||||
sha1 = "6e138af1dd29ceabf5bace2d24dc4333f304d104",
|
||||
url = "mvn:com.facebook.soloader:soloader:aar:0.9.0",
|
||||
)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
</style>
|
||||
<style name="Theme.Catalyst.LogBox">
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:windowAnimationStyle">@style/Animation.Catalyst.LogBox</item>
|
||||
<item name="android:inAnimation">@android:anim/fade_in</item>
|
||||
|
||||
+4
-4
@@ -9,8 +9,8 @@ rn_prebuilt_jar(
|
||||
|
||||
fb_native.remote_file(
|
||||
name = "okhttp3-binary.jar",
|
||||
sha1 = "dc6d02e4e68514eff5631963e28ca7742ac69efe",
|
||||
url = "mvn:com.squareup.okhttp3:okhttp:jar:3.12.1",
|
||||
sha1 = "d3e1ce1d2b3119adf270b2d00d947beb03fe3321",
|
||||
url = "mvn:com.squareup.okhttp3:okhttp:jar:3.12.12",
|
||||
)
|
||||
|
||||
rn_prebuilt_jar(
|
||||
@@ -21,6 +21,6 @@ rn_prebuilt_jar(
|
||||
|
||||
fb_native.remote_file(
|
||||
name = "okhttp3-urlconnection-binary.jar",
|
||||
sha1 = "f689d3657c3f1fdbde4877bcddc668491a4ad46f",
|
||||
url = "mvn:com.squareup.okhttp3:okhttp-urlconnection:jar:3.12.1",
|
||||
sha1 = "3cfbe11fb8c48d30600a70f90b3283fc858aea72",
|
||||
url = "mvn:com.squareup.okhttp3:okhttp-urlconnection:jar:3.12.12",
|
||||
)
|
||||
|
||||
@@ -16,8 +16,8 @@ namespace facebook::react {
|
||||
|
||||
constexpr struct {
|
||||
int32_t Major = 0;
|
||||
int32_t Minor = 0;
|
||||
int32_t Patch = 0;
|
||||
int32_t Minor = 63;
|
||||
int32_t Patch = 4;
|
||||
std::string_view Prerelease = "";
|
||||
} ReactNativeVersion;
|
||||
|
||||
|
||||
@@ -37,6 +37,29 @@ static jsi::Value textInputMetricsPayload(
|
||||
return payload;
|
||||
};
|
||||
|
||||
static jsi::Value keyPressMetricsPayload(
|
||||
jsi::Runtime &runtime,
|
||||
KeyPressMetrics const &keyPressMetrics) {
|
||||
auto payload = jsi::Object(runtime);
|
||||
payload.setProperty(runtime, "eventCount", keyPressMetrics.eventCount);
|
||||
|
||||
std::string key;
|
||||
if (keyPressMetrics.text.empty()) {
|
||||
key = "Backspace";
|
||||
} else {
|
||||
if (keyPressMetrics.text.front() == '\n') {
|
||||
key = "Enter";
|
||||
} else if (keyPressMetrics.text.front() == '\t') {
|
||||
key = "Tab";
|
||||
} else {
|
||||
key = keyPressMetrics.text.front();
|
||||
}
|
||||
}
|
||||
payload.setProperty(
|
||||
runtime, "key", jsi::String::createFromUtf8(runtime, key));
|
||||
return payload;
|
||||
};
|
||||
|
||||
void TextInputEventEmitter::onFocus(
|
||||
TextInputMetrics const &textInputMetrics) const {
|
||||
dispatchTextInputEvent("focus", textInputMetrics);
|
||||
@@ -78,8 +101,13 @@ void TextInputEventEmitter::onSubmitEditing(
|
||||
}
|
||||
|
||||
void TextInputEventEmitter::onKeyPress(
|
||||
TextInputMetrics const &textInputMetrics) const {
|
||||
dispatchTextInputEvent("keyPress", textInputMetrics);
|
||||
KeyPressMetrics const &keyPressMetrics) const {
|
||||
dispatchEvent(
|
||||
"keyPress",
|
||||
[keyPressMetrics](jsi::Runtime &runtime) {
|
||||
return keyPressMetricsPayload(runtime, keyPressMetrics);
|
||||
},
|
||||
EventPriority::AsynchronousBatched);
|
||||
}
|
||||
|
||||
void TextInputEventEmitter::dispatchTextInputEvent(
|
||||
|
||||
@@ -25,6 +25,12 @@ class TextInputMetrics {
|
||||
int eventCount;
|
||||
};
|
||||
|
||||
class KeyPressMetrics {
|
||||
public:
|
||||
std::string text;
|
||||
int eventCount;
|
||||
};
|
||||
|
||||
class TextInputEventEmitter : public ViewEventEmitter {
|
||||
public:
|
||||
using ViewEventEmitter::ViewEventEmitter;
|
||||
@@ -37,7 +43,7 @@ class TextInputEventEmitter : public ViewEventEmitter {
|
||||
void onSelectionChange(TextInputMetrics const &textInputMetrics) const;
|
||||
void onEndEditing(TextInputMetrics const &textInputMetrics) const;
|
||||
void onSubmitEditing(TextInputMetrics const &textInputMetrics) const;
|
||||
void onKeyPress(TextInputMetrics const &textInputMetrics) const;
|
||||
void onKeyPress(KeyPressMetrics const &textInputMetrics) const;
|
||||
|
||||
private:
|
||||
void dispatchTextInputEvent(
|
||||
|
||||
@@ -90,6 +90,7 @@ using namespace facebook::react;
|
||||
scale:imageSource.scale
|
||||
clipped:YES
|
||||
resizeMode:RCTResizeModeStretch
|
||||
priority:RCTImageLoaderPriorityImmediate
|
||||
attribution:{
|
||||
.surfaceId = surfaceId,
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ using namespace facebook::react;
|
||||
scale:imageSource.scale
|
||||
clipped:YES
|
||||
resizeMode:RCTResizeModeStretch
|
||||
priority:RCTImageLoaderPriorityImmediate
|
||||
attribution:{
|
||||
.surfaceId = surfaceId,
|
||||
}
|
||||
|
||||
@@ -276,6 +276,9 @@ class JSCRuntime : public jsi::Runtime {
|
||||
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0
|
||||
#define _JSC_FAST_IS_ARRAY
|
||||
#endif
|
||||
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0
|
||||
#define _JSC_NO_ARRAY_BUFFERS
|
||||
#endif
|
||||
#endif
|
||||
#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11
|
||||
@@ -284,6 +287,9 @@ class JSCRuntime : public jsi::Runtime {
|
||||
// we understand why.
|
||||
#define _JSC_FAST_IS_ARRAY
|
||||
#endif
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_12
|
||||
#define _JSC_NO_ARRAY_BUFFERS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// JSStringRef utilities
|
||||
@@ -922,24 +928,30 @@ bool JSCRuntime::isArray(const jsi::Object &obj) const {
|
||||
#endif
|
||||
}
|
||||
|
||||
bool JSCRuntime::isArrayBuffer(const jsi::Object & /*obj*/) const {
|
||||
// TODO: T23270523 - This would fail on builds that use our custom JSC
|
||||
// auto typedArrayType = JSValueGetTypedArrayType(ctx_, objectRef(obj),
|
||||
// nullptr); return typedArrayType == kJSTypedArrayTypeArrayBuffer;
|
||||
bool JSCRuntime::isArrayBuffer(const jsi::Object &obj) const {
|
||||
#if defined(_JSC_NO_ARRAY_BUFFERS)
|
||||
throw std::runtime_error("Unsupported");
|
||||
#else
|
||||
auto typedArrayType = JSValueGetTypedArrayType(ctx_, objectRef(obj), nullptr);
|
||||
return typedArrayType == kJSTypedArrayTypeArrayBuffer;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t *JSCRuntime::data(const jsi::ArrayBuffer & /*obj*/) {
|
||||
// TODO: T23270523 - This would fail on builds that use our custom JSC
|
||||
// return static_cast<uint8_t*>(
|
||||
// JSObjectGetArrayBufferBytesPtr(ctx_, objectRef(obj), nullptr));
|
||||
uint8_t *JSCRuntime::data(const jsi::ArrayBuffer &obj) {
|
||||
#if defined(_JSC_NO_ARRAY_BUFFERS)
|
||||
throw std::runtime_error("Unsupported");
|
||||
#else
|
||||
return static_cast<uint8_t *>(
|
||||
JSObjectGetArrayBufferBytesPtr(ctx_, objectRef(obj), nullptr));
|
||||
#endif
|
||||
}
|
||||
|
||||
size_t JSCRuntime::size(const jsi::ArrayBuffer & /*obj*/) {
|
||||
// TODO: T23270523 - This would fail on builds that use our custom JSC
|
||||
// return JSObjectGetArrayBufferByteLength(ctx_, objectRef(obj), nullptr);
|
||||
size_t JSCRuntime::size(const jsi::ArrayBuffer &obj) {
|
||||
#if defined(_JSC_NO_ARRAY_BUFFERS)
|
||||
throw std::runtime_error("Unsupported");
|
||||
#else
|
||||
return JSObjectGetArrayBufferByteLength(ctx_, objectRef(obj), nullptr);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool JSCRuntime::isFunction(const jsi::Object &obj) const {
|
||||
|
||||
+7
-7
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native",
|
||||
"version": "1000.0.0",
|
||||
"version": "0.63.4",
|
||||
"bin": "./cli.js",
|
||||
"description": "A framework for building native apps using React",
|
||||
"license": "MIT",
|
||||
@@ -86,16 +86,16 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.0.0",
|
||||
"@react-native-community/cli": "^4.2.4",
|
||||
"@react-native-community/cli-platform-android": "^4.2.3",
|
||||
"@react-native-community/cli-platform-ios": "^4.2.3",
|
||||
"@react-native-community/cli": "^4.10.0",
|
||||
"@react-native-community/cli-platform-android": "^4.10.0",
|
||||
"@react-native-community/cli-platform-ios": "^4.10.0",
|
||||
"abort-controller": "^3.0.0",
|
||||
"anser": "^1.4.9",
|
||||
"base64-js": "^1.1.2",
|
||||
"event-target-shim": "^5.0.1",
|
||||
"fbjs": "^1.0.0",
|
||||
"fbjs-scripts": "^1.1.0",
|
||||
"hermes-engine": "~0.4.0",
|
||||
"hermes-engine": "~0.5.0",
|
||||
"invariant": "^2.2.4",
|
||||
"jsc-android": "^245459.0.0",
|
||||
"metro-babel-register": "0.59.0",
|
||||
@@ -123,7 +123,7 @@
|
||||
"clang-format": "^1.2.4",
|
||||
"connect": "^3.6.5",
|
||||
"coveralls": "^3.0.2",
|
||||
"detox": "15.4.4",
|
||||
"detox": "16.7.2",
|
||||
"eslint": "5.1.0",
|
||||
"eslint-config-fb-strict": "^24.9.0",
|
||||
"eslint-config-fbjs": "2.1.0",
|
||||
@@ -189,4 +189,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native-community/eslint-config",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"description": "ESLint config for React Native",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/facebook/react-native/tree/master/packages/eslint-config-react-native-community#readme",
|
||||
"dependencies": {
|
||||
"@react-native-community/eslint-plugin": "^1.0.0",
|
||||
"@react-native-community/eslint-plugin": "^1.1.0",
|
||||
"@typescript-eslint/eslint-plugin": "^2.25.0",
|
||||
"@typescript-eslint/parser": "^2.25.0",
|
||||
"babel-eslint": "10.1.0",
|
||||
|
||||
@@ -118,10 +118,10 @@
|
||||
lodash "^4.17.13"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@react-native-community/eslint-plugin@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.0.0.tgz#ae9a430f2c5795debca491f15a989fce86ea75a0"
|
||||
integrity sha512-GLhSN8dRt4lpixPQh+8prSCy6PYk/MT/mvji/ojAd5yshowDo6HFsimCSTD/uWAdjpUq91XK9tVdTNWfGRlKQA==
|
||||
"@react-native-community/eslint-plugin@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz#e42b1bef12d2415411519fd528e64b593b1363dc"
|
||||
integrity sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ==
|
||||
|
||||
"@types/color-name@^1.1.1":
|
||||
version "1.1.1"
|
||||
|
||||
+32
-13
@@ -21,7 +21,26 @@ def detectEntryFile(config) {
|
||||
return "index.js";
|
||||
}
|
||||
|
||||
def cliPath = config.cliPath ?: "node_modules/react-native/cli.js"
|
||||
/**
|
||||
* Detects CLI location in a similar fashion to the React Native CLI
|
||||
*/
|
||||
def detectCliPath(config) {
|
||||
if (config.cliPath) {
|
||||
return config.cliPath
|
||||
}
|
||||
|
||||
def cliPath = ["node", "-e", "console.log(require('react-native/cli').bin);"].execute([], projectDir).text.trim()
|
||||
|
||||
if (cliPath) {
|
||||
return cliPath
|
||||
} else if (new File("${projectDir}/../../node_modules/react-native/cli.js").exists()) {
|
||||
return "${projectDir}/../../node_modules/react-native/cli.js"
|
||||
} else {
|
||||
throw new Exception("Couldn't determine CLI location. " +
|
||||
"Please set `project.ext.react.cliPath` to the path of the react-native cli.js");
|
||||
}
|
||||
}
|
||||
|
||||
def composeSourceMapsPath = config.composeSourceMapsPath ?: "node_modules/react-native/scripts/compose-source-maps.js"
|
||||
def bundleAssetName = config.bundleAssetName ?: "index.android.bundle"
|
||||
def entryFile = detectEntryFile(config)
|
||||
@@ -30,7 +49,7 @@ def reactRoot = file(config.root ?: "../../")
|
||||
def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"]
|
||||
def bundleConfig = config.bundleConfig ? "${reactRoot}/${config.bundleConfig}" : null ;
|
||||
def enableVmCleanup = config.enableVmCleanup == null ? true : config.enableVmCleanup
|
||||
def hermesCommand = config.hermesCommand ?: "../../node_modules/hermes-engine/%OS-BIN%/hermes"
|
||||
def hermesCommand = config.hermesCommand ?: "../../node_modules/hermes-engine/%OS-BIN%/hermesc"
|
||||
|
||||
def reactNativeDevServerPort() {
|
||||
def value = project.getProperties().get("reactNativeDevServerPort")
|
||||
@@ -98,21 +117,16 @@ afterEvaluate {
|
||||
|
||||
// Additional node and packager commandline arguments
|
||||
def nodeExecutableAndArgs = config.nodeExecutableAndArgs ?: ["node"]
|
||||
def extraPackagerArgs = config.extraPackagerArgs ?: []
|
||||
def cliPath = detectCliPath(config)
|
||||
|
||||
def execCommand = []
|
||||
|
||||
if (config.cliPath || config.nodeExecutableAndArgs) {
|
||||
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||
execCommand.addAll(["cmd", "/c", *nodeExecutableAndArgs, cliPath])
|
||||
} else {
|
||||
execCommand.addAll([*nodeExecutableAndArgs, cliPath])
|
||||
}
|
||||
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||
execCommand.addAll(["cmd", "/c", *nodeExecutableAndArgs, cliPath])
|
||||
} else {
|
||||
throw new Exception("Missing cliPath or nodeExecutableAndArgs from build config. " +
|
||||
"Please set project.ext.react.cliPath to the path of the react-native cli.js");
|
||||
execCommand.addAll([*nodeExecutableAndArgs, cliPath])
|
||||
}
|
||||
|
||||
|
||||
def enableHermes = enableHermesForVariant(variant)
|
||||
|
||||
def currentBundleTask = tasks.create(
|
||||
@@ -145,7 +159,7 @@ afterEvaluate {
|
||||
def devEnabled = !(config."devDisabledIn${targetName}"
|
||||
|| targetName.toLowerCase().contains("release"))
|
||||
|
||||
def extraArgs = extraPackagerArgs;
|
||||
def extraArgs = config.extraPackagerArgs ?: [];
|
||||
|
||||
if (bundleConfig) {
|
||||
extraArgs = extraArgs.clone()
|
||||
@@ -288,6 +302,11 @@ afterEvaluate {
|
||||
enabled(currentBundleTask.enabled)
|
||||
}
|
||||
|
||||
// mergeResources task runs before the bundle file is copied to the intermediate asset directory from Android plugin 4.1+.
|
||||
// This ensures to copy the bundle file before mergeResources task starts
|
||||
def mergeResourcesTask = tasks.findByName("merge${targetName}Resources")
|
||||
mergeResourcesTask.dependsOn(currentAssetsCopyTask)
|
||||
|
||||
packageTask.dependsOn(currentAssetsCopyTask)
|
||||
if (buildPreBundleTask != null) {
|
||||
buildPreBundleTask.dependsOn(currentAssetsCopyTask)
|
||||
|
||||
@@ -54,17 +54,11 @@ case "$CONFIGURATION" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# Setting up a project root was a workaround to enable support for non-standard
|
||||
# structures, including monorepos. Today, CLI supports that out of the box
|
||||
# and setting custom `PROJECT_ROOT` only makes it confusing.
|
||||
#
|
||||
# As a backwards-compatible change, I am leaving "PROJECT_ROOT" support for those
|
||||
# who already use it - it is likely a non-breaking removal.
|
||||
#
|
||||
# For new users, we default to $PWD - not changing things all.
|
||||
#
|
||||
# For context: https://github.com/facebook/react-native/commit/9ccde378b6e6379df61f9d968be6346ca6be7ead#commitcomment-37914902
|
||||
PROJECT_ROOT=${PROJECT_ROOT:-$PWD}
|
||||
# Path to react-native folder inside node_modules
|
||||
REACT_NATIVE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
# The project should be located next to where react-native is installed
|
||||
# in node_modules.
|
||||
PROJECT_ROOT=${PROJECT_ROOT:-"$REACT_NATIVE_DIR/../.."}
|
||||
|
||||
cd "$PROJECT_ROOT" || exit
|
||||
|
||||
@@ -102,9 +96,6 @@ if [[ ! -x node && -d ${HOME}/.anyenv/bin ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Path to react-native folder inside node_modules
|
||||
REACT_NATIVE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
# check and assign NODE_BINARY env
|
||||
# shellcheck source=/dev/null
|
||||
source "$REACT_NATIVE_DIR/scripts/node-binary.sh"
|
||||
|
||||
@@ -57,36 +57,34 @@ def use_react_native! (options={})
|
||||
end
|
||||
end
|
||||
|
||||
def use_flipper!(versions = {})
|
||||
versions['Flipper'] ||= '~> 0.33.1'
|
||||
versions['DoubleConversion'] ||= '1.1.7'
|
||||
versions['Flipper-Folly'] ||= '~> 2.1'
|
||||
def use_flipper!(versions = {}, configurations: ['Debug'])
|
||||
versions['Flipper'] ||= '~> 0.54.0'
|
||||
versions['Flipper-DoubleConversion'] ||= '1.1.7'
|
||||
versions['Flipper-Folly'] ||= '~> 2.2'
|
||||
versions['Flipper-Glog'] ||= '0.3.6'
|
||||
versions['Flipper-PeerTalk'] ||= '~> 0.0.4'
|
||||
versions['Flipper-RSocket'] ||= '~> 1.0'
|
||||
|
||||
pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug'
|
||||
|
||||
versions['Flipper-RSocket'] ||= '~> 1.1'
|
||||
pod 'FlipperKit', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configurations => configurations
|
||||
# List all transitive dependencies for FlipperKit pods
|
||||
# to avoid them being linked in Release builds
|
||||
pod 'Flipper', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug'
|
||||
pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug'
|
||||
pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug'
|
||||
pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug'
|
||||
pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
|
||||
pod 'Flipper', versions['Flipper'], :configurations => configurations
|
||||
pod 'Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], :configurations => configurations
|
||||
pod 'Flipper-Folly', versions['Flipper-Folly'], :configurations => configurations
|
||||
pod 'Flipper-Glog', versions['Flipper-Glog'], :configurations => configurations
|
||||
pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configurations => configurations
|
||||
pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configurations => configurations
|
||||
pod 'FlipperKit/Core', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/CppBridge', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FBDefines', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configurations => configurations
|
||||
pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configurations => configurations
|
||||
end
|
||||
|
||||
# Post Install processing for Flipper
|
||||
|
||||
@@ -58,11 +58,15 @@ info ""
|
||||
read -n 1
|
||||
adb shell am start -n com.facebook.react.uiapp/.RNTesterActivity
|
||||
|
||||
|
||||
success "Installing CocoaPods dependencies"
|
||||
rm -rf RNTester/Pods
|
||||
(cd RNTester && pod install)
|
||||
|
||||
info "Press any key to open the workspace in Xcode, then build and test manually."
|
||||
info ""
|
||||
read -n 1
|
||||
success "Installing CocoaPods dependencies"
|
||||
rm -rf RNTester/Pods && cd RNTester && pod install
|
||||
|
||||
open "RNTester/RNTesterPods.xcworkspace"
|
||||
|
||||
info "When done testing RNTester app on iOS and Android press any key to continue."
|
||||
@@ -113,7 +117,7 @@ info ""
|
||||
info "Press any key to open the project in Xcode"
|
||||
info ""
|
||||
read -n 1
|
||||
open "/tmp/${project_name}/ios/${project_name}.xcodeproj"
|
||||
open "/tmp/${project_name}/ios/${project_name}.xcworkspace"
|
||||
|
||||
cd "$repo_root"
|
||||
|
||||
|
||||
@@ -193,6 +193,7 @@ dependencies {
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.flipper'
|
||||
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
||||
}
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
|
||||
|
||||
@@ -11,11 +11,8 @@ buildscript {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
ext.kotlinVersion = '1.3.0'
|
||||
dependencies {
|
||||
classpath("com.android.tools.build:gradle:3.5.3")
|
||||
// for Detox
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
|
||||
@@ -25,4 +25,4 @@ android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.33.1
|
||||
FLIPPER_VERSION=0.54.0
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
/* Begin PBXBuildFile section */
|
||||
00E356F31AD99517003FC87E /* HelloWorldTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* HelloWorldTests.m */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
2DCD954D1E0B4F2C00145EB5 /* HelloWorldTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* HelloWorldTests.m */; };
|
||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -43,12 +43,12 @@
|
||||
13B07F961A680F5B00A75B9A /* HelloWorld.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = HelloWorld/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = HelloWorld/AppDelegate.m; sourceTree = "<group>"; };
|
||||
13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = "<group>"; };
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = HelloWorld/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = HelloWorld/main.m; sourceTree = "<group>"; };
|
||||
2D02E47B1E0B4A5D006451C7 /* HelloWorld-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HelloWorld-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2D02E4901E0B4A5D006451C7 /* HelloWorld-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HelloWorld-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = HelloWorld/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -110,7 +110,7 @@
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */,
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||
13B07FB61A68108700A75B9A /* Info.plist */,
|
||||
13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
|
||||
13B07FB71A68108700A75B9A /* main.m */,
|
||||
);
|
||||
name = HelloWorld;
|
||||
@@ -293,8 +293,8 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -434,18 +434,6 @@
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
13B07FB21A68108700A75B9A /* Base */,
|
||||
);
|
||||
name = LaunchScreen.xib;
|
||||
path = HelloWorld;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
00E356F61AD99517003FC87E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
@@ -495,10 +483,6 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
ENABLE_BITCODE = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
"FB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
INFOPLIST_FILE = HelloWorld/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
#import <React/RCTRootView.h>
|
||||
|
||||
#if DEBUG
|
||||
#ifdef FB_SONARKIT_ENABLED
|
||||
#import <FlipperKit/FlipperClient.h>
|
||||
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
|
||||
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
|
||||
@@ -27,7 +27,7 @@ static void InitializeFlipper(UIApplication *application) {
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
#if DEBUG
|
||||
#ifdef FB_SONARKIT_ENABLED
|
||||
InitializeFlipper(application);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
|
||||
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
|
||||
<rect key="frame" x="20" y="439" width="441" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="HelloWorld" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
|
||||
<rect key="frame" x="20" y="140" width="441" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
|
||||
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
|
||||
<constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
|
||||
<constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
|
||||
<constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
|
||||
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<point key="canvasLocation" x="548" y="455"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
|
||||
<rect key="frame" x="0.0" y="647" width="375" height="0.0"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="HelloWorld" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
||||
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
|
||||
<rect key="frame" x="0.0" y="626" width="375" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
||||
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/>
|
||||
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
|
||||
<constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
|
||||
<constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="52.173913043478265" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -4,16 +4,15 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ
|
||||
platform :ios, '10.0'
|
||||
|
||||
target 'HelloWorld' do
|
||||
# Pods for HelloWorld
|
||||
use_react_native!
|
||||
config = use_native_modules!
|
||||
|
||||
use_react_native!(:path => config["reactNativePath"])
|
||||
|
||||
target 'HelloWorldTests' do
|
||||
inherit! :complete
|
||||
# Pods for testing
|
||||
end
|
||||
|
||||
use_native_modules!
|
||||
|
||||
# Enables Flipper.
|
||||
#
|
||||
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "16.13.1",
|
||||
"react-native": "1000.0.0"
|
||||
"react-native": "0.63.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.8.4",
|
||||
"@babel/runtime": "^7.8.4",
|
||||
"@react-native-community/eslint-config": "^1.0.0",
|
||||
"@react-native-community/eslint-config": "^1.1.0",
|
||||
"babel-jest": "^25.1.0",
|
||||
"eslint": "^6.5.1",
|
||||
"jest": "^25.1.0",
|
||||
|
||||
@@ -1387,45 +1387,55 @@
|
||||
"@types/istanbul-reports" "^1.1.1"
|
||||
"@types/yargs" "^13.0.0"
|
||||
|
||||
"@jest/types@^25.1.0":
|
||||
version "25.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395"
|
||||
integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==
|
||||
"@jest/types@^25.3.0":
|
||||
version "25.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.3.0.tgz#88f94b277a1d028fd7117bc1f74451e0fc2131e7"
|
||||
integrity sha512-UkaDNewdqXAmCDbN2GlUM6amDKS78eCqiw/UmF5nE0mmLTd6moJkiZJML/X52Ke3LH7Swhw883IRXq8o9nWjVw==
|
||||
dependencies:
|
||||
"@types/istanbul-lib-coverage" "^2.0.0"
|
||||
"@types/istanbul-reports" "^1.1.1"
|
||||
"@types/yargs" "^15.0.0"
|
||||
chalk "^3.0.0"
|
||||
|
||||
"@react-native-community/cli-debugger-ui@^4.2.1":
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.2.1.tgz#da22aa1cf8d04fe1aa2759873916473e81c4450b"
|
||||
integrity sha512-/lvb39Pgo7bM9rsJ2aMomM7jCGWRpnO2iLECJz1ehC49Fblbosh3qtTsg9WWEVTHoY/34GhaQ7EzQxdSfH8pwg==
|
||||
"@jest/types@^25.5.0":
|
||||
version "25.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
|
||||
integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
|
||||
dependencies:
|
||||
"@types/istanbul-lib-coverage" "^2.0.0"
|
||||
"@types/istanbul-reports" "^1.1.1"
|
||||
"@types/yargs" "^15.0.0"
|
||||
chalk "^3.0.0"
|
||||
|
||||
"@react-native-community/cli-debugger-ui@^4.9.0":
|
||||
version "4.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz#4177764ba69243c97aa26829d59d9501acb2bd71"
|
||||
integrity sha512-fBFGamHm4VUrDqkBGnsrwQL8OC6Om7K6EBQb4xj0nWekpXt1HSa3ScylYHTTWwYcpRf9htGMRGiv4dQDY/odAw==
|
||||
dependencies:
|
||||
serve-static "^1.13.1"
|
||||
|
||||
"@react-native-community/cli-platform-android@^4.2.3":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-4.2.3.tgz#4d32a856c43575b1dbbce9a4b7a580846fb37431"
|
||||
integrity sha512-pVHG7+69B/PtnL0h//0MYevxXxDpBNbzyoHn2gOrMVCZVIf20FQTQk4SmLGVblwZZ9U/f5FN3C56WQUtisldRQ==
|
||||
"@react-native-community/cli-platform-android@^4.10.0":
|
||||
version "4.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-4.10.0.tgz#c1e8eb4395fc51335e39fc8c09ca96517446a88d"
|
||||
integrity sha512-/nfCQDbrS0F2u6nwo+4qgx+Fjcv/Rqrn4JbQWdGWEXULfCN+g2Zx9O7sSDNjV7AxOwd+sBOnU945wHkSQdASFA==
|
||||
dependencies:
|
||||
"@react-native-community/cli-tools" "^4.2.2"
|
||||
"@react-native-community/cli-tools" "^4.9.0"
|
||||
chalk "^3.0.0"
|
||||
execa "^1.0.0"
|
||||
fs-extra "^8.1.0"
|
||||
glob "^7.1.3"
|
||||
jetifier "^1.6.2"
|
||||
lodash "^4.17.15"
|
||||
logkitty "^0.6.0"
|
||||
logkitty "^0.7.1"
|
||||
slash "^3.0.0"
|
||||
xmldoc "^1.1.2"
|
||||
|
||||
"@react-native-community/cli-platform-ios@^4.2.3":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.2.3.tgz#f9f07930c964ffe4ca8224f3c36f6a54e39d6a49"
|
||||
integrity sha512-tdtvJYkNwgCfYBiT8AXwyo/ODc5Ybx19aKGbkB4X6Xn9ORNnXyHWSwy224qW5WK6b0kkmlyVGmASdouCQqet/A==
|
||||
"@react-native-community/cli-platform-ios@^4.10.0":
|
||||
version "4.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.10.0.tgz#ef9b3adc5946bd43bbc839d0c8f26c1964fad117"
|
||||
integrity sha512-3xiaqnmg0hqyMwCfhoGXkJ9GGIxVSwLpntSUo1YiZIn+PLC385ljSer4YfFvWc6N3jd9ElRa31WKtCD9kMAvkg==
|
||||
dependencies:
|
||||
"@react-native-community/cli-tools" "^4.2.2"
|
||||
"@react-native-community/cli-tools" "^4.9.0"
|
||||
chalk "^3.0.0"
|
||||
glob "^7.1.3"
|
||||
js-yaml "^3.13.1"
|
||||
@@ -1433,39 +1443,53 @@
|
||||
plist "^3.0.1"
|
||||
xcode "^2.0.0"
|
||||
|
||||
"@react-native-community/cli-tools@^4.2.2":
|
||||
version "4.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-4.2.2.tgz#953354bc4d14afa76483cdd097a18407016dab34"
|
||||
integrity sha512-soo2GKb7cZNLy2uWN0TUeww+N1YTBfu7rk5ujLOXzFd+XxfpJTK9/HQ3RjHLsuA+aV8nlx8SmaielgxfKFPePQ==
|
||||
"@react-native-community/cli-server-api@^4.9.0":
|
||||
version "4.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-4.9.0.tgz#503f50331c6e2cc8c5fcf6b693170e3a3a669d1a"
|
||||
integrity sha512-lKBIXJjFLyu4+6Vhhj/QzD41aQGkVi8xWLqTYCgi26d61kjLuuZs0Xer02DPJK3+YADKExVdWrJzVHfJ7zYlTA==
|
||||
dependencies:
|
||||
"@react-native-community/cli-debugger-ui" "^4.9.0"
|
||||
"@react-native-community/cli-tools" "^4.9.0"
|
||||
compression "^1.7.1"
|
||||
connect "^3.6.5"
|
||||
errorhandler "^1.5.0"
|
||||
pretty-format "^25.1.0"
|
||||
serve-static "^1.13.1"
|
||||
ws "^1.1.0"
|
||||
|
||||
"@react-native-community/cli-tools@^4.9.0":
|
||||
version "4.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-4.9.0.tgz#d8fd0326cc2fcaeb8c920baf24b68b63c8164fa2"
|
||||
integrity sha512-vCeYkJ3n/EIaW3lAfznzojMffGxYhCUzwZzwBuC3+O+gYxkymdpletqNYLLEa04DzJr174mxgbgBw8g5IP91yA==
|
||||
dependencies:
|
||||
chalk "^3.0.0"
|
||||
lodash "^4.17.15"
|
||||
mime "^2.4.1"
|
||||
node-fetch "^2.5.0"
|
||||
node-fetch "^2.6.0"
|
||||
open "^6.2.0"
|
||||
shell-quote "1.6.1"
|
||||
|
||||
"@react-native-community/cli-types@^4.2.1":
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-4.2.1.tgz#112c09e2900577bac3cbcbfbc4c6d4d59eabfec8"
|
||||
integrity sha512-mKDQKSu+6DlG46IZHLcTwVHYieEiZXn+25zmfRtEG0YxnvLxTAtr21COjGEUhxMFp6zRzNMmRi5zGfRmCByTTA==
|
||||
"@react-native-community/cli-types@^4.10.0":
|
||||
version "4.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-4.10.0.tgz#aea4276c035fffaeb7deae029ad8a89054fbabfc"
|
||||
integrity sha512-gU0Opspa/WYLQdmY0BKe0VLwD+SuNatypRvBP6nlyzS8/qmSaZ73047jHWYQavhfqn/WxHzBLQSwZK0a7ROfeg==
|
||||
|
||||
"@react-native-community/cli@^4.2.4":
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-4.2.4.tgz#25fcb7fbfb96f34fc4143d0ba48bb9c4e010bc5a"
|
||||
integrity sha512-sgvFNM/Gzk+fPzURkmVWgwGAZ2cJSApoqgCEyatGEsF4SCNprmd5hfCif7JVuYmxxzUIMI/sN8lP8s65fx4W/g==
|
||||
"@react-native-community/cli@^4.10.0":
|
||||
version "4.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-4.10.0.tgz#13f4fa98b66ea756e6480864c71304b49a9bca44"
|
||||
integrity sha512-rg6pIMmSodqFTJ5GbdTPjIoumCE8Vm6H0DA5LzXprnGozOxJ0hRRDJqX37tR9sH50ABOQpSWs/+etJhgF2Tlxw==
|
||||
dependencies:
|
||||
"@hapi/joi" "^15.0.3"
|
||||
"@react-native-community/cli-debugger-ui" "^4.2.1"
|
||||
"@react-native-community/cli-tools" "^4.2.2"
|
||||
"@react-native-community/cli-types" "^4.2.1"
|
||||
"@react-native-community/cli-debugger-ui" "^4.9.0"
|
||||
"@react-native-community/cli-server-api" "^4.9.0"
|
||||
"@react-native-community/cli-tools" "^4.9.0"
|
||||
"@react-native-community/cli-types" "^4.10.0"
|
||||
chalk "^3.0.0"
|
||||
command-exists "^1.2.8"
|
||||
commander "^2.19.0"
|
||||
compression "^1.7.1"
|
||||
connect "^3.6.5"
|
||||
cosmiconfig "^5.1.0"
|
||||
deepmerge "^3.2.0"
|
||||
envinfo "^7.1.0"
|
||||
errorhandler "^1.5.0"
|
||||
execa "^1.0.0"
|
||||
find-up "^4.1.0"
|
||||
fs-extra "^8.1.0"
|
||||
@@ -1478,18 +1502,17 @@
|
||||
metro-config "^0.58.0"
|
||||
metro-core "^0.58.0"
|
||||
metro-react-native-babel-transformer "^0.58.0"
|
||||
metro-resolver "^0.58.0"
|
||||
minimist "^1.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
open "^6.2.0"
|
||||
node-stream-zip "^1.9.1"
|
||||
ora "^3.4.0"
|
||||
pretty-format "^25.1.0"
|
||||
pretty-format "^25.2.0"
|
||||
semver "^6.3.0"
|
||||
serve-static "^1.13.1"
|
||||
shell-quote "1.6.1"
|
||||
strip-ansi "^5.2.0"
|
||||
sudo-prompt "^9.0.0"
|
||||
wcwidth "^1.0.1"
|
||||
ws "^1.1.0"
|
||||
|
||||
"@react-native-community/eslint-plugin@file:packages/eslint-plugin-react-native-community":
|
||||
version "1.0.0"
|
||||
@@ -2138,10 +2161,10 @@ big-integer@^1.6.7:
|
||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36"
|
||||
integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==
|
||||
|
||||
bluebird@3.5.x:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
|
||||
integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==
|
||||
bluebird@^3.5.4:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||
|
||||
bplist-creator@0.0.7:
|
||||
version "0.0.7"
|
||||
@@ -2445,6 +2468,15 @@ cliui@^5.0.0:
|
||||
strip-ansi "^5.2.0"
|
||||
wrap-ansi "^5.1.0"
|
||||
|
||||
cliui@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
|
||||
integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
|
||||
dependencies:
|
||||
string-width "^4.2.0"
|
||||
strip-ansi "^6.0.0"
|
||||
wrap-ansi "^6.2.0"
|
||||
|
||||
clone@^1.0.2:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
|
||||
@@ -2839,16 +2871,17 @@ detect-newline@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
|
||||
|
||||
detox@15.4.4:
|
||||
version "15.4.4"
|
||||
resolved "https://registry.yarnpkg.com/detox/-/detox-15.4.4.tgz#0f56b0eb9dd81b65e9bd6b3a8730f323dd6cd897"
|
||||
integrity sha512-mbsw/REE3yDuq+0fbPZSktfV5OVO/80LMHsistgKUcBEEM3BrwLkZsji8a7syJj9tiDo+SsUjEzXGhQwDLlitA==
|
||||
detox@16.7.2:
|
||||
version "16.7.2"
|
||||
resolved "https://registry.yarnpkg.com/detox/-/detox-16.7.2.tgz#531c98416adf52d4ba95601b669969acadafb970"
|
||||
integrity sha512-+837eRgk4xOewXmeF5H6vOTn0RbKUFIyCi5UsTXEhvplsMk+KrrqfKik2j8fvubJkByry7HqIN/JF9jKe+meIQ==
|
||||
dependencies:
|
||||
"@babel/core" "^7.4.5"
|
||||
bunyan "^1.8.12"
|
||||
bunyan-debug-stream "^1.1.0"
|
||||
chalk "^2.4.2"
|
||||
child-process-promise "^2.2.0"
|
||||
find-up "^4.1.0"
|
||||
fs-extra "^4.0.2"
|
||||
funpermaproxy "^1.0.1"
|
||||
get-port "^2.1.0"
|
||||
@@ -2859,7 +2892,7 @@ detox@15.4.4:
|
||||
sanitize-filename "^1.6.1"
|
||||
shell-utils "^1.0.9"
|
||||
tail "^2.0.0"
|
||||
telnet-client "0.15.3"
|
||||
telnet-client "1.2.8"
|
||||
tempfile "^2.0.0"
|
||||
which "^1.3.1"
|
||||
ws "^3.3.1"
|
||||
@@ -2915,6 +2948,11 @@ emoji-regex@^7.0.1, emoji-regex@^7.0.2:
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
|
||||
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||
|
||||
encodeurl@~1.0.1, encodeurl@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||
@@ -3264,19 +3302,6 @@ exec-sh@^0.3.2:
|
||||
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b"
|
||||
integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==
|
||||
|
||||
execa@^0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
|
||||
integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
|
||||
dependencies:
|
||||
cross-spawn "^6.0.0"
|
||||
get-stream "^3.0.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||
@@ -3655,11 +3680,6 @@ gauge@~2.7.3:
|
||||
strip-ansi "^3.0.1"
|
||||
wide-align "^1.1.0"
|
||||
|
||||
get-caller-file@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
||||
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
|
||||
|
||||
get-caller-file@^2.0.1:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
@@ -3677,11 +3697,6 @@ get-stdin@^6.0.0:
|
||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
|
||||
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
||||
|
||||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
|
||||
|
||||
get-stream@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
||||
@@ -3837,10 +3852,10 @@ has@^1.0.1, has@^1.0.3:
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hermes-engine@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.4.0.tgz#ea3113d472871ca4791f2d75d9f68b25d82ef92c"
|
||||
integrity sha512-7AO/K64GuVtcpUwUKDxyQXFN45RlqWrMIPMte6AeegMQMBh+MWuMU6ZOw8Jc7FGtsgiRqJRp+UX4+4UrFQXJ/A==
|
||||
hermes-engine@~0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.5.0.tgz#d914acce72e9657b3c98875ad3f9094d8643f327"
|
||||
integrity sha512-jSuHiOhdh2+IF3bH2gLpQ37eMkdUrEb9GK6PoG3rLRaUDK3Zn2Y9fXM+wyDfoUTA3gz9EET0/IIWk5k21qp4kw==
|
||||
|
||||
home-or-tmp@^3.0.0:
|
||||
version "3.0.0"
|
||||
@@ -4116,6 +4131,11 @@ is-fullwidth-code-point@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
||||
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
|
||||
|
||||
is-fullwidth-code-point@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
|
||||
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
|
||||
|
||||
is-generator-fn@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e"
|
||||
@@ -5075,14 +5095,14 @@ log-symbols@^2.2.0:
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
|
||||
logkitty@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.6.0.tgz#e327d4b144dd5c11d912d002cf57ac9fbae20e15"
|
||||
integrity sha512-+F1ROENmfG3b4N9WGlRz5QGTBw/xgjZe2JzZLADYeCmzdId5c+QI7WTGRofs/10hwP84aAmjK2WStx+/oQVnwA==
|
||||
logkitty@^0.7.1:
|
||||
version "0.7.1"
|
||||
resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7"
|
||||
integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==
|
||||
dependencies:
|
||||
ansi-fragments "^0.2.1"
|
||||
dayjs "^1.8.15"
|
||||
yargs "^12.0.5"
|
||||
yargs "^15.1.0"
|
||||
|
||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
|
||||
version "1.4.0"
|
||||
@@ -5358,7 +5378,7 @@ metro-react-native-babel-transformer@^0.58.0:
|
||||
metro-react-native-babel-preset "0.58.0"
|
||||
metro-source-map "0.58.0"
|
||||
|
||||
metro-resolver@0.58.0:
|
||||
metro-resolver@0.58.0, metro-resolver@^0.58.0:
|
||||
version "0.58.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.58.0.tgz#4d03edc52e2e25d45f16688adf3b3f268ea60df9"
|
||||
integrity sha512-XFbAKvCHN2iWqKeiRARzEXn69eTDdJVJC7lu16S4dPQJ+Dy82dZBr5Es12iN+NmbJuFgrAuIHbpWrdnA9tOf6Q==
|
||||
@@ -5685,9 +5705,9 @@ node-fetch@^2.2.0:
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5"
|
||||
integrity sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==
|
||||
|
||||
node-fetch@^2.5.0:
|
||||
node-fetch@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
||||
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
|
||||
|
||||
node-int64@^0.4.0:
|
||||
@@ -5734,6 +5754,11 @@ node-releases@^1.1.1:
|
||||
dependencies:
|
||||
semver "^5.3.0"
|
||||
|
||||
node-stream-zip@^1.9.1:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.9.1.tgz#66d210204da7c60e2d6d685eb21a11d016981fd0"
|
||||
integrity sha512-7/Xs9gkuYF0WBimz5OrSc6UVKLDTxvBG2yLGtEK8PSx94d86o/6iQLvIe/140ATz35JDqHKWIxh3GcA3u5hB0w==
|
||||
|
||||
node-version@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.2.0.tgz#34fde3ffa8e1149bd323983479dda620e1b5060d"
|
||||
@@ -5942,15 +5967,6 @@ os-homedir@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
|
||||
|
||||
os-locale@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620"
|
||||
integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==
|
||||
dependencies:
|
||||
execa "^0.10.0"
|
||||
lcid "^2.0.0"
|
||||
mem "^4.0.0"
|
||||
|
||||
os-locale@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
||||
@@ -6236,11 +6252,21 @@ pretty-format@^24.9.0:
|
||||
react-is "^16.8.4"
|
||||
|
||||
pretty-format@^25.1.0:
|
||||
version "25.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8"
|
||||
integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==
|
||||
version "25.5.0"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
|
||||
integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
|
||||
dependencies:
|
||||
"@jest/types" "^25.1.0"
|
||||
"@jest/types" "^25.5.0"
|
||||
ansi-regex "^5.0.0"
|
||||
ansi-styles "^4.0.0"
|
||||
react-is "^16.12.0"
|
||||
|
||||
pretty-format@^25.2.0:
|
||||
version "25.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.3.0.tgz#d0a4f988ff4a6cd350342fdabbb809aeb4d49ad5"
|
||||
integrity sha512-wToHwF8bkQknIcFkBqNfKu4+UZqnrLn/Vr+wwKQwwvPzkBfDDKp/qIabFqdgtoi5PEnM8LFByVsOrHoa3SpTVA==
|
||||
dependencies:
|
||||
"@jest/types" "^25.3.0"
|
||||
ansi-regex "^5.0.0"
|
||||
ansi-styles "^4.0.0"
|
||||
react-is "^16.12.0"
|
||||
@@ -7141,7 +7167,7 @@ string-width@^1.0.1:
|
||||
is-fullwidth-code-point "^1.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
|
||||
"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
|
||||
"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
||||
@@ -7158,6 +7184,15 @@ string-width@^3.0.0, string-width@^3.1.0:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^5.1.0"
|
||||
|
||||
string-width@^4.1.0, string-width@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
|
||||
integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
string.prototype.matchall@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz#2af8fe3d2d6dc53ca2a59bd376b089c3c152b3c8"
|
||||
@@ -7204,6 +7239,13 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||
dependencies:
|
||||
ansi-regex "^4.1.0"
|
||||
|
||||
strip-ansi@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
|
||||
integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.0"
|
||||
|
||||
strip-bom@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
|
||||
@@ -7290,12 +7332,12 @@ tar@^4:
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.2"
|
||||
|
||||
telnet-client@0.15.3:
|
||||
version "0.15.3"
|
||||
resolved "https://registry.yarnpkg.com/telnet-client/-/telnet-client-0.15.3.tgz#99ec754e4acf6fa51dc69898f574df3c2550712e"
|
||||
integrity sha512-GSfdzQV0BKIYsmeXq7bJFJ2wHeJud6icaIxCUf6QCGQUD6R0BBGbT1+yLDhq67JRdgRpwyPwUbV7JxFeRrZomQ==
|
||||
telnet-client@1.2.8:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/telnet-client/-/telnet-client-1.2.8.tgz#946c0dadc8daa3f19bb40a3e898cb870403a4ca4"
|
||||
integrity sha512-W+w4k3QAmULVNhBVT2Fei369kGZCh/TH25M7caJAXW+hLxwoQRuw0di3cX4l0S9fgH3Mvq7u+IFMoBDpEw/eIg==
|
||||
dependencies:
|
||||
bluebird "3.5.x"
|
||||
bluebird "^3.5.4"
|
||||
|
||||
temp-dir@^1.0.0:
|
||||
version "1.0.0"
|
||||
@@ -7715,6 +7757,15 @@ wrap-ansi@^5.1.0:
|
||||
string-width "^3.0.0"
|
||||
strip-ansi "^5.0.0"
|
||||
|
||||
wrap-ansi@^6.2.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
|
||||
integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
@@ -7837,11 +7888,6 @@ xtend@~4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
|
||||
|
||||
"y18n@^3.2.1 || ^4.0.0":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
||||
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
||||
|
||||
y18n@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
@@ -7857,14 +7903,6 @@ yallist@^3.0.0, yallist@^3.0.2:
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
|
||||
integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=
|
||||
|
||||
yargs-parser@^11.1.1:
|
||||
version "11.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
|
||||
integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
|
||||
dependencies:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-parser@^13.0.0:
|
||||
version "13.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b"
|
||||
@@ -7889,23 +7927,13 @@ yargs-parser@^15.0.0:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs@^12.0.5:
|
||||
version "12.0.5"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
|
||||
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
|
||||
yargs-parser@^18.1.1:
|
||||
version "18.1.3"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
||||
dependencies:
|
||||
cliui "^4.0.0"
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
find-up "^3.0.0"
|
||||
get-caller-file "^1.0.1"
|
||||
os-locale "^3.0.0"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^1.0.1"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^2.0.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^3.2.1 || ^4.0.0"
|
||||
yargs-parser "^11.1.1"
|
||||
|
||||
yargs@^13.0.0:
|
||||
version "13.2.2"
|
||||
@@ -7956,3 +7984,20 @@ yargs@^14.2.0:
|
||||
which-module "^2.0.0"
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^15.0.0"
|
||||
|
||||
yargs@^15.1.0:
|
||||
version "15.3.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"
|
||||
integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==
|
||||
dependencies:
|
||||
cliui "^6.0.0"
|
||||
decamelize "^1.2.0"
|
||||
find-up "^4.1.0"
|
||||
get-caller-file "^2.0.1"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^2.0.0"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^4.2.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^18.1.1"
|
||||
|
||||
Reference in New Issue
Block a user