Compare commits

...

4 Commits

Author SHA1 Message Date
Nick 90a90a1271 new build 2025-01-07 16:19:55 +01:00
Nick 299743212e new build 2024-12-20 11:16:29 +01:00
Nick d8ccbe67a6 new version 2024-11-20 15:28:34 +01:00
Nick b644adc7f8 new build 2024-10-29 08:36:43 +01:00
1450 changed files with 27345 additions and 7072 deletions

View File

@ -4,22 +4,6 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libBVLinearGradient.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libBVLinearGradient.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libBVLinearGradient.a</string>
@ -39,6 +23,22 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libBVLinearGradient.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libBVLinearGradient.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -4,6 +4,22 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libDynamicFonts.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libDynamicFonts.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libDynamicFonts.a</string>
@ -23,22 +39,6 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libDynamicFonts.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libDynamicFonts.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -4,6 +4,22 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libNewsmemory.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libNewsmemory.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libNewsmemory.a</string>
@ -23,22 +39,6 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libNewsmemory.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libNewsmemory.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -0,0 +1,18 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "RCTTypeSafety/RCTConvertHelpers.h"
#import "RCTTypeSafety/RCTTypedModuleConstants.h"
FOUNDATION_EXPORT double RCTTypeSafetyVersionNumber;
FOUNDATION_EXPORT const unsigned char RCTTypeSafetyVersionString[];

View File

