mirror of
https://github.com/status-im/react-native.git
synced 2025-01-15 20:15:11 +00:00
e1577df1fd
Summary: To make React Native play nicely with our internal build infrastructure we need to properly namespace all of our header includes. Where previously you could do `#import "RCTBridge.h"`, you must now write this as `#import <React/RCTBridge.h>`. If your xcode project still has a custom header include path, both variants will likely continue to work, but for new projects, we're defaulting the header include path to `$(BUILT_PRODUCTS_DIR)/usr/local/include`, where the React and CSSLayout targets will copy a subset of headers too. To make Xcode copy headers phase work properly, you may need to add React as an explicit dependency to your app's scheme and disable "parallelize build". Reviewed By: mmmulani Differential Revision: D4213120 fbshipit-source-id: 84a32a4b250c27699e6795f43584f13d594a9a82
132 lines
5.6 KiB
Objective-C
132 lines
5.6 KiB
Objective-C
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
#import <tgmath.h>
|
|
|
|
#import <CoreGraphics/CoreGraphics.h>
|
|
#import <Foundation/Foundation.h>
|
|
#import <UIKit/UIKit.h>
|
|
|
|
#import <React/RCTAssert.h>
|
|
#import <React/RCTDefines.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
// JSON serialization/deserialization
|
|
RCT_EXTERN NSString *__nullable RCTJSONStringify(id __nullable jsonObject, NSError **error);
|
|
RCT_EXTERN id __nullable RCTJSONParse(NSString *__nullable jsonString, NSError **error);
|
|
RCT_EXTERN id __nullable RCTJSONParseMutable(NSString *__nullable jsonString, NSError **error);
|
|
|
|
// Sanitize a JSON object by stripping invalid types and/or NaN values
|
|
RCT_EXTERN id RCTJSONClean(id object);
|
|
|
|
// Get MD5 hash of a string
|
|
RCT_EXTERN NSString *RCTMD5Hash(NSString *string);
|
|
|
|
// Check is we are currently on the main queue (not to be confused with
|
|
// the main thread, which is not neccesarily the same thing)
|
|
// https://twitter.com/olebegemann/status/738656134731599872
|
|
RCT_EXTERN BOOL RCTIsMainQueue(void);
|
|
|
|
// Execute the specified block on the main queue. Unlike dispatch_async()
|
|
// this will execute immediately if we're already on the main queue.
|
|
RCT_EXTERN void RCTExecuteOnMainQueue(dispatch_block_t block);
|
|
|
|
// Deprecated - do not use.
|
|
RCT_EXTERN void RCTExecuteOnMainThread(dispatch_block_t block, BOOL sync)
|
|
__deprecated_msg("Use RCTExecuteOnMainQueue instead. RCTExecuteOnMainQueue is "
|
|
"async. If you need to use the `sync` option... please don't.");
|
|
|
|
// Get screen metrics in a thread-safe way
|
|
RCT_EXTERN CGFloat RCTScreenScale(void);
|
|
RCT_EXTERN CGSize RCTScreenSize(void);
|
|
|
|
// Round float coordinates to nearest whole screen pixel (not point)
|
|
RCT_EXTERN CGFloat RCTRoundPixelValue(CGFloat value);
|
|
RCT_EXTERN CGFloat RCTCeilPixelValue(CGFloat value);
|
|
RCT_EXTERN CGFloat RCTFloorPixelValue(CGFloat value);
|
|
|
|
// Convert a size in points to pixels, rounded up to the nearest integral size
|
|
RCT_EXTERN CGSize RCTSizeInPixels(CGSize pointSize, CGFloat scale);
|
|
|
|
// Method swizzling
|
|
RCT_EXTERN void RCTSwapClassMethods(Class cls, SEL original, SEL replacement);
|
|
RCT_EXTERN void RCTSwapInstanceMethods(Class cls, SEL original, SEL replacement);
|
|
|
|
// Module subclass support
|
|
RCT_EXTERN BOOL RCTClassOverridesClassMethod(Class cls, SEL selector);
|
|
RCT_EXTERN BOOL RCTClassOverridesInstanceMethod(Class cls, SEL selector);
|
|
|
|
// Creates a standardized error object to return in callbacks
|
|
RCT_EXTERN NSDictionary<NSString *, id> *RCTMakeError(NSString *message, id __nullable toStringify, NSDictionary<NSString *, id> *__nullable extraData);
|
|
RCT_EXTERN NSDictionary<NSString *, id> *RCTMakeAndLogError(NSString *message, id __nullable toStringify, NSDictionary<NSString *, id> *__nullable extraData);
|
|
RCT_EXTERN NSDictionary<NSString *, id> *RCTJSErrorFromNSError(NSError *error);
|
|
RCT_EXTERN NSDictionary<NSString *, id> *RCTJSErrorFromCodeMessageAndNSError(NSString *code, NSString *message, NSError *__nullable error);
|
|
|
|
// The default error code to use as the `code` property for callback error objects
|
|
RCT_EXTERN NSString *const RCTErrorUnspecified;
|
|
|
|
// Returns YES if React is running in a test environment
|
|
RCT_EXTERN BOOL RCTRunningInTestEnvironment(void);
|
|
|
|
// Returns YES if React is running in an iOS App Extension
|
|
RCT_EXTERN BOOL RCTRunningInAppExtension(void);
|
|
|
|
// Returns the shared UIApplication instance, or nil if running in an App Extension
|
|
RCT_EXTERN UIApplication *__nullable RCTSharedApplication(void);
|
|
|
|
// Returns the current main window, useful if you need to access the root view
|
|
// or view controller
|
|
RCT_EXTERN UIWindow *__nullable RCTKeyWindow(void);
|
|
|
|
// Returns the presented view controller, useful if you need
|
|
// e.g. to present a modal view controller or alert over it
|
|
RCT_EXTERN UIViewController *__nullable RCTPresentedViewController(void);
|
|
|
|
// Does this device support force touch (aka 3D Touch)?
|
|
RCT_EXTERN BOOL RCTForceTouchAvailable(void);
|
|
|
|
// Create an NSError in the RCTErrorDomain
|
|
RCT_EXTERN NSError *RCTErrorWithMessage(NSString *message);
|
|
|
|
// Convert nil values to NSNull, and vice-versa
|
|
#define RCTNullIfNil(value) (value ?: (id)kCFNull)
|
|
#define RCTNilIfNull(value) (value == (id)kCFNull ? nil : value)
|
|
|
|
// Convert NaN or infinite values to zero, as these aren't JSON-safe
|
|
RCT_EXTERN double RCTZeroIfNaN(double value);
|
|
|
|
// Convert data to a Base64-encoded data URL
|
|
RCT_EXTERN NSURL *RCTDataURL(NSString *mimeType, NSData *data);
|
|
|
|
// Gzip functionality - compression level in range 0 - 1 (-1 for default)
|
|
RCT_EXTERN NSData *__nullable RCTGzipData(NSData *__nullable data, float level);
|
|
|
|
// Returns the relative path within the main bundle for an absolute URL
|
|
// (or nil, if the URL does not specify a path within the main bundle)
|
|
RCT_EXTERN NSString *__nullable RCTBundlePathForURL(NSURL *__nullable URL);
|
|
|
|
// Determines if a given image URL refers to a local image
|
|
RCT_EXTERN BOOL RCTIsLocalAssetURL(NSURL *__nullable imageURL);
|
|
|
|
// Creates a new, unique temporary file path with the specified extension
|
|
RCT_EXTERN NSString *__nullable RCTTempFilePath(NSString *__nullable extension, NSError **error);
|
|
|
|
// Converts a CGColor to a hex string
|
|
RCT_EXTERN NSString *RCTColorToHexString(CGColorRef color);
|
|
|
|
// Get standard localized string (if it exists)
|
|
RCT_EXTERN NSString *RCTUIKitLocalizedString(NSString *string);
|
|
|
|
// URL manipulation
|
|
RCT_EXTERN NSString *__nullable RCTGetURLQueryParam(NSURL *__nullable URL, NSString *param);
|
|
RCT_EXTERN NSURL *__nullable RCTURLByReplacingQueryParam(NSURL *__nullable URL, NSString *param, NSString *__nullable value);
|
|
|
|
NS_ASSUME_NONNULL_END
|