@ -0,0 +1,6 @@
module RCTTypeSafety {
umbrella header "RCTTypeSafety-umbrella.h"
export *
module * { export * }
}

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import <optional>
#import <vector>
#import <Foundation/Foundation.h>
#import <FBLazyVector/FBLazyVector.h>
#import <folly/Optional.h>
namespace facebook {
namespace react {
@ -35,22 +36,22 @@ NSArray *RCTConvertVecToArray(const ContainerT &vec)
}
template<typename ContainerT>
NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec, id (^convertor)(typename ContainerT::value_type element))
NSArray *RCTConvertOptionalVecToArray(const std::optional<ContainerT> &vec, id (^convertor)(typename ContainerT::value_type element))
{
return vec.hasValue() ? RCTConvertVecToArray(vec.value(), convertor) : nil;
return vec.has_value() ? RCTConvertVecToArray(vec.value(), convertor) : nil;
}
template<typename ContainerT>
NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec)
NSArray *RCTConvertOptionalVecToArray(const std::optional<ContainerT> &vec)
{
return vec.hasValue() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil;
return vec.has_value() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil;
}
bool RCTBridgingToBool(id value);
folly::Optional<bool> RCTBridgingToOptionalBool(id value);
std::optional<bool> RCTBridgingToOptionalBool(id value);
NSString *RCTBridgingToString(id value);
NSString *RCTBridgingToOptionalString(id value);
folly::Optional<double> RCTBridgingToOptionalDouble(id value);
std::optional<double> RCTBridgingToOptionalDouble(id value);
double RCTBridgingToDouble(id value);
NSArray *RCTBridgingToArray(id value);
@ -64,10 +65,10 @@ facebook::react::LazyVector<T> RCTBridgingToVec(id value, T (^ctor)(id element))
}
template<typename T>
folly::Optional<facebook::react::LazyVector<T>> RCTBridgingToOptionalVec(id value, T (^ctor)(id element))
std::optional<facebook::react::LazyVector<T>> RCTBridgingToOptionalVec(id value, T (^ctor)(id element))
{
if (value == nil || value == (id)kCFNull) {
return folly::none;
return std::nullopt;
} else {
return RCTBridgingToVec(value, ctor);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.

View File

@ -0,0 +1,18 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "RCTTypeSafety/RCTConvertHelpers.h"
#import "RCTTypeSafety/RCTTypedModuleConstants.h"
FOUNDATION_EXPORT double RCTTypeSafetyVersionNumber;
FOUNDATION_EXPORT const unsigned char RCTTypeSafetyVersionString[];

View File

@ -0,0 +1,6 @@
module RCTTypeSafety {
umbrella header "RCTTypeSafety-umbrella.h"
export *
module * { export * }
}

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import <optional>
#import <vector>
#import <Foundation/Foundation.h>
#import <FBLazyVector/FBLazyVector.h>
#import <folly/Optional.h>
namespace facebook {
namespace react {
@ -35,22 +36,22 @@ NSArray *RCTConvertVecToArray(const ContainerT &vec)
}
template<typename ContainerT>
NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec, id (^convertor)(typename ContainerT::value_type element))
NSArray *RCTConvertOptionalVecToArray(const std::optional<ContainerT> &vec, id (^convertor)(typename ContainerT::value_type element))
{
return vec.hasValue() ? RCTConvertVecToArray(vec.value(), convertor) : nil;
return vec.has_value() ? RCTConvertVecToArray(vec.value(), convertor) : nil;
}
template<typename ContainerT>
NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec)
NSArray *RCTConvertOptionalVecToArray(const std::optional<ContainerT> &vec)
{
return vec.hasValue() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil;
return vec.has_value() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil;
}
bool RCTBridgingToBool(id value);
folly::Optional<bool> RCTBridgingToOptionalBool(id value);
std::optional<bool> RCTBridgingToOptionalBool(id value);
NSString *RCTBridgingToString(id value);
NSString *RCTBridgingToOptionalString(id value);
folly::Optional<double> RCTBridgingToOptionalDouble(id value);
std::optional<double> RCTBridgingToOptionalDouble(id value);
double RCTBridgingToDouble(id value);
NSArray *RCTBridgingToArray(id value);
@ -64,10 +65,10 @@ facebook::react::LazyVector<T> RCTBridgingToVec(id value, T (^ctor)(id element))
}
template<typename T>
folly::Optional<facebook::react::LazyVector<T>> RCTBridgingToOptionalVec(id value, T (^ctor)(id element))
std::optional<facebook::react::LazyVector<T>> RCTBridgingToOptionalVec(id value, T (^ctor)(id element))
{
if (value == nil || value == (id)kCFNull) {
return folly::none;
return std::nullopt;
} else {
return RCTBridgingToVec(value, ctor);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.

View File

@ -4,22 +4,6 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libRNCAsyncStorage.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNCAsyncStorage.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNCAsyncStorage.a</string>
@ -39,6 +23,22 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNCAsyncStorage.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNCAsyncStorage.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -1,8 +0,0 @@
#import <React/UIView+React.h>
#import <React/RCTView.h>
@interface CMIFColorMatrixImageFilter : RCTView
@property (nonatomic, strong) NSArray<NSNumber *> *matrix;
@end

View File

@ -1,8 +0,0 @@
#import <React/UIView+React.h>
#import <React/RCTView.h>
@interface CMIFColorMatrixImageFilter : RCTView
@property (nonatomic, strong) NSArray<NSNumber *> *matrix;
@end

View File

@ -4,6 +4,22 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libRNDefaultPreference.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNDefaultPreference.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNDefaultPreference.a</string>
@ -23,22 +39,6 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNDefaultPreference.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNDefaultPreference.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -4,22 +4,6 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libRNFastImage.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNFastImage.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNFastImage.a</string>
@ -39,6 +23,22 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNFastImage.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNFastImage.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -4,6 +4,22 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libRNGestureHandler.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNGestureHandler.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNGestureHandler.a</string>
@ -23,22 +39,6 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNGestureHandler.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNGestureHandler.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libRNOpenAppSettings.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNOpenAppSettings.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNOpenAppSettings.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>libRNOpenAppSettings.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

View File

@ -1,7 +0,0 @@
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>
@interface RNOpenAppSettings : NSObject <RCTBridgeModule>
@end

View File

@ -1,7 +0,0 @@
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>
@interface RNOpenAppSettings : NSObject <RCTBridgeModule>
@end

View File

@ -4,22 +4,6 @@
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libRNReanimated.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNReanimated.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNReanimated.a</string>
@ -39,6 +23,22 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libRNReanimated.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libRNReanimated.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

View File

@ -0,0 +1,41 @@
#pragma once
#include <jsi/jsi.h>
#include <unordered_set>
#include "PlatformDepMethodsHolder.h"
#include "RuntimeManager.h"
namespace reanimated {
using namespace facebook;
enum SensorType {
ACCELEROMETER = 1,
GYROSCOPE = 2,
GRAVITY = 3,
MAGNETIC_FIELD = 4,
ROTATION_VECTOR = 5,
};
class AnimatedSensorModule {
std::unordered_set<int> sensorsIds_;
RegisterSensorFunction platformRegisterSensorFunction_;
UnregisterSensorFunction platformUnregisterSensorFunction_;
RuntimeManager *runtimeManager_;
public:
AnimatedSensorModule(
const PlatformDepMethodsHolder &platformDepMethodsHolder,
RuntimeManager *runtimeManager);
~AnimatedSensorModule();
jsi::Value registerSensor(
jsi::Runtime &rt,
const jsi::Value &sensorType,
const jsi::Value &interval,
const jsi::Value &sensorDataContainer);
void unregisterSensor(const jsi::Value &sensorId);
};
} // namespace reanimated

View File

@ -0,0 +1,32 @@
#pragma once
#include <memory>
#include <string>
#include "Scheduler.h"
namespace reanimated {
struct ErrorWrapper {
std::string message = "";
bool handled = true;
};
class ErrorHandler {
public:
bool raise() {
if (getError()->handled) {
return false;
}
this->getScheduler()->scheduleOnUI([this]() mutable { this->raiseSpec(); });
return true;
}
virtual std::shared_ptr<Scheduler> getScheduler() = 0;
virtual std::shared_ptr<ErrorWrapper> getError() = 0;
virtual void setError(std::string message) = 0;
virtual ~ErrorHandler() {}
protected:
virtual void raiseSpec() = 0;
};
} // namespace reanimated

View File

@ -0,0 +1,37 @@
#pragma once
#include <jsi/jsi.h>
#include <map>
#include <memory>
#include <mutex>
#include <set>
#include <string>
#include <unordered_map>
#include <vector>
using namespace facebook;
namespace reanimated {
class WorkletEventHandler;
class EventHandlerRegistry {
std::map<
std::string,
std::unordered_map<unsigned long, std::shared_ptr<WorkletEventHandler>>>
eventMappings;
std::map<unsigned long, std::shared_ptr<WorkletEventHandler>> eventHandlers;
std::mutex instanceMutex;
public:
void registerEventHandler(std::shared_ptr<WorkletEventHandler> eventHandler);
void unregisterEventHandler(unsigned long id);
void processEvent(
jsi::Runtime &rt,
std::string eventName,
std::string eventPayload);
bool isAnyHandlerWaitingForEvent(std::string eventName);
};
} // namespace reanimated

View File

@ -0,0 +1,19 @@
#pragma once
#include <string>
namespace reanimated {
class FeaturesConfig {
public:
static inline bool isLayoutAnimationEnabled() {
return _isLayoutAnimationEnabled;
}
static inline void setLayoutAnimationEnabled(bool isLayoutAnimationEnabled) {
_isLayoutAnimationEnabled = isLayoutAnimationEnabled;
}
private:
static bool _isLayoutAnimationEnabled;
};
} // namespace reanimated

View File

@ -0,0 +1,36 @@
#pragma once
#include <jsi/jsi.h>
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>
#include "RuntimeManager.h"
#include "SharedParent.h"
#include "WorkletsCache.h"
using namespace facebook;
namespace reanimated {
class FrozenObject : public jsi::HostObject {
friend WorkletsCache;
friend void extractMutables(
jsi::Runtime &rt,
std::shared_ptr<ShareableValue> sv,
std::vector<std::shared_ptr<MutableValue>> &res);
private:
std::unordered_map<std::string, std::shared_ptr<ShareableValue>> map;
std::vector<std::string> namesOrder;
public:
FrozenObject(
jsi::Runtime &rt,
const jsi::Object &object,
RuntimeManager *runtimeManager);
jsi::Object shallowClone(jsi::Runtime &rt);
bool containsHostFunction = false;
};
} // namespace reanimated

View File

@ -0,0 +1,28 @@
#pragma once
#include <jsi/jsi.h>
#include <memory>
#include <string>
using namespace facebook;
namespace reanimated {
struct HostFunctionHandler : jsi::HostObject {
std::shared_ptr<jsi::Function> pureFunction;
std::string functionName;
jsi::Runtime *hostRuntime;
jsi::HostObject a;
HostFunctionHandler(std::shared_ptr<jsi::Function> f, jsi::Runtime &rt) {
pureFunction = f;
functionName = f->getProperty(rt, "name").asString(rt).utf8(rt);
hostRuntime = &rt;
}
std::shared_ptr<jsi::Function> getPureFunction() {
return pureFunction;
}
};
} // namespace reanimated

View File

@ -0,0 +1,37 @@
#pragma once
#include <jsi/jsi.h>
#include <stdio.h>
#include <memory>
#include <mutex>
#include <unordered_map>
#include <vector>
#include "Scheduler.h"
using namespace facebook;
namespace reanimated {
class RuntimeManager;
struct StaticStoreUser {
std::atomic<int> ctr;
std::unordered_map<int, std::vector<std::shared_ptr<jsi::Value>>> store;
std::recursive_mutex storeMutex;
};
class StoreUser {
int identifier = 0;
std::weak_ptr<Scheduler> scheduler;
std::shared_ptr<StaticStoreUser> storeUserData;
public:
StoreUser(std::shared_ptr<Scheduler> s, const RuntimeManager &runtimeManager);
std::weak_ptr<jsi::Value> getWeakRef(jsi::Runtime &rt);
void removeRefs();
virtual ~StoreUser();
};
} // namespace reanimated

View File

@ -0,0 +1,32 @@
#pragma once
#include <jsi/jsi.h>
#include <stdio.h>
#include <functional>
#include <map>
#include <memory>
namespace reanimated {
using namespace facebook;
class MutableValue;
class LayoutAnimationsProxy {
public:
LayoutAnimationsProxy(
std::function<void(int, jsi::Object newProps)> _notifyAboutProgress,
std::function<void(int, bool)> _notifyAboutEnd);
void
startObserving(int tag, std::shared_ptr<MutableValue> sv, jsi::Runtime &rt);
void stopObserving(int tag, bool finished);
void notifyAboutCancellation(int tag);
private:
std::function<void(int, jsi::Object newProps)> notifyAboutProgress;
std::function<void(int, bool)> notifyAboutEnd;
std::map<int, std::shared_ptr<MutableValue>> observedValues;
};
} // namespace reanimated

View File

@ -0,0 +1,22 @@
#pragma once
#include <memory>
#include "./LoggerInterface.h"
namespace reanimated {
class Logger {
public:
template <typename T>
static void log(T value) {
if (instance == nullptr) {
throw std::runtime_error("no logger specified");
}
instance->log(value);
}
private:
static std::unique_ptr<LoggerInterface> instance;
};
} // namespace reanimated

View File

@ -0,0 +1,14 @@
#pragma once
namespace reanimated {
class LoggerInterface {
public:
virtual void log(const char *str) = 0;
virtual void log(double d) = 0;
virtual void log(int i) = 0;
virtual void log(bool b) = 0;
virtual ~LoggerInterface() {}
};
} // namespace reanimated

View File

@ -0,0 +1,51 @@
#pragma once
#include <jsi/jsi.h>
#include <stdio.h>
#include <memory>
#include <vector>
#include "NativeReanimatedModule.h"
#include "ShareableValue.h"
using namespace facebook;
namespace reanimated {
class MapperRegistry;
struct ViewDescriptor {
int tag;
jsi::Value name;
};
class Mapper : public std::enable_shared_from_this<Mapper> {
friend MapperRegistry;
private:
unsigned long id;
NativeReanimatedModule *module;
std::shared_ptr<jsi::Function> mapper;
std::vector<std::shared_ptr<MutableValue>> inputs;
std::vector<std::shared_ptr<MutableValue>> outputs;
bool dirty = true;
std::shared_ptr<jsi::Function> userUpdater;
UpdaterFunction *updateProps;
int optimalizationLvl = 0;
std::shared_ptr<ShareableValue> viewDescriptors;
public:
Mapper(
NativeReanimatedModule *module,
unsigned long id,
std::shared_ptr<jsi::Function> mapper,
std::vector<std::shared_ptr<MutableValue>> inputs,
std::vector<std::shared_ptr<MutableValue>> outputs);
void execute(jsi::Runtime &rt);
void enableFastMode(
const int optimalizationLvl,
const std::shared_ptr<ShareableValue> &updater,
const std::shared_ptr<ShareableValue> &jsViewDescriptors);
virtual ~Mapper();
};
} // namespace reanimated

View File

@ -0,0 +1,29 @@
#pragma once
#include <jsi/jsi.h>
#include <memory>
#include <unordered_map>
#include <vector>
using namespace facebook;
namespace reanimated {
class Mapper;
class MapperRegistry {
std::unordered_map<unsigned long, std::shared_ptr<Mapper>> mappers;
std::vector<std::shared_ptr<Mapper>> sortedMappers;
void updateOrder();
bool updatedSinceLastExecute = false;
public:
void startMapper(std::shared_ptr<Mapper> mapper);
void stopMapper(unsigned long id);
void execute(jsi::Runtime &rt);
bool needRunOnRender();
};
} // namespace reanimated

View File

@ -0,0 +1,54 @@
#pragma once
#include <jsi/jsi.h>
#include <map>
#include <memory>
#include <mutex>
#include <vector>
#include "JSIStoreValueUser.h"
#include "LayoutAnimationsProxy.h"
#include "MutableValueSetterProxy.h"
#include "RuntimeManager.h"
#include "SharedParent.h"
using namespace facebook;
namespace reanimated {
class MutableValue : public jsi::HostObject,
public std::enable_shared_from_this<MutableValue>,
public StoreUser {
private:
friend MutableValueSetterProxy;
friend LayoutAnimationsProxy;
private:
RuntimeManager *runtimeManager;
std::mutex readWriteMutex;
std::shared_ptr<ShareableValue> value;
std::weak_ptr<jsi::Value> animation;
std::map<unsigned long, std::function<void()>> listeners;
public:
void setValue(jsi::Runtime &rt, const jsi::Value &newValue);
jsi::Value getValue(jsi::Runtime &rt);
public:
MutableValue(
jsi::Runtime &rt,
const jsi::Value &initial,
RuntimeManager *runtimeManager,
std::shared_ptr<Scheduler> s);
public:
void
set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi::Value &value);
jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &name);
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt);
unsigned long addListener(
unsigned long listenerId,
std::function<void()> listener);
void removeListener(unsigned long listenerId);
};
} // namespace reanimated

View File

@ -0,0 +1,25 @@
#pragma once
#include <jsi/jsi.h>
#include <memory>
#include <utility>
#include "SharedParent.h"
using namespace facebook;
namespace reanimated {
class MutableValueSetterProxy : public jsi::HostObject {
private:
friend MutableValue;
std::shared_ptr<MutableValue> mutableValue;
public:
explicit MutableValueSetterProxy(std::shared_ptr<MutableValue> mutableValue)
: mutableValue(std::move(mutableValue)) {}
void
set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi::Value &value);
jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &name);
};
} // namespace reanimated

View File

@ -0,0 +1,24 @@
#import <Foundation/Foundation.h>
#import <RNReanimated/RNGestureHandlerStateManager.h>
#import <React/RCTUIManager.h>
#include <string>
#include <utility>
#include <vector>
namespace reanimated {
std::vector<std::pair<std::string, double>> measure(
int viewTag,
RCTUIManager *uiManager);
void scrollTo(
int scrollViewTag,
RCTUIManager *uiManager,
double x,
double y,
bool animated);
void setGestureState(
id<RNGestureHandlerStateManager> gestureHandlerStateManager,
int handlerTag,
int newState);
} // namespace reanimated

View File

@ -0,0 +1,15 @@
#if __cplusplus
#import <RNReanimated/NativeReanimatedModule.h>
#import <React/RCTEventDispatcher.h>
#include <memory>
namespace reanimated {
std::shared_ptr<reanimated::NativeReanimatedModule> createReanimatedModule(
RCTBridge *bridge,
std::shared_ptr<facebook::react::CallInvoker> jsInvoker);
}
#endif

View File

@ -0,0 +1,121 @@
#pragma once
#include <unistd.h>
#include <memory>
#include <string>
#include <vector>
#include "AnimatedSensorModule.h"
#include "ErrorHandler.h"
#include "LayoutAnimationsProxy.h"
#include "NativeReanimatedModuleSpec.h"
#include "PlatformDepMethodsHolder.h"
#include "RuntimeDecorator.h"
#include "RuntimeManager.h"
#include "Scheduler.h"
#include "SingleInstanceChecker.h"
namespace reanimated {
using FrameCallback = std::function<void(double)>;
class ShareableValue;
class MutableValue;
class MapperRegistry;
class EventHandlerRegistry;
class NativeReanimatedModule : public NativeReanimatedModuleSpec,
public RuntimeManager {
friend ShareableValue;
friend MutableValue;
public:
NativeReanimatedModule(
std::shared_ptr<CallInvoker> jsInvoker,
std::shared_ptr<Scheduler> scheduler,
std::shared_ptr<jsi::Runtime> rt,
std::shared_ptr<ErrorHandler> errorHandler,
std::function<jsi::Value(jsi::Runtime &, const int, const jsi::String &)>
propObtainer,
std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy,
PlatformDepMethodsHolder platformDepMethodsHolder);
void installCoreFunctions(jsi::Runtime &rt, const jsi::Value &valueSetter)
override;
jsi::Value makeShareable(jsi::Runtime &rt, const jsi::Value &value) override;
jsi::Value makeMutable(jsi::Runtime &rt, const jsi::Value &value) override;
jsi::Value makeRemote(jsi::Runtime &rt, const jsi::Value &value) override;
jsi::Value startMapper(
jsi::Runtime &rt,
const jsi::Value &worklet,
const jsi::Value &inputs,
const jsi::Value &outputs,
const jsi::Value &updater,
const jsi::Value &viewDescriptors) override;
void stopMapper(jsi::Runtime &rt, const jsi::Value &mapperId) override;
jsi::Value registerEventHandler(
jsi::Runtime &rt,
const jsi::Value &eventHash,
const jsi::Value &worklet) override;
void unregisterEventHandler(
jsi::Runtime &rt,
const jsi::Value &registrationId) override;
jsi::Value getViewProp(
jsi::Runtime &rt,
const jsi::Value &viewTag,
const jsi::Value &propName,
const jsi::Value &callback) override;
jsi::Value enableLayoutAnimations(jsi::Runtime &rt, const jsi::Value &config)
override;
jsi::Value configureProps(
jsi::Runtime &rt,
const jsi::Value &uiProps,
const jsi::Value &nativeProps) override;
void onRender(double timestampMs);
void onEvent(std::string eventName, std::string eventAsString);
bool isAnyHandlerWaitingForEvent(std::string eventName);
void maybeRequestRender();
UpdaterFunction updaterFunction;
jsi::Value registerSensor(
jsi::Runtime &rt,
const jsi::Value &sensorType,
const jsi::Value &interval,
const jsi::Value &sensorDataContainer) override;
void unregisterSensor(jsi::Runtime &rt, const jsi::Value &sensorId) override;
jsi::Value subscribeForKeyboardEvents(
jsi::Runtime &rt,
const jsi::Value &keyboardEventContainer) override;
void unsubscribeFromKeyboardEvents(
jsi::Runtime &rt,
const jsi::Value &listenerId) override;
private:
std::shared_ptr<MapperRegistry> mapperRegistry;
std::shared_ptr<EventHandlerRegistry> eventHandlerRegistry;
std::function<void(FrameCallback &, jsi::Runtime &)> requestRender;
std::shared_ptr<jsi::Value> dummyEvent;
std::vector<FrameCallback> frameCallbacks;
bool renderRequested = false;
std::function<jsi::Value(jsi::Runtime &, const int, const jsi::String &)>
propObtainer;
std::function<void(double)> onRenderCallback;
std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy;
AnimatedSensorModule animatedSensorModule;
ConfigurePropsFunction configurePropsPlatformFunction;
KeyboardEventSubscribeFunction subscribeForKeyboardEventsFunction;
KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEventsFunction;
#ifdef DEBUG
SingleInstanceChecker<NativeReanimatedModule> singleInstanceChecker_;
#endif
};
} // namespace reanimated

View File

@ -0,0 +1,90 @@
#pragma once
#include <memory>
#include <string>
#include <vector>
#ifdef ANDROID
#include "TurboModule.h"
#else
#include <ReactCommon/TurboModule.h>
#endif
#include <ReactCommon/CallInvoker.h>
using namespace facebook;
using namespace react;
namespace reanimated {
class JSI_EXPORT NativeReanimatedModuleSpec : public TurboModule {
protected:
explicit NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker);
public:
virtual void installCoreFunctions(
jsi::Runtime &rt,
const jsi::Value &valueSetter) = 0;
// SharedValue
virtual jsi::Value makeShareable(
jsi::Runtime &rt,
const jsi::Value &value) = 0;
virtual jsi::Value makeMutable(jsi::Runtime &rt, const jsi::Value &value) = 0;
virtual jsi::Value makeRemote(jsi::Runtime &rt, const jsi::Value &value) = 0;
// mappers
virtual jsi::Value startMapper(
jsi::Runtime &rt,
const jsi::Value &worklet,
const jsi::Value &inputs,
const jsi::Value &outputs,
const jsi::Value &updater,
const jsi::Value &viewDescriptors) = 0;
virtual void stopMapper(jsi::Runtime &rt, const jsi::Value &mapperId) = 0;
// events
virtual jsi::Value registerEventHandler(
jsi::Runtime &rt,
const jsi::Value &eventHash,
const jsi::Value &worklet) = 0;
virtual void unregisterEventHandler(
jsi::Runtime &rt,
const jsi::Value &registrationId) = 0;
// views
virtual jsi::Value getViewProp(
jsi::Runtime &rt,
const jsi::Value &viewTag,
const jsi::Value &propName,
const jsi::Value &callback) = 0;
// sensors
virtual jsi::Value registerSensor(
jsi::Runtime &rt,
const jsi::Value &sensorType,
const jsi::Value &interval,
const jsi::Value &sensorDataContainer) = 0;
virtual void unregisterSensor(
jsi::Runtime &rt,
const jsi::Value &sensorId) = 0;
// keyboard
virtual jsi::Value subscribeForKeyboardEvents(
jsi::Runtime &rt,
const jsi::Value &keyboardEventContainer) = 0;
virtual void unsubscribeFromKeyboardEvents(
jsi::Runtime &rt,
const jsi::Value &listenerId) = 0;
// other
virtual jsi::Value enableLayoutAnimations(
jsi::Runtime &rt,
const jsi::Value &config) = 0;
virtual jsi::Value configureProps(
jsi::Runtime &rt,
const jsi::Value &uiProps,
const jsi::Value &nativeProps) = 0;
};
} // namespace reanimated

View File

@ -0,0 +1,51 @@
#pragma once
#include <jsi/jsi.h>
#include <stdio.h>
#include <string>
#include <utility>
#include <vector>
using namespace facebook;
namespace reanimated {
using UpdaterFunction = std::function<void(
jsi::Runtime &rt,
int viewTag,
const jsi::Value &viewName,
const jsi::Object &object)>;
using RequestRender =
std::function<void(std::function<void(double)>, jsi::Runtime &rt)>;
using ScrollToFunction = std::function<void(int, double, double, bool)>;
using MeasuringFunction =
std::function<std::vector<std::pair<std::string, double>>(int)>;
using TimeProviderFunction = std::function<double(void)>;
using RegisterSensorFunction =
std::function<int(int, int, std::function<void(double[])>)>;
using UnregisterSensorFunction = std::function<void(int)>;
using SetGestureStateFunction = std::function<void(int, int)>;
using ConfigurePropsFunction = std::function<void(
jsi::Runtime &rt,
const jsi::Value &uiProps,
const jsi::Value &nativeProps)>;
using KeyboardEventSubscribeFunction =
std::function<int(std::function<void(int, int)>)>;
using KeyboardEventUnsubscribeFunction = std::function<void(int)>;
struct PlatformDepMethodsHolder {
RequestRender requestRender;
UpdaterFunction updaterFunction;
ScrollToFunction scrollToFunction;
MeasuringFunction measuringFunction;
TimeProviderFunction getCurrentTime;
RegisterSensorFunction registerSensor;
UnregisterSensorFunction unregisterSensor;
SetGestureStateFunction setGestureStateFunction;
ConfigurePropsFunction configurePropsFunction;
KeyboardEventSubscribeFunction subscribeForKeyboardEvents;
KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEvents;
};
} // namespace reanimated

View File

@ -1,7 +1,6 @@
#import <RNReanimated/REATransition.h>
#import <React/RCTConvert.h>
#import "REATransition.h"
@interface RCTConvert (REATransition)
+ (REATransitionType)REATransitionType:(id)json;

View File

@ -1,4 +1,4 @@
#import "REATransition.h"
#import <RNReanimated/REATransition.h>
@interface REATransitionGroup : REATransition
@property (nonatomic) BOOL sequence;
@ -8,8 +8,8 @@
@interface REAVisibilityTransition : REATransition
@property (nonatomic) REATransitionAnimationType animationType;
- (REATransitionAnimation *)appearView:(UIView*)view inParent:(UIView*)parent;
- (REATransitionAnimation *)disappearView:(UIView*)view fromParent:(UIView*)parent;
- (REATransitionAnimation *)appearView:(UIView *)view inParent:(UIView *)parent;
- (REATransitionAnimation *)disappearView:(UIView *)view fromParent:(UIView *)parent;
- (instancetype)initWithConfig:(NSDictionary *)config;
@end

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAAlwaysNode : REANode <REAFinalNode>
@end

View File

@ -0,0 +1,32 @@
#import <Foundation/Foundation.h>
#import <RNReanimated/REASnapshot.h>
#import <React/RCTUIManager.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, ViewState) {
Inactive,
Appearing,
Disappearing,
Layout,
ToRemove,
};
@interface REAAnimationsManager : NSObject
- (instancetype)initWithUIManager:(RCTUIManager *)uiManager;
- (void)setRemovingConfigBlock:(void (^)(NSNumber *tag))block;
- (void)setAnimationStartingBlock:
(void (^)(NSNumber *tag, NSString *type, NSDictionary *target, NSNumber *depth))startAnimation;
- (void)notifyAboutProgress:(NSDictionary *)newStyle tag:(NSNumber *)tag;
- (void)notifyAboutEnd:(NSNumber *)tag cancelled:(BOOL)cancelled;
- (void)invalidate;
- (void)onViewRemoval:(UIView *)view before:(REASnapshot *)before;
- (void)onViewCreate:(UIView *)view after:(REASnapshot *)after;
- (void)onViewUpdate:(UIView *)view before:(REASnapshot *)before after:(REASnapshot *)after;
- (void)setToBeRemovedRegistry:(NSMutableDictionary<NSNumber *, NSMutableSet<id<RCTComponent>> *> *)toBeRemovedRegister;
- (void)removeLeftovers;
@end
NS_ASSUME_NONNULL_END

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REABezierNode : REANode

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REABlockNode : REANode

View File

@ -1,7 +1,6 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REACallFuncNode : REANode
@end

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAClockNode : REANode
@property (nonatomic, readonly) BOOL isRunning;

View File

@ -1,6 +1,5 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAConcatNode : REANode
@end

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REACondNode : REANode

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface READebugNode : REANode

View File

@ -0,0 +1,10 @@
#import <Foundation/Foundation.h>
#import <React/RCTEventDispatcher.h>
NS_ASSUME_NONNULL_BEGIN
@interface REAEventDispatcher : RCTEventDispatcher
@end
NS_ASSUME_NONNULL_END

View File

@ -1,5 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
#import <React/RCTEventDispatcher.h>
@interface REAEventNode : REANode

View File

@ -1,7 +1,6 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAFunctionNode : REANode
@end

View File

@ -0,0 +1,21 @@
#import <RNReanimated/ErrorHandler.h>
#import <RNReanimated/Scheduler.h>
#include <memory>
#include <string>
namespace reanimated {
class REAIOSErrorHandler : public ErrorHandler {
std::shared_ptr<Scheduler> scheduler;
void raiseSpec() override;
std::shared_ptr<ErrorWrapper> error;
public:
REAIOSErrorHandler(std::shared_ptr<Scheduler> scheduler);
std::shared_ptr<Scheduler> getScheduler() override;
std::shared_ptr<ErrorWrapper> getError() override;
void setError(std::string message) override;
virtual ~REAIOSErrorHandler() {}
};
} // namespace reanimated

View File

@ -0,0 +1,15 @@
#import <RNReanimated/ReanimatedHiddenHeaders.h>
#include <stdio.h>
namespace reanimated {
class REAIOSLogger : public LoggerInterface {
public:
void log(const char *str) override;
void log(double d) override;
void log(int i) override;
void log(bool b) override;
virtual ~REAIOSLogger() {}
};
} // namespace reanimated

View File

@ -0,0 +1,19 @@
#import <RNReanimated/Scheduler.h>
#import <React/RCTUIManager.h>
#import <ReactCommon/CallInvoker.h>
#include <stdio.h>
#include <memory>
namespace reanimated {
using namespace facebook;
using namespace react;
class REAIOSScheduler : public Scheduler {
public:
REAIOSScheduler(std::shared_ptr<CallInvoker> jsInvoker);
void scheduleOnUI(std::function<void()> job) override;
virtual ~REAIOSScheduler();
};
} // namespace reanimated

View File

@ -0,0 +1,30 @@
#import <Foundation/Foundation.h>
#import <RNReanimated/NativeProxy.h>
#import <RNReanimated/REAEventDispatcher.h>
#import <RNReanimated/REAModule.h>
#import <React/RCTBridge+Private.h>
#import <React/RCTCxxBridgeDelegate.h>
#import <ReactCommon/RCTTurboModuleManager.h>
#import <jsireact/JSIExecutor.h>
#if REACT_NATIVE_MINOR_VERSION >= 64
#import <React/RCTJSIExecutorRuntimeInstaller.h>
#endif
#if REACT_NATIVE_MINOR_VERSION < 63
#import <ReactCommon/BridgeJSCallInvoker.h>
#endif
NS_ASSUME_NONNULL_BEGIN
namespace reanimated {
using namespace facebook;
using namespace react;
JSIExecutor::RuntimeInstaller REAJSIExecutorRuntimeInstaller(
RCTBridge *bridge,
JSIExecutor::RuntimeInstaller runtimeInstallerToWrap);
} // namespace reanimated
NS_ASSUME_NONNULL_END

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAJSCallNode : REANode

View File

@ -0,0 +1,17 @@
#ifndef REAKeyboardEventManager_h
#define REAKeyboardEventManager_h
#import <RNReanimated/REAEventDispatcher.h>
#import <React/RCTEventDispatcher.h>
typedef void (^KeyboardEventListenerBlock)(int keyboardState, int height);
@interface REAKeyboardEventObserver : NSObject
- (instancetype)init;
- (int)subscribeForKeyboardEvents:(KeyboardEventListenerBlock)listener;
- (void)unsubscribeFromKeyboardEvents:(int)listenerId;
@end
#endif /* REAKeyboardEventManager_h */

View File

@ -5,8 +5,10 @@
#import <React/RCTUIManagerObserverCoordinator.h>
#import <React/RCTUIManagerUtils.h>
#import "REAValueNode.h"
#import <RNReanimated/REAValueNode.h>
@interface REAModule : RCTEventEmitter <RCTBridgeModule, RCTEventDispatcherObserver, RCTUIManagerObserver>
@property (nonatomic, readonly) REANodesManager *nodesManager;
@end

View File

@ -3,7 +3,7 @@
@class REANodesManager;
typedef NSNumber* REANodeID;
typedef NSNumber *REANodeID;
@protocol REAFinalNode
@ -12,15 +12,14 @@ typedef NSNumber* REANodeID;
@end
@interface REAUpdateContext : NSObject
@property (nonatomic) NSString* callID;
@property (nonatomic) NSString *callID;
@end
@interface REANode : NSObject
+ (void)runPropUpdates:(nonnull REAUpdateContext *)context;
- (instancetype)initWithID:(REANodeID)nodeID
config:(NSDictionary<NSString *, id> *)config NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithID:(REANodeID)nodeID config:(NSDictionary<NSString *, id> *)config NS_DESIGNATED_INITIALIZER;
@property (nonatomic, weak, nullable) REANodesManager *nodesManager;
@property (nonatomic, nullable) REAUpdateContext *updateContext;
@ -36,4 +35,6 @@ typedef NSNumber* REANodeID;
- (void)dangerouslyRescheduleEvaluate;
- (void)forceUpdateMemoizedValue:(id)value;
- (void)onDrop;
@end

View File

@ -1,6 +1,5 @@
#import <Foundation/Foundation.h>
#import "REANode.h"
#import <RNReanimated/REANode.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTUIManager.h>
@ -8,6 +7,7 @@
typedef void (^REAOnAnimationCallback)(CADisplayLink *displayLink);
typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager);
typedef void (^REAEventHandler)(NSString *eventName, id<RCTEvent> event);
@interface REANodesManager : NSObject
@ -18,10 +18,9 @@ typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager);
@property (nonatomic, nullable) NSSet<NSString *> *uiProps;
@property (nonatomic, nullable) NSSet<NSString *> *nativeProps;
- (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule
uiManager:(nonnull RCTUIManager *)uiManager;
- (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule uiManager:(nonnull RCTUIManager *)uiManager;
- (REANode* _Nullable)findNodeByID:(nonnull REANodeID)nodeID;
- (REANode *_Nullable)findNodeByID:(nonnull REANodeID)nodeID;
- (void)invalidate;
@ -31,31 +30,28 @@ typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager);
- (void)postOnAnimation:(REAOnAnimationCallback)clb;
- (void)postRunUpdatesAfterAnimation;
- (void)registerEventHandler:(REAEventHandler)eventHandler;
- (void)enqueueUpdateViewOnNativeThread:(nonnull NSNumber *)reactTag
viewName:(NSString *) viewName
nativeProps:(NSMutableDictionary *)nativeProps;
- (void)getValue:(REANodeID)nodeID
callback:(RCTResponseSenderBlock)callback;
viewName:(NSString *)viewName
nativeProps:(NSMutableDictionary *)nativeProps
trySynchronously:(BOOL)trySync;
- (void)getValue:(REANodeID)nodeID callback:(RCTResponseSenderBlock)callback;
// graph
- (void)createNode:(nonnull REANodeID)tag
config:(NSDictionary<NSString *, id> *__nonnull)config;
- (void)createNode:(nonnull REANodeID)tag config:(NSDictionary<NSString *, id> *__nonnull)config;
- (void)dropNode:(nonnull REANodeID)tag;
- (void)connectNodes:(nonnull REANodeID)parentID
childID:(nonnull REANodeID)childID;
- (void)connectNodes:(nonnull REANodeID)parentID childID:(nonnull REANodeID)childID;
- (void)disconnectNodes:(nonnull REANodeID)parentID
childID:(nonnull REANodeID)childID;
- (void)disconnectNodes:(nonnull REANodeID)parentID childID:(nonnull REANodeID)childID;
- (void)connectNodeToView:(nonnull REANodeID)nodeID
viewTag:(nonnull NSNumber *)viewTag
viewName:(nonnull NSString *)viewName;
- (void)disconnectNodeFromView:(nonnull REANodeID)nodeID
viewTag:(nonnull NSNumber *)viewTag;
- (void)disconnectNodeFromView:(nonnull REANodeID)nodeID viewTag:(nonnull NSNumber *)viewTag;
- (void)attachEvent:(nonnull NSNumber *)viewTag
eventName:(nonnull NSString *)eventName
@ -67,8 +63,14 @@ typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager);
// configuration
- (void)configureProps:(nonnull NSSet<NSString *> *)nativeProps
uiProps:(nonnull NSSet<NSString *> *)uiProps;
- (void)configureUiProps:(nonnull NSSet<NSString *> *)uiPropsSet
andNativeProps:(nonnull NSSet<NSString *> *)nativePropsSet;
- (void)updateProps:(nonnull NSDictionary *)props
ofViewWithTag:(nonnull NSNumber *)viewTag
withName:(nonnull NSString *)viewName;
- (NSString *)obtainProp:(nonnull NSNumber *)viewTag propName:(nonnull NSString *)propName;
// events
@ -76,4 +78,6 @@ typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager);
- (void)setValueForNodeID:(nonnull NSNumber *)nodeID value:(nonnull NSNumber *)newValue;
- (void)maybeFlushUpdateBuffer;
@end

View File

@ -1,4 +1,4 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAOperatorNode : REANode

View File

@ -1,12 +1,10 @@
#import "REAValueNode.h"
#import <RNReanimated/REAValueNode.h>
@interface REAParamNode : REAValueNode
- (void)beginContext:(NSNumber*) ref
prevCallID:(NSNumber*) prevCallID;
- (void)beginContext:(NSNumber *)ref prevCallID:(NSNumber *)prevCallID;
- (void)endContext;
- (void)start;
- (void)stop;
- (BOOL)isRunning;
@end

View File

@ -1,11 +1,9 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REAPropsNode : REANode <REAFinalNode>
- (void)connectToView:(NSNumber *_Nonnull)viewTag
viewName:(NSString *_Nonnull)viewName;
- (void)connectToView:(NSNumber *_Nonnull)viewTag viewName:(NSString *_Nonnull)viewName;
- (void)disconnectFromView:(NSNumber *_Nonnull)viewTag;
@end

View File

@ -1,6 +1,5 @@
#import "REANode.h"
#import <RNReanimated/REANode.h>
@interface REASetNode : REANode
@end

View File

@ -0,0 +1,13 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface REASnapshot : NSObject
@property NSMutableDictionary *values;
- (instancetype)init:(UIView *)view;
@end
NS_ASSUME_NONNULL_END

Some files were not shown because too many files have changed in this diff Show More